提交 9f60b189 编写于 作者: J Jason

上级 f82efca2
......@@ -24,12 +24,26 @@ type paramId2 struct {
func RegisterRoutes(app *gin.RouterGroup) {
app.GET("/channels", channelList)
app.POST("/channels", channelList)
app.POST("/channel", channelCreate)
app.DELETE("/channel/:id", channelDelete)
app.PUT("/channel/:id", channelEdit)
app.GET("/channel/:id", channelGet)
app.POST("/login", authLogin)
app.DELETE("/logout", authLogout)
app.POST("/password", authPassword)
//TODO 转移至子目录,并使用中间件,检查session及权限
app.GET("/channels")
app.POST("/channels")
app.POST("/channel")
app.DELETE("/channel/:id")
app.PUT("/channel/:id")
app.GET("/channel/:id")
app.GET("/channel/:id/start")
app.GET("/channel/:id/stop")
app.GET("/channel/:id/connections")
app.POST("/channel/:id/connections")
app.DELETE("/channel/:id/connection/:id2") //关闭连接
app.GET("/channel/:id/connection/:id2/statistic")
}
......
......@@ -18,12 +18,15 @@ type Channel struct {
listener net.Listener
packetConn net.PacketConn
packetIndexes sync.Map
connections sync.Map
//自增ID
increment int
}
func NewChannel(channel *storage.Channel) *Channel {
return &Channel{
Channel: *channel,
//connections: make([]Connection, 0),
}
}
......@@ -105,7 +108,7 @@ func (c *Channel) accept() {
func (c *Channel) receive(conn net.Conn) {
client := newConnection(conn)
client.channel = c
//c.connections = append(c.connections, client)
c.storeConnection(client)
buf := make([]byte, 1024)
for client.conn != nil {
......@@ -121,6 +124,14 @@ func (c *Channel) receive(conn net.Conn) {
}
func (c *Channel) storeConnection(conn *Connection) {
c.increment++
conn.ID = c.increment
//根据ID保存
c.connections.Store(c.ID, conn)
}
func (c *Channel) receivePacket() {
buf := make([]byte, 1024)
for c.packetConn != nil {
......@@ -140,6 +151,11 @@ func (c *Channel) receivePacket() {
} else {
client = newPacketConnection(c.packetConn, addr)
client.channel = c
//根据ID保存
c.storeConnection(client)
//根据地址保存,收到UDP包之后,方便索引
c.packetIndexes.Store(key, client)
}
......
......@@ -11,6 +11,8 @@ import (
)
type Connection struct {
ID int
Error string
Serial string
RemoteAddr net.Addr
......@@ -84,7 +86,6 @@ func (c *Connection) Send(buf []byte) (int, error) {
return 0, errors.New("错误的链接类型")
}
func (c *Connection) Close() error {
return c.conn.(net.Conn).Close()
}
......@@ -96,10 +97,9 @@ func newConnection(conn net.Conn) *Connection {
}
}
func newPacketConnection(conn net.PacketConn, addr net.Addr) *Connection {
return &Connection{
RemoteAddr: addr,
conn: conn,
RemoteAddr: addr,
conn: conn,
}
}
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册