RCF 回调连接使用示例:客户端和服务端代码详解
下面是一个使用示例,展示了如何使用 RCF::createCallbackConnection() 函数创建一个回调连接:
客户端代码:
#include <iostream>
#include <RCF/RCF.hpp>
void MyCallbackFunction(const std::string& message)
{
std::cout << 'Received callback message: ' << message << std::endl;
}
int main()
{
RCF::RcfInit rcfInit;
// 创建客户端实例
RCF::RcfClient<I_CallbackService> client(RCF::TcpEndpoint('localhost', 50001));
// 创建回调服务器实例
RCF::CallbackConnectionPtr callbackServer = RCF::createCallbackConnection(client);
// 设置回调函数
callbackServer->setCallback(MyCallbackFunction);
// 调用服务器上的回调函数
client->DoCallback();
// 等待回调完成
callbackServer->waitForCallbacks();
return 0;
}
服务端代码:
#include <iostream>
#include <RCF/RCF.hpp>
class CallbackServiceImpl : public I_CallbackService
{
public:
void DoCallback()
{
std::string message = 'Hello from server!';
RCF::RcfSessionPtr session = RCF::getCurrentRcfSession();
RCF::CallbackConnectionPtr callbackConnection = session->getCallbackConnection();
callbackConnection->invokeRemoteCallback(message);
}
};
int main()
{
RCF::RcfInit rcfInit;
// 创建并启动服务端实例
RCF::RcfServer server(RCF::TcpEndpoint(50001));
server.bind<I_CallbackService>(RCF::CreateCallbackServiceImpl<CallbackServiceImpl>());
server.start();
std::cout << 'Server started.' << std::endl;
std::cout << 'Press Enter to exit.' << std::endl;
std::cin.get();
server.stop();
return 0;
}
在上面的示例中,客户端使用 RCF::createCallbackConnection() 函数创建了一个回调连接,并设置了回调函数 MyCallbackFunction()。然后,客户端调用服务器上的回调函数 DoCallback(),服务器通过回调连接将消息发送给客户端,客户端收到消息后会执行回调函数并打印出接收到的消息。
原文地址: https://www.cveoy.top/t/topic/m5qE 著作权归作者所有。请勿转载和采集!