* [15] offsetof(SequenceNumber,high),
* [16] offsetof(SequenceNumber,low)
*/
- private ByteBuffer helper_buffer;
+ static ByteBuffer helper_buffer;
+
+ static {
+ helper_buffer = ByteBuffer.allocateDirect(17*Integer.SIZE/8);
+ helper_buffer.order(ByteOrder.nativeOrder());
+ c_helper(helper_buffer);
+ }
public RecvInfo()
{
//System.out.println(":j: instance of RecvInfo created..");
- this.helper_buffer = ByteBuffer.allocateDirect(17*Integer.SIZE/8);
- this.helper_buffer.order(ByteOrder.nativeOrder());
- this.c_helper(helper_buffer);
-
this.info_buffer = ByteBuffer.allocateDirect(helper_buffer.getInt(0));
this.info_buffer.order(ByteOrder.nativeOrder());
}
public String getTopic()
{
- long topic_pointer;
-
- switch(helper_buffer.getInt(Integer.SIZE*2/8)) {
- case 4:
- topic_pointer = info_buffer.getInt(helper_buffer.getInt(Integer.SIZE*4/8));
- break;
- case 8:
- topic_pointer = info_buffer.getLong(helper_buffer.getInt(Integer.SIZE*4/8));
- break;
- case 1:
- topic_pointer = info_buffer.get(helper_buffer.getInt(Integer.SIZE*4/8));
- break;
- case 2:
- topic_pointer = info_buffer.getShort(helper_buffer.getInt(Integer.SIZE*4/8));
- break;
- default:
- return null;
- }
-
- return get_string(topic_pointer);
+ return getString(Integer.SIZE*4/8);
}
public String getTypeName()
{
- long type_pointer;
-
- switch(helper_buffer.getInt(Integer.SIZE*2/8)) {
- case 4:
- type_pointer = info_buffer.getInt(helper_buffer.getInt(Integer.SIZE*5/8));
- break;
- case 8:
- type_pointer = info_buffer.getLong(helper_buffer.getInt(Integer.SIZE*5/8));
- break;
- case 1:
- type_pointer = info_buffer.get(helper_buffer.getInt(Integer.SIZE*5/8));
- break;
- case 2:
- type_pointer = info_buffer.getShort(helper_buffer.getInt(Integer.SIZE*5/8));
- break;
- default:
- return null;
- }
-
- return get_string(type_pointer);
+ return getString(Integer.SIZE*5/8);
}
public GUID_RTPS getSenderGuid()
{
return this.info_buffer;
}
-
+
+ private String getString(int offset) {
+ long string_pointer = -1;
+
+ switch(helper_buffer.getInt(Integer.SIZE*2/8)) {
+ case 4:
+ string_pointer = info_buffer.getInt(helper_buffer.getInt(offset));
+ break;
+ case 8:
+ string_pointer = info_buffer.getLong(helper_buffer.getInt(offset));
+ break;
+ case 1:
+ string_pointer = info_buffer.get(helper_buffer.getInt(offset));
+ break;
+ case 2:
+ string_pointer = info_buffer.getShort(helper_buffer.getInt(offset));
+ break;
+ }
+
+ return get_string(string_pointer);
+ }
+
/* NATIVE FUNCTIONS */
- private native String get_string(long string_pointer);
- private native void c_helper(ByteBuffer buffer);
+ static native String get_string(long string_pointer);
+ static native void c_helper(ByteBuffer buffer);
}