1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495 |
- #ifndef SERVER_H
- #define SERVER_H
- #include "common.h"
- #include <string>
- using namespace std;
- #ifdef __cplusplus
- extern "C" {
- #endif
- #include "net.h"
- #ifdef __cplusplus
- };
- #endif
- class Server
- {
- enum SERVER_START_STEP {
- SSS_NULL,
- SSS_PUSH,
- SSS_ENABLE_TUNNEL_REVERSE,
- SSS_ENABLE_TUNNEL_FORWARD,
- SSS_EXECUTE_SERVER,
- SSS_RUNNING,
- };
- public:
- struct ServerParams {
- string serial = ""; // 设备序列号
- unsigned short localPort = 27183; // reverse时本地监听端口
- unsigned short maxSize = 0; // 视频分辨率
- unsigned int bitRate = 0; // 视频比特率
- string crop = "-"; // 视频裁剪
- bool sendFrameMeta = false; // 是否发送mp4帧数据
- bool control = true; // 安卓端是否接收键鼠控制
- bool useReverse = true; // true:先使用adb reverse,失败后自动使用adb forward;false:直接使用adb forward
- };
- explicit Server();
- void SetServerStartResultCallback(void (*callback)(bool ,void*), void* parameter);
- void SetConnectToResultCallback(void (*callback)(bool, string, Size, void*), void* parameter);
- bool start(Server::ServerParams params);
- bool server_connect_to() ;
- bool isReverse();
- Server::ServerParams getParams();
- socket_t getVideoSocket();
- socket_t getControlSocket();
- void stop();
- protected:
- private:
- const string& getServerPath();
- bool pushServer();
- bool enableTunnelReverse();
- bool disableTunnelReverse();
- bool enableTunnelForward();
- bool disableTunnelForward();
- bool execute();
- bool startServerByStep();
- bool readInfo(socket_t videoSocket, string& deviceName, Size& size);
- private:
- string m_serverPath = "";
- public:
- socket_t m_serverSocket = INVALID_SOCKET;
- socket_t m_videoSocket = INVALID_SOCKET;
- socket_t m_controlSocket = INVALID_SOCKET;
- private:
- bool m_tunnelEnabled = false;
- bool m_tunnelForward = false; // use "adb forward" instead of "adb reverse"
- unsigned int m_acceptTimeoutTimer = 0;
- unsigned int m_connectTimeoutTimer = 0;
- unsigned int m_connectCount = 0;
- unsigned int m_restartCount = 0;
- string m_deviceName = "";
- Size m_deviceSize = {0, 0};
- ServerParams m_params;
- SERVER_START_STEP m_serverStartStep = SSS_NULL;
- void (*m_server_start_result_callback)(bool ,void*);
- void (*m_connect_to_result_callback)(bool, string, Size, void*);
- void *m_parameter;
- };
- #endif // SERVER_H
|