CNdasDeviceHeartbeatListener* GetListenerInstance() { CNdasDeviceHeartbeatListener* pListener = SharedData.listener; if (NULL != pListener) { ::InterlockedIncrement((LPLONG)&SharedData.ref); return pListener; } pListener = new CNdasDeviceHeartbeatListener(); if (NULL == pListener) { ::SetLastError(ERROR_OUTOFMEMORY); return NULL; } BOOL fSuccess = pListener->Initialize(); if (!fSuccess) { DBGPRT_ERR(_T("Failed to init listener: ")); return NULL; } if (!pListener->Run()) { DBGPRT_ERR(_T("Failed to run listener: ")); return NULL; } // okay, we've got pListener running SharedData.listener = pListener; ::InterlockedIncrement((LPLONG)&SharedData.ref); return pListener; }
int __cdecl wmain() { WSADATA wsaData; if (0 != ::WSAStartup(MAKEWORD(2,2), &wsaData)) { _tprintf(_T("Failed to initialize socket: %d\n"), ::GetLastError()); } CNdasDeviceHeartbeatListener listener; BOOL fSuccess = listener.Initialize(); if (!fSuccess) { _tprintf(_T("Failed to init listener : %d\n"), ::GetLastError()); return 1; } if (!listener.Run()) { _tprintf(_T("Failed to run listener: %d\n"), ::GetLastError()); return 1; } CNdasDeviceHeartbeatHandler* subscriber = new CMyClass(&listener); ::Sleep(60000); listener.Stop(TRUE); delete subscriber; return 0; }