Re: [twsocket] Delphi TServerSocket vs ICS equivalent

2013-10-16 Thread Robert Van Gemert
Is this is the mos protocol uses with news room computer systems?
I have an implementation using TWSocketServer and TWSocket and may be able
to help. 

Robert

-Original Message-
From: TWSocket [mailto:twsocket-boun...@lists.elists.org] On Behalf Of
Graham Powell
Sent: Wednesday, 16 October 2013 2:15 AM
To: 'ICS support mailing'
Subject: Re: [twsocket] Delphi TServerSocket vs ICS equivalent

The 20 seconds is plenty long enough as a timeout and it is configurable by
the user if necessary.

One minor addition to your scheme if I decide to use your component is that
all the data is Unicode (high byte first) to the end tag is actually:

null  null / null m null o null s null 

Graham

-Original Message-
From: TWSocket [mailto:twsocket-boun...@lists.elists.org] On Behalf Of
François Piette
Sent: 12 October 2013 09:26
To: 'ICS support mailing'
Subject: Re: [twsocket] Delphi TServerSocket vs ICS equivalent

 This is how it works at the moment.
 I have an array of records. Each record contains a string and an integer.
 The string is used to hold the incoming data and integer hold the 
 timeout
value that counts down.
 As data arrives it is added to the string associated with the correct
client and the timeout is reset to 20 seconds.
 Periodically I check each of the strings in the array to see if mos 
 and
/mos exist.
 If this is the case the message is extracted from the string and
processed.
 The timeout is now turned off.

IMO this is bad design because you have no control on the network speed.
Whatever you select as timeout it is always possible to have an issue with
network speed and congestion. Long timeout will makes the code works most of
the time.

 Occasionally I get issues with data appearing to be corrupt.
Investigations are continuing, but the 
 origin of this e-mail trail was to establish if it worth my while 
 changing
from Delphi TServerSocket 
 to the ICS server component. Is the ICS component known to be better 
 in
whatever respect or is 
 it just an equally good alternative.

ICS component may be the best component, but bad design won't definitely not
solve all issues.
You should REALLY change your design. Please re-read my previous emails.
Summary: Use /mos as LineEnd in TWSocket and let the component assemble
the message for you and trigger the OnDataAvailable only when you have
received the end marker. Use a TTimer to process timeout: if you don't get a
complete message (So no OnDataAvailable), before - let's say - one minute,
then call Abort to close the connection and report an error.

Alternatively, you may parse the XML as data is coming thru and detect when
the ending tag has been reached. This is more complex as you need an XML
parser able to parse a stream as it comes, but this will permit having a
message embedded into another one.

--
francois.pie...@overbyte.be
Embarcadero MVP
http://www.overbyte.be
http://francois-piette.blogspot.com


-- 
To unsubscribe or change your settings for TWSocket mailing list
please goto http://lists.elists.org/cgi-bin/mailman/listinfo/twsocket
Visit our website at http://www.overbyte.be

-- 
To unsubscribe or change your settings for TWSocket mailing list
please goto http://lists.elists.org/cgi-bin/mailman/listinfo/twsocket
Visit our website at http://www.overbyte.be

-- 
To unsubscribe or change your settings for TWSocket mailing list
please goto http://lists.elists.org/cgi-bin/mailman/listinfo/twsocket
Visit our website at http://www.overbyte.be


Re: [twsocket] Delphi TServerSocket vs ICS equivalent

2013-10-16 Thread Graham Powell
Yes.

At the moment it's working fine with the Delphi TServerSocket component. I
recently found a bug which may have been the root cause of my problems.
However sample code of the ICS implementation would be useful for the future
as I'm sure Delphi will try and force us to go the Indy route.

Regards
Graham

-Original Message-
From: TWSocket [mailto:twsocket-boun...@lists.elists.org] On Behalf Of
Robert Van Gemert
Sent: 16 October 2013 10:26
To: 'ICS support mailing'
Subject: Re: [twsocket] Delphi TServerSocket vs ICS equivalent

Is this is the mos protocol uses with news room computer systems?
I have an implementation using TWSocketServer and TWSocket and may be able
to help. 

Robert

-Original Message-
From: TWSocket [mailto:twsocket-boun...@lists.elists.org] On Behalf Of
Graham Powell
Sent: Wednesday, 16 October 2013 2:15 AM
To: 'ICS support mailing'
Subject: Re: [twsocket] Delphi TServerSocket vs ICS equivalent

The 20 seconds is plenty long enough as a timeout and it is configurable by
the user if necessary.

One minor addition to your scheme if I decide to use your component is that
all the data is Unicode (high byte first) to the end tag is actually:

null  null / null m null o null s null 

Graham

-Original Message-
From: TWSocket [mailto:twsocket-boun...@lists.elists.org] On Behalf Of
François Piette
Sent: 12 October 2013 09:26
To: 'ICS support mailing'
Subject: Re: [twsocket] Delphi TServerSocket vs ICS equivalent

 This is how it works at the moment.
 I have an array of records. Each record contains a string and an integer.
 The string is used to hold the incoming data and integer hold the 
 timeout
