123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142 |
- #pragma once
- #include "SpBase.h"
- #include "SpIni.h"
- #include "libvideorecord.h"
- #include "EventCode.h"
- #if defined(RVC_OS_WIN)
- #include "fileutil.h"
- #include "array.h"
- #include <memutil.h>
- #include "filecryption.h"
- #include <algorithm>
- #include <assert.h>
- #endif //RVC_OS_WIN
- #include "libvideorecord.h"
- #include "rvc_media_common.h"
- #include "Recorder_client_g.h"
- #include "Recorder_def_g.h"
- #include "Recorder_server_g.h"
- #include "recordinfo.h"
- #ifndef RVC_UPLOAD_VIDEORECORDING_HTTP_API
- #define RVC_UPLOAD_VIDEORECORDING_HTTP_API "/api/upload/video_recording"
- #endif // !RVC_CALLROUTE_HTTP_API
- #ifndef RVC_HTTPTIMEOUT
- #define RVC_HTTPTIMEOUT 10
- #endif // !RVC_HTTPTIMEOUT
- namespace Recorder {
- class CRecorderEntity : public CEntityBase, public CHostApi, public ILogListener, public ISysVarListener
- {
- public:
- CRecorderEntity() : m_bStarted(false), m_pRecorder(NULL), m_LastSaveSessionId("N"), m_iSeriesNum(0), m_iMovedSeriesNum(0), m_bMoveFlag(false), m_bEncFlag(false), m_eRecordType(eMP4), m_iRecordMode(0){
- m_strHttpServerAPI = RVC_UPLOAD_VIDEORECORDING_HTTP_API;
- m_iHttpTimeOut = RVC_HTTPTIMEOUT;
- m_strHttpServerAddr = NULL;
- m_strAppVersion = NULL;
- m_strTerminalId = NULL;
- memset(m_strRecordName, 0, MAX_PATH);
- m_eBusinessStatus = eInterrupt;
- }
- virtual ~CRecorderEntity() {}
- virtual const char* GetEntityName() const { return "Recorder"; }
- virtual bool IsService() const { return true; }
- virtual CServerSessionBase* OnNewSession(const char* pszRemoteEntityName, const char* pszClass);
- virtual void OnPreStart(CAutoArray<CSimpleStringA> strArgs, CSmartPointer<ITransactionContext> pTransactionContext);
- virtual void OnPreClose(EntityCloseCauseEnum eCloseCause, CSmartPointer<ITransactionContext> pTransactionContext);
- ErrorCodeEnum __OnStart(ErrorCodeEnum preOperationError);
- ErrorCodeEnum __OnClose(ErrorCodeEnum preOperationError);
- #if defined(RVC_OS_WIN)
- virtual void WmpDebug(const char* fmt, ...);
- #else
- bool InitRecorder();
- bool ReleaseRecorder();
- #endif //RVC_OS_WIN
- virtual void OnStarted();
- virtual void Debug(record_loglevel elevel, const char* fmt, ...);
- virtual void vDebug(record_loglevel elevel, const char* str, va_list list);
- virtual int GetActiveCamera();
- virtual void OnRecordFailed(eRvcRecordFailedCase eCase, const char* pszMessage, bool bRecordDevFault);
- virtual void OnRecordEntityExcption();
- virtual void OnRecordFinished();
- virtual void OnASectionFinished(const char* pszMessage, int iSerialNum, bool bfinished);
- virtual int GetCameraState();
- virtual void OnLog(const CAutoArray<CUUID>& SubIDs, const CUUID nLogID, const LogTypeEnum eLogType, const SeverityLevelEnum eLevel,
- const DWORD dwSysError, const DWORD dwUserCode, const DWORD dwEntityInstanceID, const WORD wEntityDevelID,
- const CAutoArray<DWORD>& Param, const char* pszEntityName, const char* pszModuleName, const char* pszMessage, const linkContext& pLinkInfo);
- void StartRecord(const char* videofilename);
- void StopRecord();
- bool GetStartFlag() { return m_bStarted; }
- void SetRecordSessionID(const char* strRecordID);
- void GetRecordSessionID(char* strRecordID, size_t uLen);
- private:
- virtual void OnSysVarEvent(const char* pszKey, const char* pszValue, const char* pszOldValue, const char* pszEntityName);
- virtual void OnSelfTest(EntityTestEnum eTestType, CSmartPointer<ITransactionContext> pTransactionContext);
- DeviceTypeEnum RvcGetDeviceType();
- int HandleSaveVideoRecord(const char* videofilename);
- int GetRecordVideoInfo(const char* videofilename, char* strSession, size_t uSessionLen, int* iSeriesNum, char* strFormat, size_t uFormatLen);
- int HandleFinishedVideoRecord(const char* videofilename);
- int SaveExceptionRecordVideos();
- int HandleEncryptVideoRecord(const char* videofilename);
- bool IsCurrentTerminalMathed();
- int DeleteExceptionLogFiles();
- ErrorCodeEnum LoadEntityConfig();
- ErrorCodeEnum PostVideoRecordInfos();
- ErrorCodeEnum AddToVideoRecordList(const char* videofilename);
- ErrorCodeEnum HandleExceptionRecordVideos();
- private:
- DeviceTypeEnum m_eDeviceType;
- int m_iActiveCamera;
- int m_iCameraState;
- CAutoArray<CUUID> m_arrListener;
- bool m_bStarted;
- Clibvideorecord* m_pRecorder;
- CSimpleStringA m_terminalNo;
- CSimpleStringA m_TempDir;
- CSimpleStringA m_RecordSaveDir;
- CSimpleStringA m_LastSaveSessionId;
- int m_iSeriesNum;
- int m_iMovedSeriesNum; //ÏàͬsessionºÅÒÑÒÆ¶¯ÎļþÊý
- bool m_bMoveFlag;
- bool m_bEncFlag;
- eVideoFormat m_eRecordType;
- int m_iRecordMode;
- CSimpleStringA m_strHttpServerAddr;
- CSimpleStringA m_strHttpServerAPI;
- int m_iHttpTimeOut;
- CSimpleStringA m_strAppVersion;
- CSimpleStringA m_strTerminalId;
- vector<record_item_t> m_vRecordList;
- char m_strRecordName[MAX_PATH];
- eRvcBusinessStatus m_eBusinessStatus;
- };
- class RecordServiceSession : public RecorderSerVice_ServerSessionBase
- {
- public:
- explicit RecordServiceSession(CRecorderEntity* pEntity) : m_pEntity(pEntity) {}
- virtual void Handle_StartTransactionRecord(SpReqAnsContext<RecorderSerVice_StartTransactionRecord_Req, RecorderSerVice_StartTransactionRecord_Ans>::Pointer ctx);
- virtual void Handle_StopTransactionRecord(SpReqAnsContext<RecorderSerVice_StopTransactionRecord_Req, RecorderSerVice_StopTransactionRecord_Ans>::Pointer ctx);
-
- private:
- CRecorderEntity* m_pEntity;
- };
- }
|