added wxProtocolLog class for logging network requests/responses (closes #7464)

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@59404 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
Vadim Zeitlin
2009-03-07 13:58:39 +00:00
parent fdb45ab7e9
commit 0576cd9ebe
17 changed files with 253 additions and 22 deletions

View File

@@ -0,0 +1,61 @@
///////////////////////////////////////////////////////////////////////////////
// Name: wx/protocol/log.h
// Purpose: interface of wxProtocolLog
// Author: Vadim Zeitlin
// Created: 2009-03-06
// RCS-ID: $Id$
// Copyright: (c) 2009 Vadim Zeitlin <vadim@wxwidgets.org>
// Licence: wxWindows licence
///////////////////////////////////////////////////////////////////////////////
/**
Class allowing to log network operations performed by wxProtocol.
@library{wxnet}
@category{net}
@see wxProtocol
*/
class wxProtocolLog
{
public:
/**
Create object doing the logging using wxLogTrace() with the specified
trace mask.
If you override DoLogString() in your class the @a traceMask may be
left empty but it must have a valid value if you rely on the default
DoLogString() implementation.
*/
wxProtocolLog(const wxString& traceMask);
/**
Called by wxProtocol-derived objects to log strings sent to the server.
Default implementation prepends a client-to-server marker to @a str and
calls DoLogString().
*/
virtual void LogRequest(const wxString& str);
/**
Called by wxProtocol-derived objects to log strings received from the
server.
Default implementation prepends a server-to-client marker to @a str and
calls DoLogString().
*/
virtual void LogResponse(const wxString& str);
protected:
/**
Log the given string.
This function is called from LogRequest() and LogResponse() and by
default uses wxLogTrace() with the trace mask specified in the
constructor but can be overridden to do something different by the
derived classes.
*/
virtual void DoLogString(const wxString& str);
};

View File

@@ -1,5 +1,5 @@
/////////////////////////////////////////////////////////////////////////////
// Name: protocol/protocol.h
// Name: wx/protocol/protocol.h
// Purpose: interface of wxProtocol
// Author: wxWidgets team
// RCS-ID: $Id$
@@ -107,5 +107,50 @@ public:
@see wxSocketBase::SetTimeout
*/
void SetDefaultTimeout(wxUint32 Value);
/**
@name Logging support.
Each wxProtocol object may have the associated logger (by default there
is none) which is used to log network requests and responses.
@see wxProtocolLog
*/
//@{
/**
Set the logger, deleting the old one and taking ownership of this one.
@param log
New logger allocated on the heap or @NULL.
*/
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-@c NULL.
*/
wxProtocolLog *DetachLog();
/**
Call wxProtocolLog::LogRequest() if we have a valid logger or do
nothing otherwise.
*/
void LogRequest(const wxString& str);
/**
Call wxProtocolLog::LogResponse() if we have a valid logger or do
nothing otherwise.
*/
void LogResponse(const wxString& str);
//@}
};