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 "net/server_param.h"
18
19class Communicator;
20class ThreadHandler;
21
28class Server
29{
30public:
31 Server(const ServerParam &input_server_param) : server_param_(input_server_param) {}
32 virtual ~Server() {}
33
34 virtual int serve() = 0;
35 virtual void shutdown() = 0;
36
37protected:
39};
40
41class NetServer : public Server
42{
43public:
44 NetServer(const ServerParam &input_server_param);
45 virtual ~NetServer();
46
47public:
48 int serve() override;
49 void shutdown() override;
50
51private:
58 void accept(int fd);
59
60private:
66 int set_non_block(int fd);
67
68 int start();
69
73 int start_tcp_server();
74
79
80private:
81 volatile bool started_ = false;
82
83 int server_socket_ = -1;
84
86 ThreadHandler *thread_handler_ = nullptr;
87};
88
89class CliServer : public Server
90{
91public:
92 CliServer(const ServerParam &input_server_param);
93 virtual ~CliServer();
94
95 int serve() override;
96 void shutdown() override;
97
98private:
99 volatile bool started_ = false;
100};
Definition: server.h:90
通讯协议工厂
Definition: communicator.h:105
负责与客户端通讯
Definition: communicator.h:42
Definition: server.h:42
int start_tcp_server()
启动TCP服务
Definition: server.cpp:148
void accept(int fd)
接收到新的连接时,调用此函数创建Communicator对象
Definition: server.cpp:77
int start_unix_socket_server()
启动Unix Socket服务
Definition: server.cpp:199
int server_socket_
监听套接字,是一个描述符
Definition: server.h:83
CommunicatorFactory communicator_factory_
通过这个对象创建新的Communicator对象
Definition: server.h:85
int set_non_block(int fd)
将socket描述符设置为非阻塞模式
Definition: server.cpp:61
服务端启动参数
Definition: server_param.h:25
负责接收客户端消息并创建任务
Definition: server.h:29
ServerParam server_param_
服务启动参数
Definition: server.h:38
Definition: thread_handler.h:28