summaryrefslogtreecommitdiffstats
path: root/server/server.go
diff options
context:
space:
mode:
Diffstat (limited to 'server/server.go')
-rw-r--r--server/server.go34
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
- }
-}