go-enet/peer.go

74 lines
1.5 KiB
Go
Raw Normal View History

2020-08-01 19:07:09 +02:00
package enet
// #include <enet/enet.h>
import "C"
// Peer is a peer which data packets may be sent or received from
type Peer interface {
GetAddress() Address
2020-08-01 20:05:23 +02:00
2020-08-01 20:20:01 +02:00
Disconnect(data uint32)
DisconnectNow(data uint32)
DisconnectLater(data uint32)
2020-08-01 20:05:23 +02:00
SendBytes(data []byte, channel uint8, flags PacketFlags) error
SendString(str string, channel uint8, flags PacketFlags) error
SendPacket(packet Packet, channel uint8) error
2020-08-01 19:07:09 +02:00
}
type enetPeer struct {
cPeer *C.struct__ENetPeer
}
func (peer enetPeer) GetAddress() Address {
return &enetAddress{
cAddr: peer.cPeer.address,
}
}
2020-08-01 20:05:23 +02:00
2020-08-01 20:20:01 +02:00
func (peer enetPeer) Disconnect(data uint32) {
C.enet_peer_disconnect(
peer.cPeer,
(C.enet_uint32)(data),
)
}
func (peer enetPeer) DisconnectNow(data uint32) {
C.enet_peer_disconnect_now(
peer.cPeer,
(C.enet_uint32)(data),
)
}
func (peer enetPeer) DisconnectLater(data uint32) {
C.enet_peer_disconnect_later(
peer.cPeer,
(C.enet_uint32)(data),
)
}
2020-08-01 20:05:23 +02:00
func (peer enetPeer) SendBytes(data []byte, channel uint8, flags PacketFlags) error {
packet, err := NewPacket(data, flags)
if err != nil {
return err
}
return peer.SendPacket(packet, channel)
}
func (peer enetPeer) SendString(str string, channel uint8, flags PacketFlags) error {
packet, err := NewPacket([]byte(str), flags)
if err != nil {
return err
}
return peer.SendPacket(packet, channel)
}
func (peer enetPeer) SendPacket(packet Packet, channel uint8) error {
C.enet_peer_send(
peer.cPeer,
(C.enet_uint8)(channel),
packet.(enetPacket).cPacket,
)
return nil
}