}
// invoke operation on stream
switch (reqMsg.getOp()) {
case StreamRequestMessage.READ: {
final int result = ((InputStream) stream).read();
final StreamResultMessage m = new StreamResultMessage();
m.setXID(reqMsg.getXID());
m.setResult((short) result);
return m;
}
case StreamRequestMessage.READ_ARRAY: {
final byte[] b = new byte[reqMsg.getLenOrVal()];
final int len = ((InputStream) stream).read(b, 0, reqMsg
.getLenOrVal());
final StreamResultMessage m = new StreamResultMessage();
m.setXID(reqMsg.getXID());
m.setResult(StreamResultMessage.RESULT_ARRAY);
m.setLen(len);
if (len > 0) {
m.setData(b);
}
return m;
}
case StreamRequestMessage.WRITE: {
((OutputStream) stream).write(reqMsg.getLenOrVal());
final StreamResultMessage m = new StreamResultMessage();
m.setXID(reqMsg.getXID());
m.setResult(StreamResultMessage.RESULT_WRITE_OK);
return m;
}
case StreamRequestMessage.WRITE_ARRAY: {
((OutputStream) stream).write(reqMsg.getData());
final StreamResultMessage m = new StreamResultMessage();
m.setXID(reqMsg.getXID());
m.setResult(StreamResultMessage.RESULT_WRITE_OK);
return m;
}
default:
throw new RemoteOSGiException(
"Unimplemented op code for stream request " + msg); //$NON-NLS-1$
}
} catch (final IOException e) {
final StreamResultMessage m = new StreamResultMessage();
m.setXID(reqMsg.getXID());
m.setResult(StreamResultMessage.RESULT_EXCEPTION);
m.setException(e);
return m;
}
}
case RemoteOSGiMessage.REQUEST_BUNDLE:
final RequestBundleMessage reqB = (RequestBundleMessage) msg;