You can think about how ICS-V6 components are implemented. They all derive 
(inherit) from the same base class (TIcsWndControl). This class is a generic 
class. Then every component use (by delegation) one or more TWSocket to 
implement the specific protocol with properties, methods and events specific 
to each protocol.

--
[EMAIL PROTECTED]
The author of the freeware multi-tier middleware MidWare
The author of the freeware Internet Component Suite (ICS)
http://www.overbyte.be


----- Original Message ----- 
From: "Jack" <[EMAIL PROTECTED]>
To: "ICS support mailing" <[email protected]>
Sent: Monday, May 28, 2007 6:58 AM
Subject: [twsocket] Seeking OO design suggestions


>
> I'm planning on implementing a set of test classes to test multiple 
> servers
> speaking various protocols (for example: HTTP, SMTP, and proprietary
> protocols.) There are multiple servers of each type. I use some very 
> simple
> protocol-aware packets to check if the ports are open and if the servers
> are functional. For each type of server, I use multiple (say, 10) async
> sockets to connect to the servers to speed up testing.
>
> I'm thinking about two different ways of implement it, both trying to
> share as much code as possible.
>
> Design 1. Have socket classes derived from TWSocket, implement the 
> protocol
> specific logic in those class, and share a common master class to create
> multiple socket instances for each protocol. The master class
> (TServerTester) creates different tester sockets based on an argument
> in the constructor.
>
> Socket classes have the socket event handlers and do protocol-specific
> testing:
>  THttpTesterSocket = class(TWSocket) // with http event handlers
>    ...
>  end;
>
>  TSmtpTesterSocket = class(TWSocket) // with smtp event handlers
>    ...
>  end;
>
>  TServerTester = class(TObject) // A common master tester class
>     Sockets: TObjectList;
>     ...
>  end;
>
>
> Or, design 2. Have one simple class derived from TWSocket, or just use 
> TWSocket
> for socket, no event handled in this class. And have a base Tester class
> to create sockets. This class declare socket event handlers for the
> sockets it creates. Then derive protocol-specific Tester classes and
> override the event handlers:
>
>  TTesterSocket = class(TWSocket) // very simple no event handlers
>    ...
>  end;
>
>  TServerTester = class(TObject)  // create and delete sockets for one
>    Sockets: TObjectList;          // protocol, dummy event handlers)
>    ...
>  end;
>
>  THttpServerTest = class(TServerTester) // with event handler 
> implementation
>    ...
>  end;
>
>  TSmtpServerTest = class(TServerTester) // with event handler 
> implementation
>    ...
>  end;
>
> I'm not very clear about which is better for this job. I'm open
> to other suggestions as well.
>
> -- 
> Thanks!
> Jack
>
> -- 
> To unsubscribe or change your settings for TWSocket mailing list
> please goto http://www.elists.org/mailman/listinfo/twsocket
> Visit our website at http://www.overbyte.be 

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

Reply via email to