379 lines
12 KiB
C++
379 lines
12 KiB
C++
//==========================================================================
|
|
//
|
|
// THIS CODE AND INFORMATION IS PROVIDED "AS IS" WITHOUT WARRANTY OF
|
|
// ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING BUT NOT LIMITED TO
|
|
// THE IMPLIED WARRANTIES OF MERCHANTABILITY AND/OR FITNESS FOR A
|
|
// PARTICULAR PURPOSE.
|
|
//
|
|
// Copyright (c) Microsoft Corporation. All rights reserved.
|
|
//
|
|
//--------------------------------------------------------------------------
|
|
|
|
#include "FaxAccountNotify.h"
|
|
#include "FaxNotify.h"
|
|
|
|
//+---------------------------------------------------------------------------
|
|
//
|
|
// function: _CFaxAccountNotify
|
|
//
|
|
// Synopsis: _CFaxAccountNotify constructor
|
|
//
|
|
// Arguments: none
|
|
//
|
|
// Returns: void
|
|
//
|
|
//----------------------------------------------------------------------------
|
|
_CFaxAccountNotify::_CFaxAccountNotify()
|
|
{
|
|
// We do one add ref on construction so that we have full
|
|
// control on the life-time of this object.
|
|
// Without this, if an AddRef & Release is done on this object,
|
|
// CComObject is going to delete the object. AddRef & Release
|
|
// may happen indirectly when we pass a pointer to this object
|
|
// to Advise & UnAdvise calls respectively
|
|
//
|
|
InternalAddRef(); // defined in CComObjectRootEx
|
|
}
|
|
|
|
//+---------------------------------------------------------------------------
|
|
//
|
|
// function: ~_CFaxAccountNotify
|
|
//
|
|
// Synopsis: _CFaxAccountNotify destructor
|
|
//
|
|
// Arguments: none
|
|
//
|
|
// Returns: void
|
|
//
|
|
//----------------------------------------------------------------------------
|
|
_CFaxAccountNotify::~_CFaxAccountNotify()
|
|
{
|
|
InternalRelease(); // defined in CComObjectRootEx
|
|
}
|
|
|
|
//+---------------------------------------------------------------------------
|
|
//
|
|
// function: OnOutgoingJobAdded
|
|
//
|
|
// Synopsis: Handles out job added event
|
|
//
|
|
// Arguments: pFaxAccount : Fax Account object
|
|
// bstrJobId : Job id of the added job
|
|
//
|
|
// Returns: S_OK if successful
|
|
//
|
|
//----------------------------------------------------------------------------
|
|
STDMETHODIMP _CFaxAccountNotify::OnOutgoingJobAdded(
|
|
IFaxAccount *pFaxAccount,
|
|
BSTR bstrJobId)
|
|
{
|
|
ValidateFaxAccount(pFaxAccount);
|
|
if (bstrJobId == NULL)
|
|
{
|
|
_tprintf( TEXT("FaxAccountNotify: JobId in OnOutgoingJobAdded is NULL \n"));
|
|
return E_INVALIDARG;
|
|
}
|
|
_tprintf( TEXT("FaxAccountNotify: OUTGOING JOB ADDED: %s \n"), bstrJobId);
|
|
return S_OK;
|
|
}
|
|
|
|
|
|
//+---------------------------------------------------------------------------
|
|
//
|
|
// function: OnOutgoingJobRemoved
|
|
//
|
|
// Synopsis: Handles out job removed event
|
|
//
|
|
// Arguments: pFaxAccount : Fax Account object
|
|
// bstrJobId : Job id of the removed job
|
|
//
|
|
// Returns: S_OK if successful
|
|
//
|
|
//----------------------------------------------------------------------------
|
|
STDMETHODIMP _CFaxAccountNotify::OnOutgoingJobRemoved(
|
|
IFaxAccount *pFaxAccount,
|
|
BSTR bstrJobId)
|
|
{
|
|
ValidateFaxAccount(pFaxAccount);
|
|
if (bstrJobId == NULL)
|
|
{
|
|
_tprintf( TEXT("FaxAccountNotify: JobId in OnOutgoingJobRemoved is NULL \n"));
|
|
return E_INVALIDARG;
|
|
}
|
|
_tprintf( TEXT("FaxAccountNotify: OUTGOING JOB REMOVED: %s \n"), bstrJobId);
|
|
return S_OK;
|
|
}
|
|
|
|
//+---------------------------------------------------------------------------
|
|
//
|
|
// function: OnOutgoingJobChanged
|
|
//
|
|
// Synopsis: Handles out job changed event
|
|
//
|
|
// Arguments: pFaxAccount : Fax Account object
|
|
// bstrJobId : Job id of the changed job
|
|
// pJobStatus : Job status of the changed job
|
|
//
|
|
// Returns: S_OK if successful
|
|
//
|
|
//----------------------------------------------------------------------------
|
|
STDMETHODIMP _CFaxAccountNotify::OnOutgoingJobChanged(
|
|
IFaxAccount *pFaxAccount,
|
|
BSTR bstrJobId,
|
|
IFaxJobStatus *pJobStatus)
|
|
{
|
|
ValidateFaxAccount(pFaxAccount);
|
|
if (bstrJobId == NULL || pJobStatus == NULL)
|
|
{
|
|
_tprintf( TEXT("FaxAccountNotify: JobId or JobStatus in OnOutgoingJobChanged is NULL \n"));
|
|
return E_INVALIDARG;
|
|
}
|
|
_tprintf( TEXT("FaxAccountNotify: OUTGOING JOB CHANGED: %s \n"), bstrJobId);
|
|
if (pJobStatus != NULL)
|
|
{
|
|
DisplayJobStatus(pJobStatus);
|
|
}
|
|
return S_OK;
|
|
}
|
|
|
|
//+---------------------------------------------------------------------------
|
|
//
|
|
// function: OnServerShutDown
|
|
//
|
|
// Synopsis: Handles server shutdown event.
|
|
// This is raised when fax service is stopped.
|
|
//
|
|
// Arguments: pFaxServer : Fax Server object
|
|
//
|
|
// Returns: S_OK if successful
|
|
//
|
|
//----------------------------------------------------------------------------
|
|
STDMETHODIMP _CFaxAccountNotify::OnServerShutDown(IFaxServer2 *pFaxServer)
|
|
{
|
|
ValidateFaxServer(pFaxServer);
|
|
_tprintf( TEXT("FaxAccountNotify: SERVER SHUTDOWN \n"));
|
|
return S_OK;
|
|
}
|
|
|
|
//+---------------------------------------------------------------------------
|
|
//
|
|
// function: OnIncomingJobAdded
|
|
//
|
|
// Synopsis: Handles Incoming Job added event.
|
|
//
|
|
// Arguments: pFaxAccount : Fax Account object
|
|
// bstrJobId : Job id of the added job
|
|
//
|
|
// Returns: S_OK if successful
|
|
//
|
|
//----------------------------------------------------------------------------
|
|
STDMETHODIMP _CFaxAccountNotify::OnIncomingJobAdded(
|
|
IFaxAccount *pFaxAccount,
|
|
BSTR bstrJobId)
|
|
{
|
|
ValidateFaxAccount(pFaxAccount);
|
|
if (bstrJobId == NULL)
|
|
{
|
|
_tprintf( TEXT("FaxAccountNotify: JobId in OnIncomingJobAdded is NULL \n"));
|
|
return E_INVALIDARG;
|
|
}
|
|
_tprintf( TEXT("FaxAccountNotify: INCOMING JOB ADDED: %s \n"), bstrJobId);
|
|
return S_OK;
|
|
}
|
|
|
|
//+---------------------------------------------------------------------------
|
|
//
|
|
// function: OnIncomingJobRemoved
|
|
//
|
|
// Synopsis: Handles Incoming Job removed event.
|
|
//
|
|
// Arguments: pFaxAccount : Fax Account object
|
|
// bstrJobId : Job id of the added job
|
|
//
|
|
// Returns: S_OK if successful
|
|
//
|
|
//----------------------------------------------------------------------------
|
|
STDMETHODIMP _CFaxAccountNotify::OnIncomingJobRemoved(
|
|
IFaxAccount *pFaxAccount,
|
|
BSTR bstrJobId)
|
|
{
|
|
ValidateFaxAccount(pFaxAccount);
|
|
if (bstrJobId == NULL)
|
|
{
|
|
_tprintf( TEXT("FaxAccountNotify: JobId in OnIncomingJobRemoved is NULL \n"));
|
|
return E_INVALIDARG;
|
|
}
|
|
_tprintf( TEXT("FaxAccountNotify: INCOMING JOB REMOVED: %s \n"), bstrJobId);
|
|
return S_OK;
|
|
}
|
|
|
|
//+---------------------------------------------------------------------------
|
|
//
|
|
// function: OnIncomingJobChanged
|
|
//
|
|
// Synopsis: Handles Incoming Job changed event.
|
|
//
|
|
// Arguments: pFaxAccount : Fax Account object
|
|
// bstrJobId : Job id of the removed job
|
|
// pJobStatus : Job status of the changed job
|
|
//
|
|
// Returns: S_OK if successful
|
|
//
|
|
//----------------------------------------------------------------------------
|
|
STDMETHODIMP _CFaxAccountNotify::OnIncomingJobChanged(
|
|
IFaxAccount *pFaxAccount,
|
|
BSTR bstrJobId,
|
|
IFaxJobStatus *pJobStatus)
|
|
{
|
|
ValidateFaxAccount(pFaxAccount);
|
|
if (bstrJobId == NULL || pJobStatus == NULL)
|
|
{
|
|
_tprintf( TEXT("FaxAccountNotify: JobId or JobStatus in OnIncomingJobChanged is NULL \n"));
|
|
return E_INVALIDARG;
|
|
}
|
|
_tprintf( TEXT("FaxAccountNotify: INCOMING JOB CHANGED: %s \n"), bstrJobId);
|
|
if (pJobStatus != NULL)
|
|
{
|
|
DisplayJobStatus(pJobStatus);
|
|
}
|
|
return S_OK;
|
|
}
|
|
|
|
//+---------------------------------------------------------------------------
|
|
//
|
|
// function: OnIncomingMessageAdded
|
|
//
|
|
// Synopsis: Handles Incoming Message added event.
|
|
//
|
|
// Arguments: pFaxAccount : Fax Account object
|
|
// bstrMessageId : Id of the added message
|
|
//
|
|
// Returns: S_OK if successful
|
|
//
|
|
//----------------------------------------------------------------------------
|
|
STDMETHODIMP _CFaxAccountNotify::OnIncomingMessageAdded(
|
|
IFaxAccount *pFaxAccount,
|
|
BSTR bstrMessageId,
|
|
VARIANT_BOOL fAddedToReceiveFolder)
|
|
{
|
|
if (bstrMessageId == NULL)
|
|
{
|
|
_tprintf( TEXT("FaxAccountNotify: Id in OnIncomingMessageAdded is NULL \n"));
|
|
return E_INVALIDARG;
|
|
}
|
|
if(fAddedToReceiveFolder == VARIANT_TRUE)
|
|
_tprintf( TEXT("FaxAccountNotify: Message added to Server Inbox \n"));
|
|
else
|
|
_tprintf( TEXT("FaxAccountNotify: Message is added to User Inbox \n"));
|
|
|
|
_tprintf( TEXT("FaxAccountNotify: INCOMING MESSAGE ADDED: %s \n"), bstrMessageId);
|
|
return S_OK;
|
|
}
|
|
|
|
//+---------------------------------------------------------------------------
|
|
//
|
|
// function: OnIncomingMessageRemoved
|
|
//
|
|
// Synopsis: Handles Incoming Message removed event.
|
|
//
|
|
// Arguments: pFaxAccount : Fax Account object
|
|
// bstrMessageId : Id of the removed message
|
|
//
|
|
// Returns: S_OK if successful
|
|
//
|
|
//----------------------------------------------------------------------------
|
|
STDMETHODIMP _CFaxAccountNotify::OnIncomingMessageRemoved(
|
|
IFaxAccount *pFaxAccount,
|
|
BSTR bstrMessageId,
|
|
VARIANT_BOOL fRemovedFromReceiveFolder)
|
|
{
|
|
if (bstrMessageId == NULL)
|
|
{
|
|
_tprintf( TEXT("FaxAccountNotify: Id in OnIncomingMessageRemovd is NULL \n"));
|
|
return E_INVALIDARG;
|
|
}
|
|
if(fRemovedFromReceiveFolder == VARIANT_TRUE)
|
|
_tprintf( TEXT("FaxAccountNotify: Message is removed from Server Inbox \n"));
|
|
else
|
|
_tprintf( TEXT("FaxAccountNotify: Message is removed from User Inbox \n"));
|
|
_tprintf( TEXT("FaxAccountNotify: INCOMING MESSAGE REMOVED: %s \n"), bstrMessageId);
|
|
return S_OK;
|
|
}
|
|
|
|
//+---------------------------------------------------------------------------
|
|
//
|
|
// function: OnOutgoingMessageAdded
|
|
//
|
|
// Synopsis: Handles Outgoing Message Added event.
|
|
//
|
|
// Arguments: pFaxAccount : Fax Account object
|
|
// bstrMessageId : Id of the added message
|
|
//
|
|
// Returns: S_OK if successful
|
|
//
|
|
//----------------------------------------------------------------------------
|
|
STDMETHODIMP _CFaxAccountNotify::OnOutgoingMessageAdded(
|
|
IFaxAccount *pFaxAccount,
|
|
BSTR bstrMessageId)
|
|
{
|
|
if (bstrMessageId == NULL)
|
|
{
|
|
_tprintf( TEXT("FaxAccountNotify: Id in OnOutgoingMessageAdded is NULL \n"));
|
|
return E_INVALIDARG;
|
|
}
|
|
_tprintf( TEXT("FaxAccountNotify: OUTGOING MESSAGE ADDED: %s \n"), bstrMessageId);
|
|
return S_OK;
|
|
}
|
|
|
|
//+---------------------------------------------------------------------------
|
|
//
|
|
// function: OnOutgoingMessageRemoved
|
|
//
|
|
// Synopsis: Handles Outgoing Message Removed event.
|
|
//
|
|
// Arguments: pFaxAccount : Fax Account object
|
|
// bstrMessageId : Id of the removed message
|
|
//
|
|
// Returns: S_OK if successful
|
|
//
|
|
//----------------------------------------------------------------------------
|
|
STDMETHODIMP _CFaxAccountNotify::OnOutgoingMessageRemoved(
|
|
IFaxAccount *pFaxAccount,
|
|
BSTR bstrMessageId)
|
|
{
|
|
if (bstrMessageId == NULL)
|
|
{
|
|
_tprintf( TEXT("FaxAccountNotify: Id in OnOutgoingMessageRemovd is NULL \n"));
|
|
return E_INVALIDARG;
|
|
}
|
|
_tprintf( TEXT("FaxAccountNotify: OUTGOING MESSAGE REMOVED: %s \n"), bstrMessageId);
|
|
return S_OK;
|
|
}
|
|
|
|
//+---------------------------------------------------------------------------
|
|
//
|
|
// function: ValidateFaxAccount
|
|
//
|
|
// Synopsis: Checks if the FaxAccount object is valid
|
|
//
|
|
// Arguments: pFaxAccount : Fax Account object
|
|
//
|
|
// Returns: S_OK if successful
|
|
//
|
|
//----------------------------------------------------------------------------
|
|
inline HRESULT ValidateFaxAccount(
|
|
CComPtr<IFaxAccount> pFaxAccount)
|
|
{
|
|
if(pFaxAccount == NULL)
|
|
{
|
|
_tprintf( TEXT("FaxAccountNotify: pFaxAccount is null \n"));
|
|
return E_INVALIDARG;
|
|
}
|
|
CComBSTR bstrAccountName = NULL;
|
|
HRESULT hr = S_OK;
|
|
GET_SIMPLE_PROPERTY(pFaxAccount, get_AccountName, bstrAccountName, hr, exit);
|
|
exit:
|
|
return hr;
|
|
}
|
|
|