summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorbt <bt@rctt.net>2026-03-07 20:42:54 +0100
committerbt <bt@rctt.net>2026-03-07 20:42:54 +0100
commit3830a8ad69fd861558f4d8ee7ee67b05c244eb47 (patch)
treecd1f73674ba45744bed250fdd557a6247737eb27
parent236457dfda1e8e79daf86e0d6512f3d186373a65 (diff)
downloadsolec-3830a8ad69fd861558f4d8ee7ee67b05c244eb47.tar.gz
solec-3830a8ad69fd861558f4d8ee7ee67b05c244eb47.zip
Create core package
-rw-r--r--cmd/client/main.go0
-rw-r--r--cmd/mock/main.go48
-rw-r--r--core/data.go30
-rw-r--r--core/network.go23
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
+}