\tclrfa\debug = false
\Logger\AppLogger\useInternalLogStrings = true
\Logger\AppLogger\windowsLoggerEnabled = false
\Logger\AppLogger\fileLoggerEnabled = true
\Logger\AppLogger\fileLoggerFilename = "./tclrfa.log"
\Connections\Connection_RSSL1\rsslPort = "14002"
\Connections\Connection_RSSL1\ServerList = "127.0.0.1"
\Connections\Connection_RSSL1\connectionType = "RSSL"
\Connections\Connection_RSSL1\logEnabled = true
\Connections\Connection_RSSL1\UserName = "USERNAME"
\Connections\Connection_RSSL1\InstanceId = "1"
\Connections\Connection_RSSL1\ApplicationId = "180"
\Connections\Connection_RSSL1\Position = "127.0.0.1"
\Connections\Connection_RSSL1\ServiceName = "SERVICE"
\Connections\Connection_RSSL1\fieldDictionaryFilename = "../etc/RDM/RDMFieldDictionary"
\Connections\Connection_RSSL1\enumTypeFilename = "../etc/RDM/enumtype.def"
\Connections\Connection_RSSL1\downloadDataDict = false
\Sessions\Session1\connectionList = "Connection_RSSL1"
\ServiceGroups\SG1\serviceList = "SERVICE1, SERVICE2"
\Sessions\Session1\serviceGroupList = "SG1"
Namespace: \#tclrfa\
Parameter | Example value | Description |
---|---|---|
debug |
true /false |
Enable/Disable debug mode |
Namespace: \Logger\AppLogger\
Parameter | Example value | Description |
---|---|---|
fileLoggerEnabled |
true /false |
Enable/Disable logging capability |
fileLoggerFilename |
"./tclrfa.log" |
Log file name |
Namespace: \Connections\<connection_name>\
Parameter | Example value | Description |
---|---|---|
rsslPort |
"14002" |
P2PS/ADS RSSL port number |
ServerList |
"127.0.0.1" |
P2PS/ADS IP address or hostnam |
connectionType |
"RSSL" |
The specific type of the connection. Must be RSSL |
logEnabled |
true /false |
Enable/Disable logging capability |
UserName |
"tclrfa" |
DACS username |
InstanceId |
"123" |
Application instance ID |
ApplicationId |
"180" |
Application ID |
Position |
"127.0.0.1/net" |
DACS position |
ServiceName |
"NIP" |
Service name to be subscribe |
VendorName |
"OMMCProv_DevCartel" |
Name of the vendor that provides the data for this service |
symbolList |
"0#BMD" |
Symbollist name to be subscribe(d) |
maxSymbols |
30 |
Configure maximum number of symbol inside symbollist |
fieldDictionaryFilename |
"../etc/RDM/RDMFieldDictionary" |
Dictionary file path |
enumTypeFilename |
"../etc/RDM/enumtype.def" |
enumtype file path |
downloadDataDict |
true /false |
Enable/Disable data dictionary download from P2PS/ADS |
dumpDataDict |
true /false |
Enable/Disable to dump data dictionary from P2PS/ADS |
Namespace: \Sessions\<session_name>\
Parameter | Example value | Description |
---|---|---|
connectionList |
"Connection_RSSL1" |
Match connection_name |
serviceGroupList |
"SG1" |
Service group name |
session_name
must be passed to acquireSession()
function.
Namespace: \ServiceGroups\<service_group_name>\
Parameter | Example value | Description |
---|---|---|
serviceList |
"SERVICE1, SERVICE2" |
Available service names for the group |
[tclrfa]
➥return: object
Instantiate a TclRFA object
set t [tclrfa]
setDebugMode True|False
Enable or disable debug messages. If argument is empty, it will read a value from \pyrfa\debug
in the configuration file. This function can only be called after createConfigDb
.
Example:
$t setDebugMode True
createConfigDb filename
filename = configuration file location, full or relative path
Read the configuration file. Initialize RFA context.
Example:
$t createConfigDb "./tclrfa.cfg"
printConfigDb config_node
config_node = part of the configuration node to be printed out
Print current configuration values. If the arg is omitted, this function returns all of the configuration values under the ‘Default’ namespace.
Example:
$t printConfigDb "\\Default\\Sessions"
Output:
\Default\Sessions\Session1\connectionList = Connection_RSSL1
\Default\Sessions\Session2\connectionList = Connection_RSSL2
\Default\Sessions\Session3\connectionList = Connection_RSSL3
\Default\Sessions\Session4\connectionList = Connection_RSSL4
acquireSession session
session = session name
Acquire a session as defined in the configuration file and look up for an appropriate connection type then establish a client/server network session.
Example:
$t acquireSession "Session1"
createOMMConsumer
Create an OMM data consumer client.
createOMMProvider
Create an OMM data provider client. Type of provider is defined by connectionType
. Use RSSL_PROV
for interactive provider and RSSL_NIPROV
for non-interactive, full-cached provider.
$t createOMMProvider
login ?username instanceid appid position?
username = DACS user ID
instanceid = unique application instance ID
appid = application ID (1-256)
position = application position e.g. IP address
Send an authentication message with user information. This step is mandatory in order to consume the market data from P2PS/ADS. If arguments are omitted, TclRFA will read values from configuration file.
isLoggedIn
➥return: boolean
Check whether the client successfully receives a login status from the P2PS/ADS.
setInteractionType type
type = “snapshot” or “streaming”
Set subscription type snapshot
or streaming
. If snapshot
is specified, the client will receive only the full image of an instrument then the subscribed stream will be closed.
Example:
$t setInteractionType “snapshot”
setServiceName service
Programmatically set service name for subcription. Call this before making any request. This allows subcription to multiple services.
Example:
$t setServiceName "IDN"
$t marketPriceRequest "EUR="
directoryRequest
Send a directory request through the acquired session. This step is the mandatory in order to consume the market data from P2PS/ADS.
dictionaryRequest
If downloadDataDict
configuration is set to True then TclRFA will send a request for data dictionaries to P2PS/ADS. Otherwise, it uses local data dictionaries specified by fieldDictionaryFilename
and enumTypeFilename
from configuration file.
isNetworkDictionaryAvailable
➥return: boolean
Check whether the data dictionary is successfully downloaded from the server.
Example:
$t isNetworkDictionaryAvailable
Output:
1
getFieldID field_name
field_name = a valid field name
➥return: int
To translate field name to field ID.
Example:
$t getFieldID BID
Output:
22
logInfo message
Write an informational message to a log file.
logWarning message
Write a warning message to a log file.
logError message
Write an error message to a log file.
symbolListRequest RIC ?RIC RIC ...?
RIC = Reuters Instrument Code
For consumer application to subscribe symbol lists. User can define multiple symbol list names. Data dispatched using dispatchEventQueue
function.
symbolListCloseRequest RIC ?RIC RIC ...?
RIC = Reuters Instrument Code
Unsubscribe the specified symbol lists. User can define multiple symbol list names
symbolListCloseAllRequest
Unsubscribe all symbol lists in the watch list.
isSymbolListRefreshComplete
➥return: boolean
Check whether the client receives a complete list of the symbol list.
getSymbolListWatchList
➥return: str
Return names of the subscribed symbol lists.
getSymbolList RIC
RIC = Reuters Instrument Code
➥return: str
Return item names available under a symbol list in string format.
Example:
$t getSymbolList “0#BMD”
Output:
FPCO FPKC FPRD FPGO
marketPriceRequest RIC ?RIC RIC ...?
RIC = Reuters Instrument Code
For consumer client to subscribe market data from P2PS/ADS, user can define multiple item names. The data dispatched through dispatchEventQueue
.
Example:
while {1} {
foreach u [$t dispatchEventQueue] {
puts "\n[dict get $u]
}
}
}
Image
{SERVICE {NIP} RIC {EUR=} MTYPE {REFRESH}}
{SERVICE {NIP} RIC {EUR=} MTYPE {IMAGE} RDNDISPLAY {100} RDN_EXCHID {SES} BID {0.988} ASK {0.999} DIVPAYDATE {23 JUN 2011}}
Update
{SERVICE {NIP} RIC {EUR=} MTYPE {UPDATE} BID_NET_CH {0.0041} BID {0.988} ASK {0.999} ASK_TIME {15:14:24:180:000:000}}
Status
{SERVICE {NIP} RIC {EUR=} MTYPE {STATUS} DATA_STATE {Suspect} STREAM_STATE {Open} TEXT {Source unavailable... will recover when source is up}}
{SERVICE {NIP} RIC {JPY=} MTYPE {STATUS} DATA_STATE {Suspect} STREAM_STATE {Close} TEXT {F10: Not In Cache}}
setView FID ?FID FID ...?
FID = a valid field name or number (Optional)
To specify a view (a subset of fields to be filtered) for the next subscribed items. User can define multitple fields.
Example:
% $t setView "RDNDISPLAY TRDPRC_1 22 25"
% $t marketPriceRequest "EUR= JPY="
Or define as multiple arguments:
% $t setView RDNDISPLAY TRDPRC_1 22 25
% $t marketPriceRequest EUR= JPY=
And reset view to subscribe all fields with:
$t setView
marketPriceCloseRequest RIC ?RIC RIC ...?
RIC = Reuters Instrument Code
Unsubscribe items from streaming service. User can define multiple item names.
marketPriceCloseAllRequest
Unsubscribe all items from streaming service.
getMarketPriceWatchList
Returns names of the subscribed items with service names.
Example:
$t getMarketPriceWatchList
Output:
C.N.IDN_SELECTFEED JPY=.IDN_SELECTFEED
marketByOrderRequest RIC ?RIC RIC ...?
RIC = Reuters Instrument Code
For a consumer application to subscribe order book data, user can define multiple item names. The data dispatched through dispatchEventQueue
.
Example:
$t marketByOrderRequest "ANZ.AX"
while {1} {
set updates [$t dispatchEventQueue 1000]
if {$updates != ""} {
foreach u [$t dispatchEventQueue] {
puts "\n[dict get $u]
}
}
}
IMAGE:
{SERVICE {NIP} RIC {ANZ.AX} MTYPE {REFRESH}}
{SERVICE {NIP} RIC {ANZ.AX} MTYPE {IMAGE} ACTION {ADD} KEY {538993C200035057B} ORDER_PRC {20.835}}
UPDATE:
{SERVICE {NIP} RIC {ANZ.AX} MTYPE {UPDATE} ACTION {UPDATE} KEY {538993C200035057B} ORDER_PRC {20.214} ORDER_SIZE {41} ORDER_SIDE {BID} SEQNUM_QT {511} EX_ORD_TYP {0} CHG_REAS {10}}
DELETE:
{SERVICE {NIP} RIC {ANZ.AX} MTYPE {UPDATE} ACTION {DELETE} KEY {538993C200083483B}}
STATUS:
{SERVICE {NIP} RIC {ANZ.AX} MTYPE {STATUS} DATA_STATE {Suspect} STREAM_STATE {Open} TEXT {<NIP> Source cannot provide the requested capability of MMT_MARKET_BY_ORDER [7].}}
{SERVICE {NIP} RIC {ANZ.AX} MTYPE {STATUS} DATA_STATE {Suspect} STREAM_STATE {Close} TEXT {F10: Not In Cache}}
marketByOrderCloseRequest RIC ?RIC RIC ...?
RIC = Reuters Instrument Code
Unsubscribe items from order book streaming service. User can define multiple item names.
marketByOrderCloseAllRequest
Unsubscribe all items from order book data streaming service.
getMarketByOrderWatchList
➥return: str
Return all subscribed item names on order book streaming service with service names.
marketByPriceRequest RIC ?RIC RIC ...?
RIC = Reuters Instrument Code
For consumer application to subscribe market depth data, user can define multiple item names. Data dispatched through dispatchEventQueue
.
Example:
$t marketByOrderRequest "ANZ.CHA"
while {1} {
set updates [$t dispatchEventQueue 1000]
if {$updates != ""} {
foreach u [$t dispatchEventQueue] {
puts "\n[dict get $u]
}
}
}
IMAGE:
{SERVICE {NIP} RIC {ANZ.CHA} MTYPE {REFRESH}}
{SERVICE {NIP} RIC {ANZ.CHA} MTYPE {IMAGE} ACTION {ADD} KEY {201000B} ORDER_PRC {20.1000} ORDER_SIDE {BID} ORDER_SIZE {17} NO_ORD {6} QUOTIM_MS {16987567} ORDER_TONE {}}
UPDATE:
{SERVICE {NIP} RIC {ANZ.CHA} MTYPE {UPDATE} ACTION {UPDATE} KEY {201000B} NO_ORD {7} ORDER_SIDE {BID} ORDER_SIZE {5}}
DELETE:
{SERVICE {NIP} RIC {ANZ.CHA} MTYPE {UPDATE} ACTION {DELETE} KEY {202000B}}
STATUS:
{SERVICE {NIP} RIC {ANZ.CHA} MTYPE {STATUS} DATA_STATE {Suspect} STREAM_STATE {Open} TEXT {<NIP> Source cannot provide the requested capability of MMT_MARKET_BY_PRICE [8].}}
{SERVICE {NIP} RIC {ANZ.CHA} MTYPE {STATUS} DATA_STATE {Suspect} STREAM_STATE {Close} TEXT {F10: Not In Cache}}
marketByPriceCloseRequest RIC ?RIC RIC ...?
RIC = Reuters Instrument Code
Unsubscribe items from market depth data stream. User can define multiple item names.
marketByPriceCloseAllRequest
Unsubscribe all items from market depth stream.
getMarketByPriceWatchList
➥return: str
Return all subscribed item names on market depth streaming service with service names.
OMM Posting (off-stream) leverages on consumer login channel to contribute aka. "post" data up to ADH/ADS cache or provider application. The posted service must be up before receiving any post message. For posting to an Interactive Provider, the posted RIC must already be made available by the provider.
marketPricePost data ?data data ...?
data = a Tcl dict
Post market price data. data can be populated as below.MTYPE IMAGE
can be added to data
in order to post item as an IMAGE (default MTYPE
is UPDATE
).
Example:
$t marketPricePost "RIC TRI.N TIMACT now TRDPRC_1 123.45"
pauseAll
Pause all subscription on all domains. Updates are conflated during the pause.
resumeAll
Resume all subscription.
marketPricePause RIC ?RIC RIC ...?
RIC = Reuters Instrument Code
Pause subscription to the items.
marketPriceResume RIC ?RIC RIC ...?
RIC = Reuters Instrument Code
Resume subscription to the item.
Time Series One (TS1) provides access to historical data distributed via the Reuter Integrated Data Network (IDN). It provides a range of facts (such as Open, High, Low, Close) for the equity, money, fixed income, commodities and energy markets. TS1 data is available in three frequencies; daily, weekly, and monthly. For daily data there is up to two years worth of history, for weekly data there is five years, and for monthly data up to ten years.
setTimeSeriesPeriod daily|weekly|monthly
Define a time period for a time series subscription. Default is daily.
setTimeSeriesMaxRecords max_records
max_records = number of maximum time series output records
Define the maximum record before calling getTimeSeries.
Default is 10.
getTimeSeries RIC
RIC = Reuters Instrument Code
➥return: str
A helper function that subscribes, wait for data dissemination to be complete, unsubscribe from the service and return series as a list of records. getTimeSeries
supports one time series retrieval at a time.
Example:
set ric "CHK.N"
set period "daily"
set maxrecords "15"
$t setTimeSeriesPeriod $period
$t setTimeSeriesMaxRecords $maxrecords
set timeseries [$t getTimeSeries "CHK.N"]
puts "\n\n############## $ric $period ([llength $timeseries] records)##############"
puts [join $timeseries "\n"]\n\n
Output:
############## CHK.N daily (21 records) ##############
DATE,CLOSE,OPEN,HIGH,LOW,VOLUME,VWAP
2012/02/26,25.110,25.360,25.440,25.010,2457997.000,25.218
2012/02/23,25.450,24.830,25.830,24.820,3420367.000,25.451
2012/02/22,24.980,24.130,24.990,23.960,3786628.000,24.582
2012/02/21,24.030,24.220,24.340,23.640,4144242.000,23.998
2012/02/20,24.620,25.000,25.060,24.540,3713133.000,24.767
2012/02/19,Market holiday
2012/02/16,24.710,24.220,24.980,24.130,5116842.000,24.508
2012/02/15,23.770,23.070,23.790,22.730,3540557.000,23.489
2012/02/14,23.020,22.740,23.270,22.520,3885523.000,22.923
2012/02/13,22.710,22.800,22.950,22.450,3114849.000,22.684
2012/02/12,22.660,22.750,23.320,22.260,5041853.000,22.746
2012/02/09,22.130,21.900,22.190,21.560,3179328.000,21.970
2012/02/08,22.340,22.320,22.640,22.030,3298569.000,22.355
2012/02/07,22.110,22.310,22.510,22.030,2662700.000,22.187
2012/02/06,22.180,22.680,22.680,22.020,2829459.000,22.175
historyRequest RIC ?RIC RIC ...?
RIC = Reuters Instrument Code
Request for historical data (data domain 12), this domain is not officially supported by Thomson Reuters. User can define multiple items. The data dispatched through dispatchEventQueue
.
Example:
$t historyRequest "tANZ.AX"
while {1} {
set updates [$t dispatchEventQueue 1000]
if {$updates != ""} {
foreach u [$t dispatchEventQueue] {
puts "\n[dict get $u]
}
}
}
IMAGE:
{SERVICE {NIP} RIC {tANZ.AX} MTYPE {REFRESH}}
{SERVICE {NIP} RIC {tANZ.AX} MTYPE {IMAGE} TRPRC_1 {40.124} SALTIM {14:31:34:335:000:000} TRADE_ID {123456789} BID_ORD_ID {5307FBL20AL7B}ASK_ORD_ID {5307FBL20BN8A}}
historyCloseRequest RIC ?RIC RIC ...?
RIC = Reuters Instrument Code
Unsubscribe items from historical data stream. The user can define multiple item names.
historyCloseAllRequest
Unsubscribe all items from historical data stream.
dispatchEventQueue ?timeout?
timeout = time in milliseconds to wait for data (Optional)
➥return: str
Dispatch the events (data) from EventQueue within a period of time (If timeout is omitted, it will return immediately). If there are many events in the queue at any given time, a single call gets all the data until the queue is empty. Data is in a list of Tcl dicts.
directorySubmit ?domain? ?service?
domain = data domain number (Optional)
service = target service (Optional)
Submit directory with domain type (capability) in a provider application, it currently supports:
- 6 - market price
- 7 - market by order
- 8 - market by price
- 10 - symbol list
- 12 - history
This function is normally called automatically upon data submission. If service is omitted, it will use the value from configuration file.
Example:
$t directorySubmit "6 8 10" IDN
serviceDownSubmit ?service?
service = target service (Optional)
Submit service down status to ADH. If service is omitted, it uses service from configuration file. For Interactive Provider, service will be ignored and use the default value from configuration file instead. This function must be called after directorySubmit
.
serviceUpSubmit ?service?
service = target service (Optional)
Submit service up status to ADH. If service is omitted, it uses service from configuration file. For Interactive Provider, service will be ignored and use the default value from configuration file instead.
symbolListSubmit data ?data data ...?
data = a Tcl dict
For a provider client to publish a list of symbols to MDH/ADH under data domain 10, The Tcl dict must be specify in the below format. MTYPE IMAGE
can be added to data
in order to publish the IMAGE of the item (default MTYPE
is UPDATE
). ACTION
can be ADD
, UPDATE
and DELETE
.
Example:
$t symbolListSubmit {RIC {0#BMD} KEY {FCPO} ACTION {ADD} PROD_PERM {10} PROV_SYMB {MY439483}}
RIC contains the name of an instrument list. KEY contains an instrument name and ACTION is one of the following:
- ADD - add a new instrument name to the list
- UPDATE - update an instrument name's attributes
- DELETE - remove an instrument from the list
marketPriceSubmit data ?data data...?
data = a Tcl dict
For provider clients to publish market data to MDH/ADH, the market data image/update must be in the below Tcl dict format. MTYPE IMAGE
can be added to data
in order to publish the IMAGE of the item (default MTYPE
is UPDATE
).
Example:
$t marketPriceSubmit {RIC {EUR=} RDNDISPLAY {100} RDN_EXCHID {155} BID {0.988} ASK {0.999} DIVPAYDATE {20110623}}
marketByOrderSubmit data ?data data...?
data = a Tcl dict
For a provider client to publish specified order book data to MDH/ADH, marketByOrderSubmit
requires two parameters, The Tcl dict must be specify in the below format. MTYPE IMAGE
can be added to data
in order to publish the IMAGE of the item (default MTYPE
is UPDATE
).
Example:
set ORDER {RIC {ANZ.AX} KEY {538993C200035057B} ACTION {ADD} ORDER_PRC {20.260} ORDER_SIZE {50} ORDER_SIDE {BID} SEQNUM_QT {2744} EX_ORD_TYP {0} CHG_REAS {6} ORDER_TONE {}}
$t marketByOrderSubmit $ORDER
RIC contains the name of an instrument. KEY contains an order ID name and ACTION is one of the following:
- ADD - add a new order to the book
- UPDATE - update an order's attributes
- DELETE - remove an order from the book
marketByPriceSubmit data ?data data ...?
data = a Tcl dict
For a provider client to publish the specified market depth data to MDH/ADH, marketByPriceSubmit
requires two parameters, The Tcl dict must be specify in the below format. MTYPE IMAGE
can be added to data
in order to publish the IMAGE of the item (default MTYPE
is UPDATE
).
Example:
set DEPTH { RIC {ANZ.CHA} KEY {201000B} ACTION {ADD} ORDER_PRC {20.1000} ORDER_SIDE {BID} ORDER_SIZE {1300} NO_ORD {13} QUOTIM_MS {16987567} ORDER_TONE {}}
$t marketByPriceSubmit $DEPTH
RIC contains the name of an instrument. KEY contains a price and ACTION is one of the following:
- ADD - add a new price to the depth
- UPDATE - update a price's attributes
- DELETE - remove a price from the depth
historySubmit data ?data data ...?
data = a Tcl dict
For a provider client to publish the specified history data to MDH/ADH, each history data image/update must be in the following format and MTYPE IMAGE
can be added to data
in order to publish the IMAGE of the item(default MTYPE = UPDATE
).
Example:
set UPDATE {RIC {tANZ.AX} TRDPRC_1 {40.124} SALTIM {now} TRADE_ID {123456789} BID_ORD_ID {5307FBL20AL7B} ASK_ORD_ID {5307FBL20BN8A}}
$t historySubmit $UPDATE
closeSubmit RIC.service ?RIC.service RIC.service ...?
RIC = Reuters Instrument Code
service = target service
For a provider to close the published item with specific service. User can define multiple item names.
Example:
$t closeSubmit EUR=.DEV
closeAllSubmit
For a provider to close all published items.
A publisher server for market price domain. Interactive provider's dispatchEventQueue()
output yields MTYPE
of LOGIN
, REQUEST
, CLOSE
and LOGOUT
.
Example:
...
$t createOMMProvider
$t dictionaryRequest
while {1} {
foreach u [$t dispatchEventQueue] {
puts $u
}
}
Output:
{MTYPE {LOGIN} USERNAME {tclrfa} SERVICE {DIRECT_FEED} SESSIONID {140672527137824}}
{MTYPE {REQUEST} RIC {EUR=} USERNAME {tclrfa} SERVICE {DIRECT_FEED} SESSIONID {140672527137824}}
{MTYPE {CLOSE} RIC {EUR=} USERNAME {EUR=} SERVICE {DIRECT_FEED} SESSIONID {140672527137824}}
{MTYPE {LOGOUT} USERNAME {tclrfa} SERVICE {DIRECT_FEED} SESSIONID {140672527137824}}
getClientSessions
➥return: str
For interactive provider to obtain the connected client session IDs.
Example:
$t getClientSessions
Output:
140566629350432 140566632265280
getClientWatchList sessionID
sessionID = Client session ID
➥return: str
For interactive provider to obtains the watch list of a specific client referenced by sessionID.
Example:
$t getClientWatchList 140566629350432
Output:
JPY= EUR=
marketPriceSubmit data? data data ...?
data = a Tcl dict
For a provider to submit items to a specific client instead of all clients. data dict can be populated as below and can referrence to the client by sessionID.
Example:
$t marketPriceSubmit "RIC JPY= TRDPRC_1 115.2 TIMACT now SESSIONID 140339066107568"
closeSubmit RICS ?sessionID?
RICS = Reuters Instrument Code
sessionID = Client session ID (Optional)
For a provider to close published items for all subscribed clients. Or close published items for a spicific client referenced by sessionID. User can define multiple item names.
Example:
$t closeSubmit "EUR= JPY="
$t closeSubmit "EUR= JPY=" 140339066107568
logoutSubmit ?sessionID?
sessionID = Client session ID (Optional)
For a provider to logout subscription from specific client by sessionID.
Example:
$t logoutSubmit 140566632265280
logoutAllSubmit
For a provider to logout subscription from all clients.