|
|
/*++
Copyright (c) 2000 Microsoft Corporation
Module Name:
FaxActivity.cpp
Abstract:
Implementation of CFaxActivity Class.
Author:
Iv Garber (IvG) Jun, 2000
Revision History:
--*/
#include "stdafx.h"
#include "FaxComEx.h"
#include "FaxActivity.h"
//
//========================= QUEUED MESSAGES =============================
//
STDMETHODIMP CFaxActivity::get_QueuedMessages( long *plQueuedMessages ) { HRESULT hr = S_OK; DBG_ENTER(_T("CFaxActivity::get_QueuedMessages"), hr); hr = GetNumberOfMessages(mtQUEUED, plQueuedMessages); return hr; }
//
//========================= OUTGOING MESSAGES =============================
//
STDMETHODIMP CFaxActivity::get_OutgoingMessages( long *plOutgoingMessages ) { HRESULT hr = S_OK; DBG_ENTER(_T("CFaxActivity::get_OutgoingMessages"), hr); hr = GetNumberOfMessages(mtOUTGOING, plOutgoingMessages); return hr; }
//
//========================= ROUTING MESSAGES =============================
//
STDMETHODIMP CFaxActivity::get_RoutingMessages( long *plRoutingMessages ) { HRESULT hr = S_OK; DBG_ENTER(_T("CFaxActivity::get_RoutingMessages"), hr); hr = GetNumberOfMessages(mtROUTING, plRoutingMessages); return hr; }
//
//========================= INCOMING MESSAGES =============================
//
STDMETHODIMP CFaxActivity::get_IncomingMessages( long *plIncomingMessages ) { HRESULT hr = S_OK; DBG_ENTER(_T("CFaxActivity::get_IncomingMessages"), hr); hr = GetNumberOfMessages(mtINCOMING, plIncomingMessages); return hr; }
//
//=================== GET NUMBER OF MESSAGES ===================================
//
STDMETHODIMP CFaxActivity::GetNumberOfMessages( MSG_TYPE msgType, long * plNumber ) { HRESULT hr = S_OK; DBG_ENTER(_T("CFaxActivity::GetNumberOfMessages"), hr);
//
// check that we have got good ptr
//
if (::IsBadWritePtr(plNumber, sizeof(long))) { hr = E_POINTER; CALL_FAIL(GENERAL_ERR, _T("::IsBadWritePtr(plNumber, sizeof(long))"), hr); AtlReportError(CLSID_FaxActivity, IDS_ERROR_INVALID_ARGUMENT, IID_IFaxActivity, hr); return hr; }
//
// Bring data from Server in the first time
//
if (!m_bInited) { hr = Refresh(); if (FAILED(hr)) { return hr; } }
switch(msgType) { case mtINCOMING: *plNumber = m_ServerActivity.dwIncomingMessages; break; case mtROUTING: *plNumber = m_ServerActivity.dwRoutingMessages; break; case mtOUTGOING: *plNumber = m_ServerActivity.dwOutgoingMessages; break; case mtQUEUED: *plNumber = m_ServerActivity.dwQueuedMessages; break; default: //
// ASSERT(FALSE)
//
ATLASSERT(msgType == mtQUEUED); break; }
return hr; }
//
//========================= REFRESH ============================================
//
STDMETHODIMP CFaxActivity::Refresh() /*++
Routine name : CFaxActivity::Refresh
Routine description:
Refresh the contents of the object : bring new data from the Server.
Author:
Iv Garber (IvG), Jun, 2000
Arguments:
Return Value:
Standard HRESULT code
--*/ { HRESULT hr = S_OK; DBG_ENTER(_T("CFaxActivity::Refresh"), hr);
//
// Get Fax Server Handle
//
HANDLE hFaxHandle = NULL; hr = GetFaxHandle(&hFaxHandle); if (FAILED(hr)) { AtlReportError(CLSID_FaxActivity, GetErrorMsgId(hr), IID_IFaxActivity, hr); return hr; }
//
// Ask from Server new Activity data
//
if (!FaxGetServerActivity(hFaxHandle, &m_ServerActivity)) { hr = Fax_HRESULT_FROM_WIN32(GetLastError()); AtlReportError(CLSID_FaxActivity, GetErrorMsgId(hr), IID_IFaxActivity, hr); CALL_FAIL(GENERAL_ERR, _T("FaxGetServerActivity(hFaxHandle, &ServerActivity)"), hr); return hr; }
m_bInited = true; return hr; }
//
//======================= SUPPORT ERROR INFO ==================================
//
STDMETHODIMP CFaxActivity::InterfaceSupportsErrorInfo( REFIID riid ) /*++
Routine name : CFaxActivity::InterfaceSupportsErrorInfo
Routine description:
ATL's implementation of Support Error Info.
Author:
Iv Garber (IvG), Jun, 2000
Arguments:
riid [in] - reference to the ifc to check.
Return Value:
Standard HRESULT code
--*/ { static const IID* arr[] = { &IID_IFaxActivity }; for (int i=0; i < sizeof(arr) / sizeof(arr[0]); i++) { if (InlineIsEqualGUID(*arr[i],riid)) return S_OK; } return S_FALSE; }
|