X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/730b772b41ad9df76e5226290bb9eb917ea161f0..da8b1d4b3b535aba94d04494f5b6e2b3e47901ee:/include/wx/protocol/protocol.h diff --git a/include/wx/protocol/protocol.h b/include/wx/protocol/protocol.h index 012d830b4e..6dffb30f94 100644 --- a/include/wx/protocol/protocol.h +++ b/include/wx/protocol/protocol.h @@ -24,6 +24,8 @@ #include "wx/socket.h" #endif +class WXDLLIMPEXP_FWD_NET wxProtocolLog; + // ---------------------------------------------------------------------------- // constants // ---------------------------------------------------------------------------- @@ -55,6 +57,7 @@ class WXDLLIMPEXP_NET wxProtocol { public: wxProtocol(); + virtual ~wxProtocol(); #if wxUSE_SOCKETS bool Reconnect(); @@ -89,6 +92,30 @@ public: { SetDefaultTimeout(seconds); } + // logging support: each wxProtocol object may have the associated logger + // (by default there is none) which is used to log network requests and + // responses + + // set the logger, deleting the old one and taking ownership of this one + void SetLog(wxProtocolLog *log); + + // return the current logger, may be NULL + wxProtocolLog *GetLog() const { return m_log; } + + // detach the existing logger without deleting it, the caller is + // responsible for deleting the returned pointer if it's non-NULL + wxProtocolLog *DetachLog() + { + wxProtocolLog * const log = m_log; + m_log = NULL; + return log; + } + + // these functions forward to the same functions with the same names in + // wxProtocolLog if we have a valid logger and do nothing otherwise + void LogRequest(const wxString& str); + void LogResponse(const wxString& str); + protected: // the timeout associated with the protocol: wxUint32 m_uiDefaultTimeout; @@ -100,6 +127,8 @@ protected: wxProtocolError m_lastError; private: + wxProtocolLog *m_log; + DECLARE_DYNAMIC_CLASS_NO_COPY(wxProtocol) }; @@ -113,13 +142,13 @@ public: \ #define IMPLEMENT_PROTOCOL(class, name, serv, host) \ wxProtoInfo class::g_proto_##class(name, serv, host, CLASSINFO(class)); \ -bool wxProtocolUse##class = TRUE; +bool wxProtocolUse##class = true; #define USE_PROTOCOL(class) \ extern bool wxProtocolUse##class ; \ static struct wxProtocolUserFor##class \ { \ - wxProtocolUserFor##class() { wxProtocolUse##class = TRUE; } \ + wxProtocolUserFor##class() { wxProtocolUse##class = true; } \ } wxProtocolDoUse##class; class WXDLLIMPEXP_NET wxProtoInfo : public wxObject @@ -141,7 +170,7 @@ protected: friend class wxURL; DECLARE_DYNAMIC_CLASS(wxProtoInfo) - DECLARE_NO_COPY_CLASS(wxProtoInfo) + wxDECLARE_NO_COPY_CLASS(wxProtoInfo); }; #endif // wxUSE_PROTOCOL