SpiecsEngine
 
Loading...
Searching...
No Matches
Callbacks.h
Go to the documentation of this file.
1/**
2* @file Callbacks.h.
3* @brief The Callbacks Class Definitions.
4* @author Spices & Muduo.
5*/
6
7#pragma once
8#include "Core/Core.h"
9#include "Core/Delegate/DelegateBasic.h"
10
11namespace Spices {
12
13namespace Net {
14
15 class Buffer;
16 class TcpConnection;
17
18 using TcpConnectionPtr = std::shared_ptr<TcpConnection>;
19
20 DELEGATE_ONE_PARAM(ConnectionCallback, const TcpConnectionPtr&)
21 DELEGATE_ONE_PARAM(CloseCallback, const TcpConnectionPtr&)
22 DELEGATE_ONE_PARAM(WriteCompleteCallback, const TcpConnectionPtr&)
23 DELEGATE_TWO_PARAM(MessageCallback, const TcpConnectionPtr&, Buffer*)
24 DELEGATE_TWO_PARAM(HighWaterMarkCallback, const TcpConnectionPtr&, size_t)
25
26}
27
28}
#define DELEGATE_ONE_PARAM(name, p0)
Use this macro to instance a Delegate Class. One Parameter Specific.
#define DELEGATE_TWO_PARAM(name, p0, p1)
Use this macro to instance a Delegate Class. Two Parameter Specific.
#define SPICES_PROFILE_ZONE
void Listen()
Listen accept socket.
Definition Acceptor.cpp:39
std::shared_ptr< Channel > m_AcceptChannel
Acceptor Channel.
Definition Acceptor.h:92
Socket m_AcceptSocket
Acceptor Socket.
Definition Acceptor.h:87
void HandleRead() const
On Read Event Callback.
Definition Acceptor.cpp:48
Acceptor(const Acceptor &)=delete
Copy Constructor Function.
bool IsListening() const
Determine if this is in listening. @reutrn Returns true if is in listening.
Definition Acceptor.h:68
void SetConnectionCallback(const ConnectionCallback &cb)
Set ConnectionCallback.
Definition Acceptor.h:59
Acceptor(const InetAddress &listenAddress, bool reusePort)
Constructor Function.
Definition Acceptor.cpp:15
ConnectionCallback m_ConnectionCallback
ConnectionCallback.
Definition Acceptor.h:97
bool m_IsListening
Boolean of whether is in listening.
Definition Acceptor.h:102
virtual ~Acceptor()
Destructor Function.
Definition Acceptor.cpp:31
Acceptor & operator=(const Acceptor &)=delete
Copy Assignment Operation.
Wrapper of Channel and Socket, As the entrance of comm.
Definition Acceptor.h:24
Wrapper of readwrite buffer.
Definition Buffer.h:19
~Channel()=default
Destructor Function.
void Update()
Update this Channel state to Poller.
Definition Channel.cpp:48
void SetErrorCallback(EventCallback cb)
Set Error Event Callback.
Definition Channel.h:110
EventCallback m_ReadCallback
Read Event Callback.
Definition Channel.h:259
bool IsReading() const
Determine whether the event is a Read Event.
Definition Channel.h:196
EventLoop * m_Loop
This channel interested EventLoop.
Definition Channel.h:237
void SetWriteCallback(EventCallback cb)
Set Write Event Callback.
Definition Channel.h:92
Channel(const Channel &)=delete
Copy Constructor Function.
Channel(SOCKET fd, EventLoop *loop)
Constructor Function.
Definition Channel.cpp:15
EventCallback m_WriteCallback
Write Event Callback.
Definition Channel.h:264
void SetCloseCallback(EventCallback cb)
Set Close Event Callback.
Definition Channel.h:101
void SetRevents(int revt)
Set this REvents type.
Definition Channel.h:133
void DisableReading()
Disable Read event.
Definition Channel.h:147
void DisableAll()
Disable All event.
Definition Channel.h:174
Channel & operator=(const Channel &)=delete
Copy Assignment Operation.
std::optional< std::weak_ptr< void > > m_Tie
Definition Channel.h:254
int Events() const
Get this Events type.
Definition Channel.h:127
EventCallback m_ErrorCallback
Error Event Callback.
Definition Channel.h:274
void HandleEvent() const
Handle happened events on fd.
Definition Channel.cpp:23
void HandleEventsWithGuard() const
Internal handle happened events on fd.
Definition Channel.cpp:53
void Tie(const std::shared_ptr< void > &obj)
Definition Channel.cpp:38
void EnableWriting()
Enable Write event.
Definition Channel.h:156
SOCKET Fd() const
Get this SOCKET.
Definition Channel.h:121
void SetPollState(PollState state)
Set Poll State.
Definition Channel.h:208
bool IsWriting() const
Determine whether the event is a Write Event.
Definition Channel.h:190
void DisableWriting()
Disable Write event.
Definition Channel.h:165
int m_Revents
Current happened event type.
Definition Channel.h:247
void EnableReading()
Enable Read event.
Definition Channel.h:138
PollState GetPollState() const
Get Poll State.
Definition Channel.h:202
EventFlags m_Events
This SOCKET interested Events type.
Definition Channel.h:242
SOCKET m_Fd
This channel interested SOCKET.
Definition Channel.h:232
EventCallback m_CloseCallback
Close Event Callback.
Definition Channel.h:269
void Remove()
Remove this Channel state from Poller.
Definition Channel.cpp:43
PollState m_PollState
This channel PollState.
Definition Channel.h:252
bool IsNoneEvent() const
Determine whether the event is a None Event.
Definition Channel.h:184
void SetReadCallback(EventCallback cb)
Set Read Event Callback.
Definition Channel.h:83
Wrapper of SOCKET'S Event.
Definition Channel.h:27
ThreadPool of Multiple threading EventLoop.
EventLoopThreadWrapper()
Constructor Function.
Definition EventLoop.h:186
virtual ~EventLoopThreadWrapper()
Destructor Function.
static EventLoop *& GetInst(InetAddress *address=nullptr)
Get EventLoop Instance. @reutrn Returns EventLoop Instance.
EventLoop * instance
This thread EventLoop instance.
Definition EventLoop.h:204
Wrapper of Instance/Delete ThreadCache in thread.
Definition EventLoop.h:180
EventLoop & operator=(const EventLoop &)=delete
Copy Assignment Operation.
void HandleWakeUp()
Handle WakeUp notify by read one byte data.
std::vector< Functor > m_PendingFunctors
Delay functors.
Definition EventLoop.h:168
void DoPendingFunctors()
Execute all pending functors.
std::shared_ptr< Poller > m_Poller
Poller instance.
Definition EventLoop.h:148
std::atomic_bool m_IsCallingPendingFunctors
True if is execute pending functors.
Definition EventLoop.h:138
std::atomic_bool m_IsLooping
True if is in Looping.
Definition EventLoop.h:128
bool HasChannel(Channel *channel) const
Determine if channel is inside poller.
std::mutex m_Mutex
Mutex for PendingFunctors.
Definition EventLoop.h:173
EventLoop(const EventLoop &)=delete
Copy Constructor Function.
std::atomic_bool m_IsQuit
True if is quit from Looping.
Definition EventLoop.h:133
EventLoop(InetAddress *address=nullptr)
Constructor Function.
Definition EventLoop.cpp:22
void WakeUp()
WakeUp a thread, which wait on recv, by sending one byte data.
std::unique_ptr< Channel > m_WeakupChannel
Wakeup Channel.
Definition EventLoop.h:158
void Loop()
Start Event Loop.
Definition EventLoop.cpp:48
bool IsInLoopThread() const
Determine if current thread is in eventloop thread.
Definition EventLoop.h:109
void RunInLoop(Functor cb)
Push functor to pending functors.
Definition EventLoop.cpp:79
~EventLoop()
Destructor Function.
Definition EventLoop.cpp:42
Socket m_WakeupFd
Wakeup Socket.
Definition EventLoop.h:153
DWORD m_ThreadId
Thread's identify, which is running this EventLoop.
Definition EventLoop.h:143
void QueueInLoop(Functor cb)
Execute functor in EventLoop thread.
Definition EventLoop.cpp:91
void UpdateChannel(Channel *channel) const
Update channel state with poller.
void Quit()
Quit from Event Loop.
Definition EventLoop.cpp:69
ChannelList m_ActiveChannels
Channels with events.
Definition EventLoop.h:163
void RemoveChannel(Channel *channel) const
Remove channel from poller.
Wrapper of Poller and wakeup socket to acceptor(SubLoop).
Definition EventLoop.h:28
const Version GetVersion() const
Get Http Version.
Definition HttpRequest.h:89
std::string GetHeader(const std::string &name) const
Get a Header from this HttpRequest.
Http Request body.
Definition HttpRequest.h:18
HttpResponse(bool close)
Constructor Function.
void AppendToBuffer(Buffer *output)
Append this response to Buffer.
bool CloseConnection() const
Get CloseConnection.
HttpServer & operator=(const HttpServer &)=delete
Copy Assignment Operation.
HttpServer(const HttpServer &)=delete
Copy Constructor Function.
void OnRequest(const TcpConnectionPtr &connection, const HttpRequest &request)
HttpCallback m_HttpCallback
Definition HttpServer.h:75
virtual ~HttpServer()=default
Destructor Function.
void OnConnection(const TcpConnectionPtr &connection)
HttpServer(const InetAddress &listenAddress, int idleSeconds, TcpServer::Option option=TcpServer::Option::NoReusePort)
Constructor Function.
void Start(int threadSize) const
Start ThreadPool and call listen on acceptor.
WeakConnectionList m_ConnectionList
Definition HttpServer.h:78
void OnMessage(const TcpConnectionPtr &connection, Buffer *buf)
This class is Wrapper of current socket address.
Definition InetAddress.h:22
Inherit from this and Implement Specific Poller.
Definition Poller.h:25
Socket(const Socket &)=delete
Copy Constructor Function.
void SetReuseAddress(bool on) const
Set socket reuse address option.
Definition Socket.cpp:188
void SetTcpNoDelay(bool on) const
Set socket Tcp no delay option.
Definition Socket.cpp:149
void Connect(InetAddress *connectAddress) const
Connect to socket.
Definition Socket.cpp:62
Socket & operator=(const Socket &)=delete
Copy Assignment Operation.
SOCKET m_SocketFd
This socket fd.
Definition Socket.h:142
void Send(const std::string &data) const
Send data to server.
Definition Socket.cpp:106
SOCKET Accept(InetAddress *peerAddress) const
Accept connection on socket.
Definition Socket.cpp:83
Socket()=default
Constructor Function.
void BindAddress(const InetAddress &localAddress) const
Bind address to socket.
Definition Socket.cpp:36
void Create()
Create Non Blocking Socket.
Definition Socket.cpp:27
virtual ~Socket()
Destructor Function.
Definition Socket.cpp:14
std::string Receive() const
Receive data from server.
Definition Socket.cpp:119
SOCKET Fd()
Get this socket fd.
Definition Socket.h:66
Socket(SOCKET socketFd)
Constructor Function.
Definition Socket.h:30
const SOCKET Fd() const
Get this socket fd.
Definition Socket.h:60
void SetKeepAlive(bool on) const
Set socket keep alive option.
Definition Socket.cpp:175
void SetReusePort(bool on) const
Set socket reuse port option.
Definition Socket.cpp:162
void ShutDownWrite() const
Disable writen in socket.
Definition Socket.cpp:136
void Listen() const
Listen on socket.
Definition Socket.cpp:49
This class is Wrapper of socket.
Definition Socket.h:18
Combine of Socket Connection data.
void SetThreadInitCallback(const ThreadInitCallback &cb)
Set Thread initialize Call back.
Definition TcpServer.h:71
void AddMessageCallback(const DelegateMessageCallback::Agent &cb)
Add Message Call back.
Definition TcpServer.h:89
void Start(int threadSize) const
Start ThreadPool and call listen on acceptor.
Definition TcpServer.cpp:46
std::shared_ptr< EventLoopThreadPool > m_ThreadPool
ThreadPool.
Definition TcpServer.h:145
void NewConnection(SOCKET socketFd, const InetAddress &peerAddress)
Handle New Connection to Acceptor.
Definition TcpServer.cpp:57
void RemoveConnectionInLoop(const TcpConnectionPtr &connection)
Remove a TcpConnection InLoop.
Definition TcpServer.cpp:97
TcpServer(const TcpServer &)=delete
Copy Constructor Function.
ConnectionMap m_Connections
All TcpConnections.
Definition TcpServer.h:175
DelegateWriteCompleteCallback m_WriteCompleteCallback
WriteCompleteCallback.
Definition TcpServer.h:160
void RemoveConnection(const TcpConnectionPtr &connection)
Remove a TcpConnection.
Definition TcpServer.cpp:92
TcpServer(const InetAddress &listenAddress, Option option=Option::NoReusePort)
Constructor Function.
Definition TcpServer.cpp:16
TcpServer & operator=(const TcpServer &)=delete
Copy Assignment Operation.
ThreadInitCallback m_ThreadInitCallback
ThreadInitCallback.
Definition TcpServer.h:165
std::unique_ptr< Acceptor > m_Acceptor
Acceptor.
Definition TcpServer.h:140
std::string m_IpPort
TcpServer Ip and Port.
Definition TcpServer.h:135
void AddConnectionCallback(const DelegateConnectionCallback::Agent &cb)
Add Connection Call back.
Definition TcpServer.h:80
virtual ~TcpServer()
Destructor Function.
Definition TcpServer.cpp:33
DelegateConnectionCallback m_ConnectionCallback
ConnectionCallback.
Definition TcpServer.h:150
int m_NextConnectedId
Next Connection id.
Definition TcpServer.h:170
DelegateMessageCallback m_MessageCallback
MessageCallback.
Definition TcpServer.h:155
void AddWriteCompleteCallback(const DelegateWriteCompleteCallback::Agent &cb)
Add WriteComplete Call back.
Definition TcpServer.h:98
Sample of a TcpServer.
Definition TcpServer.h:29