Add conns to server
This commit is contained in:
parent
1c5e2625d5
commit
5794814d9b
46
cmd/server/conns.go
Normal file
46
cmd/server/conns.go
Normal file
|
@ -0,0 +1,46 @@
|
||||||
|
package main
|
||||||
|
|
||||||
|
import (
|
||||||
|
"log"
|
||||||
|
"net"
|
||||||
|
"sync"
|
||||||
|
)
|
||||||
|
|
||||||
|
var (
|
||||||
|
connCenter ConnCenter
|
||||||
|
)
|
||||||
|
|
||||||
|
type ConnCenter struct {
|
||||||
|
Conns map[uint16]net.Conn
|
||||||
|
Mu sync.Mutex
|
||||||
|
}
|
||||||
|
|
||||||
|
func (c *ConnCenter) Init() {
|
||||||
|
c.Conns = make(map[uint16]net.Conn)
|
||||||
|
}
|
||||||
|
|
||||||
|
func (c *ConnCenter) AddConn(id uint16, con net.Conn) (uint16, error) {
|
||||||
|
c.Mu.Lock()
|
||||||
|
defer c.Mu.Unlock()
|
||||||
|
log.Printf("Conns: add %v with %d id\n", con, id)
|
||||||
|
c.Conns[id] = con
|
||||||
|
return id, nil
|
||||||
|
}
|
||||||
|
|
||||||
|
func (c *ConnCenter) DeleteIfHaveOne(id uint16) {
|
||||||
|
name, found := c.Conns[id]
|
||||||
|
if !found {
|
||||||
|
log.Printf("Conn with %d id is not found; Can not delete\n", id)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
delete(c.Conns, id)
|
||||||
|
log.Printf("Conn with %v con and %d id was found; Conn is deleted\n", name, id)
|
||||||
|
}
|
||||||
|
|
||||||
|
func (c *ConnCenter) GetConn(id uint16) (net.Conn, error) {
|
||||||
|
con, have := c.Conns[id]
|
||||||
|
if !have {
|
||||||
|
return nil, ERROR_DONT_HAVE
|
||||||
|
}
|
||||||
|
return con, nil
|
||||||
|
}
|
|
@ -16,6 +16,7 @@ import (
|
||||||
func main() {
|
func main() {
|
||||||
userCenter.Init()
|
userCenter.Init()
|
||||||
linkCenter.Init()
|
linkCenter.Init()
|
||||||
|
connCenter.Init()
|
||||||
host, err := env.GetHost()
|
host, err := env.GetHost()
|
||||||
if err != nil {
|
if err != nil {
|
||||||
log.Fatal(err)
|
log.Fatal(err)
|
||||||
|
@ -109,6 +110,7 @@ func handleClient(conn net.Conn) {
|
||||||
conn.Write(answ)
|
conn.Write(answ)
|
||||||
isRegistered = true
|
isRegistered = true
|
||||||
registeredID = id
|
registeredID = id
|
||||||
|
connCenter.AddConn(id, conn)
|
||||||
}
|
}
|
||||||
case com.ID_CLIENT_SEND_SERVER_LINK:
|
case com.ID_CLIENT_SEND_SERVER_LINK:
|
||||||
l, err := com.DecodeLink(msg.Data)
|
l, err := com.DecodeLink(msg.Data)
|
||||||
|
@ -164,5 +166,6 @@ func handleClient(conn net.Conn) {
|
||||||
if isRegistered {
|
if isRegistered {
|
||||||
userCenter.DeleteIfHaveOne(registeredID)
|
userCenter.DeleteIfHaveOne(registeredID)
|
||||||
linkCenter.CleanAfterLeave(registeredID)
|
linkCenter.CleanAfterLeave(registeredID)
|
||||||
|
connCenter.DeleteIfHaveOne(registeredID)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue
Block a user