1
0
mirror of https://github.com/fumiama/WireGold.git synced 2026-06-10 11:40:30 +08:00
Files
WireGold/gold/link/link.go
fumiama 151da51230 init
2021-10-24 00:52:13 +08:00

51 lines
775 B
Go

package link
import (
"errors"
"net"
"github.com/fumiama/WireGold/gold/head"
)
type Link struct {
conn net.Conn
peer *Identity
hasKeepRuning bool
}
func Connect(peer string) (l Link, err error) {
p, ok := peers[peer]
if ok {
l.conn, err = net.Dial("udp", peer)
l.peer = p
} else {
err = errors.New("peer not exist")
}
return
}
func (l *Link) Close() {
l.conn.Close()
}
func (l *Link) Read(p *head.Packet) (n int, err error) {
d := make([]byte, 1024)
n, err = l.conn.Read(d)
if err == nil {
n, err = l.peer.Decode(d)
if err == nil {
p.UnMashal(d)
}
}
return
}
func (l *Link) Write(p *head.Packet) (n int, err error) {
d := p.Mashal()
_, err = l.peer.Encode(d)
if err == nil {
n, err = l.conn.Write(d)
}
return
}