MiniOB 1
MiniOB is one mini database, helping developers to learn how database works.
载入中...
搜索中...
未找到
server.h
1/* Copyright (c) 2021 OceanBase and/or its affiliates. All rights reserved.
2miniob is licensed under Mulan PSL v2.
3You can use this software according to the terms and conditions of the Mulan PSL v2.
4You may obtain a copy of Mulan PSL v2 at:
5 http://license.coscl.org.cn/MulanPSL2
6THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND,
7EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT,
8MERCHANTABILITY OR FIT FOR A PARTICULAR PURPOSE.
9See the Mulan PSL v2 for more details. */
10
11//
12// Created by Longda on 2021/4/1.
13//
14
15#pragma once
16
17#include "common/defs.h"
18#include "common/seda/stage.h"
19#include "net/server_param.h"
20
21class Communicator;
22
29class Server
30{
31public:
32 Server(ServerParam input_server_param);
33 ~Server();
34
35public:
36 static void init();
37 static void close_connection(Communicator *comm);
38
39public:
40 int serve();
41 void shutdown();
42
43private:
51 static void accept(int fd, short ev, void *arg);
59 static void recv(int fd, short ev, void *arg);
60
61private:
67 int set_non_block(int fd);
68
69 int start();
70
74 int start_tcp_server();
75
80
82
83private:
84 volatile bool started_ = false;
85
86 int server_socket_ = -1;
87 struct event_base *event_base_ = nullptr;
88 struct event *listen_ev_ = nullptr;
89
91
93
94 static common::Stage *session_stage_;
95};
通讯协议工厂
Definition: communicator.h:115
负责与客户端通讯
Definition: communicator.h:42
服务端启动参数
Definition: server_param.h:25
负责接收客户端消息并创建任务
Definition: server.h:30
static common::Stage * session_stage_
通过这个对象创建新的请求任务
Definition: server.h:94
int start_tcp_server()
启动TCP服务
Definition: server.cpp:189
struct event_base * event_base_
libevent对象
Definition: server.h:87
static void accept(int fd, short ev, void *arg)
接收到新的连接时,调用此函数创建Communicator对象
Definition: server.cpp:108
int set_non_block(int fd)
将socket描述符设置为非阻塞模式
Definition: server.cpp:67
ServerParam server_param_
服务启动参数
Definition: server.h:90
struct event * listen_ev_
libevent监听套接字事件
Definition: server.h:88
int start_stdin_server()
Definition: server.cpp:311
static void recv(int fd, short ev, void *arg)
接收到客户端消息时,调用此函数创建任务
Definition: server.cpp:90
int start_unix_socket_server()
启动Unix Socket服务
Definition: server.cpp:254
CommunicatorFactory communicator_factory_
通过这个对象创建新的Communicator对象
Definition: server.h:92
int server_socket_
监听套接字,是一个描述符
Definition: server.h:86