File tree Expand file tree Collapse file tree 4 files changed +38
-0
lines changed
Expand file tree Collapse file tree 4 files changed +38
-0
lines changed Original file line number Diff line number Diff line change @@ -167,3 +167,14 @@ func (messages *messages) copyInternal() []Message {
167167
168168 return copiedMessages
169169}
170+
171+ // Returns all messages and removes them at the same time
172+ func (messages * messages ) purge () []Message {
173+ messages .Lock ()
174+ defer messages .Unlock ()
175+
176+ copiedMessages := messages .copyInternal ()
177+ messages .items = nil
178+
179+ return copiedMessages
180+ }
Original file line number Diff line number Diff line change @@ -256,3 +256,14 @@ func TestMessagesCopy(t *testing.T) {
256256 assert .Equal (t , * message , copyMessages [0 ])
257257 })
258258}
259+
260+ func TestMessagesPurge (t * testing.T ) {
261+ t .Run ("purges messages from items slice" , func (t * testing.T ) {
262+ message , messages := new (Message ), new (messages )
263+ messages .append (message )
264+
265+ assert .Len (t , messages .copy (), 1 )
266+ assert .Len (t , messages .purge (), 1 )
267+ assert .Len (t , messages .copy (), 0 )
268+ })
269+ }
Original file line number Diff line number Diff line change @@ -124,6 +124,12 @@ func (server *Server) Messages() []Message {
124124 return server .messages .copy ()
125125}
126126
127+ // Public interface to get access to server messages
128+ // and at the same time removes them
129+ func (server * Server ) MessagesAndPurge () []Message {
130+ return server .messages .purge ()
131+ }
132+
127133// Thread-safe getter of server port.
128134// Returns server.portNumber
129135func (server * Server ) PortNumber () int {
Original file line number Diff line number Diff line change @@ -163,6 +163,16 @@ func TestServerMessages(t *testing.T) {
163163 assert .NotSame (t , server .messages .items , server .Messages ())
164164 server .messages .RUnlock ()
165165 })
166+
167+ t .Run ("no messages after purge" , func (t * testing.T ) {
168+ server := newServer (configuration )
169+ message := new (Message )
170+ server .messages .append (message )
171+
172+ assert .NotEmpty (t , server .Messages ())
173+ assert .NotEmpty (t , server .MessagesAndPurge ())
174+ assert .Empty (t , server .Messages ())
175+ })
166176}
167177
168178func TestServerPortNumber (t * testing.T ) {
You can’t perform that action at this time.
0 commit comments