mirror of
https://github.com/TeaOSLab/EdgeNode.git
synced 2025-11-30 04:10:25 +08:00
实现请求连接数等限制
This commit is contained in:
38
internal/nodes/client_conn_base.go
Normal file
38
internal/nodes/client_conn_base.go
Normal file
@@ -0,0 +1,38 @@
|
||||
// Copyright 2021 Liuxiangchao iwind.liu@gmail.com. All rights reserved.
|
||||
|
||||
package nodes
|
||||
|
||||
import "net"
|
||||
|
||||
type BaseClientConn struct {
|
||||
rawConn net.Conn
|
||||
|
||||
isBound bool
|
||||
serverId int64
|
||||
remoteAddr string
|
||||
|
||||
isClosed bool
|
||||
}
|
||||
|
||||
func (this *BaseClientConn) IsClosed() bool {
|
||||
return this.isClosed
|
||||
}
|
||||
|
||||
// IsBound 是否已绑定服务
|
||||
func (this *BaseClientConn) IsBound() bool {
|
||||
return this.isBound
|
||||
}
|
||||
|
||||
// Bind 绑定服务
|
||||
func (this *BaseClientConn) Bind(serverId int64, remoteAddr string, maxConnsPerServer int, maxConnsPerIP int) bool {
|
||||
if this.isBound {
|
||||
return true
|
||||
}
|
||||
this.isBound = true
|
||||
this.serverId = serverId
|
||||
this.remoteAddr = remoteAddr
|
||||
|
||||
// 检查是否可以连接
|
||||
return sharedClientConnLimiter.Add(this.rawConn.RemoteAddr().String(), serverId, remoteAddr, maxConnsPerServer, maxConnsPerIP)
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user