HivaBuffer是确定性调度框架特有的内存类型,用户可将数据拷贝到HivaBuffer,并调用消息发布Publish接口将HivaBuffer发布出去。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 | namespace OpenHiva { class HivaBuffer{ public: explicit HivaBuffer (); void ConstructFromMbuf(struct Mbuf *mbufPtr); // 内部使用,构造HivaBuffer uint32_t GetBuff (void *&dataPtr, size_t &dataLen); // 获取Buff数据区写入数据的起始地址和长度 uint32_t SetBuffDataLen(const size_t dataLen); // 设置已写入Buff数据区的数据长度 uint32_t SetUserData (const UserData &data); // 往UserData数据区写入数据 uint32_t GetUserData (UserData &data); // 获取UserData数据区的数据 uint32_t CopyHivaBuffer(HivaBuffer &hivaBuffer); // 拷贝HivaBuffer输出新对象newBuffer uint32_t FreeHivaBuffer(); // HivaBuffer释放 private: Mbuf * mbufPtr_; friend HivaBuffPool; friend Publisher; friend BufferMessage; }; } |
其内存模型如图1:
1 2 3 | struct OpenHiva::UserData { char[96] userData; // 96bytes }; |
用户可通过SetUserData接口设置HivaBuffer内的UserData数据,也可通过GetUserData获取HivaBuffer内的UserData数据。