Skip to content

Commit 1698fcd

Browse files
authored
Merge pull request #32 from BookmapAPI/fix-replay-mode-for-7.5-bookmap-version
Fix replay mode for 7.5 version
2 parents e8d6d8e + 8cf35d8 commit 1698fcd

9 files changed

Lines changed: 188 additions & 160 deletions

File tree

developer-addon/build.gradle

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -16,8 +16,8 @@ apply plugin: 'java'
1616
sourceCompatibility = JavaVersion.VERSION_14
1717
targetCompatibility = JavaVersion.VERSION_14
1818

19-
String LOWEST_BOOKMAP_VERSION = '7.4.0.10'
20-
String HIGHEST_BOOKMAP_VERSION = '7.5.1.9999'
19+
def LOWEST_BOOKMAP_VERSION = '7.5.0.16'
20+
def HIGHEST_BOOKMAP_VERSION = '7.7.1.9999'
2121

2222
repositories {
2323
mavenCentral()
@@ -31,7 +31,7 @@ configurations {
3131
implementation.canBeResolved = true
3232
}
3333

34-
def version = "0.1.2"
34+
def version = "0.1.4"
3535
def baseName = "${LOWEST_BOOKMAP_VERSION}---${HIGHEST_BOOKMAP_VERSION}---2---python-api---${version}"
3636

3737
dependencies {

developer-addon/src/main/java/com/bookmap/python/api/addon/DeveloperAddon.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -118,7 +118,7 @@ public class DeveloperAddon
118118
Layer1ApiFinishable,
119119
Layer1ConfigSettingsInterface {
120120

121-
private static final String VERSION = "0.1.1";
121+
private static final String VERSION = "0.1.4";
122122
private static final String ADDON_NAME = "Python API";
123123

124124
private static File ROOT_DIR = DirectoryResolver.getBookmapDirectoryByName("Python").toFile();
518 Bytes
Binary file not shown.

serverside-rpc/build.gradle

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@ repositories {
2121
}
2222
}
2323

24-
def lowerBookmapVersion = '7.3.0.26'
24+
def lowerBookmapVersion = '7.5.0.16'
2525
def baseName = "serverside-rpc"
2626

2727
configurations {

serverside-rpc/src/main/java/com/bookmap/api/rpc/server/State.java

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -29,4 +29,8 @@ public State(InstrumentInfo instrumentInfo, Api instrumentApi, InitialState inst
2929
settings = instrumentApi.getSettings(RpcSettings.class);
3030
this.sourceClass = sourceClass;
3131
}
32+
33+
public State(InstrumentInfo instrumentInfo, Api instrumentApi, InitialState instrumentInitialState) {
34+
this(instrumentInfo, instrumentApi, instrumentInitialState, null);
35+
}
3236
}

serverside-rpc/src/main/java/com/bookmap/api/rpc/server/addon/RpcServerAddon.java

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -143,7 +143,13 @@ public void initialize(String alias, InstrumentInfo instrumentInfo, Api api, Ini
143143
isWorking.set(true);
144144
broadcaster.start();
145145

146-
Layer1ApiProviderSupportedFeatures supportedFeatures = TargetedRequestHelper.getSupportedFeaturesForAlias(api.getProvider(), alias);
146+
Layer1ApiProviderSupportedFeatures supportedFeatures;
147+
try {
148+
supportedFeatures = TargetedRequestHelper.getSupportedFeaturesForAlias(provider, alias);
149+
} catch (RuntimeException e) {
150+
RpcLogger.error("Can't get supported features for alias " + alias, e);
151+
supportedFeatures = null;
152+
}
147153
// TODO: find a better place to send this
148154
instance.getEventLoop().pushEvent(
149155
new InstrumentInfoEvent(

serverside-rpc/src/main/java/com/bookmap/api/rpc/server/data/outcome/InstrumentInfoEvent.java

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,4 +22,18 @@ public InstrumentInfoEvent(double pips, double sizeMultiplier, double instrument
2222
this.fullName = fullName;
2323
this.supportedFeatures = supportedFeatures;
2424
}
25+
26+
@Override
27+
public String toString() {
28+
return "InstrumentInfoEvent{" +
29+
"pips=" + pips +
30+
", sizeMultiplier=" + sizeMultiplier +
31+
", instrumentMultiplier=" + instrumentMultiplier +
32+
", isCrypto=" + isCrypto +
33+
", fullName='" + fullName + '\'' +
34+
", supportedFeatures=" + supportedFeatures +
35+
", type=" + type +
36+
", alias='" + alias + '\'' +
37+
'}';
38+
}
2539
}

serverside-rpc/src/main/java/com/bookmap/api/rpc/server/data/outcome/converters/InstrumentInfoConverter.java

Lines changed: 46 additions & 42 deletions
Original file line numberDiff line numberDiff line change
@@ -13,46 +13,50 @@
1313
@Singleton
1414
public class InstrumentInfoConverter implements EventConverter<InstrumentInfoEvent, String> {
1515

16-
private final Gson gson;
17-
18-
@Inject
19-
InstrumentInfoConverter() {
20-
GsonBuilder gsonBuilder = new GsonBuilder();
21-
gson = gsonBuilder.create();
22-
}
23-
24-
@Override
25-
public String convert(InstrumentInfoEvent entity) {
26-
StringBuilder builder = new StringBuilder();
27-
JsonObject json = gson.toJsonTree(entity.supportedFeatures, Layer1ApiProviderSupportedFeatures.class).getAsJsonObject();
28-
29-
json.remove("tradingVia");
30-
json.remove("tradingFrom");
31-
json.remove("knownInstruments");
32-
json.remove("lookupInfo");
33-
json.remove("pipsFunction");
34-
json.remove("sizeMultiplierFunction");
35-
json.remove("subscriptionInfoFunction");
36-
json.remove("historicalDataInfo");
37-
json.remove("receiveCrossTradingStatusMessage");
38-
json.remove("isHistoricalAggregationDisabled");
39-
40-
builder.append(entity.type.code);
41-
builder.append(FIELDS_DELIMITER);
42-
builder.append(entity.alias);
43-
builder.append(FIELDS_DELIMITER);
44-
builder.append(entity.fullName);
45-
builder.append(FIELDS_DELIMITER);
46-
builder.append(entity.isCrypto ? 1 : 0);
47-
builder.append(FIELDS_DELIMITER);
48-
builder.append(entity.pips);
49-
builder.append(FIELDS_DELIMITER);
50-
builder.append(entity.sizeMultiplier);
51-
builder.append(FIELDS_DELIMITER);
52-
builder.append(entity.instrumentMultiplier);
53-
builder.append(FIELDS_DELIMITER);
54-
builder.append(json);
55-
56-
return builder.toString();
57-
}
16+
private final Gson gson;
17+
18+
@Inject
19+
InstrumentInfoConverter() {
20+
GsonBuilder gsonBuilder = new GsonBuilder();
21+
gson = gsonBuilder.create();
22+
}
23+
24+
@Override
25+
public String convert(InstrumentInfoEvent entity) {
26+
StringBuilder builder = new StringBuilder();
27+
28+
builder.append(entity.type.code);
29+
builder.append(FIELDS_DELIMITER);
30+
builder.append(entity.alias);
31+
builder.append(FIELDS_DELIMITER);
32+
builder.append(entity.fullName);
33+
builder.append(FIELDS_DELIMITER);
34+
builder.append(entity.isCrypto ? 1 : 0);
35+
builder.append(FIELDS_DELIMITER);
36+
builder.append(entity.pips);
37+
builder.append(FIELDS_DELIMITER);
38+
builder.append(entity.sizeMultiplier);
39+
builder.append(FIELDS_DELIMITER);
40+
builder.append(entity.instrumentMultiplier);
41+
builder.append(FIELDS_DELIMITER);
42+
43+
if (entity.supportedFeatures != null) {
44+
JsonObject json = gson.toJsonTree(entity.supportedFeatures, Layer1ApiProviderSupportedFeatures.class).getAsJsonObject();
45+
json.remove("tradingVia");
46+
json.remove("tradingFrom");
47+
json.remove("knownInstruments");
48+
json.remove("lookupInfo");
49+
json.remove("pipsFunction");
50+
json.remove("sizeMultiplierFunction");
51+
json.remove("subscriptionInfoFunction");
52+
json.remove("historicalDataInfo");
53+
json.remove("receiveCrossTradingStatusMessage");
54+
json.remove("isHistoricalAggregationDisabled");
55+
builder.append(json);
56+
} else {
57+
builder.append("{}");
58+
}
59+
60+
return builder.toString();
61+
}
5862
}

0 commit comments

Comments
 (0)