value that counts down.
 As data arrives it is added to the string associated with the correct
client and the timeout is reset to 20 seconds.
 Periodically I check each of the strings in the array to see if mos 
 and
/mos exist.
 If this is the case the message is extracted from the string and
processed.
 The timeout is now turned off.

IMO this is bad design because you have no control on the network speed.
Whatever you select as timeout it is always possible to have an issue with
network speed and congestion. Long timeout will makes the code works most of
the time.

 Occasionally I get issues with data appearing to be corrupt.
Investigations are continuing, but the 
 origin of this e-mail trail was to establish if it worth my while 
 changing
from Delphi TServerSocket 
 to the ICS server component. Is the ICS component known to be better 
 in
whatever respect or is 
 it just an equally good alternative.

ICS component may be the best component, but bad design won't definitely not
solve all issues.
You should REALLY change your design. Please re-read my previous emails.
Summary: Use /mos as LineEnd in TWSocket and let the component assemble
the message for you and trigger the OnDataAvailable only when you have
received the end marker. Use a TTimer to process timeout: if you don't get a
complete message (So no OnDataAvailable), before - let's say - one minute,
then call Abort to close the connection and report an error.

Alternatively, you may parse the XML as data is coming thru and detect when
the ending tag has been reached. This is more complex as you need an XML
parser able to parse a stream as it comes, but this will permit having a
message embedded into another one.

--
francois.pie...@overbyte.be
Embarcadero MVP
http://www.overbyte.be
http://francois-piette.blogspot.com


--
To unsubscribe or change your settings for TWSocket mailing list please goto
http://lists.elists.org/cgi-bin/mailman/listinfo/twsocket
Visit our website at http://www.overbyte.be

--
To unsubscribe or change your settings for TWSocket mailing list please goto
http://lists.elists.org/cgi-bin/mailman/listinfo/twsocket
Visit our website at http://www.overbyte.be

--
To unsubscribe or change your settings for TWSocket mailing list please goto
http://lists.elists.org/cgi-bin/mailman/listinfo/twsocket
Visit our website at http://www.overbyte.be

-- 
To unsubscribe or change your settings for TWSocket mailing list
please goto http://lists.elists.org/cgi-bin/mailman/listinfo/twsocket
Visit our website at http://www.overbyte.be


Re: [twsocket] Delphi TServerSocket vs ICS equivalent

2013-10-16 Thread Robert Van Gemert
You can get a sample from http://members.optusnet.com.au/rcvangemert/


-Original Message-
From: TWSocket [mailto:twsocket-boun...@lists.elists.org] On Behalf Of
Graham Powell
Sent: Wednesday, 16 October 2013 8:34 PM
To: 'ICS support mailing'
Subject: Re: [twsocket] Delphi TServerSocket vs ICS equivalent

Yes.

At the moment it's working fine with the Delphi TServerSocket component. I
recently found a bug which may have been the root cause of my problems.
However sample code of the ICS implementation would be useful for the future
as I'm sure Delphi will try and force us to go the Indy route.

Regards
Graham

-Original Message-
From: TWSocket [mailto:twsocket-boun...@lists.elists.org] On Behalf Of
Robert Van Gemert
Sent: 16 October 2013 10:26
To: 'ICS support mailing'
Subject: Re: [twsocket] Delphi TServerSocket vs ICS equivalent

Is this is the mos protocol uses with news room computer systems?
I have an implementation using TWSocketServer and TWSocket and may be able
to help. 

Robert

-Original Message-
From: TWSocket [mailto:twsocket-boun...@lists.elists.org] On Behalf Of
Graham Powell
Sent: Wednesday, 16 October 2013 2:15 AM
To: 'ICS support mailing'
Subject: Re: [twsocket] Delphi TServerSocket vs ICS equivalent

The 20 seconds is plenty long enough as a timeout and it is configurable by
the user if necessary.

One minor addition to your scheme if I decide to use your component is that
all the data is Unicode (high byte first) to the end tag is actually:

null  null / null m null o null s null 

Graham

-Original Message-
From: TWSocket [mailto:twsocket-boun...@lists.elists.org] On Behalf Of
François Piette
Sent: 12 October 2013 09:26
To: 'ICS support mailing'
Subject: Re: [twsocket] Delphi TServerSocket vs ICS equivalent

 This is how it works at the moment.
 I have an array of records. Each record contains a string and an integer.
 The string is used to hold the incoming data and integer hold the 
 timeout
value that counts down.
 As data arrives it is added to the string associated with the correct
client and the timeout is reset to 20 seconds.
 Periodically I check each of the strings in the array to see if mos 
 and
/mos exist.
 If this is the case the message is extracted from the string and
processed.
 The timeout is now turned off.

IMO this is bad design because you have no control on the network speed.
Whatever you select as timeout it is always possible to have an issue with
network speed and congestion. Long timeout will makes the code works most of
the time.

 Occasionally I get issues with data appearing to be corrupt.
Investigations are continuing, but the 
 origin of this e-mail trail was to establish if it worth my while 
 changing
from Delphi TServerSocket 
 to the ICS server component. Is the ICS component known to be better 
 in
