From: John L. <jr...@us...> - 2006-10-05 05:10:52
|
Update of /cvsroot/wxlua/wxLua/modules/wxluasocket/src In directory sc8-pr-cvs9.sourceforge.net:/tmp/cvs-serv28254/wxLua/modules/wxluasocket/src Modified Files: dservice.cpp wxldserv.cpp wxldtarg.cpp wxlsock.cpp wxluasocket_bind.cpp Log Message: change wxLuaDebugeeEvent wxEVT_WXLUA_DEBUGGER_CLIENT_CONNECTED to wxEVT_WXLUA_DEBUGGER_DEBUGGEE_CONNECTED add wxEVT_WXLUA_DEBUGGER_DEBUGGEE_DISCONNECTED and send it when a read/write fails make wxEvtHandler::Connect check for numbers only, NOT nil or bool enhance the wxLuaSocketException replace more nil bool values with true/false in editor.wx.lua Index: wxldtarg.cpp =================================================================== RCS file: /cvsroot/wxlua/wxLua/modules/wxluasocket/src/wxldtarg.cpp,v retrieving revision 1.29 retrieving revision 1.30 diff -C2 -d -r1.29 -r1.30 *** wxldtarg.cpp 4 Oct 2006 05:55:02 -0000 1.29 --- wxldtarg.cpp 5 Oct 2006 05:10:47 -0000 1.30 *************** *** 158,161 **** --- 158,163 ---- { NotifyExit(); + wxMilliSleep(900); + if (m_fConnected) { *************** *** 441,444 **** --- 443,448 ---- { NotifyExit(); + wxMilliSleep(900); + m_forceBreak = true; m_resetRequested = true; Index: wxluasocket_bind.cpp =================================================================== RCS file: /cvsroot/wxlua/wxLua/modules/wxluasocket/src/wxluasocket_bind.cpp,v retrieving revision 1.6 retrieving revision 1.7 diff -C2 -d -r1.6 -r1.7 *** wxluasocket_bind.cpp 28 Sep 2006 22:26:06 -0000 1.6 --- wxluasocket_bind.cpp 5 Oct 2006 05:10:47 -0000 1.7 *************** *** 29,33 **** { { &wxEVT_WXLUA_DEBUGGER_BREAK, "wxEVT_WXLUA_DEBUGGER_BREAK", &s_wxluatag_wxLuaDebuggerEvent }, ! { &wxEVT_WXLUA_DEBUGGER_CLIENT_CONNECTED, "wxEVT_WXLUA_DEBUGGER_CLIENT_CONNECTED", &s_wxluatag_wxLuaDebuggerEvent }, { &wxEVT_WXLUA_DEBUGGER_ERROR, "wxEVT_WXLUA_DEBUGGER_ERROR", &s_wxluatag_wxLuaDebuggerEvent }, { &wxEVT_WXLUA_DEBUGGER_EVALUATE_EXPR, "wxEVT_WXLUA_DEBUGGER_EVALUATE_EXPR", &s_wxluatag_wxLuaDebuggerEvent }, --- 29,34 ---- { { &wxEVT_WXLUA_DEBUGGER_BREAK, "wxEVT_WXLUA_DEBUGGER_BREAK", &s_wxluatag_wxLuaDebuggerEvent }, ! { &wxEVT_WXLUA_DEBUGGER_DEBUGGEE_CONNECTED, "wxEVT_WXLUA_DEBUGGER_DEBUGGEE_CONNECTED", &s_wxluatag_wxLuaDebuggerEvent }, ! { &wxEVT_WXLUA_DEBUGGER_DEBUGGEE_DISCONNECTED, "wxEVT_WXLUA_DEBUGGER_DEBUGGEE_DISCONNECTED", &s_wxluatag_wxLuaDebuggerEvent }, { &wxEVT_WXLUA_DEBUGGER_ERROR, "wxEVT_WXLUA_DEBUGGER_ERROR", &s_wxluatag_wxLuaDebuggerEvent }, { &wxEVT_WXLUA_DEBUGGER_EVALUATE_EXPR, "wxEVT_WXLUA_DEBUGGER_EVALUATE_EXPR", &s_wxluatag_wxLuaDebuggerEvent }, Index: dservice.cpp =================================================================== RCS file: /cvsroot/wxlua/wxLua/modules/wxluasocket/src/dservice.cpp,v retrieving revision 1.27 retrieving revision 1.28 diff -C2 -d -r1.27 -r1.28 *** dservice.cpp 4 Oct 2006 22:07:23 -0000 1.27 --- dservice.cpp 5 Oct 2006 05:10:47 -0000 1.28 *************** *** 486,494 **** wxLuaDebugSocket* dSocket = m_debuggerSocketList[i]; dSocket->WriteCmd(wxLUASOCKET_DEBUGGEE_EVENT_BREAK); - #if wxCHECK_VERSION(2,3,0) dSocket->WriteString(fileName.GetFullPath()); - #else - dSocket->WriteString(fileName); - #endif dSocket->WriteInt32(lineNumber); --- 486,490 ---- Index: wxldserv.cpp =================================================================== RCS file: /cvsroot/wxlua/wxLua/modules/wxluasocket/src/wxldserv.cpp,v retrieving revision 1.29 retrieving revision 1.30 diff -C2 -d -r1.29 -r1.30 *** wxldserv.cpp 4 Oct 2006 22:07:23 -0000 1.29 --- wxldserv.cpp 5 Oct 2006 05:10:47 -0000 1.30 *************** *** 34,38 **** // ---------------------------------------------------------------------------- ! DEFINE_EVENT_TYPE(wxEVT_WXLUA_DEBUGGER_CLIENT_CONNECTED) DEFINE_EVENT_TYPE(wxEVT_WXLUA_DEBUGGER_BREAK) DEFINE_EVENT_TYPE(wxEVT_WXLUA_DEBUGGER_PRINT) --- 34,39 ---- // ---------------------------------------------------------------------------- ! DEFINE_EVENT_TYPE(wxEVT_WXLUA_DEBUGGER_DEBUGGEE_CONNECTED) ! DEFINE_EVENT_TYPE(wxEVT_WXLUA_DEBUGGER_DEBUGGEE_DISCONNECTED) DEFINE_EVENT_TYPE(wxEVT_WXLUA_DEBUGGER_BREAK) DEFINE_EVENT_TYPE(wxEVT_WXLUA_DEBUGGER_PRINT) *************** *** 51,61 **** wxLuaDebuggerEvent::wxLuaDebuggerEvent(const wxLuaDebuggerEvent& event) ! :wxEvent(event), ! m_lineNumber(event.m_lineNumber), ! m_fileName(event.m_fileName), ! m_strMessage(event.m_strMessage), ! m_fHasMessage(event.m_fHasMessage), ! m_nReference(event.m_nReference), ! m_fEnabledFlag(event.m_fEnabledFlag) { SetDebugData(event.GetReference(), event.GetDebugData().Copy()); --- 52,62 ---- wxLuaDebuggerEvent::wxLuaDebuggerEvent(const wxLuaDebuggerEvent& event) ! :wxEvent(event), ! m_lineNumber(event.m_lineNumber), ! m_fileName(event.m_fileName), ! m_strMessage(event.m_strMessage), ! m_fHasMessage(event.m_fHasMessage), ! m_nReference(event.m_nReference), ! m_fEnabledFlag(event.m_fEnabledFlag) { SetDebugData(event.GetReference(), event.GetDebugData().Copy()); *************** *** 76,82 **** } ! void wxLuaDebuggerEvent::SetMessage(const wxString &pMessage) { ! m_strMessage = pMessage; m_fHasMessage = true; } --- 77,83 ---- } ! void wxLuaDebuggerEvent::SetMessage(const wxString& message) { ! m_strMessage = message; m_fHasMessage = true; } *************** *** 113,117 **** { wxCHECK_RET(m_luaDebugger, wxT("Invalid wxLuaDebuggerServer")); ! wxBeginBusyCursor(); m_luaDebugger->EnumerateStack(); } --- 114,118 ---- { wxCHECK_RET(m_luaDebugger, wxT("Invalid wxLuaDebuggerServer")); ! wxBeginBusyCursor(); // ended in wxLuaDebuggerBase::OnDebugXXX m_luaDebugger->EnumerateStack(); } *************** *** 120,124 **** { wxCHECK_RET(m_luaDebugger, wxT("Invalid wxLuaDebuggerServer")); ! wxBeginBusyCursor(); m_luaDebugger->EnumerateStackEntry(nEntry); } --- 121,125 ---- { wxCHECK_RET(m_luaDebugger, wxT("Invalid wxLuaDebuggerServer")); ! wxBeginBusyCursor(); // ended in wxLuaDebuggerBase::OnDebugXXX m_luaDebugger->EnumerateStackEntry(nEntry); } *************** *** 127,131 **** { wxCHECK_RET(m_luaDebugger, wxT("Invalid wxLuaDebuggerServer")); ! wxBeginBusyCursor(); m_luaDebugger->EnumerateTable(nRef, nEntry, (long)treeId.m_pItem); } --- 128,132 ---- { wxCHECK_RET(m_luaDebugger, wxT("Invalid wxLuaDebuggerServer")); ! wxBeginBusyCursor(); // ended in wxLuaDebuggerBase::OnDebugXXX m_luaDebugger->EnumerateTable(nRef, nEntry, (long)treeId.m_pItem); } *************** *** 134,138 **** { wxCHECK_RET(m_luaDebugger, wxT("Invalid wxLuaDebuggerServer")); ! wxBeginBusyCursor(); m_luaDebugger->EnumerateTable(-1, -1, (long)treeId.m_pItem); } --- 135,139 ---- { wxCHECK_RET(m_luaDebugger, wxT("Invalid wxLuaDebuggerServer")); ! wxBeginBusyCursor(); // ended in wxLuaDebuggerBase::OnDebugXXX m_luaDebugger->EnumerateTable(-1, -1, (long)treeId.m_pItem); } *************** *** 148,154 **** BEGIN_EVENT_TABLE(wxLuaDebuggerBase, wxEvtHandler) ! EVT_WXLUA_DEBUGGER_STACK_ENUM( wxLuaDebuggerBase::OnDebugStackEnum) ! EVT_WXLUA_DEBUGGER_STACK_ENTRY_ENUM(wxLuaDebuggerBase::OnDebugStackEntryEnum) ! EVT_WXLUA_DEBUGGER_TABLE_ENUM( wxLuaDebuggerBase::OnDebugTableEnum) EVT_END_PROCESS(ID_WXLUASOCKET_DEBUGGEE_PROCESS, wxLuaDebuggerBase::OnEndDebugeeProcess) --- 149,155 ---- BEGIN_EVENT_TABLE(wxLuaDebuggerBase, wxEvtHandler) ! EVT_WXLUA_DEBUGGER_STACK_ENUM( wxID_ANY, wxLuaDebuggerBase::OnDebugStackEnum) ! EVT_WXLUA_DEBUGGER_STACK_ENTRY_ENUM( wxID_ANY, wxLuaDebuggerBase::OnDebugStackEntryEnum) ! EVT_WXLUA_DEBUGGER_TABLE_ENUM( wxID_ANY, wxLuaDebuggerBase::OnDebugTableEnum) EVT_END_PROCESS(ID_WXLUASOCKET_DEBUGGEE_PROCESS, wxLuaDebuggerBase::OnEndDebugeeProcess) *************** *** 189,323 **** bool wxLuaDebuggerBase::AddBreakPoint(const wxString &fileName, int lineNumber) { ! return GetSocketBase() && GetSocketBase()->IsConnected() && GetSocketBase()->WriteCmd(wxLUASOCKET_DEBUGGER_CMD_ADD_BREAKPOINT) && GetSocketBase()->WriteString(fileName) && ! GetSocketBase()->WriteInt32(lineNumber); } bool wxLuaDebuggerBase::RemoveBreakPoint(const wxString &fileName, int lineNumber) { ! return GetSocketBase() && GetSocketBase()->IsConnected() && GetSocketBase()->WriteCmd(wxLUASOCKET_DEBUGGER_CMD_REMOVE_BREAKPOINT) && GetSocketBase()->WriteString(fileName) && ! GetSocketBase()->WriteInt32(lineNumber); } bool wxLuaDebuggerBase::DisableBreakPoint(const wxString &fileName, int lineNumber) { ! return GetSocketBase() && GetSocketBase()->IsConnected() && GetSocketBase()->WriteCmd(wxLUASOCKET_DEBUGGER_CMD_DISABLE_BREAKPOINT) && GetSocketBase()->WriteString(fileName) && ! GetSocketBase()->WriteInt32(lineNumber); } bool wxLuaDebuggerBase::EnableBreakPoint(const wxString &fileName, int lineNumber) { ! return GetSocketBase() && GetSocketBase()->IsConnected() && GetSocketBase()->WriteCmd(wxLUASOCKET_DEBUGGER_CMD_ENABLE_BREAKPOINT) && GetSocketBase()->WriteString(fileName) && ! GetSocketBase()->WriteInt32(lineNumber); } bool wxLuaDebuggerBase::ClearAllBreakPoints() { ! return GetSocketBase() && GetSocketBase()->IsConnected() && ! GetSocketBase()->WriteCmd(wxLUASOCKET_DEBUGGER_CMD_CLEAR_ALL_BREAKPOINTS); } bool wxLuaDebuggerBase::Run(const wxString &fileName, const wxString &buffer) { ! return GetSocketBase() && GetSocketBase()->IsConnected() && GetSocketBase()->WriteCmd(wxLUASOCKET_DEBUGGER_CMD_RUN_BUFFER) && GetSocketBase()->WriteString(fileName) && ! GetSocketBase()->WriteString(buffer); } bool wxLuaDebuggerBase::Step() { ! return GetSocketBase() && GetSocketBase()->IsConnected() && ! GetSocketBase()->WriteCmd(wxLUASOCKET_DEBUGGER_CMD_DEBUG_STEP); } bool wxLuaDebuggerBase::StepOver() { ! return GetSocketBase() && GetSocketBase()->IsConnected() && ! GetSocketBase()->WriteCmd(wxLUASOCKET_DEBUGGER_CMD_DEBUG_STEPOVER); } bool wxLuaDebuggerBase::StepOut() { ! return GetSocketBase() && GetSocketBase()->IsConnected() && ! GetSocketBase()->WriteCmd(wxLUASOCKET_DEBUGGER_CMD_DEBUG_STEPOUT); } bool wxLuaDebuggerBase::Continue() { ! return GetSocketBase() && GetSocketBase()->IsConnected() && ! GetSocketBase()->WriteCmd(wxLUASOCKET_DEBUGGER_CMD_DEBUG_CONTINUE); } bool wxLuaDebuggerBase::Break() { ! return GetSocketBase() && GetSocketBase()->IsConnected() && ! GetSocketBase()->WriteCmd(wxLUASOCKET_DEBUGGER_CMD_DEBUG_BREAK); } bool wxLuaDebuggerBase::Reset() { ! return GetSocketBase() && GetSocketBase()->IsConnected() && ! GetSocketBase()->WriteCmd(wxLUASOCKET_DEBUGGER_CMD_RESET); } bool wxLuaDebuggerBase::EnumerateStack() { ! return GetSocketBase() && GetSocketBase()->IsConnected() && ! GetSocketBase()->WriteCmd(wxLUASOCKET_DEBUGGER_CMD_ENUMERATE_STACK); } bool wxLuaDebuggerBase::EnumerateStackEntry(int stackEntry) { ! return GetSocketBase() && GetSocketBase()->IsConnected() && GetSocketBase()->WriteCmd(wxLUASOCKET_DEBUGGER_CMD_ENUMERATE_STACK_ENTRY) && ! GetSocketBase()->WriteInt32(stackEntry); } bool wxLuaDebuggerBase::EnumerateTable(int tableRef, int nIndex, long nItemNode) { ! return GetSocketBase() && GetSocketBase()->IsConnected() && GetSocketBase()->WriteCmd(wxLUASOCKET_DEBUGGER_CMD_ENUMERATE_TABLE_REF) && GetSocketBase()->WriteInt32(tableRef) && GetSocketBase()->WriteInt32(nIndex) && ! GetSocketBase()->WriteLong(nItemNode); } bool wxLuaDebuggerBase::CleanupDebugReferences() { ! return GetSocketBase() && GetSocketBase()->IsConnected() && ! GetSocketBase()->WriteCmd(wxLUASOCKET_DEBUGGER_CMD_CLEAR_DEBUG_REFERENCES); } bool wxLuaDebuggerBase::EvaluateExpr(int exprRef, const wxString &strExpression) { ! return GetSocketBase() && GetSocketBase()->IsConnected() && GetSocketBase()->WriteCmd(wxLUASOCKET_DEBUGGER_CMD_EVALUATE_EXPR) && GetSocketBase()->WriteInt32(exprRef) && ! GetSocketBase()->WriteString(strExpression); ! } ! ! bool wxLuaDebuggerBase::Compile(const wxString &fileName, const wxString &buffer) ! { ! wxLuaState wxlState(true); // new clean state to compile in ! wxString errMsg; ! int line_num = -1; ! int ret = wxlState.CompileString(buffer, fileName, &errMsg, &line_num); ! ! if (errMsg.IsEmpty()) ! errMsg = _T("Compiled ok.\n"); ! ! wxLuaDebuggerEvent debugEvent(wxEVT_WXLUA_DEBUGGER_ERROR, this); ! debugEvent.SetMessage(errMsg); ! SendEvent(debugEvent); ! ! return ret == -1; } --- 190,307 ---- bool wxLuaDebuggerBase::AddBreakPoint(const wxString &fileName, int lineNumber) { ! return CheckSocketConnected() && CheckSocketWrite( GetSocketBase()->WriteCmd(wxLUASOCKET_DEBUGGER_CMD_ADD_BREAKPOINT) && GetSocketBase()->WriteString(fileName) && ! GetSocketBase()->WriteInt32(lineNumber)); } bool wxLuaDebuggerBase::RemoveBreakPoint(const wxString &fileName, int lineNumber) { ! return CheckSocketConnected() && CheckSocketWrite( GetSocketBase()->WriteCmd(wxLUASOCKET_DEBUGGER_CMD_REMOVE_BREAKPOINT) && GetSocketBase()->WriteString(fileName) && ! GetSocketBase()->WriteInt32(lineNumber)); } bool wxLuaDebuggerBase::DisableBreakPoint(const wxString &fileName, int lineNumber) { ! return CheckSocketConnected() && CheckSocketWrite( GetSocketBase()->WriteCmd(wxLUASOCKET_DEBUGGER_CMD_DISABLE_BREAKPOINT) && GetSocketBase()->WriteString(fileName) && ! GetSocketBase()->WriteInt32(lineNumber)); } bool wxLuaDebuggerBase::EnableBreakPoint(const wxString &fileName, int lineNumber) { ! return CheckSocketConnected() && CheckSocketWrite( GetSocketBase()->WriteCmd(wxLUASOCKET_DEBUGGER_CMD_ENABLE_BREAKPOINT) && GetSocketBase()->WriteString(fileName) && ! GetSocketBase()->WriteInt32(lineNumber)); } bool wxLuaDebuggerBase::ClearAllBreakPoints() { ! return CheckSocketConnected() && CheckSocketWrite( ! GetSocketBase()->WriteCmd(wxLUASOCKET_DEBUGGER_CMD_CLEAR_ALL_BREAKPOINTS)); } bool wxLuaDebuggerBase::Run(const wxString &fileName, const wxString &buffer) { ! return CheckSocketConnected() && CheckSocketWrite( GetSocketBase()->WriteCmd(wxLUASOCKET_DEBUGGER_CMD_RUN_BUFFER) && GetSocketBase()->WriteString(fileName) && ! GetSocketBase()->WriteString(buffer)); } bool wxLuaDebuggerBase::Step() { ! return CheckSocketConnected() && CheckSocketWrite( ! GetSocketBase()->WriteCmd(wxLUASOCKET_DEBUGGER_CMD_DEBUG_STEP)); } bool wxLuaDebuggerBase::StepOver() { ! return CheckSocketConnected() && CheckSocketWrite( ! GetSocketBase()->WriteCmd(wxLUASOCKET_DEBUGGER_CMD_DEBUG_STEPOVER)); } bool wxLuaDebuggerBase::StepOut() { ! return CheckSocketConnected() && CheckSocketWrite( ! GetSocketBase()->WriteCmd(wxLUASOCKET_DEBUGGER_CMD_DEBUG_STEPOUT)); } bool wxLuaDebuggerBase::Continue() { ! return CheckSocketConnected() && CheckSocketWrite( ! GetSocketBase()->WriteCmd(wxLUASOCKET_DEBUGGER_CMD_DEBUG_CONTINUE)); } bool wxLuaDebuggerBase::Break() { ! return CheckSocketConnected() && CheckSocketWrite( ! GetSocketBase()->WriteCmd(wxLUASOCKET_DEBUGGER_CMD_DEBUG_BREAK)); } bool wxLuaDebuggerBase::Reset() { ! return CheckSocketConnected() && CheckSocketWrite( ! GetSocketBase()->WriteCmd(wxLUASOCKET_DEBUGGER_CMD_RESET)); } bool wxLuaDebuggerBase::EnumerateStack() { ! return CheckSocketConnected() && CheckSocketWrite( ! GetSocketBase()->WriteCmd(wxLUASOCKET_DEBUGGER_CMD_ENUMERATE_STACK)); } bool wxLuaDebuggerBase::EnumerateStackEntry(int stackEntry) { ! return CheckSocketConnected() && CheckSocketWrite( GetSocketBase()->WriteCmd(wxLUASOCKET_DEBUGGER_CMD_ENUMERATE_STACK_ENTRY) && ! GetSocketBase()->WriteInt32(stackEntry)); } bool wxLuaDebuggerBase::EnumerateTable(int tableRef, int nIndex, long nItemNode) { ! return CheckSocketConnected() && CheckSocketWrite( GetSocketBase()->WriteCmd(wxLUASOCKET_DEBUGGER_CMD_ENUMERATE_TABLE_REF) && GetSocketBase()->WriteInt32(tableRef) && GetSocketBase()->WriteInt32(nIndex) && ! GetSocketBase()->WriteLong(nItemNode)); } bool wxLuaDebuggerBase::CleanupDebugReferences() { ! return CheckSocketConnected() && CheckSocketWrite( ! GetSocketBase()->WriteCmd(wxLUASOCKET_DEBUGGER_CMD_CLEAR_DEBUG_REFERENCES)); } bool wxLuaDebuggerBase::EvaluateExpr(int exprRef, const wxString &strExpression) { ! return CheckSocketConnected() && CheckSocketWrite( GetSocketBase()->WriteCmd(wxLUASOCKET_DEBUGGER_CMD_EVALUATE_EXPR) && GetSocketBase()->WriteInt32(exprRef) && ! GetSocketBase()->WriteString(strExpression)); } *************** *** 333,338 **** wxInt32 lineNumber = 0; ! if (GetSocketBase()->ReadString(fileName) && ! GetSocketBase()->ReadInt32(lineNumber)) { wxLuaDebuggerEvent debugEvent(wxEVT_WXLUA_DEBUGGER_BREAK, this, lineNumber, fileName); --- 317,323 ---- wxInt32 lineNumber = 0; ! if (CheckSocketRead( ! GetSocketBase()->ReadString(fileName) && ! GetSocketBase()->ReadInt32(lineNumber))) { wxLuaDebuggerEvent debugEvent(wxEVT_WXLUA_DEBUGGER_BREAK, this, lineNumber, fileName); *************** *** 347,351 **** wxString strMessage; ! if (GetSocketBase()->ReadString(strMessage)) { wxLuaDebuggerEvent debugEvent(wxEVT_WXLUA_DEBUGGER_PRINT, this); --- 332,337 ---- wxString strMessage; ! if (CheckSocketRead( ! GetSocketBase()->ReadString(strMessage))) { wxLuaDebuggerEvent debugEvent(wxEVT_WXLUA_DEBUGGER_PRINT, this); *************** *** 361,365 **** wxString strMessage; ! if (GetSocketBase()->ReadString(strMessage)) { wxLuaDebuggerEvent debugEvent(wxEVT_WXLUA_DEBUGGER_ERROR, this); --- 347,352 ---- wxString strMessage; ! if (CheckSocketRead( ! GetSocketBase()->ReadString(strMessage))) { wxLuaDebuggerEvent debugEvent(wxEVT_WXLUA_DEBUGGER_ERROR, this); *************** *** 381,385 **** wxLuaDebugData debugData; ! if (GetSocketBase()->ReadDebugData(debugData)) { wxLuaDebuggerEvent debugEvent(wxEVT_WXLUA_DEBUGGER_STACK_ENUM, this); --- 368,373 ---- wxLuaDebugData debugData; ! if (CheckSocketRead( ! GetSocketBase()->ReadDebugData(debugData))) { wxLuaDebuggerEvent debugEvent(wxEVT_WXLUA_DEBUGGER_STACK_ENUM, this); *************** *** 396,401 **** wxLuaDebugData debugData; ! if (GetSocketBase()->ReadInt32(stackRef) && ! GetSocketBase()->ReadDebugData(debugData)) { wxLuaDebuggerEvent debugEvent(wxEVT_WXLUA_DEBUGGER_STACK_ENTRY_ENUM, this); --- 384,390 ---- wxLuaDebugData debugData; ! if (CheckSocketRead( ! GetSocketBase()->ReadInt32(stackRef) && ! GetSocketBase()->ReadDebugData(debugData))) { wxLuaDebuggerEvent debugEvent(wxEVT_WXLUA_DEBUGGER_STACK_ENTRY_ENUM, this); *************** *** 412,417 **** wxLuaDebugData debugData; ! if (GetSocketBase()->ReadLong(itemNode) && ! GetSocketBase()->ReadDebugData(debugData)) { wxLuaDebuggerEvent debugEvent(wxEVT_WXLUA_DEBUGGER_TABLE_ENUM, this); --- 401,407 ---- wxLuaDebugData debugData; ! if (CheckSocketRead( ! GetSocketBase()->ReadLong(itemNode) && ! GetSocketBase()->ReadDebugData(debugData))) { wxLuaDebuggerEvent debugEvent(wxEVT_WXLUA_DEBUGGER_TABLE_ENUM, this); *************** *** 428,433 **** wxString strResult; ! if (GetSocketBase()->ReadInt32(exprRef) && ! GetSocketBase()->ReadString(strResult)) { wxLuaDebuggerEvent debugEvent(wxEVT_WXLUA_DEBUGGER_EVALUATE_EXPR, this); --- 418,424 ---- wxString strResult; ! if (CheckSocketRead( ! GetSocketBase()->ReadInt32(exprRef) && ! GetSocketBase()->ReadString(strResult))) { wxLuaDebuggerEvent debugEvent(wxEVT_WXLUA_DEBUGGER_EVALUATE_EXPR, this); *************** *** 446,452 **** wxInt32 enabled = 0; ! if (GetSocketBase()->ReadString(fileName) && GetSocketBase()->ReadInt32(line) && ! GetSocketBase()->ReadInt32(enabled)) { wxLuaDebuggerEvent debugEvent(wxEVT_WXLUA_DEBUGGER_BREAKPOINT_ADDED, this, line, fileName, enabled ? true : false); --- 437,444 ---- wxInt32 enabled = 0; ! if (CheckSocketRead( ! GetSocketBase()->ReadString(fileName) && GetSocketBase()->ReadInt32(line) && ! GetSocketBase()->ReadInt32(enabled))) { wxLuaDebuggerEvent debugEvent(wxEVT_WXLUA_DEBUGGER_BREAKPOINT_ADDED, this, line, fileName, enabled ? true : false); *************** *** 462,467 **** wxInt32 line = 0; ! if (GetSocketBase()->ReadString(fileName) && ! GetSocketBase()->ReadInt32(line)) { wxLuaDebuggerEvent debugEvent(wxEVT_WXLUA_DEBUGGER_BREAKPOINT_REMOVED, this, line, fileName); --- 454,460 ---- wxInt32 line = 0; ! if (CheckSocketRead( ! GetSocketBase()->ReadString(fileName) && ! GetSocketBase()->ReadInt32(line))) { wxLuaDebuggerEvent debugEvent(wxEVT_WXLUA_DEBUGGER_BREAKPOINT_REMOVED, this, line, fileName); *************** *** 478,481 **** --- 471,526 ---- } + + bool wxLuaDebuggerBase::CheckSocketConnected(bool send_event) + { + if (GetSocketBase() == NULL) + { + if (send_event) + { + wxLuaDebuggerEvent debugEvent(wxEVT_WXLUA_DEBUGGER_DEBUGGEE_DISCONNECTED, this); + debugEvent.SetMessage(wxT("Debugger socket not created.")); + SendEvent(debugEvent); + } + + return false; + } + + if (!GetSocketBase()->IsConnected()) + { + if (send_event) + { + wxLuaDebuggerEvent debugEvent(wxEVT_WXLUA_DEBUGGER_DEBUGGEE_DISCONNECTED, this); + debugEvent.SetMessage(wxT("Debugger socket not connected.")); + SendEvent(debugEvent); + } + + return false; + } + + return true; + } + bool wxLuaDebuggerBase::CheckSocketRead(bool read_ok) + { + if (!read_ok) + { + wxLuaDebuggerEvent debugEvent(wxEVT_WXLUA_DEBUGGER_DEBUGGEE_DISCONNECTED, this); + debugEvent.SetMessage(wxT("Failed reading from the debugger socket.")); + SendEvent(debugEvent); + } + + return read_ok; + } + bool wxLuaDebuggerBase::CheckSocketWrite(bool write_ok) + { + if (!write_ok) + { + wxLuaDebuggerEvent debugEvent(wxEVT_WXLUA_DEBUGGER_DEBUGGEE_DISCONNECTED, this); + debugEvent.SetMessage(wxT("Failed writing to the debugger socket.")); + SendEvent(debugEvent); + } + + return write_ok; + } + bool wxLuaDebuggerBase::DisplayStackDialog(wxWindow *parent, wxWindowID id) { *************** *** 564,596 **** { StopServer(); - - if (m_pThread != NULL) - delete m_pThread; } bool wxLuaDebuggerServer::StartServer() { m_serverSocket = new wxLuaSocket; ! if (m_serverSocket != NULL) { ! m_serverSocket->m_name = wxString::Format(wxT("wxLuaDebuggerServer::m_serverSocket (%ld)"), (long)wxGetProcessId()); ! ! try ! { ! // listen on the specified port ! m_serverSocket->Listen(m_port_number); ! return StartServerThread(); ! } ! catch(wxLuaSocketException & e) ! { ! wxLuaDebuggerEvent debugEvent(wxEVT_WXLUA_DEBUGGER_ERROR, this); ! debugEvent.SetMessage(wxString::Format(_("Error while opening listening socket. %s"), e.description().c_str())); ! AddPendingEvent(debugEvent); ! delete m_serverSocket; ! m_serverSocket = NULL; ! m_fShutdown = true; ! } } --- 609,637 ---- { StopServer(); } bool wxLuaDebuggerServer::StartServer() { + wxCHECK_MSG(m_serverSocket == NULL, false, wxT("Debugger server socket already created")); + + m_fShutdown = false; m_serverSocket = new wxLuaSocket; + m_serverSocket->m_name = wxString::Format(wxT("wxLuaDebuggerServer::m_serverSocket (%ld)"), (long)wxGetProcessId()); ! try { ! // listen on the specified port ! m_serverSocket->Listen(m_port_number); ! return StartServerThread(); ! } ! catch(wxLuaSocketException & e) ! { ! wxLuaDebuggerEvent debugEvent(wxEVT_WXLUA_DEBUGGER_ERROR, this); ! debugEvent.SetMessage(wxString::Format(_("Error while opening listening socket. %s"), e.description().c_str())); ! AddPendingEvent(debugEvent); ! delete m_serverSocket; ! m_serverSocket = NULL; ! m_fShutdown = true; } *************** *** 600,604 **** bool wxLuaDebuggerServer::StartClient() { ! if ((m_debuggeeProcess == NULL) && m_serverSocket && !m_fShutdown && (m_pThread != NULL)) { m_debuggeeProcess = new wxProcess(this, ID_WXLUASOCKET_DEBUGGEE_PROCESS); --- 641,648 ---- bool wxLuaDebuggerServer::StartClient() { ! wxCHECK_MSG(m_serverSocket, false, wxT("Debugger server not started")); ! wxCHECK_MSG(m_pThread, false, wxT("Debugger server thread not running")); ! ! if ((m_debuggeeProcess == NULL) && !m_fShutdown) { m_debuggeeProcess = new wxProcess(this, ID_WXLUASOCKET_DEBUGGEE_PROCESS); *************** *** 611,614 **** --- 655,659 ---- return (m_debuggeeProcessID > 0); } + return false; } *************** *** 616,627 **** bool wxLuaDebuggerServer::StartServerThread() { ! if (m_serverSocket && !m_fShutdown && (m_pThread == NULL)) { m_pThread = new wxLuaDebuggerServer::LuaThread(this); ! return ((m_pThread != NULL) && (m_pThread->Create() == wxTHREAD_NO_ERROR) && (m_pThread->Run() == wxTHREAD_NO_ERROR)); } return false; } --- 661,676 ---- bool wxLuaDebuggerServer::StartServerThread() { ! wxCHECK_MSG(m_serverSocket, false, wxT("Debugger server not started")); ! wxCHECK_MSG(m_pThread == NULL, false, wxT("Debugger server thread already created")); ! ! if (!m_fShutdown) { m_pThread = new wxLuaDebuggerServer::LuaThread(this); ! return ((m_pThread != NULL) && (m_pThread->Create() == wxTHREAD_NO_ERROR) && (m_pThread->Run() == wxTHREAD_NO_ERROR)); } + return false; } *************** *** 629,632 **** --- 678,683 ---- bool wxLuaDebuggerServer::StopServer() { + // NO checks, can always call stop server + // Set the shutdown flag m_fShutdown = true; *************** *** 653,657 **** } ! // close the server socket if (m_serverSocket != NULL) { --- 704,709 ---- } ! // close the server socket, if accepted socket created it will already ! // have been deleted if (m_serverSocket != NULL) { *************** *** 686,689 **** --- 738,744 ---- m_pThread->Wait(); + delete m_pThread; + m_pThread = NULL; + return true; } *************** *** 692,744 **** { wxCHECK_RET(m_serverSocket, wxT("Invalid server socket")); try { m_acceptedSocket = new wxLuaSocket(m_serverSocket->Accept()); ! if (m_acceptedSocket != NULL) ! { ! m_acceptedSocket->m_name = wxString::Format(wxT("wxLuaDebuggerServer::m_acceptedSocket (%ld)"), (long)wxGetProcessId()); ! wxLuaSocket *serverSocket = m_serverSocket; ! m_serverSocket = NULL; ! delete serverSocket; ! wxMilliSleep(500); // why ?? ! // if not shutdown requested ! if (!m_fShutdown) { ! try { ! // Notify that a client has connected and we are ready to debug ! wxLuaDebuggerEvent debugEvent(wxEVT_WXLUA_DEBUGGER_CLIENT_CONNECTED, this); ! AddPendingEvent(debugEvent); ! ! // Enter the debug loop ! while (!m_fShutdown && m_acceptedSocket) ! { ! unsigned char debugEvent = 0; // wxLuaSocketDebuggeeEvents_Type ! if (//m_acceptedSocket->IsReadable() && ! m_acceptedSocket->ReadCmd(debugEvent)) ! { ! if (debugEvent == wxLUASOCKET_DEBUGGEE_EVENT_EXIT) ! m_fShutdown = true; ! HandleDebuggeeEvent(debugEvent); ! } ! } ! } ! catch(wxLuaSocketException &) ! { } } ! // delete the accepted socket ! if (m_acceptedSocket != NULL) ! { ! wxLuaSocket *acceptedSocket = m_acceptedSocket; ! m_acceptedSocket = NULL; ! delete acceptedSocket; ! } } } --- 747,795 ---- { wxCHECK_RET(m_serverSocket, wxT("Invalid server socket")); + wxCHECK_RET(m_acceptedSocket == NULL, wxT("The debugger server has already accepted a socket connection")); try { m_acceptedSocket = new wxLuaSocket(m_serverSocket->Accept()); ! m_acceptedSocket->m_name = wxString::Format(wxT("wxLuaDebuggerServer::m_acceptedSocket (%ld)"), (long)wxGetProcessId()); ! wxLuaSocket *serverSocket = m_serverSocket; ! m_serverSocket = NULL; ! delete serverSocket; ! wxMilliSleep(500); // why ?? ! try ! { ! // Notify that a client has connected and we are ready to debug ! wxLuaDebuggerEvent debugEvent(wxEVT_WXLUA_DEBUGGER_DEBUGGEE_CONNECTED, this); ! AddPendingEvent(debugEvent); ! ! // Enter the debug loop ! while (!m_fShutdown && m_acceptedSocket) { ! unsigned char debugEvent = 0; // wxLuaSocketDebuggeeEvents_Type ! if (//m_acceptedSocket->IsReadable() && ! m_acceptedSocket->ReadCmd(debugEvent)) { ! HandleDebuggeeEvent(debugEvent); ! if (debugEvent == wxLUASOCKET_DEBUGGEE_EVENT_EXIT) ! m_fShutdown = true; } } + } + catch(wxLuaSocketException &) + { + wxPrintf(wxT("I'm here!\n")); ! } ! ! // delete the accepted socket ! if (m_acceptedSocket != NULL) ! { ! wxLuaSocket *acceptedSocket = m_acceptedSocket; ! m_acceptedSocket = NULL; ! delete acceptedSocket; } } *************** *** 853,857 **** // Notify that a client has connected and we are ready to debug ! wxLuaDebuggerEvent debugEvent(wxEVT_WXLUA_DEBUGGER_CLIENT_CONNECTED, this); AddPendingEvent(debugEvent); --- 904,908 ---- // Notify that a client has connected and we are ready to debug ! wxLuaDebuggerEvent debugEvent(wxEVT_WXLUA_DEBUGGER_DEBUGGEE_CONNECTED, this); AddPendingEvent(debugEvent); Index: wxlsock.cpp =================================================================== RCS file: /cvsroot/wxlua/wxLua/modules/wxluasocket/src/wxlsock.cpp,v retrieving revision 1.18 retrieving revision 1.19 diff -C2 -d -r1.18 -r1.19 *** wxlsock.cpp 4 Oct 2006 05:55:02 -0000 1.18 --- wxlsock.cpp 5 Oct 2006 05:10:47 -0000 1.19 *************** *** 34,38 **** // prints to the console for unix and to a file (see below) for MSW the socket // cmd/event and the socket read/write ! //#define DEBUG_WXLUASOCKET #ifdef DEBUG_WXLUASOCKET --- 34,38 ---- // prints to the console for unix and to a file (see below) for MSW the socket // cmd/event and the socket read/write ! #define DEBUG_WXLUASOCKET #ifdef DEBUG_WXLUASOCKET *************** *** 338,347 **** { if (m_sockstate != SOCKET_CLOSED) ! throw wxLuaSocketException(wxLuaSocketException::SOCKET_NOT_CLOSED); m_sock = ::socket(AF_INET, SOCK_STREAM, 0); if (m_sock == INVALID_SOCKET) ! throw wxLuaSocketException(wxLuaSocketException::SOCKET_INVALID_SOCKET); sockaddr_in localAddr = { 0 }; --- 338,347 ---- { if (m_sockstate != SOCKET_CLOSED) ! throw wxLuaSocketException(wxLuaSocketException::SOCKET_NOT_CLOSED, m_name); m_sock = ::socket(AF_INET, SOCK_STREAM, 0); if (m_sock == INVALID_SOCKET) ! throw wxLuaSocketException(wxLuaSocketException::SOCKET_INVALID_SOCKET, m_name); sockaddr_in localAddr = { 0 }; *************** *** 352,359 **** if (::bind(m_sock, (sockaddr *) &localAddr, sizeof(localAddr)) == SOCKET_ERROR) ! throw wxLuaSocketException(wxLuaSocketException::SOCKET_BIND_FAILED); if (::listen(m_sock, backLog) == SOCKET_ERROR) ! throw wxLuaSocketException(wxLuaSocketException::SOCKET_LISTEN_FAILED); memset(&m_sockaddress, 0, sizeof(m_sockaddress)); --- 352,359 ---- if (::bind(m_sock, (sockaddr *) &localAddr, sizeof(localAddr)) == SOCKET_ERROR) ! throw wxLuaSocketException(wxLuaSocketException::SOCKET_BIND_FAILED, m_name); if (::listen(m_sock, backLog) == SOCKET_ERROR) ! throw wxLuaSocketException(wxLuaSocketException::SOCKET_LISTEN_FAILED, m_name); memset(&m_sockaddress, 0, sizeof(m_sockaddress)); *************** *** 364,368 **** { if (m_sockstate != SOCKET_LISTENING) ! throw wxLuaSocketException(wxLuaSocketException::SOCKET_NOT_LISTENING); sockaddr_in fromAddr = { 0 }; --- 364,368 ---- { if (m_sockstate != SOCKET_LISTENING) ! throw wxLuaSocketException(wxLuaSocketException::SOCKET_NOT_LISTENING, m_name); sockaddr_in fromAddr = { 0 }; *************** *** 371,375 **** socket_type acceptedSocket = ::accept(m_sock, (sockaddr *)&fromAddr, &length); if (acceptedSocket == INVALID_SOCKET) ! throw wxLuaSocketException(wxLuaSocketException::SOCKET_ACCEPT_FAILED); return wxLuaAcceptedSocket(acceptedSocket, fromAddr); --- 371,375 ---- socket_type acceptedSocket = ::accept(m_sock, (sockaddr *)&fromAddr, &length); if (acceptedSocket == INVALID_SOCKET) ! throw wxLuaSocketException(wxLuaSocketException::SOCKET_ACCEPT_FAILED, m_name); return wxLuaAcceptedSocket(acceptedSocket, fromAddr); *************** *** 381,389 **** if (m_sockstate != SOCKET_CLOSED) ! throw wxLuaSocketException(wxLuaSocketException::SOCKET_NOT_CLOSED); m_sock = ::socket(AF_INET, SOCK_STREAM, 0); if (m_sock == INVALID_SOCKET) ! throw wxLuaSocketException(wxLuaSocketException::SOCKET_INVALID_SOCKET); unsigned long address = ::inet_addr(wx2lua(addr)); --- 381,389 ---- if (m_sockstate != SOCKET_CLOSED) ! throw wxLuaSocketException(wxLuaSocketException::SOCKET_NOT_CLOSED, m_name); m_sock = ::socket(AF_INET, SOCK_STREAM, 0); if (m_sock == INVALID_SOCKET) ! throw wxLuaSocketException(wxLuaSocketException::SOCKET_INVALID_SOCKET, m_name); unsigned long address = ::inet_addr(wx2lua(addr)); *************** *** 394,401 **** if (pHost == NULL) ! throw wxLuaSocketException(wxLuaSocketException::SOCKET_ADDRESS_NOT_RESOLVED); if (pHost->h_addrtype != AF_INET) ! throw wxLuaSocketException(wxLuaSocketException::SOCKET_INCOMPATIBLE_TYPE); memset(&m_sockaddress, 0, sizeof(m_sockaddress)); --- 394,401 ---- if (pHost == NULL) ! throw wxLuaSocketException(wxLuaSocketException::SOCKET_ADDRESS_NOT_RESOLVED, m_name); if (pHost->h_addrtype != AF_INET) ! throw wxLuaSocketException(wxLuaSocketException::SOCKET_INCOMPATIBLE_TYPE, m_name); memset(&m_sockaddress, 0, sizeof(m_sockaddress)); *************** *** 406,410 **** if (::connect(m_sock, (sockaddr *) &m_sockaddress, sizeof(m_sockaddress)) == SOCKET_ERROR) ! throw wxLuaSocketException(wxLuaSocketException::SOCKET_CONNECT_FAILED); m_sockstate = SOCKET_CONNECTED; --- 406,410 ---- if (::connect(m_sock, (sockaddr *) &m_sockaddress, sizeof(m_sockaddress)) == SOCKET_ERROR) ! throw wxLuaSocketException(wxLuaSocketException::SOCKET_CONNECT_FAILED, m_name); m_sockstate = SOCKET_CONNECTED; *************** *** 414,418 **** { if ((m_sockstate != SOCKET_CONNECTED) && (m_sockstate != SOCKET_ACCEPTED)) ! throw wxLuaSocketException(wxLuaSocketException::SOCKET_NOT_CONNECTED); return lua2wx(inet_ntoa(m_sockaddress.sin_addr)); --- 414,418 ---- { if ((m_sockstate != SOCKET_CONNECTED) && (m_sockstate != SOCKET_ACCEPTED)) ! throw wxLuaSocketException(wxLuaSocketException::SOCKET_NOT_CONNECTED, m_name); return lua2wx(inet_ntoa(m_sockaddress.sin_addr)); *************** *** 422,426 **** { if ((m_sockstate != SOCKET_CONNECTED) && (m_sockstate != SOCKET_ACCEPTED)) ! throw wxLuaSocketException(wxLuaSocketException::SOCKET_NOT_CONNECTED); return ntohs(m_sockaddress.sin_port); --- 422,426 ---- { if ((m_sockstate != SOCKET_CONNECTED) && (m_sockstate != SOCKET_ACCEPTED)) ! throw wxLuaSocketException(wxLuaSocketException::SOCKET_NOT_CONNECTED, m_name); return ntohs(m_sockaddress.sin_port); *************** *** 431,435 **** { if ((m_sockstate != SOCKET_CONNECTED) && (m_sockstate != SOCKET_ACCEPTED)) ! throw wxLuaSocketException(wxLuaSocketException::SOCKET_NOT_CONNECTED); int length = length_; --- 431,435 ---- { if ((m_sockstate != SOCKET_CONNECTED) && (m_sockstate != SOCKET_ACCEPTED)) ! throw wxLuaSocketException(wxLuaSocketException::SOCKET_NOT_CONNECTED, m_name); int length = length_; *************** *** 444,448 **** //wxSafeShowMessage(wxT("wxLuaSocket::Write Socket Error"), wxString::Format(wxT("%s wxLuaSocket::Write SOCKET_ERROR %s line %d len %d"), wxT(__TIME__), wxT(__FILE__), __LINE__, (int)length_)); //return num_written; ! throw wxLuaSocketException(wxLuaSocketException::SOCKET_SEND_FAILED); } --- 444,448 ---- //wxSafeShowMessage(wxT("wxLuaSocket::Write Socket Error"), wxString::Format(wxT("%s wxLuaSocket::Write SOCKET_ERROR %s line %d len %d"), wxT(__TIME__), wxT(__FILE__), __LINE__, (int)length_)); //return num_written; ! throw wxLuaSocketException(wxLuaSocketException::SOCKET_SEND_FAILED, m_name); } *************** *** 458,462 **** { if ((m_sockstate != SOCKET_CONNECTED) && (m_sockstate != SOCKET_ACCEPTED)) ! throw wxLuaSocketException(wxLuaSocketException::SOCKET_NOT_CONNECTED); int length = length_; --- 458,462 ---- { if ((m_sockstate != SOCKET_CONNECTED) && (m_sockstate != SOCKET_ACCEPTED)) ! throw wxLuaSocketException(wxLuaSocketException::SOCKET_NOT_CONNECTED, m_name); int length = length_; *************** *** 473,477 **** { //wxSafeShowMessage(wxT("wxLuaSocket::Read Socket Error"), wxString::Format(wxT("%s '%s' wxLuaSocket::Read SOCKET_ERROR %s line %d len %d"), wxT(__TIME__), m_name.c_str(), wxT(__FILE__), __LINE__, (int)length_)); ! throw wxLuaSocketException(wxLuaSocketException::SOCKET_RECEIVE_FAILED); } --- 473,477 ---- { //wxSafeShowMessage(wxT("wxLuaSocket::Read Socket Error"), wxString::Format(wxT("%s '%s' wxLuaSocket::Read SOCKET_ERROR %s line %d len %d"), wxT(__TIME__), m_name.c_str(), wxT(__FILE__), __LINE__, (int)length_)); ! throw wxLuaSocketException(wxLuaSocketException::SOCKET_RECEIVE_FAILED, m_name); } *************** *** 499,506 **** #ifdef WIN32 if (::closesocket(m_sock) == SOCKET_ERROR) ! throw wxLuaSocketException(wxLuaSocketException::SOCKET_CLOSE_FAILED); #else if (::close(m_sock)) ! throw wxLuaSocketException(wxLuaSocketException::SOCKET_CLOSE_FAILED); #endif else --- 499,506 ---- #ifdef WIN32 if (::closesocket(m_sock) == SOCKET_ERROR) ! throw wxLuaSocketException(wxLuaSocketException::SOCKET_CLOSE_FAILED, m_name); #else if (::close(m_sock)) ! throw wxLuaSocketException(wxLuaSocketException::SOCKET_CLOSE_FAILED, m_name); #endif else *************** *** 518,522 **** // ---------------------------------------------------------------------------- ! wxLuaSocketException::wxLuaSocketException(SocketErrorCode code) : m_code(code) { #ifdef WIN32 --- 518,523 ---- // ---------------------------------------------------------------------------- ! wxLuaSocketException::wxLuaSocketException(SocketErrorCode code, const wxString& msg) ! :m_code(code), m_msg(msg) { #ifdef WIN32 *************** *** 555,559 **** m_description = lua2wx(strerror(errno)); m_errnum = errno; ! printf("ERRNO %d '%s'\n", errno, strerror(errno)); #endif if (m_description.IsEmpty()) --- 556,560 ---- m_description = lua2wx(strerror(errno)); m_errnum = errno; ! wxPrintf(wxT("ERRNO %d '%s' code: %d msg: '%s'\n"), errno, m_description.c_str(), code, m_msg.c_str()); #endif if (m_description.IsEmpty()) |