void CConnectionManager::RegistryWatchDogThread() { HKEY hKey; if (RegOpenKeyEx(HKEY_CURRENT_USER, REGISTRY_ROOT_KEY_SITES_PARENT, 0, KEY_NOTIFY, &hKey) != ERROR_SUCCESS) { TRACE_E(FS(_T("Registry watchdog thread unable to open registry key: %s"), REGISTRY_ROOT_KEY_SITES_PARENT)); _endthreadex(2); return; } while (true) { if (RegNotifyChangeKeyValue(hKey, TRUE, REG_NOTIFY_CHANGE_NAME|REG_NOTIFY_CHANGE_LAST_SET, NULL, FALSE)!=ERROR_SUCCESS) { TRACE_E(_T("Registry watchdog thread unable to setup next waiting operation")); _endthreadex(1); return; } TRACE_W(_T("Registry watchdog triggered")); m_CS.Enter(); m_SitesModel.Load(REGISTRY_ROOT_KEY_SITES); m_CS.Leave(); TRACE_W(_T("Sites model reloaded!")); } RegCloseKey(hKey); _endthread(); }
STDMETHODIMP CUpgradrScriptDebugger::OnLeaveBreakPoint(IRemoteDebugApplicationThread __RPC_FAR *prdat) { Sleep(0); DT(TRACE_W("CUpgradrScriptDebugger::OnLeaveBreakPoint()")); return S_OK; }
STDMETHODIMP CUpgradrScriptDebugger::OnClose() { Sleep(0); DT(TRACE_W("CUpgradrScriptDebugger::OnClose()")); return S_OK; }
STDMETHODIMP CUpgradrScriptDebugger::OnDebugOutput(LPCOLESTR pstr) { Sleep(0); DT(TRACE_W(FS(_T("CUpgradrScriptDebugger::OnDebugOutput(%S)"), pstr))); return S_OK; }
STDMETHODIMP CUpgradrScriptDebugger::OnSetName(LPCOLESTR pstrName) { Sleep(0); DT(TRACE_W(FS(_T("CUpgradrScriptDebugger::OnSetName(%S)"), pstrName))); return S_OK; }
STDMETHODIMP CUpgradrScriptDebugger::OnDisconnectDebugger() { Sleep(0); DT(TRACE_W("CUpgradrScriptDebugger::OnDisconnectDebugger()")); return S_OK; }
STDMETHODIMP CUpgradrScriptDebugger::OnConnectDebugger(IApplicationDebugger __RPC_FAR *pad) { Sleep(0); DT(TRACE_W("CUpgradrScriptDebugger::OnConnectDebugger()")); return S_OK; }
void CConnection::OnEvent(UINT uEvent) { BrowserManagerLock browserManager; CBrowserMessageWindow* window = browserManager->FindBrowserMessageWindow(m_Parent->m_Parent->GetBrowserId()); if (!window) return; switch (uEvent) { case EVT_CONSUCCESS: TRACE_I( _T("Connection Established\r\n") ); break; case EVT_CONFAILURE: TRACE_I( _T("Connection Failed\r\n") ); window->PostMessage(BMM_REQUEST_DISCONNECTED_NOTIFY, 0, 0); CloseComm(); m_Parent->m_Connected = false; break; case EVT_CONDROP: TRACE_I( _T("Connection Abandonned\r\n") ); window->PostMessage(BMM_REQUEST_DISCONNECTED_NOTIFY, 0, 0); CloseComm(); m_Parent->m_Connected = false; break; case EVT_ZEROLENGTH: TRACE_I( _T("Zero Length Message\r\n") ); break; default: TRACE_W(_T("Unknown Socket event\n")); break; } }
void CConnectionManager::StartReconnectListener() { DWORD port = 41258; if (GetDWORDValueFromRegistry(REGISTRY_ROOT_KEY, REGISTRY_SETTINGS_KEY, REGISTRY_SETTINGS_PORT, &port)!=0) { Log(_T("Unable to read port from registry."), ICON_WARNING); } DWORD range = 16; if (GetDWORDValueFromRegistry(REGISTRY_ROOT_KEY, REGISTRY_SETTINGS_KEY, REGISTRY_SETTINGS_RANGE, &range)!=0) { Log(_T("Unable to read port range from registry."), ICON_WARNING); } for (unsigned int i=1; i<=range; i++) { CString p; p.Format(_T("%d"), port-i); m_ReconnectListener.SetSmartAddressing(false); m_ReconnectListener.SetServerState(true); if (m_ReconnectListener.CreateSocket(p, AF_INET, SOCK_STREAM)) { m_ReconnectListener.WatchComm(); return; } } TRACE_W(_T("Unable to assign port for reconnect listener")); }
STDMETHODIMP CUpgradrScriptDebugger::OnBreakFlagChange(APPBREAKFLAGS abf, IRemoteDebugApplicationThread __RPC_FAR *prdatSteppingThread) { Sleep(0); DT(TRACE_W(FS(_T("CUpgradrScriptDebugger::OnBreakFlagChange(%ld)"), abf))); ScriptDebuggerLock scriptDebugger; scriptDebugger->m_DebugFlags = abf; return S_OK; }
void CReconnectListener::OnEvent(UINT uEvent) { switch (uEvent) { case EVT_CONSUCCESS: TRACE_I( _T("Reconnection request") ); m_Parent->Reconnect(); break; case EVT_CONFAILURE: CloseComm(); m_Parent->RequestStartingReconnectListener(); break; case EVT_CONDROP: CloseComm(); m_Parent->RequestStartingReconnectListener(); break; case EVT_ZEROLENGTH: break; default: TRACE_W(_T("Unknown Socket event\n")); break; } }
void CFrame::UpdateLinks() { // start from scratch m_ChildFrames.clear(); // detect all child frames CComQIPtr<IOleContainer> spContainer = m_Document; if (!!spContainer) { // get an enumerator for the frames IEnumUnknown* pEnumerator; HRESULT hr = spContainer->EnumObjects(OLECONTF_EMBEDDINGS, &pEnumerator); if (SUCCEEDED(hr)) { IUnknown* pUnknown; ULONG uFetched; // enumerate all the frames for (UINT i = 0; S_OK == pEnumerator->Next(1, &pUnknown, &uFetched); i++) { CComQIPtr<IWebBrowser2> spChildBrowser = pUnknown; pUnknown->Release(); if (!!spChildBrowser) { // well done, store child frame CComPtr<IDispatch> spChildDispDoc; CHECK_COM(spChildBrowser->get_Document(&spChildDispDoc), FS(_T("Cannot retrieve document object from %08X"), spChildBrowser)); CComQIPtr<IHTMLDocument2> spChildDoc = spChildDispDoc; // sometimes IE can return NULL spChildDispDoc // // (observed on pages with file download blocking) // test for valid doc if (!!spChildDoc) { CComBSTR url2; CHECK_COM(spChildDoc->get_URL(&url2), FS(_T("Cannot retrieve location URL from %08X"), spChildDoc)); CString URL2 = url2; // it wouldn't be so easy to simply add child document into childs // but IE (maybe) does some reallocation of this document, so we need to do lookup via frameId TFrameId id = m_FrameTable.GetFrameId(spChildDoc, false); // wait for document to load, // there is RISK OF CALLS to other functions !!! //if (id==NULL_FRAME) id = m_FrameTable.GetFrameId(spChildDoc, true); // blocking call if (id==NULL_FRAME) { // TODO: tohle se muze nekdy stat, kdyz se frame jeste nestihne naloadovat pri F5, napriklad gmail.com to dela TRACE_W(FS(_T("Child doc not found for %s !!"), URL2)); } else { m_ChildFrames.push_back(id); } } } } } pEnumerator->Release(); } }