Skip to content

Commit

Permalink
Allow sending headers with the disconnect frame
Browse files Browse the repository at this point in the history
  • Loading branch information
ikempf authored and rstoyanchev committed Nov 8, 2019
1 parent b0b6423 commit 08f1cb4
Show file tree
Hide file tree
Showing 3 changed files with 35 additions and 0 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -362,9 +362,17 @@ private void unsubscribe(String id, @Nullable StompHeaders headers) {

@Override
public void disconnect() {
disconnect(null);
}

@Override
public void disconnect(@Nullable StompHeaders headers) {
this.closing = true;
try {
StompHeaderAccessor accessor = createHeaderAccessor(StompCommand.DISCONNECT);
if (headers != null) {
accessor.addNativeHeaders(headers);
}
Message<byte[]> message = createMessage(accessor, EMPTY_PAYLOAD);
execute(message);
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -116,6 +116,12 @@ public interface StompSession {
*/
void disconnect();

/**
* Disconnect the session by sending a DISCONNECT frame.
* @param headers the headers for the disconnect message frame
*/
void disconnect(StompHeaders headers);


/**
* A handle to use to track receipts.
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -659,4 +659,25 @@ public void disconnect() {
verifyNoMoreInteractions(this.sessionHandler);
}

@Test
public void disconnectWithHeaders() {
this.session.afterConnected(this.connection);
assertTrue(this.session.isConnected());

StompHeaders headers = new StompHeaders();
headers.add("foo", "bar");

this.session.disconnect(headers);

Message<byte[]> message = this.messageCaptor.getValue();
StompHeaderAccessor accessor = MessageHeaderAccessor.getAccessor(message, StompHeaderAccessor.class);
headers = StompHeaders.readOnlyStompHeaders(accessor.getNativeHeaders());
assertEquals(headers.toString(), 1, headers.size());
assertEquals(headers.get("foo").size(), 1);
assertEquals(headers.get("foo").get(0), "bar");

assertFalse(this.session.isConnected());
verifyNoMoreInteractions(this.sessionHandler);
}

}

0 comments on commit 08f1cb4

Please sign in to comment.