File tree Expand file tree Collapse file tree 2 files changed +31
-3
lines changed
Expand file tree Collapse file tree 2 files changed +31
-3
lines changed Original file line number Diff line number Diff line change @@ -15,6 +15,7 @@ type Listener struct {
1515 SocketListener net.Listener
1616 HasNewMessages func () bool
1717 GetMessage func () string
18+ Stop func ()
1819}
1920
2021// MessageManager manages message storage
@@ -23,13 +24,15 @@ type MessageManager struct {
2324 Message string
2425}
2526
26- func listening (listener Listener , messageManager * MessageManager ) error {
27- for {
27+ func listening (listener Listener , messageManager * MessageManager , running * bool ) error {
28+ for * running {
2829 c , _ := listener .SocketListener .Accept ()
2930 message , _ := bufio .NewReader (c ).ReadString ('\n' )
3031 messageManager .Message = message
3132 messageManager .HasNewMessages = true
3233 }
34+ listener .SocketListener .Close ()
35+ return nil
3336}
3437
3538// Listen to socket port
@@ -54,7 +57,13 @@ func Listen(port string) (Listener, error) {
5457 return messageManager .HasNewMessages
5558 }
5659
57- go listening (listener , & messageManager )
60+ running := true
61+ // Stop the listener
62+ listener .Stop = func () {
63+ running = false
64+ }
65+
66+ go listening (listener , & messageManager , & running )
5867
5968 return listener , nil
6069}
Original file line number Diff line number Diff line change @@ -64,3 +64,22 @@ func TestGetMessage(t *testing.T) {
6464 }
6565
6666}
67+
68+ func TestListenStop (t * testing.T ) {
69+ expected := "Hello World"
70+
71+ r , _ := Listen ("3005" )
72+ Send ("3005" , expected )
73+
74+ if r .HasNewMessages () {
75+ if r .GetMessage () != expected {
76+ t .Errorf ("Output different from input" )
77+ }
78+ }
79+
80+ r .Stop ()
81+ err := Send ("3005" , "This should fails" )
82+ if err == nil {
83+ t .Errorf ("Couldn't close connection" )
84+ }
85+ }
You can’t perform that action at this time.
0 commit comments