为行为树添加Drogon控制器

1、在下面的网站里,创建控制器项目和.cc等文件:(先用静态创建工程,再用动态创建控制器)
CHN 03 快速开始 · drogonframework/drogon Wiki · GitHubhttps://github.com/drogonframework/drogon/wiki/CHN-03-%E5%BF%AB%E9%80%9F%E5%BC%80%E5%A7%8B


2、修改生成的.cc和.h文件,这里只要把行为树的.cpp和.h文件粘进来就可以了。

① 因为这里我们打算行为树是接收到信号被触发的,所有用POST方式,那么需要在.cc文件最后,加上相应POST的响应命令,如下所示:

    Json::Value ret;
    ret["code"] = 200;
    std::string ip("192.168.13.18");
    ret["dstnode"] = ip;
    ret["msg"] = "success";

    auto resp = HttpResponse::newHttpJsonResponse(ret);
    callback(resp);

② 修改.h文件如下所示:(主要是分别在两端注释下加了两行代码,chatGPT解释)

第一行作用:将路径为"/trigger"的POST请求映射到function::trigger控制器类中相应的处理方法。换句话说,当有一个POST请求发送到"/trigger"路径时,Drogon框架将调用function::trigger控制器类中对应的方法来处理该请求。

第二行作用:处理接收到的HTTP请求。它接受一个指向 HttpRequest 对象的智能指针引用,用于获取请求的详细信息。另外,该函数还接受一个回调函数,当处理完请求后,可以使用回调函数来发送响应给客户端。

#pragma once

#include <drogon/HttpController.h>

using namespace drogon;

namespace container
{
class function : public drogon::HttpController<function>
{
  public:
    METHOD_LIST_BEGIN
    // use METHOD_ADD to add your custom processing function here;
    // METHOD_ADD(seepage::get, "/{2}/{1}", Get); // path is /container/seepage/{arg2}/{arg1}
    // METHOD_ADD(seepage::your_method_name, "/{1}/{2}/list", Get); // path is /container/seepage/{arg1}/{arg2}/list
    // ADD_METHOD_TO(seepage::your_method_name, "/absolute/path/{1}/{2}/list", Get); // path is /absolute/path/{arg1}/{arg2}/list
    
    METHOD_ADD(function::trigger, "/trigger", Post);

    METHOD_LIST_END
    // your declaration of processing function maybe like this:
    // void get(const HttpRequestPtr& req, std::function<void (const HttpResponsePtr &)> &&callback, int p1, std::string p2);
    // void your_method_name(const HttpRequestPtr& req, std::function<void (const HttpResponsePtr &)> &&callback, double p1, int p2) const;
    void trigger(const HttpRequestPtr &req, std::function<void (const HttpResponsePtr &)> &&callback);
};
}

3、把行为树文件夹目录下的其他内容粘贴过来。


4、修改CMakeLists.txt。【非常重要,成败在此!】

方法:将行为树的部分和原有创建的部分相结合,基本就是拼起来就行,不需要修改什么。


5、编译生成可执行文件后,执行代码;接着使用插件POST相应IP和端口的trigger,得到响应,大功告成!

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
Drogon是一个基于C++14/17的Http应用框架,使用Drogon可以方便的使用C++构建各种类型的Web应用服务端程序。 本版本库是github上Drogon工程的镜像库。Drogon是作者非常喜欢的美剧《权力的游戏》中的一条龙的名字(汉译作卓耿),和龙有关但并不是dragon的误写,为了不至于引起不必要的误会这里说明一下。 Drogon是一个跨平台框架,它支持Linux,也支持macOS、FreeBSD,和Windows。它的主要特点如下: 1、网络层使用基于epoll(macOS/FreeBSD下是kqueue)的非阻塞IO框架,提供高并发、高性能的网络IO。详细请见TFB Tests Results; 2、全异步编程模式; 3、支持Http1.0/1.1(server端和client端); 4、基于template实现了简单的反射机制,使主程序框架、控制器(controller)和视图(view)完全解耦; 5、支持cookies和内建的session; 6、支持后端渲染,把控制器生成的数据交给视图生成Html页面,视图由CSP模板文件描述,通过CSP标签把C++代码嵌入到Html页面,由drogon的命令行工具在编译阶段自动生成C++代码并编译; 7、支持运行期的视图页面动态加载(动态编译和加载so文件); 8、非常方便灵活的路径(path)到控制器处理函数(handler)的映射方案; 9、支持过滤器(filter)链,方便在控制器之前执行统一的逻辑(如登录验证、Http Method约束验证等); 10、支持https(基于OpenSSL实现); 11、支持websocket(server端和client端); 12、支持Json格式请求和应答, 对Restful API应用开发非常友好; 13、支持文件下载和上传,支持sendfile系统调用; 14、支持gzip/brotli压缩传输; 15、支持pipelining; 16、提供一个轻量的命令行工具drogon_ctl,帮助简化各种类的创建和视图代码的生成过程; 17、基于非阻塞IO实现的异步数据库读写,目前支持PostgreSQL和MySQL(MariaDB)数据库; 18、基于线程池实现sqlite3数据库的异步读写,提供与上文数据库相同的接口; 19、支持ARM架构; 20、方便的轻量级ORM实现,支持常规的对象到数据库的双向映射操作; 21、支持插件,可通过配置文件在加载期动态拆装; 22、支持内建插入点的AOP

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

一棵纯白菜

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值