A smart pointer class for GNet::HeapClient. More...
#include <gclientptr.h>
Public Member Functions | |
ClientPtr (TClient *p=NULL, bool preserve_resolver_info=false) | |
Constructor. More... | |
~ClientPtr () | |
Destructor. More... | |
bool | busy () const |
Returns true if the pointer is not NULL. More... | |
void | reset (TClient *p=NULL) |
Resets the pointer. More... | |
TClient * | get () |
Returns the pointer, or NULL if deleted. More... | |
TClient * | operator-> () |
Returns the pointer. Throws if deleted. More... | |
const TClient * | operator-> () const |
Returns the pointer. Throws if deleted. More... | |
G::Signal2< std::string, bool > & | doneSignal () |
Returns a signal which indicates that client processing is complete and the client instance has deleted itself. More... | |
G::Signal2< std::string, std::string > & | eventSignal () |
Returns a signal which indicates something interesting. More... | |
G::Signal0 & | connectedSignal () |
Returns a signal which indicates that the connection has been established successfully. More... | |
ResolverInfo | resolverInfo () const |
Returns the current or last client's ResolverInfo. More... | |
void | releaseForExit () |
Can be called on program termination when there may be no TimerList or EventLoop instances. More... | |
void | cleanupForExit () |
Can be called on program termination when there may be no TimerList or EventLoop instances. More... | |
A smart pointer class for GNet::HeapClient.
Keeps track of when the contained instance deletes itself and also does some signal forwarding so that the user of the smart pointer can work with the smart pointers signals and not worry about the client objects' signals.
When the smart pointer goes out of scope while it is managing a client object then the client object is told to delete itself asynchronously using the HeapClient class's doDelete() mechanism.
The smart pointer also optionally maintains an internal ResolverInfo object so that name resolution results can be retained from one contained client object to the next. If the smart pointer is loaded with a new client that has the same host and service name in its ResolverInfo as the previous client then the resolved address is propagated into the new client so that name lookup is short-circuited within the SimpleClient code. The danger with this is that the name lookup becomes stale, so it is probably only a good idea for local addresses and/or short-lived objects.
Definition at line 60 of file gclientptr.h.
|
explicit |
GNet::ClientPtr< TClient >::~ClientPtr | ( | ) |
Destructor.
Definition at line 154 of file gclientptr.h.
bool GNet::ClientPtr< TClient >::busy | ( | ) | const |
Returns true if the pointer is not NULL.
Definition at line 275 of file gclientptr.h.
void GNet::ClientPtr< TClient >::cleanupForExit | ( | ) |
Can be called on program termination when there may be no TimerList or EventLoop instances.
The client is destructed so all relevant destructors should avoid doing anything with timers or the network (possibly even just closing sockets).
Definition at line 174 of file gclientptr.h.
G::Signal0 & GNet::ClientPtr< TClient >::connectedSignal | ( | ) |
Returns a signal which indicates that the connection has been established successfully.
Definition at line 229 of file gclientptr.h.
G::Signal2< std::string, bool > & GNet::ClientPtr< TClient >::doneSignal | ( | ) |
Returns a signal which indicates that client processing is complete and the client instance has deleted itself.
The first signal parameter is the failure reason and the second is a 'can-retry' flag.
Definition at line 217 of file gclientptr.h.
Referenced by GSmtp::AdminServerPeer::AdminServerPeer(), GSmtp::ProtocolMessageForward::ProtocolMessageForward(), and Main::Run::Run().
G::Signal2< std::string, std::string > & GNet::ClientPtr< TClient >::eventSignal | ( | ) |
Returns a signal which indicates something interesting.
Definition at line 223 of file gclientptr.h.
Referenced by Main::Run::Run().
TClient * GNet::ClientPtr< TClient >::get | ( | ) |
Returns the pointer, or NULL if deleted.
Definition at line 269 of file gclientptr.h.
TClient * GNet::ClientPtr< TClient >::operator-> | ( | ) |
Returns the pointer. Throws if deleted.
Definition at line 281 of file gclientptr.h.
const TClient * GNet::ClientPtr< TClient >::operator-> | ( | ) | const |
Returns the pointer. Throws if deleted.
Definition at line 289 of file gclientptr.h.
void GNet::ClientPtr< TClient >::releaseForExit | ( | ) |
Can be called on program termination when there may be no TimerList or EventLoop instances.
The client object leaks.
Definition at line 164 of file gclientptr.h.
void GNet::ClientPtr< TClient >::reset | ( | TClient * | p = NULL | ) |
Resets the pointer.
Definition at line 197 of file gclientptr.h.
ResolverInfo GNet::ClientPtr< TClient >::resolverInfo | ( | ) | const |
Returns the current or last client's ResolverInfo.
Definition at line 297 of file gclientptr.h.