turn PCAPDLL into a singleton

This commit is contained in:
Jeffrey Quesnelle
2020-03-24 13:15:26 -04:00
parent 38e24d7641
commit 99879c9021
4 changed files with 32 additions and 23 deletions
@@ -12,8 +12,7 @@ namespace icsneo {
class PCAPDLL {
public:
// The first time we use the DLL we keep it in here and it won't get freed until the user unloads us (for speed reasons)
static std::shared_ptr<PCAPDLL> lazyLoadHolder;
static bool lazyLoaded;
static const PCAPDLL& getInstance();
// Functions
typedef int(__cdecl* PCAPFINDDEVICE)(char* source, struct pcap_rmtauth* auth, pcap_if_t** alldevs, char* errbuf);
@@ -45,14 +44,14 @@ public:
PCAPCREATESRCSTR createsrcstr;
PCAPSETBUFF setbuff;
PCAPDLL();
~PCAPDLL() { closeDLL(); }
bool ok() const { return dll != nullptr; }
~PCAPDLL();
bool ok() const;
private:
PCAPDLL();
HINSTANCE dll;
void closeDLL();
};
}
#endif
+1 -1
View File
@@ -26,7 +26,7 @@ public:
bool isOpen();
bool close();
private:
PCAPDLL pcap;
const PCAPDLL& pcap;
char errbuf[PCAP_ERRBUF_SIZE] = { 0 };
neodevice_t& device;
uint8_t deviceMAC[6];