chore: unused fm removed
This commit is contained in:
@@ -1,138 +0,0 @@
|
||||
#include "stdafx.h"
|
||||
#ifdef OS_FREEBSD
|
||||
#include "FileMonitor_FreeBSD.h"
|
||||
#include "libthecore/log.h"
|
||||
|
||||
|
||||
#define INVALID_KERNEL_EVENT -1
|
||||
|
||||
FileMonitorFreeBSD::FileMonitorFreeBSD()
|
||||
{
|
||||
m_KernelEventQueue = INVALID_KERNEL_EVENT;
|
||||
}
|
||||
|
||||
FileMonitorFreeBSD::~FileMonitorFreeBSD()
|
||||
{
|
||||
if( m_KernelEventQueue != INVALID_KERNEL_EVENT )
|
||||
{
|
||||
close ( m_KernelEventQueue );
|
||||
m_KernelEventQueue = INVALID_KERNEL_EVENT;
|
||||
}
|
||||
|
||||
TMonitorFileHashMap::iterator it;
|
||||
for( it = m_FileLists.begin(); it != m_FileLists.end(); ++it )
|
||||
{
|
||||
close(it->second.fhMonitor);
|
||||
}
|
||||
|
||||
m_FileLists.clear();
|
||||
|
||||
m_MonitoredEventLists.clear();
|
||||
m_TriggeredEventLists.clear();
|
||||
}
|
||||
|
||||
|
||||
void FileMonitorFreeBSD::Update(DWORD dwPulses)
|
||||
{
|
||||
if( m_KernelEventQueue == INVALID_KERNEL_EVENT || m_FileLists.size() == 0 )
|
||||
return;
|
||||
|
||||
int nEvent = kevent(m_KernelEventQueue, &m_TriggeredEventLists[0], (int)m_TriggeredEventLists.size(), &m_MonitoredEventLists[0], (int)m_MonitoredEventLists.size(), NULL );
|
||||
if( nEvent == INVALID_KERNEL_EVENT )
|
||||
{
|
||||
return;
|
||||
}
|
||||
else if( nEvent > 0 )
|
||||
{
|
||||
for( int i = 0; i < nEvent; ++i )
|
||||
{
|
||||
int nEventFlags = m_MonitoredEventLists[i].flags;
|
||||
eFileUpdatedOptions eUpdateOption = e_FileUpdate_None;
|
||||
|
||||
if (nEventFlags & EV_ERROR)
|
||||
eUpdateOption = e_FileUpdate_Error;
|
||||
|
||||
else if (nEventFlags & NOTE_DELETE)
|
||||
eUpdateOption = e_FileUpdate_Deleted;
|
||||
|
||||
else if (nEventFlags & NOTE_EXTEND || nEventFlags & NOTE_WRITE)
|
||||
eUpdateOption = e_FileUpdate_Modified;
|
||||
|
||||
else if (nEventFlags & NOTE_ATTRIB)
|
||||
eUpdateOption = e_FileUpdate_AttrModified;
|
||||
|
||||
else if (nEventFlags & NOTE_LINK)
|
||||
eUpdateOption = e_FileUpdate_Linked;
|
||||
|
||||
else if (nEventFlags & NOTE_RENAME)
|
||||
eUpdateOption = e_FileUpdate_Renamed;
|
||||
|
||||
else if (nEventFlags & NOTE_REVOKE)
|
||||
eUpdateOption = e_FileUpdate_Revoked;
|
||||
|
||||
if( eUpdateOption != e_FileUpdate_None )
|
||||
{
|
||||
TMonitorFileHashMap::iterator it;
|
||||
for( it = m_FileLists.begin(); it != m_FileLists.end(); ++it )
|
||||
{
|
||||
FileIOContext_FreeBSD& context = it->second;
|
||||
if( context.idxToEventList == i )
|
||||
{
|
||||
std::string strModifedFileName = it->first;
|
||||
context.pListenFunc( strModifedFileName, eUpdateOption );
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void FileMonitorFreeBSD::AddWatch(const std::string& strFileName, PFN_FileChangeListener pListenerFunc)
|
||||
{
|
||||
int iFileHandle = -1;
|
||||
if( (iFileHandle = open(strFileName.c_str(), O_RDONLY)) == -1)
|
||||
{
|
||||
sys_err("FileMonitorFreeBSD:AddWatch : can`t open file(%s).\n", strFileName.c_str());
|
||||
return;
|
||||
}
|
||||
|
||||
//create kqueue if not exists
|
||||
if( m_KernelEventQueue == INVALID_KERNEL_EVENT )
|
||||
m_KernelEventQueue = kqueue();
|
||||
|
||||
if( m_KernelEventQueue == INVALID_KERNEL_EVENT )
|
||||
{
|
||||
sys_err("FileMonitorFreeBSD:AddWatch : failed to create kqueue.\n");
|
||||
return;
|
||||
}
|
||||
|
||||
TMonitorFileHashMap::iterator it = m_FileLists.find( strFileName );
|
||||
if( it != m_FileLists.end() )
|
||||
{
|
||||
sys_log(0, "FileMonitorFreeBSD:AddWatch : trying to add duplicated watch on file(%s).\n", strFileName.c_str() );
|
||||
return;
|
||||
}
|
||||
|
||||
//set file context
|
||||
FileIOContext_FreeBSD context;
|
||||
{
|
||||
context.fhMonitor = iFileHandle;
|
||||
context.idxToEventList = (int)m_MonitoredEventLists.size();
|
||||
context.pListenFunc = pListenerFunc;
|
||||
}
|
||||
|
||||
m_FileLists[strFileName] = context;
|
||||
|
||||
//set events
|
||||
struct kevent kTriggerEvent, kMonitorEvent;
|
||||
|
||||
EV_SET(&kTriggerEvent, iFileHandle, EVFILT_VNODE,
|
||||
EV_ADD | EV_ENABLE | EV_ONESHOT,
|
||||
NOTE_DELETE | NOTE_WRITE | NOTE_EXTEND | NOTE_ATTRIB | NOTE_LINK | NOTE_RENAME | NOTE_REVOKE,
|
||||
0, 0);
|
||||
|
||||
m_TriggeredEventLists.push_back( kTriggerEvent );
|
||||
m_MonitoredEventLists.push_back( kMonitorEvent );
|
||||
}
|
||||
#endif
|
||||
@@ -1,44 +0,0 @@
|
||||
#pragma once
|
||||
#ifdef OS_FREEBSD
|
||||
#include "IFileMonitor.h"
|
||||
#include <unistd.h>
|
||||
#include <sys/event.h>
|
||||
#include <sys/types.h>
|
||||
#include <sys/signal.h>
|
||||
#include <sys/time.h>
|
||||
|
||||
struct FileIOContext_FreeBSD
|
||||
{
|
||||
int fhMonitor;
|
||||
int idxToEventList; // evtTrigger & evtMonitor index should be same
|
||||
PFN_FileChangeListener pListenFunc;
|
||||
};
|
||||
|
||||
class FileMonitorFreeBSD : public IFileMonitor
|
||||
{
|
||||
private:
|
||||
FileMonitorFreeBSD(); //hidden
|
||||
|
||||
public:
|
||||
virtual ~FileMonitorFreeBSD();
|
||||
|
||||
void AddWatch (const std::string& strFileName, PFN_FileChangeListener pListenerFunc);
|
||||
void Update (DWORD dwPulses);
|
||||
|
||||
static FileMonitorFreeBSD& Instance()
|
||||
{
|
||||
static FileMonitorFreeBSD theMonitor;
|
||||
return theMonitor;
|
||||
}
|
||||
|
||||
private:
|
||||
typedef std::unordered_map<std::string, FileIOContext_FreeBSD> TMonitorFileHashMap;
|
||||
typedef std::vector<struct kevent> TEventList;
|
||||
|
||||
TMonitorFileHashMap m_FileLists;
|
||||
TEventList m_MonitoredEventLists;
|
||||
TEventList m_TriggeredEventLists;
|
||||
|
||||
int m_KernelEventQueue;
|
||||
};
|
||||
#endif
|
||||
@@ -1,30 +0,0 @@
|
||||
#ifndef IFILEMONITOR_INCLUDED
|
||||
#define IFILEMONITOR_INCLUDED
|
||||
|
||||
//#include <boost/function.hpp>
|
||||
#include <unordered_map>
|
||||
|
||||
enum eFileUpdatedOptions
|
||||
{
|
||||
e_FileUpdate_None = -1,
|
||||
e_FileUpdate_Error,
|
||||
e_FileUpdate_Deleted,
|
||||
e_FileUpdate_Modified,
|
||||
e_FileUpdate_AttrModified,
|
||||
e_FileUpdate_Linked,
|
||||
e_FileUpdate_Renamed,
|
||||
e_FileUpdate_Revoked,
|
||||
};
|
||||
|
||||
// TODO : in FreeBSD boost function doesn`t work with boost bind
|
||||
// so currently we only support for static function ptr only
|
||||
//typedef boost::function< void ( const std::string&, eFileUpdatedOptions ) > PFN_FileChangeListener;
|
||||
typedef void (* PFN_FileChangeListener )(const std::string&, eFileUpdatedOptions);
|
||||
|
||||
struct IFileMonitor
|
||||
{
|
||||
virtual void Update (DWORD dwPulses) = 0;
|
||||
virtual void AddWatch (const std::string& strFileName, PFN_FileChangeListener pListenerFunc) = 0;
|
||||
};
|
||||
|
||||
#endif // IFILEMONITOR_INCLUDED
|
||||
@@ -5,7 +5,6 @@
|
||||
|
||||
#include "common/stl.h"
|
||||
#include "common/length.h"
|
||||
#include "IFileMonitor.h"
|
||||
|
||||
class CLoginKey;
|
||||
class CClientPackageCryptInfo;
|
||||
|
||||
@@ -63,12 +63,6 @@
|
||||
#include "limit_time.h"
|
||||
#endif
|
||||
|
||||
//#define __FILEMONITOR__
|
||||
|
||||
#if defined (OS_FREEBSD) && defined(__FILEMONITOR__)
|
||||
#include "FileMonitor_FreeBSD.h"
|
||||
#endif
|
||||
|
||||
// #ifndef OS_WINDOWS
|
||||
// #include <gtest/gtest.h>
|
||||
// #endif
|
||||
@@ -298,14 +292,6 @@ void heartbeat(LPHEART ht, int pulse)
|
||||
if (!(pulse % (passes_per_sec + 4)))
|
||||
CHARACTER_MANAGER::instance().ProcessDelayedSave();
|
||||
|
||||
//4초 마다
|
||||
#if defined (OS_FREEBSD) && defined(__FILEMONITOR__)
|
||||
if (!(pulse % (passes_per_sec * 5)))
|
||||
{
|
||||
FileMonitorFreeBSD::Instance().Update(pulse);
|
||||
}
|
||||
#endif
|
||||
|
||||
// 약 5.08초마다
|
||||
if (!(pulse % (passes_per_sec * 5 + 2)))
|
||||
{
|
||||
@@ -537,11 +523,6 @@ int main(int argc, char **argv)
|
||||
sys_err("Failed to Load ClientPackageCryptInfo File(%s)", strPackageCryptInfoDir.c_str());
|
||||
}
|
||||
|
||||
#if defined (OS_FREEBSD) && defined(__FILEMONITOR__)
|
||||
PFN_FileChangeListener pPackageNotifyFunc = &(DESC_MANAGER::NotifyClientPackageFileChanged);
|
||||
//FileMonitorFreeBSD::Instance().AddWatch( strPackageCryptInfoName, pPackageNotifyFunc );
|
||||
#endif
|
||||
|
||||
while (idle());
|
||||
|
||||
sys_log(0, "<shutdown> Starting...");
|
||||
|
||||
Reference in New Issue
Block a user