Re: [Tnfox-discussion] IPC message sending problems
Brought to you by:
ned14
From: Niall D. <s_s...@ne...> - 2008-10-13 19:54:41
|
On 6 Oct 2008 at 17:37, Ck wrote: My apologies for the very late reply - my entire email processing system died for most of last week and it took the past weekend to extract my email. > One more question. > > Can't understand how to get ask from thread via IPC.. > > For example: > thread_1 requests from thread_2 some actions and wants to get the > result of this actions. > > void thread_1::req() > { > Msg msg(bla-bla); > sendMsg(msg); > > // here i want to use result from thread_2. > } > > .. > thread_2::msgReceived(FXIPCMsg *rawmsg) > { > Msg *i = (Msg*)rawmsg; > > FXString result = someAction(i->data); > } > > How to return result to thread_1? You need to define an Ack message for the message which will transport your result back to the sender. Your sender can either wait for the reply or move on with other processing, polling for the reply or indeed having a separate handler for the reply whenever it arrives. If you have an Ack message defined, TnFOX will automatically collect any C++ exceptions thrown by the remote side and return them to the message sender. I vaguely remember a system in place for timeouts as well, so if a message does not return in time you get notified and the operation is cancelled. If you check the TestIPC program for the "file access over IPC" mechanism then this gives a good demonstration of how to efficiently use Ack messages to maximise throughput and deal correctly with error situations. HTH, Niall |