// File: /workspace/github_cpp_makefile_star2_O3/guoxuanhan[P]NetServer/echoserver.cpp
// Function: EchoServer::EchoServer(EventLoop*, int, int)
EchoServer::EchoServer(EventLoop* loop, const int port, const int threadnum)
    : tcpserver_(loop, port, threadnum)
{
    tcpserver_.SetNewConnCallback(std::bind(&EchoServer::HandleNewConnection, this, std::placeholders::_1));
    tcpserver_.SetMessageCallback(std::bind(&EchoServer::HandleMessage, this, std::placeholders::_1, std::placeholders::_2));
    tcpserver_.SetSendCompleteCallback(std::bind(&EchoServer::HandleSendComplete, this, std::placeholders::_1));
    tcpserver_.SetCloseCallback(std::bind(&EchoServer::HandleClose, this, std::placeholders::_1));
    tcpserver_.SetErrorCallback(std::bind(&EchoServer::HandleError, this, std::placeholders::_1));
}

// Assembly:
pushq %r15
pushq %r14
pushq %rbx
subq $0x20, %rsp
movq %rdi, %rbx
callq 0xd360
movq $0x0, 0x8(%rsp)
movl $0x18, %edi
callq 0x4350
leaq 0x2ab(%rip), %rcx       # 0x5132
movq %rcx, (%rax)
movq $0x0, 0x8(%rax)
movq %rbx, 0x10(%rax)
movq %rsp, %rsi
movq %rax, (%rsi)
leaq 0x575(%rip), %r14       # 0x5418
movq %r14, 0x18(%rsi)
leaq 0x586(%rip), %r15       # 0x5434
movq %r15, 0x10(%rsi)
leaq 0x128(%rbx), %rdi
callq 0x5290
movq 0x10(%rsp), %rax
testq %rax, %rax
je 0x4ed5
movq %rsp, %rdi
movq %rdi, %rsi
movl $0x3, %edx
callq *%rax
movq $0x0, 0x8(%rsp)
movl $0x18, %edi
callq 0x4350
leaq 0x287(%rip), %rcx       # 0x5176
movq %rcx, (%rax)
movq $0x0, 0x8(%rax)
movq %rbx, 0x10(%rax)
movq %rsp, %rsi
movq %rax, (%rsi)
leaq 0x5b1(%rip), %rax       # 0x54bc
movq %rax, 0x18(%rsi)
leaq 0x5c2(%rip), %rax       # 0x54d8
movq %rax, 0x10(%rsi)
leaq 0x148(%rbx), %rdi
callq 0x5354
movq 0x10(%rsp), %rax
testq %rax, %rax
je 0x4f3d
movq %rsp, %rdi
movq %rdi, %rsi
movl $0x3, %edx
callq *%rax
movq $0x0, 0x8(%rsp)
movl $0x18, %edi
callq 0x4350
leaq 0x2a3(%rip), %rcx       # 0x51fa
movq %rcx, (%rax)
movq $0x0, 0x8(%rax)
movq %rbx, 0x10(%rax)
movq %rsp, %rsi
movq %rax, (%rsi)
movq %r14, 0x18(%rsi)
movq %r15, 0x10(%rsi)
leaq 0x168(%rbx), %rdi
callq 0x5290
movq 0x10(%rsp), %rax
testq %rax, %rax
je 0x4f97
movq %rsp, %rdi
movq %rdi, %rsi
movl $0x3, %edx
callq *%rax
movq $0x0, 0x8(%rsp)
movl $0x18, %edi
callq 0x4350
leaq 0x24b(%rip), %rcx       # 0x51fc
movq %rcx, (%rax)
movq $0x0, 0x8(%rax)
movq %rbx, 0x10(%rax)
movq %rsp, %rsi
movq %rax, (%rsi)
movq %r14, 0x18(%rsi)
movq %r15, 0x10(%rsi)
leaq 0x188(%rbx), %rdi
callq 0x5290
movq 0x10(%rsp), %rax
testq %rax, %rax
je 0x4ff1
movq %rsp, %rdi
movq %rdi, %rsi
movl $0x3, %edx
callq *%rax
movq $0x0, 0x8(%rsp)
movl $0x18, %edi
callq 0x4350
leaq 0x235(%rip), %rcx       # 0x5240
movq %rcx, (%rax)
movq $0x0, 0x8(%rax)
movq %rbx, 0x10(%rax)
movq %rsp, %rsi
movq %rax, (%rsi)
movq %r14, 0x18(%rsi)
movq %r15, 0x10(%rsi)
leaq 0x1a8(%rbx), %rdi
callq 0x5290
movq 0x10(%rsp), %rax
testq %rax, %rax
je 0x504b
movq %rsp, %rdi
movq %rdi, %rsi
movl $0x3, %edx
callq *%rax
addq $0x20, %rsp
popq %rbx
popq %r14
popq %r15
retq
jmp 0x5117
jmp 0x5117
jmp 0x5117
jmp 0x5117
jmp 0x5117
movq %rax, %r14
movq 0x10(%rsp), %rax
testq %rax, %rax
je 0x5122
movq %rsp, %rdi
movq %rdi, %rsi
movl $0x3, %edx
callq *%rax
jmp 0x5122
jmp 0x5117
jmp 0x511f
movq %rax, %r14
movq 0x10(%rsp), %rax
testq %rax, %rax
je 0x5122
movq %rsp, %rdi
movq %rdi, %rsi
movl $0x3, %edx
callq *%rax
jmp 0x5122
jmp 0x5117
jmp 0x511f
movq %rax, %r14
movq 0x10(%rsp), %rax
testq %rax, %rax
je 0x5122
movq %rsp, %rdi
movq %rdi, %rsi
movl $0x3, %edx
callq *%rax
jmp 0x5122
jmp 0x5117
jmp 0x511f
movq %rax, %r14
movq 0x10(%rsp), %rax
testq %rax, %rax
je 0x5122
movq %rsp, %rdi
movq %rdi, %rsi
movl $0x3, %edx
callq *%rax
jmp 0x5122
jmp 0x5117
jmp 0x511f
movq %rax, %r14
movq 0x10(%rsp), %rax
testq %rax, %rax
je 0x5122
movq %rsp, %rdi
movq %rdi, %rsi
movl $0x3, %edx
callq *%rax
jmp 0x5122
movq %rax, %rdi
callq 0x4df2
movq %rax, %r14
movq %rbx, %rdi
callq 0xd9dc
movq %r14, %rdi
callq 0x45a0