osvr::clientkit::ClientContext

来源:互联网 发布:java模拟登陆qq空间 编辑:程序博客网 时间:2024/05/17 23:58

客户端上下文对象:在应用程序中创建并保存。

用于管理生命周期以及访问ClientKit功能函数。

在Context_decl.h的第57行声明。


构造函数:

osvr::clientkit::ClientContext::ClientContext(const char applicationIdentifier[], uint32_t flags = 0u)

@brief:对库初始化

@applicationIdentifier:给应用程序取的标识名。推荐使用反向域名格式,比如

(osvr::clientkit::ClientContext context("com.osvr.exampleclients.Imaging");)

@flags :初始化选项(保留,可选)

在Context.h第45行定义。


osvr::clientkit::ClientContext::ClientContext(OSVR_ClientContext context)

@brief:使用存在的context初始化当前context

@note:ClientContext类将占有该context

在Context.h第49行定义。


成员函数:

Interface svr::clientkit::ClientContext::getInterface(const std::string &path)

@brief:获取与指定路径关联的接口

@returns:返回接口对象

在Context.h第61行定义。


std::string osvr::clientkit::ClientContext::getStringParameter(const std::string &path)

@brief:从给定路径获取字符串

@path:给定路径

@returns:字符串值或者空值(如果给定路径不存在或者不是一个字符串时)

在Context.h第74行定义。


bool osvr::clientkit::ClientContext::checkStatus() const

@brief:检查客户端上下文是否正常启动

@returns:若返回false,则可能server没有启动,或连接server超时,或者程序没有调用update()函数

在Context.h第111行定义。


void osvr::clientkit::ClientContext::log(OSVR_LogLevel severity, const char* message)

@brief:log一个消息到插件特定通道。

@severity:log信息等级。如下:

typedef enum OSVR_LogLevel {      OSVR_LOGLEVEL_TRACE = 0,     //< function entry and exit, control flow.      OSVR_LOGLEVEL_DEBUG = 10,    //< debug-level messages.      OSVR_LOGLEVEL_INFO = 20,     //< informational messages.      OSVR_LOGLEVEL_NOTICE = 30,   //< normal but significant condition.      OSVR_LOGLEVEL_WARN = 40,     //< warning conditions.      OSVR_LOGLEVEL_ERROR = 50,      //< error messages.      OSVR_LOGLEVEL_CRITICAL = 60, //< critical conditions.  } OSVR_LogLevel;  

@message:log信息


=========================================================2017年8月8日

构造函数:

inline ClientContext::ClientContext(const char applicationIdentifier[],                                        uint32_t flags)        : m_context(osvrClientInit(applicationIdentifier, flags)) {}


OSVR_ClientContext osvrClientInit(const char applicationIdentifier[],                                  uint32_t /*flags*/) {    auto host = osvr::util::getEnvironmentVariable(HOST_ENV_VAR);    if (host.is_initialized()) {        make_clientkit_logger()->notice() << "App " << applicationIdentifier                                          << ": Connecting to non-default host "                                          << *host;        return ::osvr::client::createContext(applicationIdentifier,                                             host->c_str());    }    make_clientkit_logger()->debug("Connecting to default (local) host");    return ::osvr::client::createContext(applicationIdentifier);}


通过OSVR_HOST字符串获取host的环境变量:


static const char HOST_ENV_VAR[] = "OSVR_HOST";

/// A real implementation of the functionality.    boost::optional<std::string>    getEnvironmentVariable(std::string const &var) {        boost::optional<std::string> ret;        auto initialRet = std::getenv(var.c_str());        if (nullptr == initialRet) {            return ret;        }        std::string val(initialRet);#ifdef OSVR_WINDOWS        // Windows doesn't distinguish between empty and not defined, so assume        // empty means not defined.        if (val.empty()) {            return ret;        }#endif        ret = val;        return ret;    }

最终是创建一个上下文,传入appID:

common::ClientContext * osvr::client::createContext (const char appId[], const char host[]="localhost")


原创粉丝点击