软件简介

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 指数为
超过 的项目

评论 (0)

加载中
更多评论
暂无内容
发表于AI & 大数据专区
2020/03/07 10:08

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], URI [/collect_data_store_customer_flow_fact*/_search?typed_keys=true&ignore_unavailable=false&expand_wildcards=open&allow_no_indices=true&search_type=query_then_fetch&batched_reduce_size=512&ccs_minimize_roundtrips=true], status line [HTTP/1.1 429 Too Many Requests] {"error":{"...

0
0
发表了博客
2020/03/16 19:10

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

同济版《高等数学第七版》对该极限有如下证明: 而夹逼定理为下面的两个准则: 根据以上两个准则对照书中的证明不难发现,书中证明中的夹逼定理运用情况并不与上面的两个准则十分相符,在证明中,更像是两个数列夹着一个函数,而准则中并没有指出两个数列夹着一个函数有所谓夹逼定理。那么这里究竟是如何运用夹逼定理的呢? 事实上,“设n<=x<n+1”就已经说明了证明中的看似数列的部分并非数列,而是特殊的函数,也就是说,这个...

0
0
发表于开发技能专区
2018/01/31 11:28

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

com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'limit 1, 6' at line 1   sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)   sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)   sun.reflect.Del...

0
0
没有更多内容
加载失败,请刷新页面
点击加载更多
加载中
下一页
暂无内容
0 评论
22 收藏
分享
OSCHINA
登录后可查看更多优质内容
返回顶部
顶部