diff options
| author | bt <bt@rctt.net> | 2026-03-07 20:42:54 +0100 |
|---|---|---|
| committer | bt <bt@rctt.net> | 2026-03-07 20:42:54 +0100 |
| commit | 3830a8ad69fd861558f4d8ee7ee67b05c244eb47 (patch) | |
| tree | cd1f73674ba45744bed250fdd557a6247737eb27 | |
| parent | 236457dfda1e8e79daf86e0d6512f3d186373a65 (diff) | |
| download | solec-3830a8ad69fd861558f4d8ee7ee67b05c244eb47.tar.gz solec-3830a8ad69fd861558f4d8ee7ee67b05c244eb47.zip | |
Create core package
| -rw-r--r-- | cmd/client/main.go | 0 | ||||
| -rw-r--r-- | cmd/mock/main.go | 48 | ||||
| -rw-r--r-- | core/data.go | 30 | ||||
| -rw-r--r-- | core/network.go | 23 |
4 files changed, 59 insertions, 42 deletions
diff --git a/cmd/client/main.go b/cmd/client/main.go new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/cmd/client/main.go diff --git a/cmd/mock/main.go b/cmd/mock/main.go index 88888f5..ad503c5 100644 --- a/cmd/mock/main.go +++ b/cmd/mock/main.go @@ -1,34 +1,15 @@ package main import ( - "encoding/binary" "flag" "log" "net" + + "git.sr.ht/~rctt/solecd/core" ) var listenAddr string -type Encoder interface { - Encode() []any -} - -type Handshake struct { - ver uint8 -} - -func (h Handshake) Encode() []any { - return []any{h.ver} -} - -type Test struct { - msg string -} - -func (h Test) Encode() []any { - return []any{[]byte(h.msg)} -} - func main() { flag.StringVar(&listenAddr, "a", "localhost:9999", "Listening address:port") flag.Parse() @@ -57,33 +38,16 @@ func listen() error { func handle(conn net.Conn) { log.Print("received connection from: ", conn.RemoteAddr()) - hs := Handshake{ - ver: 0x0, - } + hs := core.Handshake{Version: 0x0} - if err := send(conn, 0x01, hs); err != nil { + if err := core.Send(conn, core.TypeHandshake, hs); err != nil { log.Print("cannot send handshake ", err) return } - if err := send(conn, 0xFF, Test{msg: "solec kujawski jest zajebisty"}); err != nil { + test := core.Test{Message: "solec kujawski jest zajebisty"} + if err := core.Send(conn, core.TypeTest, test); err != nil { log.Print("cannot send test message ", err) return } } - -func send(conn net.Conn, eType uint8, data Encoder) error { - err := binary.Write(conn, binary.BigEndian, eType) - if err != nil { - return err - } - - for _, v := range data.Encode() { - err := binary.Write(conn, binary.BigEndian, v) - if err != nil { - return err - } - } - - return nil -} diff --git a/core/data.go b/core/data.go new file mode 100644 index 0000000..a617f17 --- /dev/null +++ b/core/data.go @@ -0,0 +1,30 @@ +package core + +type Marshaler interface { + Marshal() []any +} + +type DataType uint8 + +const ( + TypeHandshake DataType = 0x01 + TypePing = 0x02 + TypePong = 0x03 + TypeTest = 0xFF +) + +type Handshake struct { + Version uint8 +} + +func (h Handshake) Marshal() []any { + return []any{h.Version} +} + +type Test struct { + Message string +} + +func (h Test) Marshal() []any { + return []any{[]byte(h.Message)} +} diff --git a/core/network.go b/core/network.go new file mode 100644 index 0000000..3065f19 --- /dev/null +++ b/core/network.go @@ -0,0 +1,23 @@ +package core + +import ( + "encoding/binary" + "fmt" + "net" +) + +func Send(conn net.Conn, dataType DataType, data Marshaler) error { + packet := []any{uint8(dataType)} + packet = append(packet, data.Marshal()...) + + fmt.Println(packet) + + for _, v := range packet { + err := binary.Write(conn, binary.BigEndian, v) + if err != nil { + return err + } + } + + return nil +} |
