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

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