diff options
Diffstat (limited to 'server/server.go')
| -rw-r--r-- | server/server.go | 34 |
1 files changed, 11 insertions, 23 deletions
diff --git a/server/server.go b/server/server.go index 7573968..ef2bb5f 100644 --- a/server/server.go +++ b/server/server.go @@ -12,10 +12,12 @@ import ( type Server struct { listenAddr string name string - users map[string]User + users map[string]User // TODO: Use full address instead of just name servers map[string]RemoteServer + channels map[string]*Channel usersMu sync.RWMutex serversMu sync.RWMutex + channelsMu sync.RWMutex } func NewServer(listenAddr string, name string) *Server { @@ -24,6 +26,7 @@ func NewServer(listenAddr string, name string) *Server { name: name, users: make(map[string]User), servers: make(map[string]RemoteServer), + channels: make(map[string]*Channel), } } @@ -45,6 +48,13 @@ func (s *Server) Start() error { } } +func (s *Server) AddChannel(name string) { + s.channelsMu.Lock() + s.channelsMu.Unlock() + s.channels[name] = NewChannel(name) + log.Println("created channel", name) +} + func (s *Server) handleConn(conn net.Conn) { defer conn.Close() @@ -87,25 +97,3 @@ func (s *Server) performHandshake(conn net.Conn) (core.ConnType, error) { return clientHs.ConnType, nil } - -func (s *Server) readInput(conn net.Conn) error { - for { - payload, err := core.Decode(conn) - if err != nil { - return err - } - if err := s.handlePayload(payload); err != nil { - log.Print("handler error: ", err) - } - } -} - -func (s *Server) handlePayload(payload any) error { - switch v := payload.(type) { - case core.Message: - return s.handleMessage(v) - - default: - return core.ErrUnexpectedPayloadType - } -} |
