-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathAcceptor.cpp
32 lines (26 loc) · 935 Bytes
/
Acceptor.cpp
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
//
// Created by 裴沛东 on 2021/12/28.
//
#include "Acceptor.h"
Acceptor::Acceptor( std::shared_ptr<EventLoop>& loop,int port):_loop(loop),_sock(nullptr),_channel(nullptr) {
_sock = std::make_shared<Socket>("",port);
_sock->setnonblocking();
_sock->setsockopt();
_channel = std::make_shared<Channel>(loop,_sock);
_channel->setNotUseThreadPool(true);
std::function<void()> cb = std::bind(&Acceptor::acceptConnection,this);
_channel->setCallback(cb);
_channel->enableListening();
}
Acceptor::~Acceptor() {
}
void Acceptor::acceptConnection() {
std::shared_ptr<Socket> client_sock = nullptr;
while((client_sock = _sock->accept()) != nullptr) {
client_sock->setnonblocking();
newConnectionCallback(client_sock);
}
}
void Acceptor::setNewConnectionCallback(std::function<void(std::shared_ptr<Socket>&)> callback) {
this->newConnectionCallback = std::move(callback);
}