[openrtm-commit:02071] r860 - in trunk/OpenRTM-aist-Java/jp.go.aist.rtm.RTC: idl src/jp/go/aist/rtm/RTC/port
openrtm @ openrtm.org
openrtm @ openrtm.org
2016年 10月 20日 (木) 18:52:48 JST
Author: win-ei
Date: 2016-10-20 18:52:48 +0900 (Thu, 20 Oct 2016)
New Revision: 860
Modified:
trunk/OpenRTM-aist-Java/jp.go.aist.rtm.RTC/idl/SharedMemory.idl
trunk/OpenRTM-aist-Java/jp.go.aist.rtm.RTC/src/jp/go/aist/rtm/RTC/port/InPortSHMConsumer.java
trunk/OpenRTM-aist-Java/jp.go.aist.rtm.RTC/src/jp/go/aist/rtm/RTC/port/OutPortSHMProvider.java
trunk/OpenRTM-aist-Java/jp.go.aist.rtm.RTC/src/jp/go/aist/rtm/RTC/port/SharedMemory.java
Log:
Fixed bugs. refs #3395
Modified: trunk/OpenRTM-aist-Java/jp.go.aist.rtm.RTC/idl/SharedMemory.idl
===================================================================
--- trunk/OpenRTM-aist-Java/jp.go.aist.rtm.RTC/idl/SharedMemory.idl 2016-10-19 01:55:12 UTC (rev 859)
+++ trunk/OpenRTM-aist-Java/jp.go.aist.rtm.RTC/idl/SharedMemory.idl 2016-10-20 09:52:48 UTC (rev 860)
@@ -20,10 +20,11 @@
interface PortSharedMemory
{
- void open_memory(in unsigned long memory_size, in string shm_address);
- void create_memory(in unsigned long memory_size, in string shm_address);
+ void open_memory(in unsigned long long memory_size, in string shm_address);
+ void create_memory(in unsigned long long memory_size, in string shm_address);
void close_memory(in boolean unlink);
void setInterface(in PortSharedMemory sm);
+ void setEndian(in boolean endian);
PortStatus put();
PortStatus get();
};
Modified: trunk/OpenRTM-aist-Java/jp.go.aist.rtm.RTC/src/jp/go/aist/rtm/RTC/port/InPortSHMConsumer.java
===================================================================
--- trunk/OpenRTM-aist-Java/jp.go.aist.rtm.RTC/src/jp/go/aist/rtm/RTC/port/InPortSHMConsumer.java 2016-10-19 01:55:12 UTC (rev 859)
+++ trunk/OpenRTM-aist-Java/jp.go.aist.rtm.RTC/src/jp/go/aist/rtm/RTC/port/InPortSHMConsumer.java 2016-10-20 09:52:48 UTC (rev 860)
@@ -139,6 +139,7 @@
PortSharedMemory inportcdr = PortSharedMemoryHelper.narrow(obj);
OpenRTM.PortStatus ret;
synchronized(m_mutex) {
+ m_shmem.setEndian(m_connector.isLittleEndian());
m_shmem.create_memory(m_memory_size, m_shm_address);
EncapsOutputStreamExt cdr;
cdr = (EncapsOutputStreamExt)data;
Modified: trunk/OpenRTM-aist-Java/jp.go.aist.rtm.RTC/src/jp/go/aist/rtm/RTC/port/OutPortSHMProvider.java
===================================================================
--- trunk/OpenRTM-aist-Java/jp.go.aist.rtm.RTC/src/jp/go/aist/rtm/RTC/port/OutPortSHMProvider.java 2016-10-19 01:55:12 UTC (rev 859)
+++ trunk/OpenRTM-aist-Java/jp.go.aist.rtm.RTC/src/jp/go/aist/rtm/RTC/port/OutPortSHMProvider.java 2016-10-20 09:52:48 UTC (rev 860)
@@ -165,39 +165,6 @@
*/
public OpenRTM.PortStatus get(OpenRTM.CdrDataHolder data) {
return OpenRTM.PortStatus.UNKNOWN_ERROR;
-/*
- rtcout.println(Logbuf.PARANOID, "OutPortSHMProvider.get()");
-
- if (m_buffer == null) {
- onSenderError();
- rtcout.println(Logbuf.PARANOID, "m_buffer is null.");
- return OpenRTM.PortStatus.UNKNOWN_ERROR;
- }
-
- if (m_buffer.empty()) {
- rtcout.println(Logbuf.PARANOID, "m_buffer is empty.");
- return OpenRTM.PortStatus.BUFFER_EMPTY;
- }
- OutputStream cdr = null;
- DataRef<OutputStream> cdr_ref = new DataRef<OutputStream>(cdr);
- jp.go.aist.rtm.RTC.buffer.ReturnCode ret
- = m_buffer.read(cdr_ref,0,0);
-
- if (ret.equals(jp.go.aist.rtm.RTC.buffer.ReturnCode.BUFFER_OK)) {
-
- EncapsOutputStreamExt outcdr;
- outcdr = (EncapsOutputStreamExt)cdr_ref.v;
- data.value = outcdr.getByteArray();
- if(data.value.length==0){
- rtcout.println(Logbuf.PARANOID, "m_buffer is empty.");
- return OpenRTM.PortStatus.BUFFER_EMPTY;
- }
-
- }
- create_memory(m_memory_size, m_shm_address);
- write(data);
- return convertReturn(ret);
-*/
}
/**
* {@.ja ReturnCodeをPortStatusに変換する。}
@@ -725,6 +692,7 @@
}
}
+ setEndian(m_connector.isLittleEndian());
create_memory(m_memory_size, m_shm_address);
write(data);
return convertReturn(ret);
Modified: trunk/OpenRTM-aist-Java/jp.go.aist.rtm.RTC/src/jp/go/aist/rtm/RTC/port/SharedMemory.java
===================================================================
--- trunk/OpenRTM-aist-Java/jp.go.aist.rtm.RTC/src/jp/go/aist/rtm/RTC/port/SharedMemory.java 2016-10-19 01:55:12 UTC (rev 859)
+++ trunk/OpenRTM-aist-Java/jp.go.aist.rtm.RTC/src/jp/go/aist/rtm/RTC/port/SharedMemory.java 2016-10-20 09:52:48 UTC (rev 860)
@@ -48,7 +48,8 @@
public SharedMemory(){
rtcout = new Logbuf("SharedMemory");
m_memory_size = DEFAULT_MEMORY_SIZE;
-
+ m_endian = true;
+ m_os = System.getProperty("os.name").toLowerCase();
}
@@ -102,7 +103,8 @@
* {@.en name of memory}
* # void create_memory(int memory_size, string shm_address);
*/
- public void create_memory (int memory_size, String shm_address){
+ //public void create_memory (int memory_size, String shm_address){
+ public void create_memory (long memory_size, String shm_address){
rtcout.println(Logbuf.TRACE,
"create():memory_size="
+ memory_size +",shm_address=" + shm_address);
@@ -136,7 +138,8 @@
* {@.en name of memory}
# void open_memory(int memory_size, string shm_address);
*/
- public void open_memory (int memory_size, String shm_address){
+ //public void open_memory (int memory_size, String shm_address){
+ public void open_memory (long memory_size, String shm_address){
rtcout.println(Logbuf.TRACE,
"open():memory_size="
+ memory_size +",shm_address=" + shm_address);
@@ -203,7 +206,7 @@
//org.omg.CORBA.LongHolder len = new org.omg.CORBA.LongHolder(data.value.length);
EncapsOutputStreamExt cdr
- = new EncapsOutputStreamExt(ORBUtil.getOrb(),true);
+ = new EncapsOutputStreamExt(ORBUtil.getOrb(),m_endian);
//len._write(cdr);
//cdr.write_ulong(data.value.length);
cdr.write_ulonglong(data.value.length);
@@ -245,7 +248,7 @@
buffer.get(len_data,0,len_data.length);
EncapsOutputStreamExt cdr
- = new EncapsOutputStreamExt(ORBUtil.getOrb(),true);
+ = new EncapsOutputStreamExt(ORBUtil.getOrb(),m_endian);
cdr.write_octet_array(len_data, 0, len_data.length);
InputStream instream = cdr.create_input_stream();
//org.omg.CORBA.LongHolder len = new org.omg.CORBA.LongHolder();
@@ -281,10 +284,26 @@
public void setInterface(OpenRTM.PortSharedMemory sm){
m_smInterface = sm;
}
-
-
/**
*
+ * {@.ja エンディアンを設定する}
+ * {@.en Sets an endian.}
+ *
+ * @param endian
+ * {@.ja true: little, false: big}
+ * {@.en true: little, false: big}
+ *
+ * PortStatus setEndian();
+ */
+ public void setEndian(boolean isLittleEndian){
+ m_endian = isLittleEndian;
+ if(m_smInterface!=null){
+ m_smInterface.setEndian(isLittleEndian);
+ }
+
+ }
+ /**
+ *
* {@.ja データの送信を知らせる}
* {@.en Put data.}
# PortStatus put();
@@ -306,8 +325,11 @@
private Logbuf rtcout;
private String m_shm_address = new String();
- private int m_memory_size;
+ //private int m_memory_size;
+ private long m_memory_size;
private OpenRTM.PortSharedMemory m_smInterface;
+ private String m_os;
+ protected boolean m_endian;
}
More information about the openrtm-commit
mailing list