123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119 |
- #pragma once
- #include "SpBase.h"
- #include "SpIni.h"
- #include "libvideorecord.h"
- #include "EventCode.h"
- #include "fileutil.h"
- #include "array.h"
- #include <memutil.h>
- #include <algorithm>
- #include <assert.h>
- #include "rvc_media_common.h"
- #include "Recorder_client_g.h"
- #include "Recorder_def_g.h"
- #include "Recorder_server_g.h"
- #include "recordinfo.h"
- namespace Recorder {
- class CRecorderEntity : public CEntityBase, public CHostApi, public ILogListener, public ISysVarListener
- {
- public:
- CRecorderEntity() : m_bStarted(false), m_pRecorder(NULL), m_bEncFlag(true){
- 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);
- bool InitRecorder();
- bool ReleaseRecorder();
- 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 GetRecordCamera();
- 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);
- 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;
- bool m_bEncFlag;
- 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;
- };
- }
|