#if wxUSE_PROTOCOL
#include "wx/protocol/protocol.h"
+#include "wx/protocol/log.h"
#ifndef WX_PRECOMP
#include "wx/module.h"
#endif
#include "wx/url.h"
+#include "wx/log.h"
#include <stdlib.h>
-/////////////////////////////////////////////////////////////////
+// ----------------------------------------------------------------------------
// wxProtoInfo
-/////////////////////////////////////////////////////////////////
-
-/*
- * --------------------------------------------------------------
- * --------- wxProtoInfo CONSTRUCTOR ----------------------------
- * --------------------------------------------------------------
- */
+// ----------------------------------------------------------------------------
wxProtoInfo::wxProtoInfo(const wxChar *name, const wxChar *serv,
const bool need_host1, wxClassInfo *info)
#endif
}
-/////////////////////////////////////////////////////////////////
-// wxProtocol ///////////////////////////////////////////////////
-/////////////////////////////////////////////////////////////////
+
+// ----------------------------------------------------------------------------
+// wxProtocol
+// ----------------------------------------------------------------------------
#if wxUSE_SOCKETS
IMPLEMENT_ABSTRACT_CLASS(wxProtocol, wxSocketClient)
: wxSocketClient()
#endif
{
+ m_lastError = wxPROTO_NOERR;
+ m_log = NULL;
+ SetDefaultTimeout(60); // default timeout is 60 seconds
}
#if wxUSE_SOCKETS
return true;
}
+void wxProtocol::SetDefaultTimeout(wxUint32 Value)
+{
+ m_uiDefaultTimeout = Value;
+#if wxUSE_SOCKETS
+ wxSocketBase::SetTimeout(Value); // sets it for this socket
+#endif
+}
+
+wxProtocol::~wxProtocol()
+{
+ delete m_log;
+}
+
// ----------------------------------------------------------------------------
// Read a line from socket
// ----------------------------------------------------------------------------
if ( eol == pBuf )
{
// check for case of "\r\n" being split
- if ( result.empty() || result.Last() != _T('\r') )
+ if ( result.empty() || result.Last() != wxT('\r') )
{
// ignore the stray '\n'
eol = NULL;
return ReadLine(this, result);
}
-// old function which only chops '\n' and not '\r\n'
-wxProtocolError GetLine(wxSocketBase *sock, wxString& result)
-{
-#define PROTO_BSIZE 2048
- size_t avail, size;
- char tmp_buf[PROTO_BSIZE], tmp_str[PROTO_BSIZE];
- char *ret;
- bool found;
-
- avail = sock->Read(tmp_buf, PROTO_BSIZE).LastCount();
- if (sock->Error() || avail == 0)
- return wxPROTO_NETERR;
-
- memcpy(tmp_str, tmp_buf, avail);
-
- // Not implemented on all systems
- // ret = (char *)memccpy(tmp_str, tmp_buf, '\n', avail);
- found = false;
- for (ret=tmp_str;ret < (tmp_str+avail); ret++)
- if (*ret == '\n')
- {
- found = true;
- break;
- }
+#endif // wxUSE_SOCKETS
- if (!found)
- return wxPROTO_PROTERR;
+// ----------------------------------------------------------------------------
+// logging
+// ----------------------------------------------------------------------------
- *ret = 0;
+void wxProtocol::SetLog(wxProtocolLog *log)
+{
+ delete m_log;
+ m_log = log;
+}
- result = wxString::FromAscii( tmp_str );
- result = result.Left(result.length()-1);
+void wxProtocol::LogRequest(const wxString& str)
+{
+ if ( m_log )
+ m_log->LogRequest(str);
+}
- size = ret-tmp_str+1;
- sock->Unread(&tmp_buf[size], avail-size);
+void wxProtocol::LogResponse(const wxString& str)
+{
+ if ( m_log )
+ m_log->LogResponse(str);
+}
- return wxPROTO_NOERR;
-#undef PROTO_BSIZE
+void wxProtocolLog::DoLogString(const wxString& str)
+{
+ wxUnusedVar(str); // unused if wxLogTrace() is disabled
+ wxLogTrace(m_traceMask, "%s", str);
}
-#endif // wxUSE_SOCKETS
#endif // wxUSE_PROTOCOL