/////////////////////////////////////////////////////////////////////////////
-// Name: protocol/protocol.h
+// Name: wx/protocol/protocol.h
// Purpose: interface of wxProtocol
// Author: wxWidgets team
// RCS-ID: $Id$
-// Licence: wxWindows license
+// Licence: wxWindows licence
/////////////////////////////////////////////////////////////////////////////
/**
Represents a protocol for use with wxURL.
+ Note that you may want to change the default time-out for HTTP/FTP connections
+ and network operations (using SetDefaultTimeout()) since the default time-out
+ value is quite long (60 seconds).
+
@library{wxnet}
@category{net}
@return Returns @true, if successful, else @false.
*/
- bool Abort();
+ virtual bool Abort() = 0;
/**
Returns the type of the content of the last opened stream. It is a mime-type.
+ May be an empty string if the content-type is unknown.
*/
- virtual wxString GetContentType();
+ virtual wxString GetContentType() const;
/**
Returns the last occurred error.
@see wxProtocolError
*/
- wxProtocolError GetError();
+ virtual wxProtocolError GetError() const;
/**
Creates a new input stream on the specified path.
@see wxInputStream
*/
- wxInputStream* GetInputStream(const wxString& path);
+ virtual wxInputStream* GetInputStream(const wxString& path) = 0;
/**
Tries to reestablish a previous opened connection (close and renegotiate
bool Reconnect();
/**
- Sets the authentication password. It is mainly useful when FTP is used.
+ Sets the authentication password.
*/
virtual void SetPassword(const wxString& user);
/**
- Sets the authentication user. It is mainly useful when FTP is used.
+ Sets the authentication user.
*/
virtual void SetUser(const wxString& user);
+
+ /**
+ Sets a new default timeout for the network operations.
+
+ The default timeout is 60 seconds.
+
+ @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);
+
+ //@}
};