Skip to content

Commit 2c44953

Browse files
author
Gennadii Kovalev
committed
close channel on server side
1 parent 9ad754b commit 2c44953

File tree

3 files changed

+16
-7
lines changed

3 files changed

+16
-7
lines changed

client.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -62,5 +62,5 @@ func Dial(url string, tr transport.Transport) (*Client, error) {
6262
Close client connection
6363
*/
6464
func (c *Client) Close() {
65-
CloseChannel(&c.Channel, &c.methods)
65+
closeChannel(&c.Channel, &c.methods)
6666
}

loop.go

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -83,7 +83,7 @@ func (c *Channel) IsAlive() bool {
8383
/**
8484
Close channel
8585
*/
86-
func CloseChannel(c *Channel, m *methods, args ...interface{}) error {
86+
func closeChannel(c *Channel, m *methods, args ...interface{}) error {
8787
c.aliveLock.Lock()
8888
defer c.aliveLock.Unlock()
8989

@@ -115,18 +115,18 @@ func inLoop(c *Channel, m *methods) error {
115115
for {
116116
pkg, err := c.conn.GetMessage()
117117
if err != nil {
118-
return CloseChannel(c, m, err)
118+
return closeChannel(c, m, err)
119119
}
120120
msg, err := protocol.Decode(pkg)
121121
if err != nil {
122-
CloseChannel(c, m, protocol.ErrorWrongPacket)
122+
closeChannel(c, m, protocol.ErrorWrongPacket)
123123
return err
124124
}
125125

126126
switch msg.Type {
127127
case protocol.MessageTypeOpen:
128128
if err := json.Unmarshal([]byte(msg.Source[1:]), &c.header); err != nil {
129-
CloseChannel(c, m, ErrorWrongHeader)
129+
closeChannel(c, m, ErrorWrongHeader)
130130
}
131131
m.callLoopEvent(c, OnConnection)
132132
case protocol.MessageTypePing:
@@ -156,7 +156,7 @@ func outLoop(c *Channel, m *methods) error {
156156
for {
157157
outBufferLen := len(c.out)
158158
if outBufferLen >= queueBufferSize-1 {
159-
return CloseChannel(c, m, ErrorSocketOverflood)
159+
return closeChannel(c, m, ErrorSocketOverflood)
160160
} else if outBufferLen > int(queueBufferSize/2) {
161161
overfloodedLock.Lock()
162162
overflooded[c] = struct{}{}
@@ -174,7 +174,7 @@ func outLoop(c *Channel, m *methods) error {
174174

175175
err := c.conn.WriteMessage(msg)
176176
if err != nil {
177-
return CloseChannel(c, m, err)
177+
return closeChannel(c, m, err)
178178
}
179179
}
180180
return nil

server.go

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -41,6 +41,15 @@ type Server struct {
4141
tr transport.Transport
4242
}
4343

44+
/**
45+
Close current channel
46+
*/
47+
func (c *Channel) Close() {
48+
if c.server != nil {
49+
closeChannel(c, &c.server.methods)
50+
}
51+
}
52+
4453
/**
4554
Get ip of socket client
4655
*/

0 commit comments

Comments
 (0)