modelbox::DataContext

每一个功能单元当中存放数据上下文的所有接口

函数 作用
Input 获取功能单元输入端口数据
Output 获取功能单元输出端口数据
External
HasError datacontext当中是否存在error
SendEvent 发送event
SetPrivate 设置datacontext中的私有Meta值
GetPrivate 获取datacontext中的私有Meta值
GetInputMeta 获取datacontext当中绑定在input端口的值
SetOutputMeta 设置datacontext当中绑定在output端口的值
GetSessionConfig 获取datacontext当中的session config
GetSessionContext 获取datacontext当中的session_context
GetStatistics 获取statistics对象

Input

获取功能单元输入端口对象

    std::shared_ptr<BufferListMap> Input() const;
    std::shared_ptr<BufferList> Input(const std::string &port);

Output

获取功能单元输出端口数据

    std::shared_ptr<BufferListMap> Output() const;
    std::shared_ptr<BufferList> Output(const std::string &port);

args:

  • port (string) —— 输入端口名

return:

modelbox::BufferListMap (map) —— 按照input port name存放BufferList的map

modelbox::BufferList (modelbox::BufferList) —— 存放对应input port的BufferList数据

  • example
    Status Process(std::shared_ptr<DataContext> data_ctx) {
        // 1个input,name为“input”; 1个output, name为“output”
        auto inputs = data_ctx->Input();
        auto outputs = data_ctx->Output();
        auto input = data_ctx->Input("input");
        auto output = data_ctx->Output("output");

    }

External

获取datacontext绑定的从input端点传入的BufferList

    std::shared_ptr<BufferList> External();

args:

return:

modelbox::BufferList

example:

    Status Process(std::shared_ptr<DataContext> data_ctx) {
        // 1个input,name为“input”; 1个output, name为“output”
        auto input = data_ctx->External();
    }

SendEvent

从当前数据上下文发送event给调度器可重新调度当前功能单元

    void SendEvent(std::shared_ptr<FlowUnitEvent> event);

args:

modelbox::FlowUnitEvent 可以参考FlowUnitEvent的说明和接口

return:

example:

    Status Process(std::shared_ptr<DataContext> data_ctx) {
        auto event = std::make_shared<FlowUnitEvent>();
        data_ctx->SendEvent(event);
    }

result:

具体接口参见FlowUnitEvent

HasError

判断当前datacontext是否存在error

    bool HasError();

args:

return:

bool, 是否存在error

example:

    Status Process(std::shared_ptr<DataContext> data_ctx) {
        auto res = data_ctx->HasError();
    }

SetPrivate

设置当前flowunit中保存在DataContext中的对象

    void SetPrivate(const std::string &key,
                          std::shared_ptr<void> private_content);

args:

  • key (string) —— 设置对象的key值
  • private_content (shared_ptr<void>) —— 设置对象的val的智能指针

return:

GetPrivate

获取当前flowunit中保存在DataContext中的对象

    std::shared_ptr<void> GetPrivate(const std::string &key);

args:

  • key (str) —— 需要获取对象的key值

return:

shared_ptr<void> key值对应的value的智能指正

example:

    Status DataPre(std::shared_ptr<DataContext> data_ctx) {
        auto index_counter = std::make_shared<int64_t>(0);
        data_ctx->SetPrivate("index", index_counter);
    }

    Status Process(std::shared_ptr<DataContext> data_ctx) {
        auto index_counter = data_ctx->GetPrivate("index");
        MBLOG_INFO << *index_counter;
    }

result:

0

GetInputMeta

flowunit获取input端口的数据

    const std::shared_ptr<DataMeta> GetInputMeta(
      const std::string &port);

args:

  • port (string) —— input端口的名称

return:

modelbox::DataMeta 端口的数据

SetOutputMeta

flowunit获取input端口的数据

    void SetOutputMeta(const std::string &port,
                             std::shared_ptr<DataMeta> data_meta);

args:

  • port (string) —— output端口的名称
  • data_meta (modelbox::DataMeta) —— 端口的数据,具体参见DataMeta

return:

example:

    Status Process(std::shared_ptr<DataContext> data_ctx) {
        auto input_meta = data_ctx->GetInputMeta("input")
        data_ctx->SetOutputMeta("output", input_meta)
    }

result:

获取input端口的meta和直接将该meta设置给output, modelbox::DataMeta参照data meta的接口

GetSessionConfig

获取当前数据上下文的SessionConfig

    std::shared_ptr<Configuration> GetSessionConfig();

args:

return:

modelbox::Configuration

GetSessionContext

获取当前数据上下文的SessionContext

    std::shared_ptr<SessionContext> GetSessionContext();

args:

return:

modelbox::SessionContext

GetStatistics

获取当前数据上下文的Statistics

    std::shared_ptr<StatisticsItem> GetStatistics(
      DataContextStatsType type = DataContextStatsType::NODE);

args:

modelbox::DataContextStatsType, statistics的数据级别,具体参见StatisticsItem api

example:

    ...
   Status Process(std::shared_ptr<DataContext> data_ctx) {
        auto session_config = data_ctx->GetSessionConfig();
        auto session_context = data_ctx->GetSessionContext();
        auto statistics = data_ctx->GetStatistics();
        ...

        return STATUS_OK;
   }

result:

具体接口参见session_context、statistics接口

©2022 ModelBox Team all right reserved,powered by Gitbook文件修订时间: 2022-11-18 01:21:29

results matching ""

    No results matching ""