Hi Jeanfrancois,
Thank you very much. I think that will help.
A couple of doubts:
1. If I want to suspend indefinitely until resume() is invoked, can I
send the timeout value as 0.
2. Can I write the response back from resumed() method? What is the
correct way to write the response back? Also when I write the data back,
the HL7 specific filter should be invoked for OP_WRITE so that I can
wrap the data with hl7 protocol specific characters.
-Vishnu
Jeanfrancois Arcand wrote:
> Salut,
>
> Vishnuvardhan wrote:
>> Hi Jeanfrancois
>>
>> Thanks for your help. I looked at the SuspendableFilter. This filter
>> suspends the execution based on the match of the string received. In
>> my case, the input can be any HL7 message. I need to suspend after I
>> receive the HL7 message.
>>
>> I need to have something like this:
>>
>> class SuspendableFilter
>>
>> //inside execute()
>>
>> //read the string received
>> this.suspend();
>> //continue execution after resuming..
>>
>> From some other method.
>>
>> suspendableFilter.resume().
>>
>> Again, thank you very much for considering my request.
>
> I think you can do that by extending the SuspendableFilter and suspend
> on all requests, independently of the matching String. Just make sure
> you are telling the SuspendableFilter to suspend *After* executing the
> next ProtocolFilter in the protocol chain:
>
>> final ProtocolFilter readFilter = new ReadFilter();
>> final SuspendableFilter suspendFilter = new SuspendableFilter();
>> final ProtocolFilter hl7Filter = new HL7Filter();
>> suspendable = suspendFilter.suspend("*", timeout, null, new
>> SuspendableHandler() {
>>
>> public void interupted(Object attachment) {
>> }
>>
>> public void resumed(Object attachment) {
>> }
>>
>> public void expired(Object attachment) {
>> }
>> }, Suspend.AFTER);
>
> What this code snipped will do is read bytes, invoke your HL7Filter,
> then suspend the connection.
>
> Would that help?
>
> Thanks
>
> -- Jeanfrancois
>
>
>
>
>
>>
>> Vishnu
>>
>>
>> Jeanfrancois Arcand wrote:
>>> Salut,
>>>
>>> [removing the dev alias]
>>>
>>> Vishnuvardhan wrote:
>>>> Hi
>>>>
>>>> I am working on Open ESB HL7 binding component. We are in the
>>>> processing of migrating the component from Apache Mina framework to
>>>> Grizzly. I would like to know if I can do Asynchronous Request
>>>> Processing with TCP using Grizzly.
>>>>
>>>> This is what I want to do.
>>>> 1. Listen on a particular port.
>>>> 2. Read the incoming message.
>>>> 3. Parse the incoming message.
>>>> 4. Submit the parsed message to the business processing layer.
>>>> 5. Once a response is available, send back the response message to
>>>> the same socket.
>>>
>>> Yes, you can. Take a look at the SuspendableFilter:
>>>
>>> https://grizzly.dev.java.net/nonav/apidocs/com/sun/grizzly/suspendable/SuspendableFilter.html
>>>
>>>
>>>
>>>>
>>>> This is what I have done.
>>>> 1. Created a Controller.
>>>> 2. Added a protocol chain with ReadFilter and a parser filter.
>>>> 3. Once the message is available, submitting the message to the
>>>> business processing layer.
>>>> The thread execution ends here.
>>>>
>>>> The response will be available from another thread. Now, I want to
>>>> write the response message back to the same socket. I tried to
>>>> cache the context from 1st thread and tried to use the same context
>>>> for writing. But when I say ctx.getSelectionKey().channel(), the
>>>> program hangs there.
>>>>
>>>> I went through the blog on Asynchronous Request Processing by
>>>> Jean-Francois Arcand's Blog
>>>> <http://weblogs.java.net/blog/jfarcand/>. The framework seems to be
>>>> supporting only HTTP protocol.
>>>>
>>>> Can somebody guide me how to achieve this in TCP IP.
>>>
>>> Take a look at the SuspendableFilter as I think this is really what
>>> you need. You can see some tests here:
>>>
>>> https://grizzly.dev.java.net/nonav/xref-test/com/sun/grizzly/SuspendableTest.html
>>>
>>>
>>> Let us know if that doesn't work. Your scenario is quite common and
>>> I can certainly help improving the SuspendableFilter to makes it
>>> work for you :-)
>>>
>>> A+
>>>
>>> -- Jeanfrancois
>>>
>>>
>>>
>>>>
>>>> Thanks in advance,
>>>> Vishnu
>>>>
>>>>
>>>> --
>>>> Vishnuvardhan Piskalaramesh
>>>> Sun's Open ESB Community (http://open-esb.org)
>>>
>>> ---------------------------------------------------------------------
>>> To unsubscribe, e-mail: users-unsubscribe_at_grizzly.dev.java.net
>>> For additional commands, e-mail: users-help_at_grizzly.dev.java.net
>>>
>>>
>>
>>
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: users-unsubscribe_at_grizzly.dev.java.net
> For additional commands, e-mail: users-help_at_grizzly.dev.java.net
>
>
--
Vishnuvardhan Piskalaramesh
Sun's Open ESB Community (http://open-esb.org)