Skip to content

Commit 99755e2

Browse files
committed
Serialization in ServiceResponse
1 parent 1acc930 commit 99755e2

File tree

2 files changed

+9
-2
lines changed

2 files changed

+9
-2
lines changed

src/main/java/org/ros/internal/node/service/ServiceRequestHandler.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -50,7 +50,7 @@ private void handleRequest(T request, ByteBuffer responseBuffer) throws ServiceE
5050
private void handleSuccess(final ChannelHandlerContext ctx, ServiceServerResponse response, ByteBuffer responseBuffer) {
5151
response.setErrorCode(1);
5252
response.setMessageLength(responseBuffer.limit());
53-
response.setMessage(responseBuffer);
53+
response.setMessageBytes(responseBuffer.array());
5454
ByteBuffer resbuf = messageBufferPool.acquire();
5555
Utility.serialize(response, resbuf);
5656
try {
@@ -65,6 +65,7 @@ private void handleError(final ChannelHandlerContext ctx, ServiceServerResponse
6565
ByteBuffer encodedMessage = Charset.forName("US-ASCII").encode(message);
6666
response.setMessageLength(encodedMessage.limit());
6767
response.setMessage(encodedMessage);
68+
response.setMessageBytes(encodedMessage.array());
6869
Utility.serialize(response, responseBuffer);
6970
try {
7071
ctx.write(responseBuffer.array());

src/main/java/org/ros/internal/node/service/ServiceServerResponse.java

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,9 +14,10 @@
1414
*/
1515
class ServiceServerResponse implements Serializable {
1616
private static final long serialVersionUID = -5429450419100506243L;
17-
private ByteBuffer message;
17+
private transient ByteBuffer message;
1818
private int errorCode;
1919
private int messageLength;
20+
private byte[] messageBytes;
2021

2122
public ServiceServerResponse() {}
2223

@@ -43,4 +44,9 @@ public void setMessageLength(int messageLength) {
4344
public int getMessageLength() {
4445
return messageLength;
4546
}
47+
48+
public byte[] getMessageBytes() { return messageBytes; }
49+
50+
public void setMessageBytes(byte[] b) { messageBytes = b; }
51+
4652
}

0 commit comments

Comments
 (0)