int getMaxFragmentSize(TunnelStream tunnelStream) { return tunnelStream.classOfService().common().maxFragmentSize(); }
/** * Decode substream msg. * * @param buffer the buffer * @param decodeSubMsg the Msg is used to decode the buffer * @param error the error * @return the int */ private int decodeSubstreamMsg(TunnelStreamBuffer buffer,Msg decodeSubMsg, Error error) { _decSubIter.clear(); _decSubIter.setBufferAndRWFVersion(buffer, _classOfService.common().protocolMajorVersion(), _classOfService.common().protocolMinorVersion()); return decodeSubMsg.decode(_decSubIter); }
/** * Setup buffer pool. */ void setupBufferPool() { _bufferPool = new SlicedBufferPool(_classOfService.common().maxFragmentSize(), guaranteedOutputBuffers()); }
private boolean isClassOfServiceValid(ClassOfService classOfService) { return (classOfService.common().maxMsgSize() == _expectedClassOfService.common().maxMsgSize() && classOfService.common().protocolType() == _expectedClassOfService.common().protocolType() && classOfService.common().protocolMajorVersion() == _expectedClassOfService.common().protocolMajorVersion() && classOfService.common().protocolMinorVersion() == _expectedClassOfService.common().protocolMinorVersion() && (classOfService.authentication().type() == _expectedClassOfService.authentication().type() || classOfService.authentication().type() == ClassesOfService.AuthenticationTypes.NOT_REQUIRED) && classOfService.flowControl().type() == _expectedClassOfService.flowControl().type() && classOfService.dataIntegrity().type() == _expectedClassOfService.dataIntegrity().type() && classOfService.guarantee().type() == _expectedClassOfService.guarantee().type()); }
/** * Decode msg. * * @param buffer the buffer * @param error the error * @return the int */ private int decodeMsg(TunnelStreamBuffer buffer, Error error) { // decode TunnelStream message first _decIter.clear(); _decIter.setBufferAndRWFVersion(buffer, _classOfService.common().protocolMajorVersion(), _classOfService.common().protocolMinorVersion()); _decMsg.clear(); return (_decMsg.decode(_decIter)); }
/** * Trace buffer to xml. * * @param tBuffer the t buffer */ /* Print an XML trace of a TunnelStream buffer. */ void traceBufferToXml(TransportBuffer tBuffer) { int ret; assert((_traceFlags & TunnelStreamTraceFlags.MSGS) > 0); dumpTimestamp(); _traceIter.clear(); _traceIter.setBufferAndRWFVersion(tBuffer, _classOfService.common().protocolMajorVersion(), _classOfService.common().protocolMinorVersion()); if ((ret = _traceMsg.decode(_traceIter)) != CodecReturnCodes.SUCCESS) { System.out.printf("<!-- TunnelTrace: Failed to decode message (%d) -->\n", ret); return; } traceMsgtoXml(_traceMsg, false); }
@Override public int encodeRequestAsMsg(EncodeIterator encIter, Buffer classOfServiceBuffer, RequestMsg requestMsg) { int ret = CodecReturnCodes.SUCCESS; setupRequestMsgHeader(requestMsg); encIter.clear(); encIter.setBufferAndRWFVersion(classOfServiceBuffer, _classOfService.common().protocolMajorVersion(), _classOfService.common().protocolMinorVersion()); // encode class of service as payload if ((ret = _classOfService.encode(encIter)) < CodecReturnCodes.SUCCESS) { return ret; } requestMsg.encodedDataBody(classOfServiceBuffer); return CodecReturnCodes.SUCCESS; }
destCos.common().maxMsgSize(common().maxMsgSize()); destCos.common().protocolType(common().protocolType()); destCos.common().protocolMajorVersion(common().protocolMajorVersion()); destCos.common().protocolMinorVersion(common().protocolMinorVersion()); destCos.common().streamVersion(common().streamVersion());
/** * Close. * * @param finalStatusEvent the final status event * @param error the error * @return the int */ int close(boolean finalStatusEvent, Error error) { _streamOpen = false; if (_tunnelStreamState == TunnelStreamState.NOT_OPEN) return ReactorReturnCodes.SUCCESS; _finalStatusEvent = finalStatusEvent; _reactorChannel.tunnelStreamManager().removeTunnelStreamFromTimeoutList(this); _reactorChannel.tunnelStreamManager().addTunnelStreamToDispatchList(this); _tunnelStreamState = TunnelStreamState.SEND_FIN; _sendFinSeqNum = -1; _hasFinSent = false; _messageId = 0; _requestRetryCount = 0; _classOfService.common().streamVersion(CosCommon.CURRENT_STREAM_VERSION); return ReactorReturnCodes.SUCCESS; }
_decIter.setBufferAndRWFVersion(tunnelBuffer, _tunnelStream.classOfService().common().protocolMajorVersion(), _tunnelStream.classOfService().common().protocolMinorVersion()); _genericMsg.decode(_decIter); _queueData.decode(_decIter, _genericMsg); _encIter.setBufferAndRWFVersion(tunnelWriteBuffer, _tunnelStream.classOfService().common().protocolMajorVersion(), _tunnelStream.classOfService().common().protocolMinorVersion()); _queueAck.encode(_encIter); _decIter.clear(); _decIter.setBufferAndRWFVersion(tunnelWriteBuffer, _tunnelStream.classOfService().common().protocolMajorVersion(), _tunnelStream.classOfService().common().protocolMinorVersion()); _genericMsg.clear(); _genericMsg.decode(_decIter);
private int loadMsg(int entryPosition, boolean isTransmitted, Msg tmpMsg, EncodeIterator tmpEncodeIter, DecodeIterator tmpDecodeIter, Error error) { int length; int ret; TunnelStreamPersistenceBuffer persistBuffer = new TunnelStreamPersistenceBuffer(); length = _fileByteBuf.getInt(entryPosition + MsgHeader.MSG_LENGTH_POS); persistBuffer.length(length); persistBuffer.filePosition(entryPosition); persistBuffer.seqNum(_fileByteBuf.getInt(entryPosition + MsgHeader.MSG_SEQNUM_POS)); persistBuffer.isTransmitted(isTransmitted); /* Get TunnelStreamHeader length. */ _tmpBuf.clear(); _tmpBuf.data(_fileByteBuf, entryPosition + MsgHeader.LENGTH, persistBuffer.length()); tmpDecodeIter.clear(); tmpDecodeIter.setBufferAndRWFVersion(_tmpBuf, _tunnelSubstream._tunnelStream.classOfService().common().protocolMajorVersion(), _tunnelSubstream._tunnelStream.classOfService().common().protocolMinorVersion()); if ((ret = tmpMsg.decode(tmpDecodeIter)) != CodecReturnCodes.SUCCESS) { error.errorId(ret); error.text("Failed to decode message while loading message from file."); return ReactorReturnCodes.FAILURE; } persistBuffer.tunnelStreamHeaderLen(tmpMsg.encodedDataBody().position() - (entryPosition + MsgHeader.LENGTH)); if (isTransmitted) _waitingQueueAckList.push(persistBuffer, TunnelStreamPersistenceBuffer.SUBSTREAM_LINK); else _waitingTransmitList.push(persistBuffer, TunnelStreamPersistenceBuffer.SUBSTREAM_LINK); return ReactorReturnCodes.SUCCESS; }
/** * Creates a provider-side tunnel stream. * * @param reactorChannel the reactor channel * @param event the event * @param options the options */ public TunnelStream(ReactorChannel reactorChannel, TunnelStreamRequestEvent event, TunnelStreamAcceptOptions options) { this(reactorChannel); _streamId = event.streamId(); _domainType = event.domainType(); _serviceId = event.serviceId(); _guaranteedOutputBuffers = options.guaranteedOutputBuffers(); options.classOfService().copy(_classOfService); _defaultMsgCallback = options.defaultMsgCallback(); _statusEventCallback = options.statusEventCallback(); _name = event.name(); _userSpecObject = options.userSpecObject(); _isProvider = true; _bigBufferPool = new TunnelStreamBigBufferPool(options.classOfService().common().maxFragmentSize(), options.guaranteedOutputBuffers()); }
public void encodeSampleMsg(TunnelStream tunnelStream, TransportBuffer buffer) { EncodeIterator eIter = CodecFactory.createEncodeIterator(); Msg msg = CodecFactory.createMsg(); assertEquals(CodecReturnCodes.SUCCESS, eIter.setBufferAndRWFVersion(buffer, tunnelStream.classOfService().common().protocolMajorVersion(), tunnelStream.classOfService().common().protocolMinorVersion())); msg.msgClass(MsgClasses.GENERIC); msg.domainType(200); msg.streamId(1985); msg.containerType(DataTypes.OPAQUE); msg.encodedDataBody().data("Sample"); assertEquals(CodecReturnCodes.SUCCESS, msg.encode(eIter)); }
public void decodeSampleMsg(TunnelStream tunnelStream, TransportBuffer buffer) { DecodeIterator dIter = CodecFactory.createDecodeIterator(); Msg msg = CodecFactory.createMsg(); assertEquals(CodecReturnCodes.SUCCESS, dIter.setBufferAndRWFVersion(buffer, tunnelStream.classOfService().common().protocolMajorVersion(), tunnelStream.classOfService().common().protocolMinorVersion())); assertEquals(CodecReturnCodes.SUCCESS, msg.decode(dIter)); assertEquals(MsgClasses.GENERIC, msg.msgClass()); assertEquals(200, msg.domainType()); assertEquals(1985, msg.streamId()); assertEquals(DataTypes.OPAQUE, msg.containerType()); assertTrue(msg.encodedDataBody().toString().equals("Sample")); }
/** * Creates a consumer-side tunnel stream. * * @param reactorChannel the reactor channel * @param options the options */ public TunnelStream(ReactorChannel reactorChannel, TunnelStreamOpenOptions options) { this(reactorChannel); _streamId = options.streamId(); _domainType = options.domainType(); _serviceId = options.serviceId(); _guaranteedOutputBuffers = options.guaranteedOutputBuffers(); options.classOfService().copy(_classOfService); _defaultMsgCallback = options.defaultMsgCallback(); _statusEventCallback = options.statusEventCallback(); _queueMsgCallback = options.queueMsgCallback(); _authLoginRequest = options.authLoginRequest(); if (_authLoginRequest == null && reactorChannel.role() != null) { _authLoginRequest = ((ConsumerRole)reactorChannel.role()).rdmLoginRequest(); } _name = options.name(); _userSpecObject = options.userSpecObject(); _responseTimeout = options.responseTimeout(); _bigBufferPool = new TunnelStreamBigBufferPool(options.classOfService().common().maxFragmentSize(), options.guaranteedOutputBuffers()); }
TunnelStreamPersistenceBuffer persistenceBuffer; assert (buffer.length() <= _tunnelSubstream._tunnelStream._classOfService.common().maxMsgSize());
/** This provider always rejects tunnel streams. */ class TunnelStreamRejectProvider extends Provider { TunnelStreamRejectOptions _rejectOptions = ReactorFactory.createTunnelStreamRejectOptions(); public TunnelStreamRejectProvider(TestReactor reactor) { super(reactor); } @Override public int listenerCallback(TunnelStreamRequestEvent event) { super.listenerCallback(event); /* Accept the tunnel stream request. */ _rejectOptions.clear(); _rejectOptions.state().streamState(StreamStates.CLOSED); _rejectOptions.state().dataState(DataStates.SUSPECT); _rejectOptions.state().code(StateCodes.NOT_ENTITLED); assertEquals(ReactorReturnCodes.SUCCESS, reactorChannel().rejectTunnelStream(event, _rejectOptions, _errorInfo)); return ReactorReturnCodes.SUCCESS; } }
TunnelStreamPersistenceBuffer persistenceBuffer; assert (buffer.length() <= _tunnelSubstream._tunnelStream._classOfService.common().maxMsgSize());
@Override public int listenerCallback(TunnelStreamRequestEvent event) { super.listenerCallback(event); /* Accept the tunnel stream request. */ _acceptOpts.clear(); _acceptOpts.statusEventCallback(this); _acceptOpts.defaultMsgCallback(this); _acceptOpts.classOfService().common().maxMsgSize(_maxMsgSize); _acceptOpts.classOfService().dataIntegrity().type(DataIntegrityTypes.RELIABLE); _acceptOpts.classOfService().flowControl().type(FlowControlTypes.BIDIRECTIONAL); _acceptOpts.classOfService().authentication().type(event.classOfService().authentication().type()); assertEquals(ReactorReturnCodes.SUCCESS, reactorChannel().acceptTunnelStream(event, _acceptOpts, _errorInfo)); return ReactorReturnCodes.SUCCESS; }