QRPC 例子(server端)

# 服务器端的pro文件
# 注意, simpleswitch.rep 文件在服务器端目录下。server 和 client 目录平行
QT -= gui
QT += remoteobjects

CONFIG += c++11 console
CONFIG -= app_bundle

SOURCES += main.cpp \
    simpleswitch.cpp

REPC_SOURCE = simpleswithch.rep

HEADERS += \
    simpleswitch.h
// server的main.cpp

#include <QCoreApplication>
#include "simpleswitch.h"

int main(int argc, char *argv[])
{
    QCoreApplication a(argc, argv);
    SimpleSwitch srcSwitch; // create simple switch

// 示范 1 
//    QRemoteObjectHost srcNode(QUrl(QStringLiteral("local:switch"))); // create host node without Registry
// 示范 3 注册制
    QRemoteObjectRegistryHost regNode(QUrl(QStringLiteral("local:registry"))); // create node that hosts registry
    QRemoteObjectHost srcNode(QUrl(QStringLiteral("local:switch")), QUrl(QStringLiteral("local:registry"))); // create node that will host source and connect to registry




    srcNode.enableRemoting(&srcSwitch); // enable remoting/sharing

    return a.exec();
}
#ifndef SIMPLESWITCH_H
#define SIMPLESWITCH_H

// simpleswitch.h

#include <QObject>
#include "rep_simpleswithch_source.h"

class SimpleSwitch : public SimpleSwitchSimpleSource
{
    Q_OBJECT
public:
    SimpleSwitch(QObject *parent = nullptr);
    ~SimpleSwitch();
    virtual void server_slot(bool clientState);
public Q_SLOTS:
    void timeout_slot();
private:
    bool mCurrentStatus;
    QTimer *stateChangeTimer;
};

#endif // SIMPLESWITCH_H
// simpleswitch.cpp

#include "simpleswitch.h"
#include <QTimer>

SimpleSwitch::SimpleSwitch(QObject *parent) : SimpleSwitchSimpleSource(parent)
{
    stateChangeTimer = new QTimer(this);
    QObject::connect(stateChangeTimer, SIGNAL(timeout()), this, SLOT(timeout_slot()));
    stateChangeTimer->start(2000); 
    qDebug() << "Source Node Started";
}

SimpleSwitch::~SimpleSwitch()
{
    stateChangeTimer->stop();
}

void SimpleSwitch::server_slot(bool clientState)
{
    qDebug() << "Replica state is " << clientState;
}

void SimpleSwitch::timeout_slot()
{
    if (currState())
        setCurrState(false);
    else
        setCurrState(true);
    qDebug() << "Source State is "<<currState();

}
// SimpleSwitch.rep

class SimpleSwitch
{
    PROP(bool currState=false);
    SLOT(server_slot(bool clientState));
};

 

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值