#pragma once // 下列 ifdef 块是创建使从 DLL 导出更简单的 // 宏的标准方法。此 DLL 中的所有文件都是用命令行上定义的 EBUS_EXPORTS // 符号编译的。在使用此 DLL 的 // 任何其他项目上不应定义此符号。这样,源文件中包含此文件的任何其他项目都会将 // EBUS_API 函数视为是从 DLL 导入的,而此 DLL 则将用此宏定义的 // 符号视为是被导出的。 #ifndef EBUS_EXPORTS #ifdef _WIN64 #ifdef _DEBUG #pragma comment(lib, "eBusX64D.lib") #else #pragma comment(lib, "eBusX64.lib") #endif #else #ifdef _DEBUG #pragma comment(lib, "eBusD.lib") #else #pragma comment(lib, "eBus.lib") #endif #endif #endif #ifdef EBUS_EXPORTS #define EBUS_API __declspec(dllexport) #define EBUS_C_API extern "C" __declspec(dllexport) #else #define EBUS_API __declspec(dllimport) #define EBUS_C_API extern "C" __declspec(dllimport) #endif #include "DeviceBus.h" #define EBUS_CONNECTION_LOCAL ("Local") #define EBUS_CONNECTION_BUSID ("BusId") #define EBUS_CONNECTION_PORT ("Port") #define EBUS_CONNECTION_ROUTERIP ("RouterIp") /// /// 完成eBus服务的初始化 /// /// 使能日志 /// EBUS_C_API void InitEbusEnv(bool EnableLog); /// /// 清理eBus服务 /// /// EBUS_C_API void QuitEbusEnv(); // /// /// 设备bus实现,使用eBus和p2p 两个通道;完成ccos包的收发,含大对象(图像),p2p收到的包转回 Service处理 /// class EBUS_API eBus : public DeviceBUS { HANDLE m_pBusService; //实际的eBus实现服务对象 bool TryGetConnectOptions(ResDataObject &connection, const char *pKey, ResDataObject &result); public: eBus(void); virtual ~eBus(void); //Local Connection //Local:1 //Port:xxx (OPTIONAL) //srcBusId:BusId //Ethernet Connection //Local:0 //Port:xxx (OPTIONAL) //RouterIp:ipaddress //srcBusId:BusId /* if RouterIp is empty,eBus will find one . if eBus found more than one,it will fail and return false. */ virtual bool Connect(ResDataObject &connection); virtual void DisConnect(); virtual bool IsConnected(); virtual void Quit(); virtual void SetLogPath(const char *pPath); virtual bool SendSMPacket(const char *pTargetID, const char *pContext, unsigned long long nShareMemID); virtual bool SendRawPacket(const char *pTargetID, const char *pContext, DWORD ChannelId); virtual bool SendPacket(const char *pTargetID, const char *pContext, const char *pBlock = NULL, DWORD BlockSize = 0); virtual void BlobDataArrived(const char *pMsg, unsigned char *pBlockData, DWORD BlockDataLen); virtual void InitP2P(const char *pszIp, const char *pszLocalBusId, bool AsServer); virtual void UnRegistThread(DWORD Tid); };