Refinitiv / Real-Time-SDK

Other
180 stars 128 forks source link

"Decoding of just encoded object in the same application is not supported" message when debugging EMA applications. #232

Closed wasin-waeosri closed 1 year ago

wasin-waeosri commented 1 year ago

This question comes from the Developer Portal Q&A https://community.developers.refinitiv.com/questions/100852/how-can-i-pull-sofr-rics-with-java-project.html post.

When debugging EMA Java applications (like EMA Java consumer ex100_MP_Streaming example), the API shows "Decoding of just encoded object in the same application is not supported" after a debug cursor passes the following line:

ReqMsg reqMsg = EmaFactory.createReqMsg();

emaj_debug

The ReqMsg object works fine and can request data once I resume the application or step further.

Based on my research, the "Decoding of just encoded object in the same application is not supported" always appears if the application immediately retrieves data from freshly created OMM containers or messages. However, this statement just creates the ReqMsg object.

Is it expected behavior?

Best regards,

Wasin W.

ayurov2 commented 1 year ago

Hi @wasin-waeosri,

This is expected behavior, as the IDE is attempting to call toString() method on reqMsg during debug to give you string information about the object. toString() in these scenarios will return "Decoding of just encoded object in the same application is not supported" appropriately.

Hopefully that helps clarify why you are seeing this. Please let us know if you have additional questions here.

wasin-waeosri commented 1 year ago

Hi @ayurov2

Thank you very much for the confirmation. I will update the client accordingly.

Best regards,

Wasin W.

OleksandrKvl commented 8 months ago

I don't know the technical reason behind this behavior but it's very surprising and inconvenient. I don't want to create both sender and receiver just to print my test FieldList variable. Even if it's expensive (I don't know why anyone should care about the performance of toString method), there should be a method to do this, just for debugging purposes.