当前位置: 首页>>代码示例>>C++>>正文


C++ CommandManager::add方法代码示例

本文整理汇总了C++中CommandManager::add方法的典型用法代码示例。如果您正苦于以下问题:C++ CommandManager::add方法的具体用法?C++ CommandManager::add怎么用?C++ CommandManager::add使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在CommandManager的用法示例。


在下文中一共展示了CommandManager::add方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。

示例1: main

int main() {
	Json::Reader reader;
	Json::Value v;

	IO<Json::Value> io(std::cin, std::cout);
	CommandManager<std::string, std::function<Json::Value (const Json::Value&)> > commands;

	SessionManager<RealPDAL> session;

	commands.add("isSessionValid", [&session](const Json::Value&) -> Json::Value {
		Json::Value r;
		r["valid"] = session.isValid();

		return r;
	});

	commands.add("create", [&session](const Json::Value& params) -> Json::Value {
        // std::string desc = params["pipelineDesc"].asString();
		session.create(params);

		return Json::Value();
	});

	commands.add("destroy", [&session](const Json::Value&) -> Json::Value {
		session.destroy();
		return Json::Value();
	});

	commands.add("getNumPoints", [&session](const Json::Value&) -> Json::Value {
		Json::Value v;
		v[std::string("count")] = (int)session.getNumPoints();

		return v;
	});

	commands.add("getSRS", [&session](const Json::Value&) -> Json::Value {
		Json::Value v;
		v[std::string("srs")] = session.getSRS();

		return v;
	});

	commands.add("read", [&session](const Json::Value& params) -> Json::Value {
		size_t npoints = session.getNumPoints();

		size_t start = params.isMember("start") ? params["start"].asInt() : 0;
		size_t count = params.isMember("count") ? params["count"].asInt() : npoints;

		size_t nbufsize = session.stride() * count;

		std::string host = params["transmitHost"].asString();
		int port = params["transmitPort"].asInt();

		boost::shared_array<char> pbuf(new char[nbufsize]);
		count = session.read(pbuf.get(), start, count);

		std::thread t(BufferTransmitter(host, port, pbuf, nbufsize));
		t.detach();

		Json::Value v;
		v["message"] = "Read request queued for points to be delivered to specified host:port";
		v["pointsRead"] = (int)count;
		v["bytesCount"] = (int)nbufsize;

		return v;
	});

	// indicate that we're ready to our controller program
	Json::Value vReady; vReady["ready"] = 1;
	io.write(vReady);

	io.forInput([&commands](const Json::Value& v) -> Json::Value {
		return commands.dispatch(v["command"].asString(), v["params"]);
	});

    


	return 0;
}
开发者ID:cleveland-metroparks,项目名称:greyhound,代码行数:80,代码来源:pdal-session.cpp


注:本文中的CommandManager::add方法示例由纯净天空整理自Github/MSDocs等开源代码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。