/*==LICENSE==* CyanWorlds.com Engine - MMOG client, server and tools Copyright (C) 2011 Cyan Worlds, Inc. This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program. If not, see . You can contact Cyan Worlds, Inc. by email legal@cyan.com or by snail mail at: Cyan Worlds, Inc. 14617 N Newport Hwy Mead, WA 99021 *==LICENSE==*/ /***************************************************************************** * * $/Plasma20/Sources/Plasma/NucleusLib/pnNetLog/pnNetLog.h * ***/ #ifdef PLASMA20_SOURCES_PLASMA_NUCLEUSLIB_PNNETLOG_PNNETLOG_H #error "Header $/Plasma20/Sources/Plasma/NucleusLib/pnNetLog/pnNetLog.h included more than once" #endif #define PLASMA20_SOURCES_PLASMA_NUCLEUSLIB_PNNETLOG_PNNETLOG_H #define MAX_NAME_LEN 64 /***************************************************************************** * * Look at psLogEvents/psLeAuth for an example of how to create a new LogEvent * ***/ /***************************************************************************** * * Log Template Definitions * ***/ enum ELogParamType { kLogParamInt, // (int) kLogParamUnsigned, // (unsigned) kLogParamFloat, // (float) kLogParamUuid, // Uuid kLogParamStringW, // (const wchar *) kLogParamLong, // (long) or (dword) kLogParamLongLong, // (long long) or (qword) kNumLogParamTypes }; struct NetLogField { ELogParamType type; // element type wchar name[MAX_PATH]; }; struct NetLogEvent { ESrvType srvType; unsigned logEventType; const wchar * eventName; const NetLogField * fields; unsigned numFields; }; struct NetLogSrvField { const wchar *name; const wchar *data; }; #define NET_LOG_FIELD_INT(name) { kLogParamInt, name } #define NET_LOG_FIELD_UNSIGNED(name) { kLogParamUnsigned, name } #define NET_LOG_FIELD_FLOAT(name) { kLogParamFloat, name } #define NET_LOG_FIELD_STRING(name) { kLogParamStringW, name } #define NET_LOG_FIELD_UUID(name) { kLogParamUuid, name } #define NET_LOG_FIELD_LONG(name) { kLogParamLong, name } #define NET_LOG_FIELD_LONGLONG(name) { kLogParamLongLong, name } #define NET_LOG_EVENT_AUTH(name) { kSrvTypeAuth, kLogEventId_##name, L#name, kLogEventFields_##name, arrsize( kLogEventFields_##name )} #define NET_LOG_EVENT_GAME(name) { kSrvTypeGame, kLogEventId_##name, L#name, kLogEventFields_##name, arrsize( kLogEventFields_##name )} #define NET_LOG_EVENT_MCP(name) { kSrvTypeMcp, kLogEventId_##name, L#name, kLogEventFields_##name, arrsize( kLogEventFields_##name )} #define NET_LOG_EVENT_DB(name) { kSrvTypeDb, kLogEventId_##name, L#name, kLogEventFields_##name, arrsize( kLogEventFields_##name )} /***************************************************************************** * * pnNlApi.cpp * ***/ void NetLogInitialize (ESrvType srvType); void NetLogShutdown (); void NetLogDestroy (); void NetLogRegisterEvents (const NetLogEvent events[], unsigned count); // Should only be called by psLogEvents - look there for logging functions void NetLogSendEvent ( unsigned type, ... ); /***************************************************************************** * * pnNlConn.cpp * ***/ enum { kNlCliNumConn, kNlCliNumTrans, kNlCliNumPendingSaves, kNlCliNumPerf, }; long NlCliGetPerf (unsigned index); /***************************************************************************** * * pnNlSrv.cpp * ***/ struct LogConn; enum { kNlSrvPerfConnCount, kNlSrvPerfConnDenied, kNlSrvNumPerf }; typedef void (*NlSrvCallback)(const NetLogEvent *event, const ARRAY(wchar) &, unsigned, NetAddressNode &, qword, unsigned, unsigned); long NetLogSrvGetPerf (unsigned index); void NetLogSrvRegisterCallback(NlSrvCallback callback); void LogConnIncRef (LogConn * conn); void LogConnDecRef (LogConn * conn);