授权协议: 未知
开发语言: C/C++
操作系统: 跨平台
收录时间: 2019-09-25
提 交 者: limzhoujx

lim 是一套轻量级的高性能通信框架,基于 C/C++ 语言开发,采用全异步通信模式,内部集成了 HTTP、HTTPS、WebSocket 通信协议实现,目前支持 Windows 和 Linux 平台。

示例代码:

#include <lim/base/logger.h>
#include <lim/base/bootstrap.h>
#include <lim/base/server_channel_session.h>
#include <lim/http/http_bootstrap_config.h>
#include <lim/http/http_response_session.h>

namespace lim {
  class HttpServer: public HttpFullRequestSession {
  public:
    HttpServer(SocketChannel &channel, BootstrapConfig &config): HttpFullRequestSession(channel, config) {
      RegistHandleRouter("POST", "/test", std::bind(&HttpsServer::PostTestHandle, this, std::placeholders::_1));
    }

    virtual ~HttpsServer() = default;
    
  private:
    bool PostTestHandle(Message &request) {
      HttpFullResponse http_response(200, "OK", "HTTP/1.1");
      int length = http_response.Content().Content().WriteBytes("{\"aa\":8}", strlen("{\"aa\":8}"));
      http_response.Headers().SetHeaderValue("Connection", "close");
      http_response.Headers().SetHeaderValue("Content-Type", "application/json");
      http_response.Headers().SetHeaderValue("Content-Length", std::to_string(length));
      WriteHttpResponse(http_response, [&] {
        Signal(ExecuteEvent::KILL_EVENT); //发送完毕关闭连接
      });
      return true;
    }
  };
}

using namespace lim;
int main() {
  Logger *logger = Logger::GetLogger("demo");
  SocketChannel::InitEnviroment();
  
  //服务监听器&处理线程池
  EventLoop server_event_loop;
  ExecuteThread server_execute_thread;
  
  //客户端连接监听器&处理线程池
  EventLoopGroup worker_event_loop_group;
  ExecuteThreadGroup worke_execute_thread_group;

  
  HttpBootstrapConfig config(worker_event_loop_group, worke_execute_thread_group, server_event_loop, server_execute_thread);
  //设置处理超时时间
  config.SetTimeout(30 * 1000); 
  //异常回掉函数
  config.SetLoggerCallback([&](LoggerLevel level, const std::string &message) {
    TRACE_ERROR(logger, "%s", message.c_str());
  });
  
  Bootstrap strap = Bootstrap(config);
  strap.Bind<ServerChannelSession<HttpServer>>("0.0.0.0", 8095);

  while (1) {
    std::this_thread::sleep_for(std::chrono::milliseconds(1000 * 5));
  }

  return 0;
}

 

展开阅读全文

代码

的 Gitee 指数为
超过 的项目

lim 的相关资讯

还没有任何资讯

lim 的相关博客

django rest framework 过滤 lim分页

一.过滤 1.首先引用diango 自带的过滤配置 2.导入模块 from django_filters.rest_framework import DjangoFilterBackend fro...

Data too large, data for [<http_request>] would be , which is larger than the lim

ES服务器报错 Suppressed: org.elasticsearch.client.ResponseException: method [POST], host [http://172.18.32.181:9200],...

特殊极限lim(x→∞)(1+1/x)^x的证明

同济版《高等数学第七版》对该极限有如下证明: 而夹逼定理为下面的两个准则: 根据以上两个准则对照书中的证明不难发现,书中...

check the manual that corresponds to your MySQL server version for the right syntax to use near 'lim

check the manual that corresponds to your MySQL server version for the right syntax to use near 'limit 1, 6'...

数学基础系列(一)----函数、极限、连续性、导数

为了加深在人工智能、深度学习领域的学习,接下来会推出数学基础系列博客,加深自己在这领域的基础知识。 一、函数 1、函数的...

linux oracle odbc 驱动安装配置

linux oracle odbc 驱动安装配置

关于$f(x)=\int_0^x\left|\sin\frac1t\right|\text dt$求导的问题

  首先,我们考虑\(f(x)\)在\(\mathbb R\)上都是定义的。根据定义,显然有\(f(0)=0\);其次,对于\(x\neq0\),不妨先设\(x...

2019-2020学年第1学期-数学分析1

<table border="0"> <tr> <td><a href="#lecture_info"> 课程信息 </a></td> <td><a href="#schedule"> 教学计划 </a></td> ...

几道求极限题目

求a,b的值,使得lim(x->0)1/bx-sinx*∫t^2/√(a+t)dt=1{∫上面为x,下面为0} 应用洛必达法则 原式=lim(x->0)x^2/√(a+x)*(b-co...

Lecture6.概率极限理论

一、随机变量序列的收敛性 1.定义 (1)概率为1收敛: 如果$P{\lim\limits_{n \to \infty}X_n = X} = 1$,则称{Xn}概率为1地收敛...

lim 的相关问答

还没有任何问答,马上提问

评论 (0)

加载中
更多评论
0 评论
18 收藏
分享
在线直播报名
返回顶部
顶部