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

Reply via email to