You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
394 lines
11 KiB
394 lines
11 KiB
// Message.cpp: implementation of the CArchiveMsg class.
|
|
//
|
|
//////////////////////////////////////////////////////////////////////
|
|
|
|
#include "stdafx.h"
|
|
#define __FILE_ID__ 13
|
|
|
|
#ifdef _DEBUG
|
|
#undef THIS_FILE
|
|
static char THIS_FILE[]=__FILE__;
|
|
#define new DEBUG_NEW
|
|
#endif
|
|
|
|
IMPLEMENT_DYNCREATE(CArchiveMsg, CObject)
|
|
|
|
DWORD
|
|
CArchiveMsg::Init (
|
|
PFAX_MESSAGE pMsg,
|
|
CServerNode* pServer
|
|
)
|
|
/*++
|
|
|
|
Routine name : CArchiveMsg::Init
|
|
|
|
Routine description:
|
|
|
|
Constructs a new message from a FAX_MESSAGE structure
|
|
|
|
Author:
|
|
|
|
Eran Yariv (EranY), Jan, 2000
|
|
|
|
Arguments:
|
|
|
|
pMsg [in] - Pointer to FAX_MESSAGE structure
|
|
pServer [in] - pointer to CServerNode object
|
|
|
|
Return Value:
|
|
|
|
Standard Win32 error code
|
|
|
|
--*/
|
|
{
|
|
DWORD dwRes = ERROR_SUCCESS;
|
|
DBG_ENTER(TEXT("CArchiveMsg::Init"), dwRes);
|
|
|
|
ASSERTION(pServer);
|
|
|
|
m_pServer = pServer;
|
|
|
|
m_bValid = FALSE;
|
|
try
|
|
{
|
|
m_dwValidityMask = pMsg->dwValidityMask;
|
|
//
|
|
// Message id
|
|
//
|
|
ASSERTION (m_dwValidityMask & FAX_JOB_FIELD_MESSAGE_ID);
|
|
m_dwlMessageId = pMsg->dwlMessageId;
|
|
|
|
//
|
|
// Broadcast id
|
|
//
|
|
m_dwlBroadcastId = (m_dwValidityMask & FAX_JOB_FIELD_BROADCAST_ID) ?
|
|
pMsg->dwlBroadcastId : 0;
|
|
|
|
//
|
|
// Job type
|
|
//
|
|
ASSERTION (m_dwValidityMask & FAX_JOB_FIELD_TYPE);
|
|
m_dwJobType = pMsg->dwJobType;
|
|
//
|
|
// Extended status
|
|
//
|
|
m_dwExtendedStatus = (m_dwValidityMask & FAX_JOB_FIELD_STATUS_EX) ?
|
|
pMsg->dwExtendedStatus : 0;
|
|
//
|
|
// Job size
|
|
//
|
|
m_dwSize = (m_dwValidityMask & FAX_JOB_FIELD_SIZE) ? pMsg->dwSize : 0;
|
|
|
|
//
|
|
// Page count
|
|
//
|
|
m_dwPageCount = (m_dwValidityMask & FAX_JOB_FIELD_PAGE_COUNT) ? pMsg->dwPageCount : 0;
|
|
|
|
//
|
|
// Original scheduled time
|
|
//
|
|
if (m_dwValidityMask & FAX_JOB_FIELD_ORIGINAL_SCHEDULE_TIME)
|
|
{
|
|
m_tmOriginalScheduleTime = pMsg->tmOriginalScheduleTime;
|
|
}
|
|
else
|
|
{
|
|
m_tmOriginalScheduleTime.Zero ();
|
|
}
|
|
//
|
|
// Submission time
|
|
//
|
|
if (m_dwValidityMask & FAX_JOB_FIELD_SUBMISSION_TIME)
|
|
{
|
|
m_tmSubmissionTime = pMsg->tmOriginalScheduleTime;
|
|
}
|
|
else
|
|
{
|
|
m_tmSubmissionTime.Zero ();
|
|
}
|
|
//
|
|
// Transmission start time
|
|
//
|
|
if (m_dwValidityMask & FAX_JOB_FIELD_TRANSMISSION_START_TIME)
|
|
{
|
|
m_tmTransmissionStartTime = pMsg->tmTransmissionStartTime;
|
|
}
|
|
else
|
|
{
|
|
m_tmTransmissionStartTime.Zero ();
|
|
}
|
|
//
|
|
// Transmission end time
|
|
//
|
|
if (m_dwValidityMask & FAX_JOB_FIELD_TRANSMISSION_END_TIME)
|
|
{
|
|
m_tmTransmissionEndTime = pMsg->tmTransmissionEndTime;
|
|
}
|
|
else
|
|
{
|
|
m_tmTransmissionEndTime.Zero ();
|
|
}
|
|
//
|
|
// Transmission duration
|
|
//
|
|
if ((m_dwValidityMask & FAX_JOB_FIELD_TRANSMISSION_END_TIME) &&
|
|
(m_dwValidityMask & FAX_JOB_FIELD_TRANSMISSION_START_TIME))
|
|
{
|
|
m_tmTransmissionDuration = m_tmTransmissionEndTime - m_tmTransmissionStartTime;
|
|
}
|
|
else
|
|
{
|
|
m_tmTransmissionDuration.Zero ();
|
|
}
|
|
//
|
|
// Priority
|
|
//
|
|
if (m_dwValidityMask & FAX_JOB_FIELD_PRIORITY)
|
|
{
|
|
m_Priority = pMsg->Priority;
|
|
ASSERTION (m_Priority <= FAX_PRIORITY_TYPE_HIGH);
|
|
}
|
|
else
|
|
{
|
|
m_Priority = (FAX_ENUM_PRIORITY_TYPE)-1;
|
|
}
|
|
//
|
|
// Retries
|
|
//
|
|
if (m_dwValidityMask & FAX_JOB_FIELD_RETRIES)
|
|
{
|
|
m_dwRetries = pMsg->dwRetries;
|
|
}
|
|
else
|
|
{
|
|
m_dwRetries = 0;
|
|
}
|
|
//
|
|
// Recipient info
|
|
//
|
|
m_cstrRecipientNumber = pMsg->lpctstrRecipientNumber ?
|
|
pMsg->lpctstrRecipientNumber : TEXT("");
|
|
m_cstrRecipientName = pMsg->lpctstrRecipientName ?
|
|
pMsg->lpctstrRecipientName : TEXT("");
|
|
//
|
|
// Sender info
|
|
//
|
|
m_cstrSenderNumber = pMsg->lpctstrSenderNumber ?
|
|
pMsg->lpctstrSenderNumber : TEXT("");
|
|
m_cstrSenderName = pMsg->lpctstrSenderName ?
|
|
pMsg->lpctstrSenderName : TEXT("");
|
|
//
|
|
// TSID / CSID
|
|
//
|
|
m_cstrTsid = pMsg->lpctstrTsid ?
|
|
pMsg->lpctstrTsid : TEXT("");
|
|
m_cstrCsid = pMsg->lpctstrCsid ?
|
|
pMsg->lpctstrCsid : TEXT("");
|
|
//
|
|
// User
|
|
//
|
|
m_cstrSenderUserName = pMsg->lpctstrSenderUserName ?
|
|
pMsg->lpctstrSenderUserName : TEXT("");
|
|
//
|
|
// Billing
|
|
//
|
|
m_cstrBillingCode = pMsg->lpctstrBillingCode ?
|
|
pMsg->lpctstrBillingCode : TEXT("");
|
|
//
|
|
// Device
|
|
//
|
|
m_cstrDeviceName = pMsg->lpctstrDeviceName ?
|
|
pMsg->lpctstrDeviceName : TEXT("");
|
|
//
|
|
// Document
|
|
//
|
|
m_cstrDocumentName = pMsg->lpctstrDocumentName ?
|
|
pMsg->lpctstrDocumentName : TEXT("");
|
|
//
|
|
// Subject
|
|
//
|
|
m_cstrSubject = pMsg->lpctstrSubject ?
|
|
pMsg->lpctstrSubject : TEXT("");
|
|
//
|
|
// Caller id
|
|
//
|
|
m_cstrCallerID = pMsg->lpctstrCallerID ?
|
|
pMsg->lpctstrCallerID : TEXT("");
|
|
//
|
|
// Routing info
|
|
//
|
|
m_cstrRoutingInfo = pMsg->lpctstrRoutingInfo ?
|
|
pMsg->lpctstrRoutingInfo : TEXT("");
|
|
//
|
|
// Server name
|
|
//
|
|
m_cstrServerName = m_pServer->Machine();
|
|
|
|
m_dwPossibleOperations = FAX_JOB_OP_VIEW | FAX_JOB_OP_DELETE | FAX_JOB_OP_PROPERTIES;
|
|
}
|
|
catch (CException *pException)
|
|
{
|
|
TCHAR wszCause[1024];
|
|
|
|
pException->GetErrorMessage (wszCause, 1024);
|
|
pException->Delete ();
|
|
VERBOSE (EXCEPTION_ERR,
|
|
TEXT("Init caused exception : %s"),
|
|
wszCause);
|
|
dwRes = ERROR_NOT_ENOUGH_MEMORY;
|
|
return dwRes;
|
|
}
|
|
|
|
ASSERTION (ERROR_SUCCESS == dwRes);
|
|
m_bValid = TRUE;
|
|
return dwRes;
|
|
} // CArchiveMsg::Init
|
|
|
|
|
|
DWORD
|
|
CArchiveMsg::GetTiff (
|
|
CString &cstrTiffLocation
|
|
) const
|
|
/*++
|
|
|
|
Routine name : CArchiveMsg::GetTiff
|
|
|
|
Routine description:
|
|
|
|
Retrieves the message's TIFF from the server
|
|
|
|
Author:
|
|
|
|
Eran Yariv (EranY), Jan, 2000
|
|
|
|
Arguments:
|
|
|
|
cstrTiffLocation [out] - Name of TIFF file
|
|
|
|
Return Value:
|
|
|
|
Standard Win32 error code
|
|
|
|
--*/
|
|
{
|
|
DWORD dwRes = ERROR_SUCCESS;
|
|
DBG_ENTER(TEXT("CArchiveMsg::GetTiff"), dwRes);
|
|
|
|
dwRes = CopyTiffFromServer (m_pServer,
|
|
m_dwlMessageId,
|
|
(JT_SEND == m_dwJobType) ?
|
|
FAX_MESSAGE_FOLDER_SENTITEMS :
|
|
FAX_MESSAGE_FOLDER_INBOX,
|
|
cstrTiffLocation);
|
|
if (ERROR_SUCCESS != dwRes)
|
|
{
|
|
CALL_FAIL (GENERAL_ERR, TEXT("CopyTiffFromServer"), dwRes);
|
|
}
|
|
return dwRes;
|
|
}
|
|
|
|
DWORD
|
|
CArchiveMsg::Delete ()
|
|
/*++
|
|
|
|
Routine name : CArchiveMsg::Delete
|
|
|
|
Routine description:
|
|
|
|
Deletes the message
|
|
|
|
Author:
|
|
|
|
Eran Yariv (EranY), Jan, 2000
|
|
|
|
Return Value:
|
|
|
|
Standard Win32 error code
|
|
|
|
--*/
|
|
{
|
|
DWORD dwRes = ERROR_SUCCESS;
|
|
DBG_ENTER(TEXT("CArchiveMsg::Delete"), dwRes);
|
|
|
|
if (!(GetPossibleOperations() & FAX_JOB_OP_DELETE))
|
|
{
|
|
VERBOSE (DBG_MSG, TEXT("Message can no longer be deleted"));
|
|
dwRes = ERROR_CAN_NOT_COMPLETE;
|
|
return dwRes;
|
|
}
|
|
HANDLE hFax;
|
|
dwRes = m_pServer->GetConnectionHandle (hFax);
|
|
if (ERROR_SUCCESS != dwRes)
|
|
{
|
|
CALL_FAIL (GENERAL_ERR, TEXT("CServerNode::GetConnectionHandle"), dwRes);
|
|
return dwRes;
|
|
}
|
|
START_RPC_TIME(TEXT("FaxRemoveMessage"));
|
|
if (!FaxRemoveMessage (hFax,
|
|
m_dwlMessageId,
|
|
(JT_SEND == m_dwJobType) ?
|
|
FAX_MESSAGE_FOLDER_SENTITEMS :
|
|
FAX_MESSAGE_FOLDER_INBOX))
|
|
{
|
|
dwRes = GetLastError ();
|
|
END_RPC_TIME(TEXT("FaxRemoveMessage"));
|
|
m_pServer->SetLastRPCError (dwRes);
|
|
CALL_FAIL (RPC_ERR, TEXT("FaxRemoveMessage"), dwRes);
|
|
return dwRes;
|
|
}
|
|
END_RPC_TIME(TEXT("FaxRemoveMessage"));
|
|
|
|
ASSERTION (ERROR_SUCCESS == dwRes);
|
|
return dwRes;
|
|
} // CArchiveMsg::Delete
|
|
|
|
|
|
DWORD
|
|
CArchiveMsg::Copy(
|
|
const CArchiveMsg& other
|
|
)
|
|
{
|
|
DWORD dwRes = ERROR_SUCCESS;
|
|
DBG_ENTER(TEXT("CArchiveMsg::Copy"), dwRes);
|
|
|
|
try
|
|
{
|
|
m_dwValidityMask = other.m_dwValidityMask;
|
|
m_dwJobType = other.m_dwJobType;
|
|
m_dwExtendedStatus = other.m_dwExtendedStatus;
|
|
m_dwlMessageId = other.m_dwlMessageId;
|
|
m_dwlBroadcastId = other.m_dwlBroadcastId;
|
|
m_dwSize = other.m_dwSize;
|
|
m_dwPageCount = other.m_dwPageCount;
|
|
m_tmOriginalScheduleTime = other.m_tmOriginalScheduleTime;
|
|
m_tmSubmissionTime = other.m_tmSubmissionTime;
|
|
m_tmTransmissionStartTime = other.m_tmTransmissionStartTime;
|
|
m_tmTransmissionEndTime = other.m_tmTransmissionEndTime;
|
|
m_tmTransmissionDuration = other.m_tmTransmissionDuration;
|
|
m_Priority = other.m_Priority;
|
|
m_dwRetries = other.m_dwRetries;
|
|
m_cstrRecipientNumber = other.m_cstrRecipientNumber;
|
|
m_cstrRecipientName = other.m_cstrRecipientName;
|
|
m_cstrSenderNumber = other.m_cstrSenderNumber;
|
|
m_cstrSenderName = other.m_cstrSenderName;
|
|
m_cstrTsid = other.m_cstrTsid;
|
|
m_cstrCsid = other.m_cstrCsid;
|
|
m_cstrSenderUserName = other.m_cstrSenderUserName;
|
|
m_cstrBillingCode = other.m_cstrBillingCode;
|
|
m_cstrDeviceName = other.m_cstrDeviceName;
|
|
m_cstrDocumentName = other.m_cstrDocumentName;
|
|
m_cstrSubject = other.m_cstrSubject;
|
|
m_cstrCallerID = other.m_cstrCallerID;
|
|
m_cstrRoutingInfo = other.m_cstrRoutingInfo;
|
|
m_cstrServerName = other.m_cstrServerName;
|
|
|
|
m_bValid = other.m_bValid;
|
|
}
|
|
catch(...)
|
|
{
|
|
dwRes = ERROR_NOT_ENOUGH_MEMORY;
|
|
}
|
|
|
|
return dwRes;
|
|
|
|
} // CArchiveMsg::Copy
|