How to know when my SSL consumer application is disconnected from the server?

Best Answer
-
Hello @Akechi Sato
Market Data interfaces used by SSL consumer applications provide
Connection Events which represents events associated with a connection. An
application can register its interest via registerClient(..) in notifications
of changes in connection statuses. As soon as it registers its interest, it
will receive information about existing connections. Then every time a
connection status changes e.g. from connect to disconnect, the application will
be notified via Connection Events.The application should register the Connection Events with
different Event Queue and different MarketDataSubscriber from the one for
MarketDataItem Events. Hence, the Connection Events are dispatched in timely
manner when the connection/disconnection occurs. Otherwise, the application may
be notified late because it has to dispatch all MarketDataItem Events which are
put in the same queue prior to the Connection Events first.The example source code is shown below:
1. Initializing RFA resource and registering for the Connection
Events:// RFA objects for Connection Events
protected EventQueue _conEventQueue;
protected MarketDataSubscriber _conMarketDataSubscriber;
protected Handle _conmdsClientHandle;
…
//Initialize RFA objects for Connection Events
_conEventQueue = EventQueue.create("EventQueue for connection Event");
_conMarketDataSubscriber = (MarketDataSubscriber)_session
.createEventSource(EventSource.MARKET_DATA_SUBSCRIBER,
"MarketDataSubscriber for connection event",true, _standardPI);
//Register for connection status
MarketDataSubscriberInterestSpec conmarketDataSubscriberInterestSpec =
new MarketDataSubscriberInterestSpec();
conmarketDataSubscriberInterestSpec.setConnectionInterest(true);
_conmdsClientHandle = _conMarketDataSubscriber.registerClient(_conEventQueue, conmarketDataSubscriberInterestSpec, myClient, null);2. Dispatching the Connection Events from its queue:
while ((System.currentTimeMillis() - startTime) < _runTime * 1000)
try
{
…
_conEventQueue.dispatch(1000);
}
catch (DispatchException de)
{
System.out.println("Queue deactivated");
return;
}3. Processing the Connection Events:
public void processEvent(Event event)
{
switch (event.getType())
{
…
case Event.CONNECTION_EVENT:
processConnectionEvent((ConnectionEvent)event);
break;
…
}
}
protected void processConnectionEvent(ConnectionEvent connectionEvent)
{
System.out.println(new Date());
System.out.print("Received CONNECTION_EVENT: " + connectionEvent.getConnectionName());
System.out.println(" " + connectionEvent.getConnectionStatus().toString());
if(connectionEvent.getConnectionStatus().getState() == ConnectionStatus.DOWN) {
System.out.println("The application is disconnecting from the server”);
}
else if (connectionEvent.getConnectionStatus().getState() == ConnectionStatus.UP) {
System.out.println("The application is connecting to the server”);
}
}4.Unregistering for the Connection Events and Releasing RFA
resource before the application exits//cleanup RFA objects for connection status
_conMarketDataSubscriber.unregisterClient( _conmdsClientHandle);
_conMarketDataSubscriber.destroy();
_conEventQueue.deactivate();The example output when the application connects the server:
Wed Jul 26 17:11:53 ICT 2017
Received CONNECTION_EVENT: SSLNamespace::pageSSLConn { state: UP, code: NONE, text: "192.168.27.55"}
The application is connecting to the serverThe example output when it has been disconnected from the server:
Wed Jul 26 17:15:06 ICT 2017
Received CONNECTION_EVENT: SSLNamespace::pageSSLConn { state: DOWN, code: NONE, text: "Not connected: Channel disconnected"}
The application is disconnecting from the server0
Categories
- All Categories
- 3 Polls
- 6 AHS
- 36 Alpha
- 166 App Studio
- 6 Block Chain
- 4 Bot Platform
- 18 Connected Risk APIs
- 47 Data Fusion
- 34 Data Model Discovery
- 685 Datastream
- 1.4K DSS
- 615 Eikon COM
- 5.2K Eikon Data APIs
- 10 Electronic Trading
- Generic FIX
- 7 Local Bank Node API
- 3 Trading API
- 2.9K Elektron
- 1.4K EMA
- 252 ETA
- 556 WebSocket API
- 38 FX Venues
- 14 FX Market Data
- 1 FX Post Trade
- 1 FX Trading - Matching
- 12 FX Trading – RFQ Maker
- 5 Intelligent Tagging
- 2 Legal One
- 23 Messenger Bot
- 3 Messenger Side by Side
- 9 ONESOURCE
- 7 Indirect Tax
- 60 Open Calais
- 275 Open PermID
- 44 Entity Search
- 2 Org ID
- 1 PAM
- PAM - Logging
- 6 Product Insight
- Project Tracking
- ProView
- ProView Internal
- 22 RDMS
- 1.9K Refinitiv Data Platform
- 651 Refinitiv Data Platform Libraries
- 4 LSEG Due Diligence
- LSEG Due Diligence Portal API
- 4 Refinitiv Due Dilligence Centre
- Rose's Space
- 1.2K Screening
- 18 Qual-ID API
- 13 Screening Deployed
- 23 Screening Online
- 12 World-Check Customer Risk Screener
- 1K World-Check One
- 46 World-Check One Zero Footprint
- 45 Side by Side Integration API
- 2 Test Space
- 3 Thomson One Smart
- 10 TR Knowledge Graph
- 151 Transactions
- 143 REDI API
- 1.8K TREP APIs
- 4 CAT
- 27 DACS Station
- 121 Open DACS
- 1.1K RFA
- 104 UPA
- 193 TREP Infrastructure
- 228 TRKD
- 917 TRTH
- 5 Velocity Analytics
- 9 Wealth Management Web Services
- 90 Workspace SDK
- 11 Element Framework
- 5 Grid
- 18 World-Check Data File
- 1 Yield Book Analytics
- 46 中文论坛