# gw-cpp **Repository Path**: bigdream120/gw-cpp ## Basic Information - **Project Name**: gw-cpp - **Description**: 嵌入式C++工具项目框架 - **Primary Language**: C++ - **License**: Apache-2.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 1 - **Created**: 2024-06-27 - **Last Updated**: 2024-06-27 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 项目概述 ### 项目介绍 国网中电 C++ /Linux 工具箱 仅在`Rk3568`硬件平台和虚拟机Ubuntu18.04环境下测试使用 ### 项目文件夹 - `cmake` 交叉编译构建编译链 - `doc` 存放说明各个模块文档 - `examples` 项目组件例程 - `res` 存放资源文件 - `src` 项目代码 - `thirdparty` 第三方库文件 - `user` 用户实例工程 - `script` 脚本文件 #### 强依赖组件 - `base` (日志组件 |Json | xml | FMT | 常用数据结构 | 文件操作类) - `kernel` (基于EPOLL的事件循环池 + 线程池 ) #### 弱依赖组件 - `network` (网络组件) - `uart` (串口组件) - `time` (定时器组件) - `node` (内部通信组件) - `app` (开箱使用的app 框架实现程序升级查询shell 等) #### 第三方库依赖组件(使用必须保证环境有第三方库) - `media` (音视频组件 -TUDO) #### 第三方库 - `cpr` 简单的网络POST请求库 - `osip2` SIP协议栈 - `eXosip` SIP协议栈拓展协议集 ### 架构说明 参考Muduo框架函数式编程 通过注册回调函数异步实现功能详情: [详细架构说明](doc\about-gwcpp.md) ### 项目构建 使用**CMake**构建本项目. 当您在项目的根路径时, 可以执行以下指令: + aarch64 on ubuntu 18.04 ```console $ cd gw-cpp $ mkdir build && cd build $ cmake.. && make 或者执行 script/build_xxx.bash 脚本构建项目 ``` ### 用例详解 `example/udp_socket_test.cpp` 1. 利用框架创建一个UDP客户端 ``` CPP //通常在使用此框架要首先创建一个Loop 作为事件循环主线程 Loop * loop_ = new Loop(); //创建UDP所需要的地址参数 Address address("127.0.0.1", 2345); //创建UDP-Socket实例 UdpSocket *echo_udp = new UdpSocket(loop_,address); //设置UDP接收回调函数 echo_udp->setRecvCallback( [&echo_udp](const void *buffer, ssize_t size, Address &addr) { ByteArray buf(buffer,size); //将接受到的信息直接回复给对端 echo_udp->send(buf.data(),buf.size(),addr); } ); echo_udp->start(); loop_->start(); ``` `example/go_async_task_test.cpp` 1. 利用框架创建一个定时任务 ``` CPP Loop * loop = new Loop(); Timer *timer = new Timer(loop ,5.5); timer->setOnTimerCallback( [&loop]() { std::cout << "Main Current Thread ID: " << std::this_thread::get_id() << std::endl; } ); timer->start(); loop->exec(); return 0 ; ```