// nglog.h - Interface between game module and the ngLog logging layers. // This is a public layer that can have game-specific dependencies. // -------------------------------------------------------------------------- // Jason Keimig // jkeimig@netgamesusa.com // // 05 Jan 00 // /* * ***************************************************************** * * * * * Copyright (c) NetGames USA, Inc. 1999, 2000 * * * * * * All Rights Reserved. Unpublished rights reserved under the * * * copyright laws of the United States. * * * * * * The software contained on this media is proprietary to and * * * embodies the confidential technology of NetGames USA, Inc. * * * Possession, use, duplication or dissemination of the * * * software and media is authorized only pursuant to a valid * * * written license from NetGames USA, Inc. * * * * * * RESTRICTED RIGHTS LEGEND Use, duplication, or disclosure * * * by the U.S. Government is subject to restrictions as set * * * forth in Subparagraph (c)(1)(ii) of DFARS 252.227-7013, * * * or in FAR 52.227-19, as applicable. * * * * * ***************************************************************** */ #include #include #if !defined(NO_LOG) // // Everything below is expected by the library. // *** DO NOT ALTER!! *** // // Batcher exit code conditions typedef enum { EXIT_PROCERR, // Error in getting process exit code EXIT_NGWSERR, // Batcher is reporting problems EXIT_RUNNING, // Batcher is still running EXIT_OKAY // No problems at all } log_exit_t; // Logging styles typedef enum { STYLE_NONE, // Don't log anything STYLE_APPEND, // Create/append to any existing log file. STYLE_NEW, // Create/overwrite any existing log file. STYLE_ROTATE, // If logname exists, create unique identifier // and create new logfile with this unique name. STYLE_NGSTATS, // Use unique names and individual logs for each map. // Also forces a call to the ngStats backend processor. STYLE_CONTINUE // Keep current file and just append to it. This // requires that the logfile has already been // opened and created with the initial settings // (i.e. append, rotate, etc.). } log_style_t; // Log flushing semantics typedef enum { FLUSH_NOW, // Flush on every write. FLUSH_BUFFER, // Flush after "nglog_buffer" lines written. FLUSH_SYSTEM // Wait for system to write out buffer. } log_flush_t; // Message types typedef enum { MSG_INFO, // Progress information MSG_ERROR, // Internal error MSG_CRITICAL // Higher-level error } log_message_t; // Logging information typedef struct { int buffer; // Number of lines to buffer for flushing. int flush; // Log flushing format. char *game_name; // Name of game. char *game_version; // Version of game. char *game_author; // Author of game. char *game_url; // Where to find more info on game. int h_start; // Start of game secret (offset into game secret array) int h_len; // Length of game secret (length of real secret) unsigned char *h_refs;// Pointer to Game Secret beginning address. int id; // Unique ID for worldstats (i.e. UDP port #) char logname[512]; // Filename to use (under certain log styles) char ngS_cfg[1024]; // Config file name for ngStats. int ngS_exec; // Whether or not to call ngStats after every log close. char ngS_logdir[1024];// Directory to place ngStats logs. char ngS_name[64]; // Name of ngStats executable. char ngWS_name[64]; // Name of ngWorldStats gamename. char path[512]; // Path to root where logs stored and ngWS/ngS can be called. int style; // Log style format. int worldstats; // Do we want worldstats enabled? } nglog_base; // ngLog-Library exported functions typedef struct nglog_export_s { char *(*LibVersion)(void); int (*LibShutdown)(void); char *(*logStart)(nglog_base *, char **); int (*statusNGWS)(PROCESS_INFORMATION *); void (*gameEnd)(char *, PROCESS_INFORMATION *); void (*gameStart)(void); void (*gameString)(char *); void (*plChat)(int, char *); void (*plConnect)(int, char *, unsigned char *, int); void (*plDeath)(char *, int, int, int, int); void (*plDisconn)(int, char *); void (*plEntered)(char *, int, char *); void (*plRename)(char *, int, char *, char *, int); void (*plRespawn)(int); void (*itemPickup)(char *, int, int, int); void (*itemUse)(char *, int, int, int); void (*itemExpire)(char *, int); void (*itemDrop)(char *, int, int, int); } nglog_export_t; // ngLog-Library imported functions typedef struct nglog_import_s { // Handle messages passed from the ngLog library void (*MsgDump)(int, char *, ...); // Get game-specific time info char *(*TimeDump)(void); } nglog_import_t; // ngLog-Library reference typedef struct nglog_library_s { char path[1024]; // Path to the library #if defined(WIN32)||defined(_WIN32) HANDLE handle; // Win32-specific handle to the ngLog Library #else void *handle; // Unix "handle" to the ngLog Library #endif nglog_export_t *fn; // Functions exported from the ngLog Library int users; // Number of instances using the library } nglog_library_t; #endif // !defined(NO_LOG)