/* * Copyright (c) 2023 Fancy Code. * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #ifndef I_APP_PROTOCOL_HANDLE_H #define I_APP_PROTOCOL_HANDLE_H #include "IAppManager.h" #include "StatusCode.h" #include "WebServer.h" #include #include #include typedef struct protocol_packet { protocol_packet() : mData(nullptr), mDataLength(0) { } protocol_packet(void *data, const size_t &size) : mData(data), mDataLength(size) { } ~protocol_packet(); void *mData; size_t mDataLength; } ProtocolPacket; class VAppDataPacket { public: VAppDataPacket() = default; virtual ~VAppDataPacket() = default; }; class IAppProtocolHandle { public: IAppProtocolHandle() = default; virtual ~IAppProtocolHandle() = default; static std::shared_ptr &GetInstance(std::shared_ptr *impl = nullptr); virtual void Init(void); virtual void UnInit(void); virtual void RequestHandle(const char *url, const unsigned int &urlLength, ResponseHandle responseHandle, void *context); virtual void RequestHandleTcp(const char *data, const unsigned int &dataLength, ResponseHandle responseHandle, void *context); virtual void SetAppMonitor(std::shared_ptr &monitor); virtual std::shared_ptr SetRecordingStatus(const RecordingStatus &status); virtual std::shared_ptr SetMicrophoneStatus(const MicrophoneStatus &status); virtual std::shared_ptr SetBatteryStatus(const BatteryStatus &status, const int &batteryCapacity); virtual std::shared_ptr SetSdCardStatus(const SdCardStatus &status); virtual std::shared_ptr DeletedFileMessage(const std::string &file, const StorageFileType &type); virtual std::shared_ptr CreatedFileMessage(const std::string &file, const StorageFileType &type); }; #endif