// 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