Can I send a C++ class object via boost::interprocess::message_queue?












0














How do I send a c++ class object via boost::interprocess::message_queue?



Can someone share sample code for an IPC implementation using boost::interprocess::message_queue with IPC data as a Class object?










share|improve this question





























    0














    How do I send a c++ class object via boost::interprocess::message_queue?



    Can someone share sample code for an IPC implementation using boost::interprocess::message_queue with IPC data as a Class object?










    share|improve this question



























      0












      0








      0







      How do I send a c++ class object via boost::interprocess::message_queue?



      Can someone share sample code for an IPC implementation using boost::interprocess::message_queue with IPC data as a Class object?










      share|improve this question















      How do I send a c++ class object via boost::interprocess::message_queue?



      Can someone share sample code for an IPC implementation using boost::interprocess::message_queue with IPC data as a Class object?







      c++ boost message-queue






      share|improve this question















      share|improve this question













      share|improve this question




      share|improve this question








      edited Nov 19 at 23:21









      bcperth

      2,0031514




      2,0031514










      asked Nov 19 at 14:40









      Avinash Boddu

      215




      215
























          1 Answer
          1






          active

          oldest

          votes


















          0














          How can i send c++ class object via boost::interprocess::message_queue?

          //Class Defination
          #define MQ_DATA IPCMsg
          class IPCMsg
          {
          public:
          IPCMsg() { data = NULL; }
          int len;
          void* data;
          };

          // Initialize message Queue
          mSendMq = new message_queue(OPEN_OR_CREATE, "MQ", 1024, sizeof(MQ_DATA));
          mReceiveMq = new message_queue(OPEN_ONLY, "MQ");

          // Send Data to message Queue
          MQ_DATA* inData = new IPCMsg();
          mSendMq->send(inData, sizeof(*inData), 0);

          // Receive Data from message Queue
          MQ_DATA* outdata = NULL;
          mReceiveMq->receive(&outdata, sizeof(*outdata), 1024, priority);





          share|improve this answer



















          • 1




            Does this compile?
            – G.M.
            Nov 19 at 20:22










          • Note, that even if this did compile you are passing a raw pointer (uninitialized) -- inData->data -- from the address space of one process to the address space of another and expecting it to be valid.
            – G.M.
            Nov 19 at 20:47










          • @G.M , It was compiling successfully. I have shared you the partial code. I was initializing "inData->data" and sending it to Message Queue. But observed, results were not as expected. Could you please help me in this regard by sharing some sample code for better understanding
            – Avinash Boddu
            Nov 20 at 7:27













          Your Answer






          StackExchange.ifUsing("editor", function () {
          StackExchange.using("externalEditor", function () {
          StackExchange.using("snippets", function () {
          StackExchange.snippets.init();
          });
          });
          }, "code-snippets");

          StackExchange.ready(function() {
          var channelOptions = {
          tags: "".split(" "),
          id: "1"
          };
          initTagRenderer("".split(" "), "".split(" "), channelOptions);

          StackExchange.using("externalEditor", function() {
          // Have to fire editor after snippets, if snippets enabled
          if (StackExchange.settings.snippets.snippetsEnabled) {
          StackExchange.using("snippets", function() {
          createEditor();
          });
          }
          else {
          createEditor();
          }
          });

          function createEditor() {
          StackExchange.prepareEditor({
          heartbeatType: 'answer',
          autoActivateHeartbeat: false,
          convertImagesToLinks: true,
          noModals: true,
          showLowRepImageUploadWarning: true,
          reputationToPostImages: 10,
          bindNavPrevention: true,
          postfix: "",
          imageUploader: {
          brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
          contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
          allowUrls: true
          },
          onDemand: true,
          discardSelector: ".discard-answer"
          ,immediatelyShowMarkdownHelp:true
          });


          }
          });














          draft saved

          draft discarded


















          StackExchange.ready(
          function () {
          StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53376963%2fcan-i-send-a-c-class-object-via-boostinterprocessmessage-queue%23new-answer', 'question_page');
          }
          );

          Post as a guest















          Required, but never shown

























          1 Answer
          1






          active

          oldest

          votes








          1 Answer
          1






          active

          oldest

          votes









          active

          oldest

          votes






          active

          oldest

          votes









          0














          How can i send c++ class object via boost::interprocess::message_queue?

          //Class Defination
          #define MQ_DATA IPCMsg
          class IPCMsg
          {
          public:
          IPCMsg() { data = NULL; }
          int len;
          void* data;
          };

          // Initialize message Queue
          mSendMq = new message_queue(OPEN_OR_CREATE, "MQ", 1024, sizeof(MQ_DATA));
          mReceiveMq = new message_queue(OPEN_ONLY, "MQ");

          // Send Data to message Queue
          MQ_DATA* inData = new IPCMsg();
          mSendMq->send(inData, sizeof(*inData), 0);

          // Receive Data from message Queue
          MQ_DATA* outdata = NULL;
          mReceiveMq->receive(&outdata, sizeof(*outdata), 1024, priority);





          share|improve this answer



















          • 1




            Does this compile?
            – G.M.
            Nov 19 at 20:22










          • Note, that even if this did compile you are passing a raw pointer (uninitialized) -- inData->data -- from the address space of one process to the address space of another and expecting it to be valid.
            – G.M.
            Nov 19 at 20:47










          • @G.M , It was compiling successfully. I have shared you the partial code. I was initializing "inData->data" and sending it to Message Queue. But observed, results were not as expected. Could you please help me in this regard by sharing some sample code for better understanding
            – Avinash Boddu
            Nov 20 at 7:27


















          0














          How can i send c++ class object via boost::interprocess::message_queue?

          //Class Defination
          #define MQ_DATA IPCMsg
          class IPCMsg
          {
          public:
          IPCMsg() { data = NULL; }
          int len;
          void* data;
          };

          // Initialize message Queue
          mSendMq = new message_queue(OPEN_OR_CREATE, "MQ", 1024, sizeof(MQ_DATA));
          mReceiveMq = new message_queue(OPEN_ONLY, "MQ");

          // Send Data to message Queue
          MQ_DATA* inData = new IPCMsg();
          mSendMq->send(inData, sizeof(*inData), 0);

          // Receive Data from message Queue
          MQ_DATA* outdata = NULL;
          mReceiveMq->receive(&outdata, sizeof(*outdata), 1024, priority);





          share|improve this answer



















          • 1




            Does this compile?
            – G.M.
            Nov 19 at 20:22










          • Note, that even if this did compile you are passing a raw pointer (uninitialized) -- inData->data -- from the address space of one process to the address space of another and expecting it to be valid.
            – G.M.
            Nov 19 at 20:47










          • @G.M , It was compiling successfully. I have shared you the partial code. I was initializing "inData->data" and sending it to Message Queue. But observed, results were not as expected. Could you please help me in this regard by sharing some sample code for better understanding
            – Avinash Boddu
            Nov 20 at 7:27
















          0












          0








          0






          How can i send c++ class object via boost::interprocess::message_queue?

          //Class Defination
          #define MQ_DATA IPCMsg
          class IPCMsg
          {
          public:
          IPCMsg() { data = NULL; }
          int len;
          void* data;
          };

          // Initialize message Queue
          mSendMq = new message_queue(OPEN_OR_CREATE, "MQ", 1024, sizeof(MQ_DATA));
          mReceiveMq = new message_queue(OPEN_ONLY, "MQ");

          // Send Data to message Queue
          MQ_DATA* inData = new IPCMsg();
          mSendMq->send(inData, sizeof(*inData), 0);

          // Receive Data from message Queue
          MQ_DATA* outdata = NULL;
          mReceiveMq->receive(&outdata, sizeof(*outdata), 1024, priority);





          share|improve this answer














          How can i send c++ class object via boost::interprocess::message_queue?

          //Class Defination
          #define MQ_DATA IPCMsg
          class IPCMsg
          {
          public:
          IPCMsg() { data = NULL; }
          int len;
          void* data;
          };

          // Initialize message Queue
          mSendMq = new message_queue(OPEN_OR_CREATE, "MQ", 1024, sizeof(MQ_DATA));
          mReceiveMq = new message_queue(OPEN_ONLY, "MQ");

          // Send Data to message Queue
          MQ_DATA* inData = new IPCMsg();
          mSendMq->send(inData, sizeof(*inData), 0);

          // Receive Data from message Queue
          MQ_DATA* outdata = NULL;
          mReceiveMq->receive(&outdata, sizeof(*outdata), 1024, priority);






          share|improve this answer














          share|improve this answer



          share|improve this answer








          edited Nov 20 at 7:28

























          answered Nov 19 at 14:40









          Avinash Boddu

          215




          215








          • 1




            Does this compile?
            – G.M.
            Nov 19 at 20:22










          • Note, that even if this did compile you are passing a raw pointer (uninitialized) -- inData->data -- from the address space of one process to the address space of another and expecting it to be valid.
            – G.M.
            Nov 19 at 20:47










          • @G.M , It was compiling successfully. I have shared you the partial code. I was initializing "inData->data" and sending it to Message Queue. But observed, results were not as expected. Could you please help me in this regard by sharing some sample code for better understanding
            – Avinash Boddu
            Nov 20 at 7:27
















          • 1




            Does this compile?
            – G.M.
            Nov 19 at 20:22










          • Note, that even if this did compile you are passing a raw pointer (uninitialized) -- inData->data -- from the address space of one process to the address space of another and expecting it to be valid.
            – G.M.
            Nov 19 at 20:47










          • @G.M , It was compiling successfully. I have shared you the partial code. I was initializing "inData->data" and sending it to Message Queue. But observed, results were not as expected. Could you please help me in this regard by sharing some sample code for better understanding
            – Avinash Boddu
            Nov 20 at 7:27










          1




          1




          Does this compile?
          – G.M.
          Nov 19 at 20:22




          Does this compile?
          – G.M.
          Nov 19 at 20:22












          Note, that even if this did compile you are passing a raw pointer (uninitialized) -- inData->data -- from the address space of one process to the address space of another and expecting it to be valid.
          – G.M.
          Nov 19 at 20:47




          Note, that even if this did compile you are passing a raw pointer (uninitialized) -- inData->data -- from the address space of one process to the address space of another and expecting it to be valid.
          – G.M.
          Nov 19 at 20:47












          @G.M , It was compiling successfully. I have shared you the partial code. I was initializing "inData->data" and sending it to Message Queue. But observed, results were not as expected. Could you please help me in this regard by sharing some sample code for better understanding
          – Avinash Boddu
          Nov 20 at 7:27






          @G.M , It was compiling successfully. I have shared you the partial code. I was initializing "inData->data" and sending it to Message Queue. But observed, results were not as expected. Could you please help me in this regard by sharing some sample code for better understanding
          – Avinash Boddu
          Nov 20 at 7:27




















          draft saved

          draft discarded




















































          Thanks for contributing an answer to Stack Overflow!


          • Please be sure to answer the question. Provide details and share your research!

          But avoid



          • Asking for help, clarification, or responding to other answers.

          • Making statements based on opinion; back them up with references or personal experience.


          To learn more, see our tips on writing great answers.





          Some of your past answers have not been well-received, and you're in danger of being blocked from answering.


          Please pay close attention to the following guidance:


          • Please be sure to answer the question. Provide details and share your research!

          But avoid



          • Asking for help, clarification, or responding to other answers.

          • Making statements based on opinion; back them up with references or personal experience.


          To learn more, see our tips on writing great answers.




          draft saved


          draft discarded














          StackExchange.ready(
          function () {
          StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53376963%2fcan-i-send-a-c-class-object-via-boostinterprocessmessage-queue%23new-answer', 'question_page');
          }
          );

          Post as a guest















          Required, but never shown





















































          Required, but never shown














          Required, but never shown












          Required, but never shown







          Required, but never shown

































          Required, but never shown














          Required, but never shown












          Required, but never shown







          Required, but never shown







          Popular posts from this blog

          Create new schema in PostgreSQL using DBeaver

          Deepest pit of an array with Javascript: test on Codility

          Costa Masnaga