FIX 4.0 Demo 1.0
Loading...
Searching...
No Matches
session_manager.hpp
Go to the documentation of this file.
1
9#pragma once
10
11#include <memory>
12#include <mutex>
13#include <unordered_map>
14#include <functional>
15#include "fix/session.hpp"
16#include "fix/application.hpp"
17
18namespace fix40 {
19
24 std::size_t operator()(const SessionID& id) const {
25 return std::hash<std::string>()(id.senderCompID) ^
26 (std::hash<std::string>()(id.targetCompID) << 1);
27 }
28};
29
63public:
67 SessionManager() = default;
68
72 ~SessionManager() = default;
73
74 // 禁止拷贝
77
85 void registerSession(std::shared_ptr<Session> session);
86
93 bool unregisterSession(const SessionID& sessionID);
94
100 std::shared_ptr<Session> findSession(const SessionID& sessionID) const;
101
112 bool sendMessage(const SessionID& sessionID, FixMessage& msg);
113
117 size_t getSessionCount() const;
118
123 bool hasSession(const SessionID& sessionID) const;
124
129 void forEachSession(std::function<void(const SessionID&, std::shared_ptr<Session>)> callback) const;
130
131private:
132 mutable std::mutex mutex_;
133 std::unordered_map<SessionID, std::shared_ptr<Session>, SessionIDHash> sessions_;
134};
135
136} // namespace fix40
FIX 应用层接口定义
FIX 消息的面向对象封装
Definition fix_codec.hpp:46
FIX 会话管理器
Definition session_manager.hpp:62
void forEachSession(std::function< void(const SessionID &, std::shared_ptr< Session >)> callback) const
遍历所有会话
Definition session_manager.cpp:84
SessionManager(const SessionManager &)=delete
bool unregisterSession(const SessionID &sessionID)
注销会话
Definition session_manager.cpp:31
bool hasSession(const SessionID &sessionID) const
检查会话是否存在
Definition session_manager.cpp:79
void registerSession(std::shared_ptr< Session > session)
注册会话
Definition session_manager.cpp:11
SessionManager & operator=(const SessionManager &)=delete
std::shared_ptr< Session > findSession(const SessionID &sessionID) const
查找会话
Definition session_manager.cpp:42
bool sendMessage(const SessionID &sessionID, FixMessage &msg)
向指定会话发送消息
Definition session_manager.cpp:51
size_t getSessionCount() const
获取活跃会话数量
Definition session_manager.cpp:74
~SessionManager()=default
析构函数
SessionManager()=default
构造会话管理器
Definition matching_engine.hpp:23
FIX 会话层实现
SessionID 的哈希函数
Definition session_manager.hpp:23
std::size_t operator()(const SessionID &id) const
Definition session_manager.hpp:24
FIX 会话标识符
Definition application.hpp:28