MprpcApplication类(负责框架的一些基本操作,如初始化等)


MprpcApplication类是mprpc框架的基础类,负责框架的一些初始化操作,使用单例模式设计

mprpcapplication.h

#pragma once

#include "mprpcchannel.h"
#include "mprpcconfig.h"
#include "mprpccontroller.h"

//mprpc框架的基础类,负责框架的一些初始化操作,使用单例模式设计
class MprpcApplication
{
public:
    //初始化框架
    static void Init(int argc, char **argv);
    //获取MprpcApplication类的对象
    static MprpcApplication &GetInstance(); //单例模式
    //获取MprpcConfig类的对象m_config
    static MprpcConfig &GetConfig();

private:
    static MprpcConfig m_config;
    MprpcApplication(){};                                 //构造函数
    MprpcApplication(const MprpcApplication &) = delete;  //删除拷贝构造函数
    MprpcApplication(const MprpcApplication &&) = delete; //删除移动构造函数
};

mprpcapplication.cc

#include "mprpcapplication.h"
#include <iostream>
#include <unistd.h> //getopt()的头文件https://blog.csdn.net/astrotycoon/article/details/46047449

//m_config是static成员变量,一定要在使用前定义或初始化(或只分配内存而不初始化)
MprpcConfig MprpcApplication::m_config;

void ShowArgsHelp()
{
    std::cout << "format: command -i <configfile>" << std::endl;
}

void MprpcApplication::Init(int argc, char **argv)
{
    if (argc < 2) //如果argc<2,说明程序rpc服务站点没有传入参数
    {
        ShowArgsHelp();
        exit(EXIT_FAILURE); //退出,宏EXIT_FAILURE==1
    }
    int c = 0;
    std::string config_file;
    while ((c = getopt(argc, argv, "i:")) != -1)
    {
        switch (c)
        {
        case 'i': //
            config_file = optarg;
            break;
        case ':':
            ShowArgsHelp();
            break;
        case '?':
            ShowArgsHelp();
            break;
        default:
            break;
        }
    }
    //加载配置文件
    m_config.LoadConfigFile(config_file.c_str());
    std::cout << "rpcserverip:" << m_config.Load("rpcserverip") << std::endl;
    std::cout << "rpcserverport:" << m_config.Load("rpcserverport") << std::endl;
}

MprpcApplication &MprpcApplication::GetInstance()
{
    //加了static关键字,因此是线程安全的(类似于饿汉模式)
    static MprpcApplication app;
    return app;
}

MprpcConfig &MprpcApplication::GetConfig()
{
    return m_config;
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值