123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105 |
- //
- // RUDataTransMgr.cpp
- // base_world_ios
- //
- // Created by ZhengSong on 2023/2/28.
- //
- #include "RUDataTransMgr.h"
- NS_RU_BEGIN
- DataTransMgr::DataTransMgr() {}
- DataTransMgr::~DataTransMgr() {
- CC_SAFE_DELETE(_zmqReq);
- CC_SAFE_DELETE(_zmqSub);
- CC_SAFE_DELETE(_zmqPub);
- CC_SAFE_DELETE(_zmqRep);
- }
- static DataTransMgr* _instance = nullptr;
- DataTransMgr* DataTransMgr::getInstance() {
- if(_instance == nullptr) {
- _instance = new DataTransMgr();
- }
- return _instance;
- }
- void DataTransMgr::connectSync(const std::string& sender, const std::string& receiver) {
- if(_zmqReq || _zmqSub) {
- CCASSERT(false, "重复连接");
- return;
- }
- _zmqReq = new red_zmq::Req(sender);
- _zmqSub = new red_zmq::Sub(receiver, CC_CALLBACK_1(DataTransMgr::_handlePubMessage, this));
- }
- void DataTransMgr::connectAsync(const std::string& sender, const std::string& receiver) {
- if(_zmqPub || _zmqRep) {
- CCASSERT(false, "重复连接");
- return;
- }
- _zmqPub = new red_zmq::Pub(sender);
- _zmqRep = new red_zmq::Rep(receiver, CC_CALLBACK_1(DataTransMgr::_handleReqMessage, this));
- }
- void DataTransMgr::sendMsgToSubscriber(const std::string& command, const std::string& data) {
- CCASSERT(_zmqPub, "");
- if(_zmqPub) {
- Json::object obj;
- obj["action"] = Json(command);
- obj["data"] = Json(data);
- Json msg(obj);
- _zmqPub->pubMsg(msg.dump().c_str());
- }
- }
- std::string DataTransMgr::requestMsg(const std::string& command, const std::string& data) {
- CCASSERT(_zmqReq, "");
- if(_zmqReq) {
- Json::object obj;
- obj["action"] = Json(command);
- obj["data"] = Json(data);
- Json msg(obj);
- return _zmqReq->sendMsg(msg.dump().c_str());
- }
- return "";
- }
- void DataTransMgr::setDataTransDelegate(DataTransDelegate* delegate) {
- _dataTransDelegate = delegate;
- }
- void DataTransMgr::_handlePubMessage(const std::string& msg) {
- std::string err;
- Json js = Json::parse(msg, err);
- if(err.size() > 0) {
- CCASSERT(false, "解析出错");
- return ;
- }
- std::string command = js["action"].string_value();
- std::string data = js["data"].string_value();
- CCASSERT(_dataTransDelegate, "请设置代理");
- if(_dataTransDelegate) {
- return _dataTransDelegate->handleReceiveMessageFromPub(command, data);
- }
- }
- std::string DataTransMgr::_handleReqMessage(const std::string& msg) {
- std::string err;
- Json js = Json::parse(msg, err);
- if(err.size() > 0) {
- CCASSERT(false, "解析出错");
- return "";
- }
- std::string command = js["action"].string_value();
- std::string data = js["data"].string_value();
- CCASSERT(_dataTransDelegate, "请设置代理");
- if(_dataTransDelegate) {
- return _dataTransDelegate->handleReceiveMsgFromReq(command, data);
- }
- return "";
- }
- NS_RU_END
|