void LogWriter::WriteToLog(wxString prefix, wxString value, wxString colour/*, wxColour bgcolour*/) { if(ThreadBase* thr = GetCurrentNamedThread()) { prefix = (prefix.IsEmpty() ? "" : prefix + " : ") + thr->GetThreadName(); } if(m_logfile.IsOpened()) m_logfile.Write((prefix.IsEmpty() ? wxEmptyString : "[" + prefix + "]: ") + value + "\n"); if(!ConLogFrame) return; wxCriticalSectionLocker lock(g_cs_conlog); if(wxThread::IsMain()) { while(LogBuffer.IsBusy()) wxYieldIfNeeded(); } else { while(LogBuffer.IsBusy()) Sleep(1); } //if(LogBuffer.put == LogBuffer.get) LogBuffer.Flush(); LogBuffer.Push(LogPacket(prefix, value, colour)); }
/*--#+func---------------------------------------------------------------- FUNCTION: AX25Level2() PURPOSE: This routine is the level 2 upcall SYNTAX: void AX25Level2(AX25_LEVEL1 *p) DESCRIPTION: Called once for each received level1 packet This routine handles logging packets in the debugging log, dumping packets packets on screen, updating the heard stations list. RETURNS: Nothing HISTORY: 940223 V0.2 SEE ALSO: Heard LogPacket --#-func----------------------------------------------------------------*/ void AX25Level2(AX25_LEVEL1 *p) { AX25_PACKET *p2 = NULL; if((p2 = ax25rec(p)) == NULL) /* Convert AX.25 Level 1 to Level 2 */ return; /* bad packet */ if (CRCcheck(p)) { RXCount++; /* Increment good frames counter */ wn_printf(w_mon,"%s\n",DumpAX25(p2,DUMP_HEADER|DUMP_INFO)); LogPacket(p); /* log packets */ Heard(p2); /* log nodes heard */ } else { RXCRCErr++; /* Increment CRC error counter */ /* wn_printf(w_mon,"%s\n",DumpAX25(p2,DUMP_HEADER|DUMP_INFO)); */ wn_printf(w_mon,"packet CRC failed\n"); } /*-----/ Show heard list and status /-----*/ DoHeard(); DumpStatus(); /*-----/ Free memory, allocated by level2 packet /-----*/ free(p2); /* p2 = NULL; /* /* Not neccessary, but useful for later */ }
void ErrorLog::TracePacket(const char *packetlog, size_t size, ...) { std::string trace = db.LoadServerSettings("options", "trace").c_str(); std::transform(trace.begin(), trace.end(), trace.begin(), ::toupper); if (trace == "TRUE") { LogPacket(log_network_trace, packetlog, size); } }
void computeControl(SBHeliState * state) { // Superimpose random noise on control imput desRoll = ((rand()/float(RAND_MAX))-.5) * CONTROL_NOISE + state->rcChannel[SB_RC_ROLL]; desPitch = ((rand()/float(RAND_MAX))-.5) * CONTROL_NOISE + state->rcChannel[SB_RC_PITCH]; if ((simple->state.mode.navigation == SB_NAV_CTRLLED) && (simple->state.rcChannel[SB_RC_THROTTLE]>THROTTLE_TRIM_LIMIT)) { assert(!isnan(desRoll)); assert(!isnan(desPitch)); DEBUG(res = sbSimpleControl(simple,desRoll, desPitch,0,0 /* way and altitude is manual */)); } logbuffer.push_back(LogPacket(simple->state)); }
void LogWriter::WriteToLog(const std::string& prefix, const std::string& value, u8 lvl/*, wxColour bgcolour*/) { std::string new_prefix = prefix; if(!prefix.empty()) { if(NamedThreadBase* thr = GetCurrentNamedThread()) { new_prefix += " : " + thr->GetThreadName(); } } if(m_logfile.IsOpened() && !new_prefix.empty()) m_logfile.Write(fmt::FromUTF8("[" + new_prefix + "]: " + value + "\n")); if(!ConLogFrame || Ini.HLELogLvl.GetValue() == 4 || (lvl != 0 && lvl <= Ini.HLELogLvl.GetValue())) return; std::lock_guard<std::mutex> lock(g_cs_conlog); #ifdef QT_UI // TODO: Use ThreadBase instead, track main thread id if(QThread::currentThread() == qApp->thread()) #else if(wxThread::IsMain()) #endif { while(LogBuffer.IsBusy()) { // need extra break condition? wxYieldIfNeeded(); } } else { while (LogBuffer.IsBusy()) { if (Emu.IsStopped()) { break; } Sleep(1); } } //if(LogBuffer.put == LogBuffer.get) LogBuffer.Flush(); LogBuffer.Push(LogPacket(new_prefix, value, g_log_colors[lvl])); }
LogPacket _pop() { u32 c_get = m_get; const u32& sprefix = *(u32*)&m_buffer[c_get]; c_get += sizeof(u32); const std::string prefix( (const char*) &m_buffer[c_get], sprefix); c_get += sprefix; const u32& stext = *(u32*)&m_buffer[c_get]; c_get += sizeof(u32); const std::string text( (const char*) &m_buffer[c_get], stext); c_get += stext; const u32& scolour = *(u32*)&m_buffer[c_get]; c_get += sizeof(u32); const std::string colour( (const char*) &m_buffer[c_get], scolour); c_get += scolour; m_get = c_get; if(!HasNewPacket()) Flush(); return LogPacket(prefix, text, colour); }
void CIPv6Binder::Process(RCommsBufChain& aPdu) /** * Called when an incoming IP packet has arrived. Send packets up to the * TCP/IP stack. * * @param aPdu The incoming packet */ { OstTraceDef0(OST_TRACE_CATEGORY_DEBUG, TRACE_INTERNALS, CIPV6BINDER_PROCESS1_1, "CIPv6Binder::Process"); #ifdef __BTT_LOGGING__ LogPacket(static_cast<RMBufChain&>(aPdu)); #endif #ifdef RAWIP_HEADER_APPENDED_TO_PACKETS TUint16 protocolCode = iIPTagHeader->RemoveHeader(aPdu); #else TUint16 protocolCode = 0; #endif // RAWIP_HEADER_APPENDED_TO_PACKETS // Pass incoming packets up to the protocol, unless it hasn't // been bound yet. if (iUpperReceiver && WantsProtocol(protocolCode)) { OstTraceDef0(OST_TRACE_CATEGORY_DEBUG, TRACE_INTERNALS, CIPV6BINDER_PROCESS1_2, "CIPv6Binder: Packet Sent to TCP/IP Protocol!!!"); iUpperReceiver->Process(static_cast<RMBufChain&>(aPdu)); } else { OstTraceDef0(OST_TRACE_CATEGORY_DEBUG, TRACE_INTERNALS, CIPV6BINDER_PROCESS1_3, "WARNING: dumping incoming packet, no protocol bound"); aPdu.Free(); } }
ESock::MLowerDataSender::TSendResult CIPv6Binder::Send(RCommsBufChain& aPdu) /** * Called by the protocol to send an outgoing IP packet to the network. * * @param aPdu The outgoing packet * @return Standard error codes */ { OstTraceDef0(OST_TRACE_CATEGORY_DEBUG, TRACE_INTERNALS, CIPV6BINDER_SEND1_1, "CIPv6Binder::Send"); #ifdef __BTT_LOGGING__ LogPacket(static_cast<RMBufChain&>(aPdu)); #endif // Return <0: an error occurred // Return 0: no error, but don't send any more packets #ifdef RAWIP_HEADER_APPENDED_TO_PACKETS iIPTagHeader->AddHeader(aPdu); #endif // RAWIP_HEADER_APPENDED_TO_PACKETS return ESock::MLowerDataSender::TSendResult(iLowerDataSender->Send(aPdu)); }
/** * @ingroup SnmpStack * @brief SNMP 요청 메시지를 전송한 후, 이에 대한 응답 메시지를 수신한다. * @param pclsRequest SNMP 요청 메시지 * @param pclsResponse SNMP 응답 메시지 * @returns 성공하면 true 를 리턴하고 실패하면 false 를 리턴한다. */ bool CSnmpSession::SendRecv( CSnmpMessage * pclsRequest, CSnmpMessage * pclsResponse ) { int iSendLen, iRecvLen = 0, n; bool bRes = false; if( m_hSocket == INVALID_SOCKET ) { if( Open() == false ) return false; } if( m_bTcp ) { char szSend[SNMP_MAX_PACKET_SIZE], szRecv[SNMP_MAX_PACKET_SIZE]; int iWantRecvLen = 0; iSendLen = pclsRequest->MakePacket( szSend, sizeof(szSend) ); if( iSendLen == -1 ) { CLog::Print( LOG_ERROR, "%s MakePacket error", __FUNCTION__ ); return false; } if( TcpSend( m_hSocket, szSend, iSendLen ) == false ) { CLog::Print( LOG_ERROR, "%s TcpSend error", __FUNCTION__ ); return false; } while( 1 ) { n = TcpRecv( m_hSocket, szRecv + iRecvLen, sizeof(szRecv) - iRecvLen, m_iMiliTimeout / 1000 ); if( n <= 0 ) { CLog::Print( LOG_ERROR, "%s recv error(%d)", __FUNCTION__, GetError() ); return false; } iRecvLen += n; if( iWantRecvLen <= 0 ) { iWantRecvLen = pclsResponse->GetPacketLen( szRecv, iRecvLen ); } if( iWantRecvLen > 0 ) { if( iRecvLen == iWantRecvLen ) break; } } if( pclsResponse->ParsePacket( szRecv, iRecvLen ) > 0 ) { if( m_bDebug ) { LogPacket( szRecv, iRecvLen ); } if( pclsRequest->m_iRequestId == pclsResponse->m_iRequestId || ( pclsRequest->m_iMsgId > 0 && pclsRequest->m_iMsgId == pclsResponse->m_iMsgId ) ) { bRes = true; } } } else { char szSend[SNMP_MAX_PACKET_SIZE], szRecv[SNMP_MAX_PACKET_SIZE]; struct pollfd arrPoll[1]; uint32_t iIp; uint16_t sPort; iSendLen = pclsRequest->MakePacket( szSend, sizeof(szSend) ); if( iSendLen == -1 ) { CLog::Print( LOG_ERROR, "%s MakePacket error", __FUNCTION__ ); return false; } for( int iSend = 0; iSend <= m_iReSendCount; ++iSend ) { if( UdpSend( m_hSocket, szSend, iSendLen, m_iIp, m_sPort ) == false ) { CLog::Print( LOG_ERROR, "%s UdpSend error", __FUNCTION__ ); return false; } TcpSetPollIn( arrPoll[0], m_hSocket ); POLL_START: n = poll( arrPoll, 1, m_iMiliTimeout ); if( n > 0 ) { iRecvLen = sizeof(szRecv); if( UdpRecv( m_hSocket, szRecv, &iRecvLen, &iIp, &sPort ) ) { if( pclsResponse->ParsePacket( szRecv, iRecvLen ) > 0 ) { if( m_bDebug ) { LogPacket( szRecv, iRecvLen ); } if( pclsRequest->m_iRequestId == pclsResponse->m_iRequestId || ( pclsRequest->m_iMsgId > 0 && pclsRequest->m_iMsgId == pclsResponse->m_iMsgId ) ) { bRes = true; break; } } // 원하는 응답이 수신되지 않으면 다시 수신 대기로 진입한다. goto POLL_START; } } } } return bRes; }