コード例 #1
0
        /// @brief メッセージを作成する
        /// @pre 事前にInitMessageが実行されている必要がある
        public bool SendMessage(Message message)
        {
            // 初期化されていなければ失敗
            if (!IsMessageInitialized()) {
              Trace.WriteLine("****Interprocess: SendMessage FAILED");
              return false;
            }

            Trace.WriteLine("****Interprocess: SendMessage");

            // ロック取得
            mutex_message_.WaitOne();

            // そのままコピー
            WriteMessage(message);

            // ロック解放
            mutex_message_.ReleaseMutex();

            return true;
        }
コード例 #2
0
 /// @brief Messageを書き込む
 void WriteMessage(Message message)
 {
     byte[] buffer = new byte[size_of_message_];
     IntPtr ptr = Marshal.AllocHGlobal(size_of_message_);
     Marshal.StructureToPtr(message, ptr, false);
     Marshal.Copy(ptr, buffer, 0, size_of_message_);
     Marshal.FreeHGlobal(ptr);
     view_of_message_.Write(buffer, 0, size_of_message_);
 }
コード例 #3
0
        /// @brief メッセージを受け取る
        /// @pre 事前にInitMessageが実行されている必要がある
        public bool ReceiveMessage(out Message message)
        {
            // 初期化されていなければ失敗
            if (!IsMessageInitialized()) {
              Trace.WriteLine("****Interprocess: ReceiveMessage FAILED");
              message = new Message();
              return false;
            }

            //Trace.WriteLine("****Interprocess: ReceiveMessage");

            // ロック取得
            mutex_message_.WaitOne();

            // そのままコピー
            message = ReadMessage();

            // ロック解放
            mutex_message_.ReleaseMutex();

            return true;
        }