mirror of
https://github.com/intrepidcs/libicsneo.git
synced 2026-08-05 01:18:36 +02:00
turn PCAPDLL into a singleton
This commit is contained in:
@@ -2,15 +2,31 @@
|
||||
|
||||
using namespace icsneo;
|
||||
|
||||
std::shared_ptr<PCAPDLL> PCAPDLL::lazyLoadHolder;
|
||||
bool PCAPDLL::lazyLoaded = false;
|
||||
const PCAPDLL& PCAPDLL::getInstance()
|
||||
{
|
||||
static PCAPDLL instance;
|
||||
return instance;
|
||||
}
|
||||
|
||||
PCAPDLL::PCAPDLL() {
|
||||
if(!lazyLoaded) {
|
||||
lazyLoaded = true;
|
||||
lazyLoadHolder = std::make_shared<PCAPDLL>();
|
||||
}
|
||||
|
||||
PCAPDLL::~PCAPDLL()
|
||||
{
|
||||
closeDLL();
|
||||
}
|
||||
|
||||
void PCAPDLL::closeDLL()
|
||||
{
|
||||
if (dll)
|
||||
FreeLibrary(dll);
|
||||
dll = nullptr;
|
||||
}
|
||||
|
||||
bool PCAPDLL::ok() const
|
||||
{
|
||||
return dll != nullptr;
|
||||
}
|
||||
|
||||
PCAPDLL::PCAPDLL()
|
||||
{
|
||||
dll = LoadLibrary("wpcap.dll");
|
||||
|
||||
if(dll == NULL) {
|
||||
@@ -43,9 +59,3 @@ PCAPDLL::PCAPDLL() {
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void PCAPDLL::closeDLL() {
|
||||
if(dll)
|
||||
FreeLibrary(dll);
|
||||
dll = nullptr;
|
||||
}
|
||||
Reference in New Issue
Block a user