kudu源码分析之一常量constants

这个目录下主要对rpc做一些源码解读以及分析。
本文主要分析constants.h constatns.cc


#ifndef KUDU_RPC_RPC_CONSTANTS_H
#define KUDU_RPC_RPC_CONSTANTS_H

#include <cstdint>
#include <set>

#include "kudu/rpc/rpc_header.pb.h"

namespace kudu {
    namespace rpc {
//都是一些常量
// Magic number bytes sent at connection setup time.
        extern const char *const kMagicNumber;
//声明全局变量const char* const kMagic 但未定义
//无法修改指针以及内容

// App name for SASL library init
        extern const char *const kSaslAppName;
//应用名用于sasl库初始化
//SASL全称Simple Authentication and Security Layer,
//是一种用来扩充C/S模式验证能力的机制。
//rpc涉及到clienet调用server 加验证更安全 以免被没有认证的客户端调用

// Network protocol name for SASL library init
        extern const char *const kSaslProtoName;
//sasl初始化用到的网络协议名


// Current version of the RPC protocol.
        static const uint32_t kCurrentRpcVersion = 9;
//当前的rpcversion协议版本号为9

// From Hadoop.
        static const int32_t kInvalidCallId = -2;
        static const int32_t kConnectionContextCallId = -3;
        static const int32_t kNegotiateCallId = -33;

        static const uint8_t kMagicNumberLength = 4;
        static const uint8_t kHeaderFlagsLength = 3;
//非法调用id-2
//链接上下文调用id-3 不懂 回头看的时候再来解释
//协议调用id -33 不懂
//魔数字段长度为4字节
//头标记长度为3 不懂

// There is a 4-byte length prefix before any packet.
        static const uint8_t kMsgLengthPrefixLength = 4;
//报文长度用4个字节表示

// The set of RPC features that this server build supports.
// Non-const for testing.
        extern std::set <RpcFeatureFlag> kSupportedServerRpcFeatureFlags;
//服务端这边支持的rpc特性集合

// The set of RPC features that this client build supports.
// Non-const for testing.
        extern std::set <RpcFeatureFlag> kSupportedClientRpcFeatureFlags;
//客户端这边支持的rpc特性
    } // namespace rpc
} // namespace kudu

#endif // KUDU_RPC_RPC_CONSTANTS_H

看完了constant.h 但是有些陌生名词还是比较难猜测其具体含义,可能在别的rpc组件实现中会用到这些常量。

constant.cc更加简洁:


#include "kudu/rpc/constants.h"

using std::set;

namespace kudu {
    namespace rpc {

        const char *const kMagicNumber = "hrpc";
        const char *const kSaslAppName = "kudu";
        const char *const kSaslProtoName = "kudu";

        //为之前的声明全局变量符号做定义
        //遵循头文件声明 cpp定义的规则

// NOTE: the TLS flag is dynamically added based on the local encryption
// configuration.
//
// NOTE: the TLS_AUTHENTICATION_ONLY flag is dynamically added on both
// sides based on the remote peer's address.
        set <RpcFeatureFlag> kSupportedServerRpcFeatureFlags = {APPLICATION_FEATURE_FLAGS};
        set <RpcFeatureFlag> kSupportedClientRpcFeatureFlags = {APPLICATION_FEATURE_FLAGS};
//flag集合 APPLICATION_FEATURE_FLAGS
//这个宏里面定义了哪些flags呢 暂时没找到

    } // namespace rpc
} // namespace kudu

总的来说 通过这两个文件看不出什么,还是请期待下面的系列。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值