whatever respect or is 
 it just an equally good alternative.

ICS component may be the best component, but bad design won't definitely not
solve all issues.
You should REALLY change your design. Please re-read my previous emails.
Summary: Use /mos as LineEnd in TWSocket and let the component assemble
the message for you and trigger the OnDataAvailable only when you have
received the end marker. Use a TTimer to process timeout: if you don't get a
complete message (So no OnDataAvailable), before - let's say - one minute,
then call Abort to close the connection and report an error.

Alternatively, you may parse the XML as data is coming thru and detect when
the ending tag has been reached. This is more complex as you need an XML
parser able to parse a stream as it comes, but this will permit having a
message embedded into another one.

--
francois.pie...@overbyte.be
Embarcadero MVP
http://www.overbyte.be
http://francois-piette.blogspot.com


--
To unsubscribe or change your settings for TWSocket mailing list please goto
http://lists.elists.org/cgi-bin/mailman/listinfo/twsocket
Visit our website at http://www.overbyte.be

--
To unsubscribe or change your settings for TWSocket mailing list please goto
http://lists.elists.org/cgi-bin/mailman/listinfo/twsocket
Visit our website at http://www.overbyte.be

--
To unsubscribe or change your settings for TWSocket mailing list please goto
http://lists.elists.org/cgi-bin/mailman/listinfo/twsocket
Visit our website at http://www.overbyte.be

-- 
To unsubscribe or change your settings for TWSocket mailing list
please goto http://lists.elists.org/cgi-bin/mailman/listinfo/twsocket
Visit our website at http://www.overbyte.be

-- 
To unsubscribe or change your settings for TWSocket mailing list
please goto http://lists.elists.org/cgi-bin/mailman/listinfo/twsocket
Visit our website at http://www.overbyte.be


Re: [twsocket] Delphi TServerSocket vs ICS equivalent

2013-10-15 Thread Graham Powell
The 20 seconds is plenty long enough as a timeout and it is configurable by
the user if necessary.

One minor addition to your scheme if I decide to use your component is that
all the data is Unicode (high byte first) to the end tag is actually:

null  null / null m null o null s null 

Graham

-Original Message-
From: TWSocket [mailto:twsocket-boun...@lists.elists.org] On Behalf Of
François Piette
Sent: 12 October 2013 09:26
To: 'ICS support mailing'
Subject: Re: [twsocket] Delphi TServerSocket vs ICS equivalent

 This is how it works at the moment.
 I have an array of records. Each record contains a string and an integer.
 The string is used to hold the incoming data and integer hold the 
 timeout
value that counts down.
 As data arrives it is added to the string associated with the correct
client and the timeout is reset to 20 seconds.
 Periodically I check each of the strings in the array to see if mos 
 and
/mos exist.
 If this is the case the message is extracted from the string and
processed.
 The timeout is now turned off.

IMO this is bad design because you have no control on the network speed.
Whatever you select as timeout it is always possible to have an issue with
network speed and congestion. Long timeout will makes the code works most of
the time.

 Occasionally I get issues with data appearing to be corrupt.
Investigations are continuing, but the 
 origin of this e-mail trail was to establish if it worth my while 
 changing
from Delphi TServerSocket 
 to the ICS server component. Is the ICS component known to be better 
 in
whatever respect or is 
 it just an equally good alternative.

ICS component may be the best component, but bad design won't definitely not
solve all issues.
You should REALLY change your design. Please re-read my previous emails.
Summary: Use /mos as LineEnd in TWSocket and let the component assemble
the message for you and trigger the OnDataAvailable only when you have
received the end marker. Use a TTimer to process timeout: if you don't get a
complete message (So no OnDataAvailable), before - let's say - one minute,
then call Abort to close the connection and report an error.

Alternatively, you may parse the XML as data is coming thru and detect when
the ending tag has been reached. This is more complex as you need an XML
parser able to parse a stream as it comes, but this will permit having a
message embedded into another one.

--
francois.pie...@overbyte.be
Embarcadero MVP
http://www.overbyte.be
http://francois-piette.blogspot.com


-- 
To unsubscribe or change your settings for TWSocket mailing list
please goto http://lists.elists.org/cgi-bin/mailman/listinfo/twsocket
Visit our website at http://www.overbyte.be

-- 
To unsubscribe or change your settings for TWSocket mailing list
please goto http://lists.elists.org/cgi-bin/mailman/listinfo/twsocket
Visit our website at http://www.overbyte.be


Re: [twsocket] Delphi TServerSocket vs ICS equivalent

2013-10-09 Thread François Piette
 The data is enclosed with a standard tag format. In this case it is
mos./mos, so I know when 
 I have received a complete message 

So you have a delimiter which is /mos. It could be sed for TWSocket
LineMode.
Note that you cannot have embedded messages in messages.

-- 
francois.pie...@overbyte.be
Embarcadero MVP
http://www.overbyte.be
http://francois-piette.blogspot.com




-- 
To unsubscribe or change your settings for TWSocket mailing list
please goto http://lists.elists.org/cgi-bin/mailman/listinfo/twsocket
Visit our website at http://www.overbyte.be