hl2_src-leak-2017/src/utils/tfstats/logevent.h

145 lines
2.7 KiB
C++

//========= Copyright Valve Corporation, All rights reserved. ============//
//
// Purpose: Interface of CLogEvent
//
// $Workfile: $
// $Date: $
//
//------------------------------------------------------------------------------------------------------
// $Log: $
//
// $NoKeywords: $
//=============================================================================//
#ifndef LOGEVENT_H
#define LOGEVENT_H
#ifdef WIN32
#pragma once
#endif
#pragma warning(disable :4786)
#include "Argument.h"
#ifdef WIN32
//#include <strstrea.h>
#else
//#include <strstream.h>
#endif
#include <time.h>
//#include <iostream.h>
#include <stdio.h>
//------------------------------------------------------------------------------------------------------
// Purpose: CLogEvent represents an event in the log file. e.g. one line.
// It can have one of several types (enumerated below) and a list of arguments
// is attached as well.
//------------------------------------------------------------------------------------------------------
class CLogEvent
{
public:
enum Type
{
NOTYPE =0,
INVALID = 0,
LOG_FILE_INIT,
SERVER_SPAWN,
SERVER_SHUTDOWN,
LOG_CLOSED,
SERVER_MISC,
SERVER_NAME,
TEAM_RENAME,
LEVEL_CHANGE,
CVAR_ASSIGN,
MAP_CRC,
TEAM_JOIN,
CONNECT,
ENTER_GAME,
DISCONNECT,
NAME_CHANGE,
FRAG,
TEAM_FRAG,
SUICIDE,
KILLED_BY_WORLD,
BUILD,
MATCH_RESULTS_MARKER,
MATCH_DRAW,
MATCH_VICTOR,
MATCH_TEAM_RESULTS,
SAY,
SAY_TEAM,
CURE,
NAMED_GOAL_ACTIVATE,
ANON_GOAL_ACTIVATE,
NAMED_BROADCAST,
ANON_BROADCAST,
CLASS_CHANGE,
NUM_TYPES
};
char* m_StrippedText;
private:
ArgVector m_args;
char m_EventCode;
time_t m_EventTime;
bool m_Valid;
char* m_EventMessage;
Type m_EventType;
bool keywordsOccur(char* s1,char* s2=NULL,char* s3=NULL);
void parseArgs();
// void readEventTime(istream& is);
// void readEventCode(istream& is);
// void readEventMessage(istream& is);
void parseArgument(const char*& raw); //ref to pointer to constant char, gotta love it.
void determineType();
public:
CLogEvent* m_Next;
CLogEvent();
~CLogEvent();
bool isValid(){return m_Valid;}
// explicit CLogEvent(istream& is);
// virtual void readEvent(istream& is);
// virtual void print(ostream& os);
CLogEvent::Type getType() const {return m_EventType;}
time_t getTime() const {return m_EventTime;}
const CLogEventArgument* getArgument(int i) const;
const char* getFullMessage() const {return m_EventMessage;}
static const char* TypeNames[];
//unused stuff
protected:
void readEventTime(FILE* f);
void readEventCode(FILE* f);
void readEventMessage(FILE* f);
public:
explicit CLogEvent(FILE* f);
virtual void readEvent(FILE* f);
virtual void print(FILE* f=stdout);
};
#endif // LOGEVENT_H