> > so I cannot ensure a message is being received/sent and look at some queue > for this.
Why do you need to ensure the message is sent? Once you call write(), it will be sent eventually. The only guarantee that it was actually sent and received would to require the Client to reply to the message. This could be done by using some kind of Queue attached to the IoSession which contains pending sent requests. *Note: messageSent* just means it was written to the OS socket, no guarantee that it made it anywhere. On Thu, Feb 14, 2019 at 11:22 AM Emmanuel Lécharny <[email protected]> wrote: > Let's be clear: > > - reads will result in a messageReceived event and you will be able to > process it and do whatever you want to do in your IoHandler, as soon as > the message is complete (ie, if the message is read in chunks, you will > only receive a messageReceived event once the message is complete) > > - writes is a bit different: you do write, and you either decide to do > something *after* the write has been executed, but without any guarantee > that the message has been fully sent to the remote host, *or* you > execute your action when you receive the messageSent event - which means > you have written a message, *and* it has been fully sent to the remote > peer. > > In any case, you are still in the IoProcessor thread, so you can do > whatever you want (except that if you decide to do what you want to do > when receiving the messageSent, it will be executed later on, only if > the message has been fully sent. > > > On 14/02/2019 16:56, kevintjuh93 wrote: > > It's for a game server where actions need to be synchronized with > read/write > > in order to make sure everything is done in order. Not everything is > > executed from read/write methods, so I cannot ensure a message is being > > received/sent and look at some queue for this. > > > > That's why I want to execute something on the same thread a read/write > event > > is done for a specific session. > > > > > > Jonathan Valliere-3 wrote > >> I just read the last email Kevin wrote. > >> > >> Kevin, if you could execute something on the IO processor thread; you > >> understand that It would be a deferred action that could only happen > after > >> the IO processor is done? Maybe you could explain the reason why you > want > >> to do this? > >> > >> On Thu, Feb 14, 2019 at 10:40 AM Emmanuel Lécharny < > >> elecharny@ > >> > > >> wrote: > >> > >>> I still don't get it. > >>> > >>> Your IoHandler will be called everytime an event occurs (message > >>> received, message written, session created/closed/idling, exception). > >>> You have the opportunity to execute some action at this moment. > >>> > >>> > >>> Beside that, I don't see a use case. I'm probably missing something... > >>> Unless what you want to do is to have another session to be called > while > >>> processing an event, using the thread you are in ? > >>> > >>> > >>> On 14/02/2019 16:21, Jonathan Valliere wrote: > >>>> There are some examples in the unit tests which accomplish this by > >>> creating > >>>> a Client and Server connection. I don't believe there is a true > >>> loopback > >>>> implementation in Mina without going through the OS networking. > >>>> > >>>> On Thu, Feb 14, 2019 at 10:16 AM kevintjuh93 < > >> kevin_kal@ > >> > > >>> wrote: > >>>>> Hi guys, > >>>>> > >>>>> What I mean is that I want a way to execute something for an > IoSession > >>> in > >>>>> the same thread the I/O events run. I figured a good way would be to > >>> 'fake' > >>>>> an incoming message, called a loopback packet. Like write a message > to > >>>>> 'yourself'. > >>>>> > >>>>> I rather like to avoid using an ExecutorFilter or a lock. > >>>>> > >>>>> > >>>>> > >>>>> -- > >>>>> Sent from: > >>>>> > >>> > http://apache-mina.10907.n7.nabble.com/Apache-MINA-Developer-Forum-f6809.html > > > > > > > > > > -- > > Sent from: > http://apache-mina.10907.n7.nabble.com/Apache-MINA-Developer-Forum-f6809.html >
