mirror of
https://github.com/Relintai/rcpp_framework.git
synced 2025-05-06 17:51:36 +02:00
Small improvements.
This commit is contained in:
parent
38a28ee9ce
commit
059cae3625
@ -138,8 +138,7 @@ public:
|
|||||||
}
|
}
|
||||||
|
|
||||||
// set callbacks
|
// set callbacks
|
||||||
virtual void setHighWaterMarkCallback(const HighWaterMarkCallback &cb,
|
virtual void setHighWaterMarkCallback(const HighWaterMarkCallback &cb, size_t markLen) override {
|
||||||
size_t markLen) override {
|
|
||||||
highWaterMarkCallback_ = cb;
|
highWaterMarkCallback_ = cb;
|
||||||
highWaterMarkLen_ = markLen;
|
highWaterMarkLen_ = markLen;
|
||||||
}
|
}
|
||||||
@ -186,8 +185,7 @@ private:
|
|||||||
size_t idleTimeout_{ 0 };
|
size_t idleTimeout_{ 0 };
|
||||||
Date lastTimingWheelUpdateTime_;
|
Date lastTimingWheelUpdateTime_;
|
||||||
|
|
||||||
void enableKickingOff(size_t timeout,
|
void enableKickingOff(size_t timeout, const std::shared_ptr<TimingWheel> &timingWheel) {
|
||||||
const std::shared_ptr<TimingWheel> &timingWheel) {
|
|
||||||
assert(timingWheel);
|
assert(timingWheel);
|
||||||
assert(timingWheel->getLoop() == loop_);
|
assert(timingWheel->getLoop() == loop_);
|
||||||
assert(timeout > 0);
|
assert(timeout > 0);
|
||||||
@ -207,15 +205,19 @@ private:
|
|||||||
void setRecvMsgCallback(const RecvMessageCallback &cb) {
|
void setRecvMsgCallback(const RecvMessageCallback &cb) {
|
||||||
recvMsgCallback_ = cb;
|
recvMsgCallback_ = cb;
|
||||||
}
|
}
|
||||||
|
|
||||||
void setConnectionCallback(const ConnectionCallback &cb) {
|
void setConnectionCallback(const ConnectionCallback &cb) {
|
||||||
connectionCallback_ = cb;
|
connectionCallback_ = cb;
|
||||||
}
|
}
|
||||||
|
|
||||||
void setWriteCompleteCallback(const WriteCompleteCallback &cb) {
|
void setWriteCompleteCallback(const WriteCompleteCallback &cb) {
|
||||||
writeCompleteCallback_ = cb;
|
writeCompleteCallback_ = cb;
|
||||||
}
|
}
|
||||||
|
|
||||||
void setCloseCallback(const CloseCallback &cb) {
|
void setCloseCallback(const CloseCallback &cb) {
|
||||||
closeCallback_ = cb;
|
closeCallback_ = cb;
|
||||||
}
|
}
|
||||||
|
|
||||||
void setSSLErrorCallback(const SSLErrorCallback &cb) {
|
void setSSLErrorCallback(const SSLErrorCallback &cb) {
|
||||||
sslErrorCallback_ = cb;
|
sslErrorCallback_ = cb;
|
||||||
}
|
}
|
||||||
|
@ -81,12 +81,7 @@ void TcpServer::newConnection(int sockfd, const InetAddress &peer) {
|
|||||||
|
|
||||||
if (sslCtxPtr_) {
|
if (sslCtxPtr_) {
|
||||||
#ifdef USE_OPENSSL
|
#ifdef USE_OPENSSL
|
||||||
newPtr = std::make_shared<TcpConnectionImpl>(
|
newPtr = std::make_shared<TcpConnectionImpl>(ioLoop, sockfd, InetAddress(Socket::getLocalAddr(sockfd)), peer, sslCtxPtr_);
|
||||||
ioLoop,
|
|
||||||
sockfd,
|
|
||||||
InetAddress(Socket::getLocalAddr(sockfd)),
|
|
||||||
peer,
|
|
||||||
sslCtxPtr_);
|
|
||||||
#else
|
#else
|
||||||
LOG_FATAL << "OpenSSL is not found in your system!";
|
LOG_FATAL << "OpenSSL is not found in your system!";
|
||||||
abort();
|
abort();
|
||||||
@ -123,26 +118,21 @@ void TcpServer::start() {
|
|||||||
loop_->runInLoop([this]() {
|
loop_->runInLoop([this]() {
|
||||||
assert(!started_);
|
assert(!started_);
|
||||||
started_ = true;
|
started_ = true;
|
||||||
|
|
||||||
if (idleTimeout_ > 0) {
|
if (idleTimeout_ > 0) {
|
||||||
timingWheelMap_[loop_] =
|
timingWheelMap_[loop_] = std::make_shared<TimingWheel>(loop_, idleTimeout_, 1.0F, idleTimeout_ < 500 ? idleTimeout_ + 1 : 100);
|
||||||
std::make_shared<TimingWheel>(loop_,
|
|
||||||
idleTimeout_,
|
|
||||||
1.0F,
|
|
||||||
idleTimeout_ < 500 ? idleTimeout_ + 1 : 100);
|
|
||||||
if (loopPoolPtr_) {
|
if (loopPoolPtr_) {
|
||||||
auto loopNum = loopPoolPtr_->size();
|
auto loopNum = loopPoolPtr_->size();
|
||||||
while (loopNum > 0) {
|
while (loopNum > 0) {
|
||||||
// LOG_TRACE << "new Wheel loopNum=" << loopNum;
|
// LOG_TRACE << "new Wheel loopNum=" << loopNum;
|
||||||
auto poolLoop = loopPoolPtr_->getNextLoop();
|
auto poolLoop = loopPoolPtr_->getNextLoop();
|
||||||
timingWheelMap_[poolLoop] =
|
timingWheelMap_[poolLoop] = std::make_shared<TimingWheel>(poolLoop, idleTimeout_, 1.0F, idleTimeout_ < 500 ? idleTimeout_ + 1 : 100);
|
||||||
std::make_shared<TimingWheel>(poolLoop,
|
|
||||||
idleTimeout_,
|
|
||||||
1.0F,
|
|
||||||
idleTimeout_ < 500 ? idleTimeout_ + 1 : 100);
|
|
||||||
--loopNum;
|
--loopNum;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
LOG_TRACE << "map size=" << timingWheelMap_.size();
|
LOG_TRACE << "map size=" << timingWheelMap_.size();
|
||||||
acceptorPtr_->listen();
|
acceptorPtr_->listen();
|
||||||
});
|
});
|
||||||
@ -150,17 +140,22 @@ void TcpServer::start() {
|
|||||||
|
|
||||||
void TcpServer::stop() {
|
void TcpServer::stop() {
|
||||||
loop_->runInLoop([this]() { acceptorPtr_.reset(); });
|
loop_->runInLoop([this]() { acceptorPtr_.reset(); });
|
||||||
|
|
||||||
for (auto connection : connSet_) {
|
for (auto connection : connSet_) {
|
||||||
connection->forceClose();
|
connection->forceClose();
|
||||||
}
|
}
|
||||||
|
|
||||||
loopPoolPtr_.reset();
|
loopPoolPtr_.reset();
|
||||||
|
|
||||||
for (auto &iter : timingWheelMap_) {
|
for (auto &iter : timingWheelMap_) {
|
||||||
std::promise<int> pro;
|
std::promise<int> pro;
|
||||||
auto f = pro.get_future();
|
auto f = pro.get_future();
|
||||||
|
|
||||||
iter.second->getLoop()->runInLoop([&iter, &pro]() mutable {
|
iter.second->getLoop()->runInLoop([&iter, &pro]() mutable {
|
||||||
iter.second.reset();
|
iter.second.reset();
|
||||||
pro.set_value(1);
|
pro.set_value(1);
|
||||||
});
|
});
|
||||||
|
|
||||||
f.get();
|
f.get();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -169,9 +164,11 @@ void TcpServer::connectionClosed(const TcpConnectionPtr &connectionPtr) {
|
|||||||
LOG_TRACE << "connectionClosed";
|
LOG_TRACE << "connectionClosed";
|
||||||
// loop_->assertInLoopThread();
|
// loop_->assertInLoopThread();
|
||||||
loop_->runInLoop([this, connectionPtr]() {
|
loop_->runInLoop([this, connectionPtr]() {
|
||||||
|
|
||||||
size_t n = connSet_.erase(connectionPtr);
|
size_t n = connSet_.erase(connectionPtr);
|
||||||
(void)n;
|
(void)n;
|
||||||
assert(n == 1);
|
assert(n == 1);
|
||||||
|
|
||||||
});
|
});
|
||||||
|
|
||||||
static_cast<TcpConnectionImpl *>(connectionPtr.get())->connectDestroyed();
|
static_cast<TcpConnectionImpl *>(connectionPtr.get())->connectDestroyed();
|
||||||
|
Loading…
Reference in New Issue
Block a user