// Login --> Client // // Handle message forwarding from the login server to clients bool CProxy::OnLoginSrvReceive(RakNet::Packet* pPacket) { if (!pPacket) return true; uchar* pDatas = pPacket->data; uint len = pPacket->length; int defaultHandleRet = 0; RakNet::BitStream strIn(pDatas, len, false); uchar opCode; if (!strIn.Read(opCode)) return true; if ((defaultHandleRet = handleDefaultPacket(opCode, "Login server: ")) == 0 && m_pLoginSrvInterface->NumberOfConnections() > 0) { RakNet::SystemAddress clientAddr; if (!strIn.Read(clientAddr)) return true; // This may not be necessary std::map<RakNet::SystemAddress, s_clientInfos*>::iterator it = m_mapClientAddr.find(clientAddr); if (it == m_mapClientAddr.end()) return true; // !--------- if (!HandleLoginSrvPacket(pPacket, clientAddr, strIn, opCode)) return true; RakNet::BitStream strOut; int off = strIn.GetReadOffset() / 8; strOut.Write(opCode); if (off < len) strOut.Write((const char*)&pDatas[off], len - off); m_pListenInterface->Send(&strOut, LOW_PRIORITY, RELIABLE_SEQUENCED, 0, clientAddr, false); } else if (defaultHandleRet > 1) { // TODO: Attempt delayed reconnection log_CRITICAL("Not connected to login server. Aborting."); m_pUpdateThread = NULL; m_bQuit = true; return false; } return true; }
int main() { log_DEBUG(PSTR("debug")); log_INFORMATIONAL(PSTR("informational")); log_NOTICE(PSTR("notice")); log_WARNING(PSTR("warning")); log_ERROR(PSTR("error")); log_CRITICAL(PSTR("critical")); log_ALERT(PSTR("alert")); log_EMERGENCY(PSTR("emergency")); return EXIT_SUCCESS; }
static void some_logging_2() { #if 0 try { throw std::out_of_range("Eeep!"); } catch(std::exception &x) { log_CRITICAL("Something really bad has happened! Details: \"", x, "\""); } #endif /* 0 */ }
void Logs::CRITICAL_LOG(const char* file, int line, const char* function, const char* format, ...) { if (!Settings::getInstance()->IsLogEnabled) return; char buffer[2048]; memset(buffer, 0x00, sizeof(buffer)); va_list args; va_start (args, format); #if defined(__unix__) vsnprintf(buffer, sizeof(buffer) - 1, format, args); #else _vsnprintf_s(buffer, sizeof(buffer) - 1, format, args); #endif log_CRITICAL(processLog(file, line, function, buffer)); va_end(args); }