Exemplo n.º 1
0
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;

	}
}
Exemplo n.º 2
0
/*++

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;
}