Author |
Message
|
PEPERO |
Posted: Wed Oct 10, 2012 5:40 am Post subject: Sequence number in Connection details |
|
|
Disciple
Joined: 30 May 2011 Posts: 177
|
Hi all;
I've to send an initiation message to a socket server port, getting back the response and then send the final message and get back the reply to request using TCPIP client nodes. So we have a flow like this
Quote: |
... => TCPIPCLIENTOUTPUT(node x1) => TCPIPCLIENTRECEIVE (node x2)=> TCPIPCLIENTOUTPUT (node x3)=> TCPIPCLIENTRECEIVE (node x4)=> ...
|
If i want to reserve both input and output streams within this partial flow , I've been confused in setting the ID location attribute of the Request tab.
is it true to set them as
Quote: |
X1 : the defaults
X2 : $LocalEnvironment/WrittenDestination/TCPIP/ Output/ConnectionDetails[1]/Id
X3 : $LocalEnvironment/WrittenDestination/TCPIP/ Output/ConnectionDetails[2]/Id
X4 : $LocalEnvironment/WrittenDestination/TCPIP/ Output/ConnectionDetails[2]/Id |
As i've read in the documents the ConnectionDetails sequence refers to the record number. So is it neccessary to set the ID location attribute of the X3.
I've removed it and set it as it's default value but since the outputstream was reserved, it sent the second message successfully without any new connection aquisition because i've seen the same connection id in the output local env as the X1. 
Last edited by PEPERO on Wed Oct 10, 2012 5:45 am; edited 1 time in total |
|
Back to top |
|
 |
lancelotlinc |
Posted: Wed Oct 10, 2012 5:44 am Post subject: |
|
|
 Jedi Knight
Joined: 22 Mar 2010 Posts: 4941 Location: Bloomington, IL USA
|
|
Back to top |
|
 |
McueMart |
Posted: Wed Oct 10, 2012 6:13 am Post subject: |
|
|
 Chevalier
Joined: 29 Nov 2011 Posts: 490 Location: UK...somewhere
|
If you want to reserve and reuse the same connection & input/output streams in the flow you described, it should be sufficient to just use
Code: |
$LocalEnvironment/WrittenDestination/TCPIP/ Output/ConnectionDetails/Id |
As the location of the ConnectionId on the request tab for each of your x2,x3,x4 nodes.
As the infocenter says:
Quote: |
Select Reserve output stream (for use by future TCPIP output nodes) to specify that this output stream can be used only by this node and by other output nodes that request it by specifying the connection ID. When the connection input stream is reserved, no other nodes can use it without specifying the correct connection ID |
|
|
Back to top |
|
 |
PEPERO |
Posted: Wed Oct 10, 2012 7:01 am Post subject: |
|
|
Disciple
Joined: 30 May 2011 Posts: 177
|
When i changed the X2,X3 and X4 ID location attributes in the request tab as you said, The X3 looks like waiting for the connection to be achived untile times out.
it seems the
Code: |
$LocalEnvironment/WrittenDestination/TCPIP/ Output/ConnectionDetails/Id |
Is not a correct choice for X3. |
|
Back to top |
|
 |
McueMart |
Posted: Wed Oct 10, 2012 7:06 am Post subject: |
|
|
 Chevalier
Joined: 29 Nov 2011 Posts: 490 Location: UK...somewhere
|
Is 'Close Connection: No' and 'Reserve Output/Input stream (for use by future TCPIP nodes)' selected for each of x1,x2,x3 and x4? |
|
Back to top |
|
 |
PEPERO |
Posted: Wed Oct 10, 2012 7:13 am Post subject: |
|
|
Disciple
Joined: 30 May 2011 Posts: 177
|
Close connection is "No" for all.
X1 has "Reserve input/output Stream then release at end flow"
X2 has "leave unchanged(input/output streams)"
X3 has "leave unchanged(input/output streams)"
X4 has "Release input/output stream" |
|
Back to top |
|
 |
McueMart |
Posted: Wed Oct 10, 2012 7:20 am Post subject: |
|
|
 Chevalier
Joined: 29 Nov 2011 Posts: 490 Location: UK...somewhere
|
So what you have told me is if you set connectionId to $LocalEnvironment/WrittenDestination/TCPIP/ Output/ConnectionDetails/Id
for x3, its resulting in you seeing a timeout error in the broker. Can you post this error?
I would have expected this to occur in one of two situations:
1) Broker is incorrectly trying to instantiate a second connection to the serversocket, and the server isnt programmed to allow multiple connections.
2) Broker is correctly using the first connection, but the server program is not correctly programmed to read and reply to the data (i.e. the 2nd payload of data sent to it). |
|
Back to top |
|
 |
PEPERO |
Posted: Wed Oct 10, 2012 7:27 am Post subject: |
|
|
Disciple
Joined: 30 May 2011 Posts: 177
|
So sorry the problem was in my side. You were right. The port attribute of the X3 was set to an invalid value.
As my last question of this post , what does the index of the Connectiondetails do as i've seen using it in so many documents for accessing the reserved connection within the receive node.
I mean using the following Xpath expression within the receive node
Code: |
$LocalEnvironment/WrittenDestination/TCPIP/ Output/ConnectionDetails[1]/Id |
|
|
Back to top |
|
 |
McueMart |
Posted: Wed Oct 10, 2012 7:34 am Post subject: |
|
|
 Chevalier
Joined: 29 Nov 2011 Posts: 490 Location: UK...somewhere
|
Quote: |
what does the index of the Connectiondetails do |
To clarify, do you mean the '[1]' after the word ConnectionDetails? If so that just means to use the first ConnectionDetails entry in case there is a list of them (although why there would be a list of them in the LocalEnvironment i dont know...). I have never used an index for ConnectionDetails and only use:
Code: |
$LocalEnvironment/WrittenDestination/TCPIP/Output/ConnectionDetails/Id |
If your question means 'What is the purpose of the ConnectionDetails local environment variable?', its a unique identifier which broker assigns to a TCP connection when it is created. This allows it to be resused later in a flow by specifying the specific ID (as you are doing...). |
|
Back to top |
|
 |
PEPERO |
Posted: Wed Oct 10, 2012 7:40 am Post subject: |
|
|
Disciple
Joined: 30 May 2011 Posts: 177
|
Quote: |
do you mean the '[1]' after the word ConnectionDetails?
|
Yes.
Ok. Thanks for all the helps. |
|
Back to top |
|
 |
|