/** * Checks if is send window open. * * @param buffer the buffer * @return true, if is send window open */ /* Determine if the recvWindow has room for sending data * (or, if no buffer is given, whether a message might be possible to send). */ boolean isSendWindowOpen(TunnelStreamBuffer buffer) { boolean retVal = true; if (_classOfService.flowControl().type() == ClassesOfService.FlowControlTypes.BIDIRECTIONAL) { if (_firstIsSendWindowOpenCall) { _firstIsSendWindowOpenCall = false; // always allow initial login if (_classOfService.authentication().type() == ClassesOfService.AuthenticationTypes.OMM_LOGIN) { return retVal; } } return _sendBytes + (buffer != null ? buffer.innerWriteBufferLength() : 0)<= _classOfService.flowControl().sendWindowSize(); } return retVal; }
/** * Gets the state info. * * @param info the info * @return the state info */ int getStateInfo(TunnelStreamStateInfo info) { try { info.set(_tunnelStreamState, _outboundTransmitList.count(), _outboundMsgAckList.count(), _classOfService.flowControl().sendWindowSize() - _sendBytes, _classOfService.flowControl().recvWindowSize() - _recvBytes); } catch (Exception e) { return ReactorReturnCodes.FAILURE; } catch (InternalError e) { return ReactorReturnCodes.FAILURE; } return ReactorReturnCodes.SUCCESS; }
public TunnelStreamHandler() { // set the expected class of service for this provider (use defaults for common properties) _expectedClassOfService.authentication().type(ClassesOfService.AuthenticationTypes.OMM_LOGIN); _expectedClassOfService.flowControl().type(ClassesOfService.FlowControlTypes.BIDIRECTIONAL); _expectedClassOfService.dataIntegrity().type(ClassesOfService.DataIntegrityTypes.RELIABLE); }
destCos.flowControl().type(flowControl().type()); destCos.flowControl().recvWindowSize(flowControl().recvWindowSize()); destCos.flowControl().sendWindowSize(flowControl().sendWindowSize());
_tunnelStreamOpenOptions.classOfService().flowControl().type(ClassesOfService.FlowControlTypes.BIDIRECTIONAL); _tunnelStreamOpenOptions.classOfService().dataIntegrity().type(ClassesOfService.DataIntegrityTypes.RELIABLE); _tunnelStreamOpenOptions.streamId(TUNNEL_STREAM_STREAM_ID);
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()); }
public int openStream(ChannelInfo chnlInfo, ReactorErrorInfo errorInfo) { int ret; _serviceId = chnlInfo.tsServiceInfo.serviceId(); _tunnelStreamOpenOptions.clear(); _tunnelStreamOpenOptions.name("BasicTunnelStream"); _tunnelStreamOpenOptions.classOfService().flowControl().type(ClassesOfService.FlowControlTypes.BIDIRECTIONAL); _tunnelStreamOpenOptions.classOfService().dataIntegrity().type(ClassesOfService.DataIntegrityTypes.RELIABLE); _tunnelStreamOpenOptions.streamId(TUNNEL_STREAM_STREAM_ID); _tunnelStreamOpenOptions.domainType(_tunnelDomain); _tunnelStreamOpenOptions.serviceId(_serviceId); _tunnelStreamOpenOptions.defaultMsgCallback(this); _tunnelStreamOpenOptions.statusEventCallback(this); if (_tunnelAuth) _tunnelStreamOpenOptions.classOfService().authentication().type(ClassesOfService.AuthenticationTypes.OMM_LOGIN); if ((ret = chnlInfo.reactorChannel.openTunnelStream(_tunnelStreamOpenOptions, errorInfo)) != ReactorReturnCodes.SUCCESS) { System.out.println("ReactorChannel.openTunnelStream() failed: " + CodecReturnCodes.toString(ret) + "(" + errorInfo.error().text() + ")"); } chnlInfo.tunnelStreamOpenSent = true; _chnlInfo = chnlInfo; return ReactorReturnCodes.SUCCESS; }
tsOpenOptions.classOfService().flowControl().recvWindowSize(cos.flowControl().recvWindowSize()); tsOpenOptions.classOfService().flowControl().type(cos.flowControl().type());
_classOfService.flowControl().sendWindowSize(ackHeader.recvWindow()); _classOfService.flowControl().sendWindowSize(ackHeader.recvWindow()); if (TunnelStreamUtil.seqNumCompare(ackHeader.seqNum(), _sendLastSeqNumAcked) > 0)
_tunnelStreamAcceptOptions.classOfService().flowControl().type((ClassesOfService.FlowControlTypes.BIDIRECTIONAL));
if (options.classOfService().flowControl().recvWindowSize() == -1) options.classOfService().flowControl().recvWindowSize(TunnelStream.DEFAULT_RECV_WINDOW); if (options.classOfService().flowControl().recvWindowSize() < options.classOfService().common().maxFragmentSize()) options.classOfService().flowControl().recvWindowSize(options.classOfService().common().maxFragmentSize()); tunnelStream.classOfService().flowControl().sendWindowSize(event.classOfService().flowControl().recvWindowSize()); if (tunnelStream.classOfService().flowControl().sendWindowSize() < tunnelStream.classOfService().common().maxFragmentSize()) tunnelStream.classOfService().flowControl().sendWindowSize(tunnelStream.classOfService().common().maxFragmentSize());
if (tunnelStream.classOfService().flowControl().recvWindowSize() == -1) tunnelStream.classOfService().flowControl().recvWindowSize(TunnelStream.DEFAULT_RECV_WINDOW); if (tunnelStream.classOfService().flowControl().recvWindowSize() < tunnelStream.classOfService().common().maxFragmentSize()) tunnelStream.classOfService().flowControl().recvWindowSize(tunnelStream.classOfService().common().maxFragmentSize()); if (tunnelStream.classOfService().flowControl().sendWindowSize() == -1) tunnelStream.classOfService().flowControl().sendWindowSize(TunnelStream.DEFAULT_RECV_WINDOW); if (tunnelStream.classOfService().flowControl().sendWindowSize() < tunnelStream.classOfService().common().maxFragmentSize()) tunnelStream.classOfService().flowControl().sendWindowSize(tunnelStream.classOfService().common().maxFragmentSize());
@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; }
/** 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; } }
_tunnelStreamMsg.domainType(_domainType); ackHeader.seqNum(_recvLastSeqNum); ackHeader.recvWindow(_classOfService.flowControl().recvWindowSize()); + _sendLastSeqNum + " out, " + _sendLastSeqNumAcked + " acked out, " + _classOfService.flowControl().recvWindowSize() + " recvWindow -->"); _hasFinSent = true; ackHeader.recvWindow(_classOfService.flowControl().recvWindowSize()); _tunnelStreamMsg.domainType(_domainType); ackHeader.seqNum(_recvLastSeqNum); ackHeader.recvWindow(_classOfService.flowControl().recvWindowSize()); _hasFinSent = true; ackHeader.recvWindow(_classOfService.flowControl().recvWindowSize()); ackHeader.recvWindow(_classOfService.flowControl().recvWindowSize()); _tunnelStreamMsg.domainType(_domainType); ackHeader.seqNum(_receivedFinalFinSeqNum); ackHeader.recvWindow(_classOfService.flowControl().recvWindowSize());
tsOpenOpts.defaultMsgCallback(this); tsOpenOpts.classOfService().dataIntegrity().type(DataIntegrityTypes.RELIABLE); tsOpenOpts.classOfService().flowControl().type(FlowControlTypes.BIDIRECTIONAL); tsOpenOpts.classOfService().guarantee().type(GuaranteeTypes.PERSISTENT_QUEUE); tsOpenOpts.classOfService().guarantee().persistLocally(persistLocally);
assertEquals(AuthenticationTypes.OMM_LOGIN, consTunnelStream.classOfService().authentication().type()); assertEquals(FlowControlTypes.BIDIRECTIONAL, consTunnelStream.classOfService().flowControl().type()); assertEquals(TunnelStream.DEFAULT_RECV_WINDOW, consTunnelStream.classOfService().flowControl().sendWindowSize()); assertEquals(TunnelStream.DEFAULT_RECV_WINDOW, consTunnelStream.classOfService().flowControl().recvWindowSize()); assertEquals(DataIntegrityTypes.RELIABLE, consTunnelStream.classOfService().dataIntegrity().type()); assertEquals(GuaranteeTypes.NONE, consTunnelStream.classOfService().guarantee().type()); assertEquals(6144, provTunnelStream.classOfService().common().maxFragmentSize()); assertEquals(AuthenticationTypes.OMM_LOGIN, provTunnelStream.classOfService().authentication().type()); assertEquals(FlowControlTypes.BIDIRECTIONAL, provTunnelStream.classOfService().flowControl().type()); assertEquals(CosCommon.DEFAULT_MAX_FRAGMENT_SIZE, provTunnelStream.classOfService().flowControl().sendWindowSize()); assertEquals(TunnelStream.DEFAULT_RECV_WINDOW, provTunnelStream.classOfService().flowControl().recvWindowSize()); assertEquals(DataIntegrityTypes.RELIABLE, provTunnelStream.classOfService().dataIntegrity().type()); assertEquals(GuaranteeTypes.NONE, provTunnelStream.classOfService().guarantee().type());
assertEquals(maxMsgSize, consTunnelStream.classOfService().common().maxMsgSize()); assertEquals(AuthenticationTypes.NOT_REQUIRED, consTunnelStream.classOfService().authentication().type()); assertEquals(FlowControlTypes.BIDIRECTIONAL, consTunnelStream.classOfService().flowControl().type()); assertEquals(TunnelStream.DEFAULT_RECV_WINDOW, consTunnelStream.classOfService().flowControl().sendWindowSize()); assertEquals(TunnelStream.DEFAULT_RECV_WINDOW, consTunnelStream.classOfService().flowControl().recvWindowSize()); assertEquals(DataIntegrityTypes.RELIABLE, consTunnelStream.classOfService().dataIntegrity().type()); assertEquals(GuaranteeTypes.NONE, consTunnelStream.classOfService().guarantee().type()); assertEquals(maxMsgSize, provTunnelStream.classOfService().common().maxMsgSize()); assertEquals(AuthenticationTypes.NOT_REQUIRED, provTunnelStream.classOfService().authentication().type()); assertEquals(FlowControlTypes.BIDIRECTIONAL, provTunnelStream.classOfService().flowControl().type()); assertEquals(provTunnelStream.classOfService().common().maxFragmentSize(), provTunnelStream.classOfService().flowControl().sendWindowSize()); assertEquals(TunnelStream.DEFAULT_RECV_WINDOW, provTunnelStream.classOfService().flowControl().recvWindowSize()); assertEquals(DataIntegrityTypes.RELIABLE, provTunnelStream.classOfService().dataIntegrity().type()); assertEquals(GuaranteeTypes.NONE, provTunnelStream.classOfService().guarantee().type());