一、事件源类: class CDataTrans { public: CDataTrans(); ~CDataTrans(); bool Open(const unsigned int nDsnSvr, const int nPort, const int nHallId, const int nZoneId,const int nLableId); void Close(); bool SendData(const char* buffer, const int length,int ,int); bool SendData(const char* buffer, const int length,int ,int,int,int,const char* guid ); NET_STAT GetNetStat(void){ return m_DdsServerTrans.moNetStat; } void TimeOutWork(void); void Dump(void); private: void Login(); void KeepLive(); void Logout(); int UnPack(char * buffer , int& length); bool ConnectServer(void); public: sigslot::signal2<char*, int> RecvCallback; -->定义一个信号槽函数模板 private: unsigned int m_nDdsSvr; uint16 m_nDdsPort; CNetSocket m_DdsServerTrans; INT64 mi64LastKeepLiveTime; int m_ui32ZoneId; int m_ui32HallId; int m_ui32LableId; }; 二、 自己实现一个类 class CDnsCallBack:public sigslot::has_slots<> -->公开继承 信号槽类 { public: void OnReCall(char *RecvBuf, int nRecvBufLen) -->事件发生后回调的函数 { } }; 三、连接信号槽 CDataTrans goDnsTrans; goDnsTrans.RecvCallback.connect(&g_dnsBack, &CDnsCallBack::OnReCall) 事件源类对象 信号模板 自己实现类对象 自己实现类中的信号槽回调函数 四 产生信号 RecvCallback(buffer, length);
转载请注明原文地址: https://www.6miu.com/read-85442.html