You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

149 lines
4.3 KiB

/*==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 <http://www.gnu.org/licenses/>.
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);