FIX 4.0 Demo 1.0
Loading...
Searching...
No Matches
server.hpp
Go to the documentation of this file.
1
9#pragma once
10
11#include <memory>
12#include <unordered_map>
13#include <string>
14#include <mutex>
15#include <csignal>
16
17namespace fix40 {
18
19// 前置声明
20class Reactor;
21class ThreadPool;
22class TimingWheel;
23class Connection;
24class Application;
25
47class FixServer {
48public:
56 FixServer(int port, int num_threads, Application* app = nullptr);
57
63 ~FixServer();
64
71 void start();
72
73private:
78 void on_new_connection(int fd);
79
84 void on_connection_close(int fd);
85
90 static void signal_handler(int signum);
91
92 const int port_;
93 int listen_fd_;
94
95 std::unique_ptr<Reactor> reactor_;
96 std::unique_ptr<ThreadPool> worker_pool_;
97 std::unique_ptr<TimingWheel> timing_wheel_;
98
100 std::unordered_map<int, std::shared_ptr<Connection>> connections_;
101 std::mutex connections_mutex_;
102
103 static volatile std::sig_atomic_t last_signal_;
104 static volatile std::sig_atomic_t signal_write_fd_;
105
106 int signal_pipe_[2] = {-1, -1};
107
108 Application* application_ = nullptr;
109};
110
111} // namespace fix40
FIX 应用层抽象接口
Definition application.hpp:116
FIX 协议服务端
Definition server.hpp:47
~FixServer()
析构函数
Definition server.cpp:190
void start()
启动服务端
Definition server.cpp:208
Definition matching_engine.hpp:23