Ciao guys,
After ages, I can swear I was missing you! :-)
Anyway, this week-end I could finally work again on both ht://Check and
ht://Dig (a bit). I was concerned about looking at the changes done on the
htnet library on ht://Dig and port them on ht://Check. I found a few
changes were done so I looked at them and compared with ht://Check code, in
order to make it the same.
I came up with a few ideas regarding especially the management of this
*holy* connection dynamic object. After this class on C++ I attended in
Melbourne, I feel much stronger on the subject and also on OO. Anyway, I
noticed that the connection object is not always needed (because for
instance not all of the Transport derived object use it - i.e.HtFile) and
the pointer that manages it is hold by the Transport class. Also now we
have 2 different types of connections, the 'basic' and the 'SSL' one.
I reasonably think that, in order to avoid double deletes, we *must*
give responsability of this to one particular class: the one I find the
most adapt, is the Transport one. Let me clearify that this can also *not
happen* (HtFile again).
As far as the Transport class is concerned, I decided to change the
default constructor:
Transport::Transport() becomes now Transport::Transport(Connection*
connection = 0).
This *trick* I think is very useful later on. Let me explain. HTTP
needs a connection, right? so I forced the constructor to be:
HtHTTP::HtHTTP(Connection&) and the HtHTTP::HtHTTP() to be private and
empty, which avoids any possible default creation by a compiler. As long as
I wrote the destructor to be virtual and pure, HtHTTP is now an abstract
class (which is what we want). The derived classes are HtHTTPBasic
and HtHTTPSecure, which *must* create a Connection object (SSLConnection
in the latter one, but it is derived from Connection - so no problem).
The default constructor of HtHTTPBasic is now very short, because it
has to call the HtHTTP constructor by passing a new allocated Connection
object:
HtHTTPBasic::HtHTTPBasic() : HtHTTP(*(new Connection)) [...]
and the Secure version is very similar.
I also tried to clean a bit the constructors (paying attention to the
initialization list).
As far as the Connection class is concerned, I decided to remove one
constructor, which -I think- can give us only maintanance troubles: I am
talking about the default one, which now is:
Connection::Connection(int socket = -1)
I hope everything is fine and I have not made any mistake. So guys,
pllease give me the *welcome back*, I need encouragements! :-)
Ciao ciao
-Gabriele
--
Gabriele Bartolini - Web Programmer
Current Location: Prato, Tuscany, Italy
[EMAIL PROTECTED] | http://www.prato.linux.it/~gbartolini | ICQ#129221447
> find bin/laden -name osama -exec rm {} \;
_______________________________________________
htdig-dev mailing list
[EMAIL PROTECTED]
https://lists.sourceforge.net/lists/listinfo/htdig-dev