Correct way to structure a page partial update

Hello,

I am using EMA Java application to post page based data, in the case which we are required to post an update to a page which starts somewhere in the middle of the column (e.g. row 1, column 10). What is the correct way to structure the code to achieve this? I noticed if given just a String then it posts it directly from column 0, which is incorrect in this case...

I am working on using a ByteBuffer to post the update, with some information which was reverse engineered from this article: https://developers.refinitiv.com/en/article-catalog/article/how-to-parse-page-based-data-using-elektron-sdk-java


However there is no example of doing this when creating the packet. Is the below correct? And is there any examples in java of doing what I am describing?

private static final char CHAR_CSI = 0x9B;
private static final char HPA = 0x60;


// 1 + 4 + 1 + 80 = Bytes Required for all data
ByteBuffer bbuf = ByteBuffer.allocate(86);
bbuf.putChar(CHAR_CSI);
bbuf.putInt(column);
bbuf.putChar(HPA);
bbuf.put(page.getText().getBytes());


Many thanks

Best Answer

  • Jirapongse
    Answer ✓

    @Faris

    The code should look like this:

                    ByteBuffer bbuf = ByteBuffer.allocate(8);
                    byte[] partial = {
                              27,//0x1B <CSI1>
                              91,//0x5B <CSI2>
                              49,48, //0x31 (1), 0x30 (0) 
                              96,//0x60 <HPA>
                              65,//0x41 (A)
                              66,//0x42 (B)
                              67 //0x43 (C)
                              };
                    bbuf.put(partial);
                    
                    bbuf.rewind();
                    fieldList.add(EmaFactory.createFieldEntry().buffer(215, bbuf));

    The raw buffer in the trace file looks like this:

    <fieldEntry fieldId="215" data="1B5B 3130 6041 4243"/>

    The output is:

    0123456789ABC34567890123456789012345678901234567890123456789