Feed 'I'- Instruments
Currencies and Instruments feed
Requests
{"event": "bind", "feed": "I"}
{"event": "unbind", "feed": "I"}
Feed handling
currency = [
0: name (string)
1: id (unsigned int32)
2: balanceStep (Efx::Size)
3: usdPrice (Efx::Price)
4: currencyType (string)
]
instrument = [
0: name (string)
1: id (uinsigned int64)
2: assetCurrency (string)
3: balanceCurrency (string)
]
For detailed instruments description
pageinstruments// snapshot
['I', 0, 'S', [
array of currency,
array of instrument
]]
// currency added
['C', 0, '+', currency]
// currency modified
['C', 0, 'M', currency]
// currency removed
['C', 0, '-', currency]
// instrument added
['I', 0, '+', instrument]
// instrument removed
['I', 0, '-', instrument]
// failed to subscribe
['I', 0, 'Z', 2]
// unsubscribed
['I', 0, 'U', 0]
applyToSnapshot(prevSnapshot, feed, action, data) {
switch (feed) {
case 'I': {
switch (action) {
case 'S' : {
return [[...data[0]], [...data[1]]]
}
case '+' : {
prevSnapshot[1].push(data)
break
}
case 'M' : {
for (var i in prevSnapshot[1]) {
if (prevSnapshot[1][i][1] == data[1]) {
prevSnapshot[1][i] = data
break
}
}
break
}
case '-' : {
for (var i in prevSnapshot[1]) {
if (prevSnapshot[1][i][1] == data[1]) {
prevSnapshot[1].splice(i, 1)
break
}
}
break
}
}
break
}
case 'C': {
switch (action) {
case '+' : {
prevSnapshot[0].push(data)
break
}
case 'M' : {
for (var i in prevSnapshot[0]) {
if (prevSnapshot[0][i][1] == data[1]) {
prevSnapshot[0][i] = data
break
}
}
break
}
case '-' : {
for (var i in prevSnapshot[0]) {
if (prevSnapshot[0][i][1] == data[1]) {
prevSnapshot[0].splice(i, 1)
break
}
}
break
}
}
break
}
}
return prevSnapshot
}
Last updated