public byte[] encodeNextMessageToBeSent(CDAPMessage cdapMessage) throws CDAPException { CDAPMessageValidator.validate(cdapMessage); switch (cdapMessage.getOpCode()) { case M_CONNECT: connectionStateMachine.checkConnect(); break; case M_CONNECT_R: connectionStateMachine.checkConnectResponse(); break; case M_RELEASE: connectionStateMachine.checkRelease(); break; case M_RELEASE_R: connectionStateMachine.checkReleaseResponse(); break; case M_CREATE: checkIsConnected(); break; case M_CREATE_R: checkIsConnected(); break; case M_DELETE: checkIsConnected(); break; case M_DELETE_R: checkIsConnected(); break; case M_START: checkIsConnected(); break; case M_START_R: checkIsConnected(); break; case M_STOP: checkIsConnected(); break; case M_STOP_R: checkIsConnected(); break; case M_WRITE: checkIsConnected(); break; case M_WRITE_R: checkIsConnected(); break; case M_READ: checkIsConnected(); break; case M_READ_R: checkIsConnected(); break; case M_CANCELREAD: checkIsConnected(); ; break; case M_CANCELREAD_R: checkIsConnected(); break; default: throw new CDAPException( "Unrecognized operation code: " + cdapMessage.getOpCode().toString()); } return serializeMessage(cdapMessage); }
private void checkIsConnected() throws CDAPException { if (!connectionStateMachine.isConnected()) { throw new CDAPException( "Cannot send a message " + "because the CDAP session is not in CONNECTED state"); } }
public boolean isConnected() { return connectionStateMachine.isConnected(); }
private CDAPMessage messageSentOrReceived(CDAPMessage cdapMessage, boolean sent) throws CDAPException { switch (cdapMessage.getOpCode()) { case M_CONNECT: connectionStateMachine.connectSentOrReceived(cdapMessage, sent); populateSessionDescriptor(cdapMessage, sent); break; case M_CONNECT_R: connectionStateMachine.connectResponseSentOrReceived(cdapMessage, sent); break; case M_RELEASE: connectionStateMachine.releaseSentOrReceived(cdapMessage, sent); break; case M_RELEASE_R: connectionStateMachine.releaseResponseSentOrReceived(cdapMessage, sent); emptySessionDescriptor(); break; case M_CREATE: requestMessageSentOrReceived(cdapMessage, Opcode.M_CREATE, sent); break; case M_CREATE_R: responseMessageSentOrReceived(cdapMessage, Opcode.M_CREATE, sent); break; case M_DELETE: requestMessageSentOrReceived(cdapMessage, Opcode.M_DELETE, sent); break; case M_DELETE_R: responseMessageSentOrReceived(cdapMessage, Opcode.M_DELETE, sent); break; case M_START: requestMessageSentOrReceived(cdapMessage, Opcode.M_START, sent); break; case M_START_R: responseMessageSentOrReceived(cdapMessage, Opcode.M_START, sent); break; case M_STOP: requestMessageSentOrReceived(cdapMessage, Opcode.M_STOP, sent); break; case M_STOP_R: responseMessageSentOrReceived(cdapMessage, Opcode.M_STOP, sent); break; case M_WRITE: requestMessageSentOrReceived(cdapMessage, Opcode.M_WRITE, sent); break; case M_WRITE_R: responseMessageSentOrReceived(cdapMessage, Opcode.M_WRITE, sent); break; case M_READ: requestMessageSentOrReceived(cdapMessage, Opcode.M_READ, sent); break; case M_READ_R: responseMessageSentOrReceived(cdapMessage, Opcode.M_READ, sent); break; case M_CANCELREAD: break; case M_CANCELREAD_R: cancelReadResponseMessageSentOrReceived(cdapMessage, sent); break; default: throw new CDAPException( "Unrecognized operation code: " + cdapMessage.getOpCode().toString()); } CDAPMessageValidator.validate(cdapMessage); freeOrReserveInvokeId(cdapMessage); return cdapMessage; }