ChannelCallbackClient(OmmBaseImpl<T> baseImpl, Reactor rsslReactor) { _baseImpl = baseImpl; _rsslReactor = rsslReactor; _rsslReactorConnOptions.connectionList().add(ReactorFactory.createReactorConnectInfo()); _bInitialChannelReadyEventReceived = false; if (_baseImpl.loggerClient().isTraceEnabled()) { _baseImpl.loggerClient().trace(_baseImpl.formatLogMessage(CLIENT_NAME, "Created ChannelCallbackClient", Severity.TRACE).toString()); } _productVersion = _package.getImplementationVersion(); if (_productVersion == null) _productVersion = "EMA Java Edition"; }
boolean recoveryAttemptLimitReached() { return (_reactorConnectOptions.reconnectAttemptLimit() != NO_RECONNECT_LIMIT && _reconnectAttempts == _reactorConnectOptions.reconnectAttemptLimit()); }
void calculateNextReconnectTime() { if (_reconnectDelay < _reactorConnectOptions.reconnectMaxDelay()) { if (_reconnectDelay != 0) { _reconnectDelay *= 2; } else // set equal to reconnectMinDelay first time through { _reconnectDelay = _reactorConnectOptions.reconnectMinDelay(); } if (_reconnectDelay > _reactorConnectOptions.reconnectMaxDelay()) { _reconnectDelay = _reactorConnectOptions.reconnectMaxDelay(); } } _nextRecoveryTime = System.currentTimeMillis() + _reconnectDelay; }
List<ChannelConfig> activeConfigChannelSet = activeConfig.channelConfigSet; int channelCfgSetLastIndex = activeConfigChannelSet.size() - 1; int rsslReactorConnListSize = _rsslReactorConnOptions.connectionList().size(); int supportedConnectionTypeChannelCount = 0; String channelParams = ""; _rsslReactorConnOptions.reconnectAttemptLimit(activeConfig.reconnectAttemptLimit); _rsslReactorConnOptions.reconnectMinDelay(activeConfig.reconnectMinDelay); _rsslReactorConnOptions.reconnectMaxDelay(activeConfig.reconnectMaxDelay); com.thomsonreuters.upa.transport.ConnectOptions connectOptions = null; if( i < rsslReactorConnListSize ) connectOptions = _rsslReactorConnOptions.connectionList().get(i).connectOptions(); connectOptions.userSpecObject(channelInfo); _rsslReactorConnOptions.connectionList().get(i).initTimeout(5); connectOptions = newReactConnInfo.connectOptions(); connectOptions.userSpecObject(channelInfo); _rsslReactorConnOptions.connectionList().add(newReactConnInfo); rsslReactorConnListSize = _rsslReactorConnOptions.connectionList().size(); _baseImpl.loggerClient().error(_baseImpl.formatLogMessage(CLIENT_NAME, tempErr.toString(), Severity.ERROR)); for(int i = 0; i < _rsslReactorConnOptions.connectionList().size(); i++ ) ChannelInfo channelInfo = (ChannelInfo) _rsslReactorConnOptions.connectionList().get(i).connectOptions().userSpecObject(); if( channelInfo != null)
connectOpts.clear(); connectOpts.connectionList().get(0).connectOptions().userSpecObject(component); connectOpts.connectionList().get(0).connectOptions().segmentedNetworkInfo().recvAddress("235.1.1.1"); connectOpts.connectionList().get(0).connectOptions().segmentedNetworkInfo().recvServiceName("15011"); connectOpts.connectionList().get(0).connectOptions().segmentedNetworkInfo().sendAddress("235.1.1.1"); connectOpts.connectionList().get(0).connectOptions().segmentedNetworkInfo().sendServiceName("15011"); connectOpts.connectionList().get(0).connectOptions().segmentedNetworkInfo().unicastServiceName("12346"); connectOpts.connectionList().get(0).connectOptions().segmentedNetworkInfo().interfaceName("localhost"); connectOpts.connectionList().get(0).connectOptions().connectionType(ConnectionTypes.RELIABLE_MCAST); connectOpts.connectionList().get(0).connectOptions().sysSendBufSize(64); connectOpts.connectionList().get(0).connectOptions().sysRecvBufSize(64); assertEquals(ReactorReturnCodes.SUCCESS, _reactor.connect(connectOpts, component.reactorRole(), _errorInfo)); connectOpts.clear();
void reactorConnectOptions(ReactorConnectOptions reactorConnectOptions) { if (_reactorConnectOptions == null) _reactorConnectOptions = ReactorFactory.createReactorConnectOptions(); reactorConnectOptions.copy(_reactorConnectOptions); _reconnectDelay = 0; _nextRecoveryTime = 0; }
/** * Create {@link ReactorConnectOptions}. * * @return {@link ReactorConnectOptions} object * * @see ReactorConnectOptions */ public static ReactorConnectOptions createReactorConnectOptions() { return new ReactorConnectOptions(); }
chnlInfo.connectOptions.reconnectAttemptLimit(-1); // attempt to recover forever chnlInfo.connectOptions.reconnectMinDelay(1000); // 1 second minimum chnlInfo.connectOptions.reconnectMaxDelay(60000); // 60 second maximum chnlInfo.connectOptions.connectionList().get(0).connectOptions().majorVersion(Codec.majorVersion()); chnlInfo.connectOptions.connectionList().get(0).connectOptions().minorVersion(Codec.minorVersion()); chnlInfo.connectOptions.connectionList().get(0).connectOptions().connectionType(connectionType); chnlInfo.connectOptions.connectionList().get(0).connectOptions().unifiedNetworkInfo().serviceName(chnlInfo.connectionArg.port()); chnlInfo.connectOptions.connectionList().get(0).connectOptions().unifiedNetworkInfo().address(chnlInfo.connectionArg.hostname()); chnlInfo.connectOptions.connectionList().get(0).connectOptions().userSpecObject(chnlInfo); chnlInfo.connectOptions.connectionList().get(0).connectOptions().majorVersion(Codec.majorVersion()); chnlInfo.connectOptions.connectionList().get(0).connectOptions().minorVersion(Codec.minorVersion()); chnlInfo.connectOptions.connectionList().get(0).connectOptions().connectionType(connectionType); chnlInfo.connectOptions.connectionList().get(0).connectOptions().segmentedNetworkInfo().sendAddress(chnlInfo.connectionArg.sendAddress()); chnlInfo.connectOptions.connectionList().get(0).connectOptions().segmentedNetworkInfo().sendServiceName(chnlInfo.connectionArg.sendPort()); chnlInfo.connectOptions.connectionList().get(0).connectOptions().segmentedNetworkInfo().interfaceName(chnlInfo.connectionArg.interfaceName()); chnlInfo.connectOptions.connectionList().get(0).connectOptions().segmentedNetworkInfo().recvAddress(chnlInfo.connectionArg.recvAddress()); chnlInfo.connectOptions.connectionList().get(0).connectOptions().segmentedNetworkInfo().recvServiceName(chnlInfo.connectionArg.recvPort()); chnlInfo.connectOptions.connectionList().get(0).connectOptions().segmentedNetworkInfo().unicastServiceName(chnlInfo.connectionArg.unicastPort()); chnlInfo.connectOptions.connectionList().get(0).connectOptions().userSpecObject(chnlInfo); chnlInfo.connectOptions.connectionList().add(connectInfo); chnlInfo.connectOptions.connectionList().get(1).connectOptions().majorVersion(Codec.majorVersion()); chnlInfo.connectOptions.connectionList().get(1).connectOptions().minorVersion(Codec.minorVersion()); chnlInfo.connectOptions.connectionList().get(1).connectOptions().connectionType(connectionType); chnlInfo.connectOptions.connectionList().get(1).connectOptions().unifiedNetworkInfo().serviceName(commandLineParser.backupPort()); chnlInfo.connectOptions.connectionList().get(1).connectOptions().unifiedNetworkInfo().address(commandLineParser.backupHostname()); chnlInfo.connectOptions.connectionList().get(1).connectOptions().userSpecObject(chnlInfo);
int ret; connectOpts.clear(); connectOpts.connectionList().add(connectInfo); connectOpts.connectionList().get(0).connectOptions().majorVersion(Codec.majorVersion()); connectOpts.connectionList().get(0).connectOptions().minorVersion(Codec.minorVersion()); connectOpts.connectionList().get(0).connectOptions().connectionType(opts.connectionType()); connectOpts.connectionList().get(0).connectOptions().userSpecObject(component); connectOpts.reconnectAttemptLimit(opts.reconnectAttemptLimit()); connectOpts.reconnectMinDelay(opts.reconnectMinDelay()); connectOpts.reconnectMaxDelay(opts.reconnectMaxDelay()); connectOpts.connectionList().get(0).connectOptions().pingTimeout(opts.pingTimeout()); connectOpts.connectionList().get(0).initTimeout(opts.consumerChannelInitTimeout()); connectOpts.connectionList().get(0).connectOptions().unifiedNetworkInfo().address("localhost"); connectOpts.connectionList().get(0).connectOptions().unifiedNetworkInfo().serviceName(String.valueOf(port)); connectOpts.connectionList().get(0).connectOptions().segmentedNetworkInfo().recvAddress("235.1.1.1"); connectOpts.connectionList().get(0).connectOptions().segmentedNetworkInfo().recvServiceName("15011"); connectOpts.connectionList().get(0).connectOptions().segmentedNetworkInfo().sendAddress("235.1.1.1"); connectOpts.connectionList().get(0).connectOptions().segmentedNetworkInfo().sendServiceName("15011"); connectOpts.connectionList().get(0).connectOptions().segmentedNetworkInfo().unicastServiceName("12345"); connectOpts.connectionList().get(0).connectOptions().segmentedNetworkInfo().interfaceName("localhost"); connectOpts.connectionList().get(0).connectOptions().sysSendBufSize(64); connectOpts.connectionList().get(0).connectOptions().sysRecvBufSize(64); connectOpts.clear();
Channel reconnect(Error error) { _reconnectAttempts++; if (++_listIndex == _reactorConnectOptions.connectionList().size()) { _listIndex = 0; } // enable channel read/write locking for reactor since it's multi-threaded with worker thread ReactorConnectInfo reactorConnectInfo = _reactorConnectOptions.connectionList().get(_listIndex); userSpecObj(reactorConnectInfo.connectOptions().userSpecObject()); reactorConnectInfo.connectOptions().channelReadLocking(true); reactorConnectInfo.connectOptions().channelWriteLocking(true); // connect Channel channel = Transport.connect(reactorConnectInfo.connectOptions(), error); if (channel != null) initializationTimeout(reactorConnectInfo.initTimeout()); return channel; }
chnlInfo.connectOptions.reconnectAttemptLimit(-1); // attempt to recover forever chnlInfo.connectOptions.reconnectMinDelay(1000); // 1 second minimum chnlInfo.connectOptions.reconnectMaxDelay(60000); // 60 second maximum chnlInfo.connectOptions.connectionList().get(0).connectOptions().majorVersion(Codec.majorVersion()); chnlInfo.connectOptions.connectionList().get(0).connectOptions().minorVersion(Codec.minorVersion()); chnlInfo.connectOptions.connectionList().get(0).connectOptions().connectionType(chnlInfo.connectionArg.connectionType()); chnlInfo.connectOptions.connectionList().get(0).connectOptions().unifiedNetworkInfo().serviceName(chnlInfo.connectionArg.port()); chnlInfo.connectOptions.connectionList().get(0).connectOptions().unifiedNetworkInfo().address(chnlInfo.connectionArg.hostname()); chnlInfo.connectOptions.connectionList().get(0).connectOptions().userSpecObject(chnlInfo); chnlInfo.connectOptions.connectionList().get(0).connectOptions().guaranteedOutputBuffers(1000); chnlInfo.connectOptions.connectionList().add(connectInfo); chnlInfo.connectOptions.connectionList().get(1).connectOptions().majorVersion(Codec.majorVersion()); chnlInfo.connectOptions.connectionList().get(1).connectOptions().minorVersion(Codec.minorVersion()); chnlInfo.connectOptions.connectionList().get(1).connectOptions().connectionType(chnlInfo.connectionArg.connectionType()); chnlInfo.connectOptions.connectionList().get(1).connectOptions().unifiedNetworkInfo().serviceName(consumerCmdLineParser.backupPort()); chnlInfo.connectOptions.connectionList().get(1).connectOptions().unifiedNetworkInfo().address(consumerCmdLineParser.backupHostname()); chnlInfo.connectOptions.connectionList().get(1).connectOptions().userSpecObject(chnlInfo); chnlInfo.connectOptions.connectionList().get(1).connectOptions().guaranteedOutputBuffers(1000); ConnectOptions cOpt = chnlInfo.connectOptions.connectionList().get(0).connectOptions(); cOpt.connectionType(ConnectionTypes.ENCRYPTED); cOpt.tunnelingInfo().tunnelingType("encrypted"); ConnectOptions cOpt = chnlInfo.connectOptions.connectionList().get(0).connectOptions(); cOpt.connectionType(ConnectionTypes.HTTP); cOpt.tunnelingInfo().tunnelingType("http");
majorVersion = chnlInfo.connectOptions.connectionList().get(0).connectOptions().majorVersion(); minorVersion = chnlInfo.connectOptions.connectionList().get(0).connectOptions().minorVersion();
chnlInfo.connectOptions.reconnectAttemptLimit(-1); // attempt to recover forever chnlInfo.connectOptions.reconnectMinDelay(500); // 0.5 second minimum chnlInfo.connectOptions.reconnectMaxDelay(3000); // 3 second maximum chnlInfo.connectOptions.connectionList().get(0).connectOptions().majorVersion(Codec.majorVersion()); chnlInfo.connectOptions.connectionList().get(0).connectOptions().minorVersion(Codec.minorVersion()); chnlInfo.connectOptions.connectionList().get(0).connectOptions().connectionType(chnlInfo.connectionArg.connectionType()); chnlInfo.connectOptions.connectionList().get(0).connectOptions().unifiedNetworkInfo().serviceName(chnlInfo.connectionArg.port()); chnlInfo.connectOptions.connectionList().get(0).connectOptions().unifiedNetworkInfo().address(chnlInfo.connectionArg.hostname()); chnlInfo.connectOptions.connectionList().get(0).connectOptions().unifiedNetworkInfo().interfaceName(chnlInfo.connectionArg.interfaceName()); chnlInfo.connectOptions.connectionList().get(0).connectOptions().userSpecObject(chnlInfo); chnlInfo.connectOptions.connectionList().get(0).connectOptions().guaranteedOutputBuffers(1000); ConnectOptions cOpt = chnlInfo.connectOptions.connectionList().get(0).connectOptions(); cOpt.connectionType(ConnectionTypes.ENCRYPTED); cOpt.tunnelingInfo().tunnelingType("encrypted"); ConnectOptions cOpt = chnlInfo.connectOptions.connectionList().get(0).connectOptions(); cOpt.connectionType(ConnectionTypes.HTTP); cOpt.tunnelingInfo().tunnelingType("http");
if (reactorConnectOptions.connectionList().get(0).initTimeout() < 1) "ReactorConnectOptions.timeout must be greater than zero, aborting."); else if (reactorConnectOptions.connectionList().get(0).connectOptions().blocking() == true) reactorChannel.role(role); reactorChannel.reactor(this); reactorChannel.userSpecObj(reactorConnectOptions.connectionList().get(0).connectOptions().userSpecObject()); reactorChannel.initializationTimeout(reactorConnectOptions.connectionList().get(0).initTimeout()); reactorChannel.reactorConnectOptions(reactorConnectOptions); _reactorChannelQueue.pushBack(reactorChannel, ReactorChannel.REACTOR_CHANNEL_LINK); ConnectOptions connectOptions = reactorConnectOptions.connectionList().get(0).connectOptions(); connectOptions.channelReadLocking(true); connectOptions.channelWriteLocking(true);
_connectOptions.connectionList().add(_connectInfo); _connectOptions.reconnectAttemptLimit(-1); _connectOptions.reconnectMaxDelay(5000); _connectOptions.reconnectMinDelay(1000);
static ReactorConnectOptions createDefaultConsumerConnectOptions(String serviceName) { ReactorConnectOptions rcOpts = ReactorFactory.createReactorConnectOptions(); ReactorConnectInfo connectInfo = ReactorFactory.createReactorConnectInfo(); assertNotNull(rcOpts); assertEquals(ReactorReturnCodes.PARAMETER_OUT_OF_RANGE, connectInfo.initTimeout(0)); assertEquals(ReactorReturnCodes.SUCCESS, connectInfo.initTimeout(10)); connectInfo.connectOptions().connectionType(ConnectionTypes.SOCKET); connectInfo.connectOptions().majorVersion(Codec.majorVersion()); connectInfo.connectOptions().minorVersion(Codec.minorVersion()); connectInfo.connectOptions().unifiedNetworkInfo().serviceName(serviceName); connectInfo.connectOptions().unifiedNetworkInfo().address(LOCAL_ADDRESS); rcOpts.connectionList().add(connectInfo); return rcOpts; }
ReactorConnectOptions createConnectOptionsWithBackup(String serviceName, String serviceNameBackup) { ReactorConnectOptions rcOpts = ReactorFactory.createReactorConnectOptions(); assertNotNull(rcOpts); ReactorConnectInfo connectInfo1 = ReactorFactory.createReactorConnectInfo(); assertEquals(ReactorReturnCodes.PARAMETER_OUT_OF_RANGE, connectInfo1.initTimeout(0)); assertEquals(ReactorReturnCodes.SUCCESS, connectInfo1.initTimeout(10)); connectInfo1.connectOptions().connectionType(ConnectionTypes.SOCKET); connectInfo1.connectOptions().majorVersion(Codec.majorVersion()); connectInfo1.connectOptions().minorVersion(Codec.minorVersion()); connectInfo1.connectOptions().unifiedNetworkInfo().serviceName(serviceName); connectInfo1.connectOptions().unifiedNetworkInfo().address(LOCAL_ADDRESS); connectInfo1.connectOptions().userSpecObject("userSpecObject: " + serviceName); rcOpts.connectionList().add(connectInfo1); ReactorConnectInfo connectInfo2 = ReactorFactory.createReactorConnectInfo(); assertEquals(ReactorReturnCodes.PARAMETER_OUT_OF_RANGE, connectInfo2.initTimeout(0)); assertEquals(ReactorReturnCodes.SUCCESS, connectInfo2.initTimeout(10)); connectInfo2.connectOptions().connectionType(ConnectionTypes.SOCKET); connectInfo2.connectOptions().majorVersion(Codec.majorVersion()); connectInfo2.connectOptions().minorVersion(Codec.minorVersion()); connectInfo2.connectOptions().unifiedNetworkInfo().serviceName(serviceNameBackup); connectInfo2.connectOptions().unifiedNetworkInfo().address(LOCAL_ADDRESS); connectInfo2.connectOptions().userSpecObject("userSpecObject: " + serviceNameBackup); rcOpts.connectionList().add(connectInfo2); rcOpts.reconnectAttemptLimit(-1); rcOpts.reconnectMinDelay(1000); rcOpts.reconnectMaxDelay(1000); return rcOpts; }
_connectOptions.connectionList().add(_connectInfo);
srcInfo2.initTimeout(77777); srcReactorOpts.connectionList().add(srcInfo1); srcReactorOpts.connectionList().add(srcInfo2); srcReactorOpts.reconnectAttemptLimit(10); srcReactorOpts.reconnectMinDelay(1234); srcReactorOpts.reconnectMaxDelay(4321); srcReactorOpts.copy(destReactorOpts); assertEquals(2, srcReactorOpts.connectionList().size()); assertEquals(2, destReactorOpts.connectionList().size()); ConnectOptions testOpts = reactorConnectOptions.connectionList().get(0).connectOptions(); assertEquals(10, reactorConnectOptions.reconnectAttemptLimit()); assertEquals(1234, reactorConnectOptions.reconnectMinDelay()); assertEquals(4321, reactorConnectOptions.reconnectMaxDelay()); assertEquals(66666, reactorConnectOptions.connectionList().get(0).initTimeout()); assertTrue(testOpts.componentVersion().toString().equals("HARTNELL")); assertEquals(ConnectionTypes.SEQUENCED_MCAST, testOpts.connectionType()); testOpts = reactorConnectOptions.connectionList().get(1).connectOptions(); assertEquals(77777, reactorConnectOptions.connectionList().get(1).initTimeout()); assertTrue(testOpts.componentVersion().toString().equals("MULGREW")); assertEquals(ConnectionTypes.UNIDIR_SHMEM, testOpts.connectionType());