[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