void CServer::IssueMessages(const tinyirc::IRCMessage & Message) { switch(Message.Type) { case tinyirc::IRCMessageType::Welcome: ProcessWelcome(Message); break; case tinyirc::IRCMessageType::MOTD: ProcessMOTD(Message); break; case tinyirc::IRCMessageType::UserMode: ProcessUserMode(Message); break; case tinyirc::IRCMessageType::Message: ProcessPrvtMessage(Message); break; case tinyirc::IRCMessageType::Notice: ProcessNotice(Message); break; case tinyirc::IRCMessageType::UserList: ProcessUserList(Message); break; case tinyirc::IRCMessageType::Topic: ProcessTopic(Message); break; case tinyirc::IRCMessageType::NickChange: ProcessNick(Message); break; case tinyirc::IRCMessageType::Join: ProcessJoin(Message); break; case tinyirc::IRCMessageType::Part: ProcessPart(Message); break; case tinyirc::IRCMessageType::Quit: ProcessQuit(Message); break; case tinyirc::IRCMessageType::ChannelMode: ProcessChannelMode(Message); break; case tinyirc::IRCMessageType::TopicChanged: ProcessTopicChanged(Message); break; case tinyirc::IRCMessageType::Kick: ProcessKick(Message); break; } }
/*++ Routine Name: CXDXpsFilter::StartOperation Routine Description: This is the XPS Doxument interface implementation of IPrintPipelineFilter::StartOperation shared by all XPS Document filters Arguments: None Return Value: HRESULT S_OK - On success E_* - On error --*/ HRESULT CXDXpsFilter::StartOperation( VOID ) { VERBOSE("Starting filter operation.\n"); HRESULT hr = S_OK; if (SUCCEEDED(hr = CoInitializeEx(NULL, COINIT_APARTMENTTHREADED)) && SUCCEEDED(hr = InitialiseXDIO()) && SUCCEEDED(hr = InitializePrintTicketManager())) { CComPtr<IUnknown> pUnk(NULL); while (SUCCEEDED(hr) && SUCCEEDED(hr = m_pXDReader->GetXpsPart(&pUnk)) && pUnk != NULL && !m_bFilterFinished) { CComPtr<IXpsDocument> pXD(NULL); CComPtr<IFixedDocumentSequence> pFDS(NULL); CComPtr<IFixedDocument> pFD(NULL); CComPtr<IFixedPage> pFP(NULL); // // Query interface to find the part type and pass to the // appropriate part handler // if (SUCCEEDED(pUnk.QueryInterface(&pXD))) { hr = ProcessPart(pXD); } else if (SUCCEEDED(pUnk.QueryInterface(&pFDS))) { hr = ProcessPart(pFDS); } else if (SUCCEEDED(pUnk.QueryInterface(&pFD))) { hr = ProcessPart(pFD); } else if (SUCCEEDED(pUnk.QueryInterface(&pFP))) { hr = ProcessPart(pFP); } else { // // Unrecognised part - send as unknown. // hr = m_pXDWriter->SendXpsUnknown(pUnk); } // // Must call release since pUnk is declared outside of the while loop // pUnk.Release(); } if (SUCCEEDED(hr)) { // // Call finalize letting derived classes know we have // processed all parts // hr = Finalize(); } // // Close the xps package consumer // m_pXDWriter->CloseSender(); } // // If the filter failed make sure we shutdown the pipeline // if (FAILED(hr)) { if (m_bFilterFinished) { // // Filter is already closing down so report S_OK // hr = S_OK; } else { // // Request the pipeline manager shutdown the filter // ERR("Requesting filter shutdown\n"); RequestShutdown(hr); } } // // Let the filter pipe manager know the filter is finished // CoUninitialize(); FilterFinished(); ERR_ON_HR(hr); return hr; }