summaryrefslogtreecommitdiffstats
path: root/server/remote.go
diff options
context:
space:
mode:
authorbt <bt@rctt.net>2026-04-19 21:32:53 +0200
committerbt <bt@rctt.net>2026-05-03 17:52:37 +0200
commiteec10d41af62fb9a93cd5fd79dcf94616701cc2a (patch)
treed72068dcc4cb1aa43c2e0a2fae8ff094d41ed9c6 /server/remote.go
parentc00e7dd589921e6be45918d4cd589e52e2b77036 (diff)
downloadsolec-0.3.0.tar.gz
solec-0.3.0.zip
[common] Basic group channels supportv0.3.0
Diffstat (limited to 'server/remote.go')
-rw-r--r--server/remote.go23
1 files changed, 22 insertions, 1 deletions
diff --git a/server/remote.go b/server/remote.go
index 2449511..5d86da2 100644
--- a/server/remote.go
+++ b/server/remote.go
@@ -45,7 +45,7 @@ func (s *Server) handleServerConn(conn net.Conn) {
s.serversMu.Unlock()
}()
- if err := s.readInput(conn); err != nil {
+ if err := s.readRemoteInput(conn); err != nil {
log.Println(err)
}
}
@@ -110,3 +110,24 @@ func (s *Server) initRemoteConn(name string) (net.Conn, error) {
return conn, nil
}
+
+func (s *Server) readRemoteInput(conn net.Conn) error {
+ for {
+ payload, err := core.Decode(conn)
+ if err != nil {
+ return err
+ }
+ if err := s.handleRemotePayload(conn, payload); err != nil {
+ log.Print("handler error: ", err)
+ }
+ }
+}
+
+func (s *Server) handleRemotePayload(sender net.Conn, payload any) error {
+ switch v := payload.(type) {
+ case core.Message:
+ return s.handleMessage(sender, v)
+ default:
+ return core.ErrUnexpectedPayloadType
+ }
+}