protected void processPolygonData()

in java/connectors/polygon-io/src/main/java/com/epam/deltix/data/connectors/polygon/PolygonIoCryptoFeed.java [50:89]


    protected void processPolygonData(JsonArray array) {
        for (int i = 0; i < array.size(); ++i) {
            JsonObject obj = array.getObject(i);
            String event = obj.getString("ev");
            if ("XT".equalsIgnoreCase(event)) {
                String instrument = obj.getString("pair");
                long timestamp = obj.getLong("t");
                long price = obj.getDecimal64Required("p");
                long size = obj.getDecimal64Required("s");
                String ex = String.valueOf(obj.getLong("x"));
                JsonArray conditionsArray = obj.getArray("c");
                String conditions = readConditions(conditionsArray);
                AggressorSide side = null;
                if (conditionsArray.size() > 0) {
                    long condition = conditionsArray.getLong(0);
                    if (condition == 1) {
                        side = AggressorSide.SELL;
                    } else if (condition == 2) {
                        side = AggressorSide.BUY;
                    }
                }

                processor().onTrade(
                    instrument, timestamp, price, size, side, ex, conditions
                );
            } else if ("XQ".equalsIgnoreCase(event)) {
                String instrument = obj.getString("pair");
                long timestamp = obj.getLong("t");
                long askPrice = obj.getDecimal64Required("ap");
                long askSize = obj.getDecimal64Required("as");
                long bidPrice = obj.getDecimal64Required("bp");
                long bidSize = obj.getDecimal64Required("bs");
                String ex = String.valueOf(obj.getLong("x"));

                processor().onL1Snapshot(
                    instrument, timestamp, bidPrice, bidSize, ex, askPrice, askSize, ex
                );
            }
        }
    }