2018-04-26 02:13:04 -04:00
|
|
|
|
using SharedLibraryCore;
|
|
|
|
|
using SharedLibraryCore.Interfaces;
|
|
|
|
|
using System;
|
|
|
|
|
using System.Collections.Generic;
|
|
|
|
|
using System.IO;
|
|
|
|
|
using System.Text;
|
|
|
|
|
using System.Threading;
|
|
|
|
|
using System.Threading.Tasks;
|
|
|
|
|
|
|
|
|
|
namespace IW4MAdmin.Application.IO
|
|
|
|
|
{
|
|
|
|
|
class GameLogEvent
|
|
|
|
|
{
|
|
|
|
|
FileSystemWatcher LogPathWatcher;
|
|
|
|
|
Server Server;
|
|
|
|
|
long PreviousFileSize;
|
|
|
|
|
GameLogReader Reader;
|
|
|
|
|
Timer RefreshInfoTimer;
|
|
|
|
|
string GameLogFile;
|
|
|
|
|
|
|
|
|
|
public GameLogEvent(Server server, string gameLogPath, string gameLogName)
|
|
|
|
|
{
|
|
|
|
|
GameLogFile = gameLogPath;
|
|
|
|
|
Reader = new GameLogReader(gameLogPath, server.EventParser);
|
|
|
|
|
Server = server;
|
|
|
|
|
RefreshInfoTimer = new Timer((sender) =>
|
|
|
|
|
{
|
2018-04-26 16:26:03 -04:00
|
|
|
|
long newLength = new FileInfo(GameLogFile).Length;
|
|
|
|
|
UpdateLogEvents(newLength);
|
2018-04-26 02:13:04 -04:00
|
|
|
|
|
|
|
|
|
}, null, 0, 100);
|
2018-04-26 16:26:03 -04:00
|
|
|
|
/*LogPathWatcher = new FileSystemWatcher()
|
2018-04-26 02:13:04 -04:00
|
|
|
|
{
|
|
|
|
|
Path = gameLogPath.Replace(gameLogName, ""),
|
|
|
|
|
Filter = gameLogName,
|
|
|
|
|
NotifyFilter = (NotifyFilters)383,
|
|
|
|
|
InternalBufferSize = 4096
|
|
|
|
|
};
|
|
|
|
|
|
2018-04-26 16:26:03 -04:00
|
|
|
|
// LogPathWatcher.Changed += LogPathWatcher_Changed;
|
|
|
|
|
LogPathWatcher.EnableRaisingEvents = true;*/
|
2018-04-26 02:13:04 -04:00
|
|
|
|
}
|
|
|
|
|
|
2018-04-26 16:26:03 -04:00
|
|
|
|
/*
|
2018-04-26 02:13:04 -04:00
|
|
|
|
~GameLogEvent()
|
|
|
|
|
{
|
|
|
|
|
LogPathWatcher.EnableRaisingEvents = false;
|
2018-04-26 16:26:03 -04:00
|
|
|
|
}*/
|
2018-04-26 02:13:04 -04:00
|
|
|
|
|
2018-04-26 16:26:03 -04:00
|
|
|
|
private void UpdateLogEvents(long fileSize)
|
2018-04-26 02:13:04 -04:00
|
|
|
|
{
|
|
|
|
|
if (PreviousFileSize == 0)
|
2018-04-26 16:26:03 -04:00
|
|
|
|
PreviousFileSize = fileSize;
|
2018-04-26 02:13:04 -04:00
|
|
|
|
|
2018-04-26 16:26:03 -04:00
|
|
|
|
long fileDiff = fileSize - PreviousFileSize;
|
2018-04-26 02:13:04 -04:00
|
|
|
|
|
|
|
|
|
if (fileDiff < 1)
|
|
|
|
|
return;
|
|
|
|
|
|
2018-04-26 16:26:03 -04:00
|
|
|
|
PreviousFileSize = fileSize;
|
|
|
|
|
|
|
|
|
|
var events = Reader.EventsFromLog(Server, fileDiff, 0);
|
2018-04-26 02:13:04 -04:00
|
|
|
|
foreach (var ev in events)
|
|
|
|
|
Server.Manager.GetEventHandler().AddEvent(ev);
|
|
|
|
|
|
2018-04-26 16:26:03 -04:00
|
|
|
|
PreviousFileSize = fileSize;
|
2018-04-26 02:13:04 -04:00
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|