Better logging of NativeFd.
GitOrigin-RevId: 4d094f01a74c46acb5d4a0c8da4e67614bec1b6e
This commit is contained in:
parent
cc077a3971
commit
eff963a7c1
@ -283,7 +283,6 @@ class OpenClose final : public Actor {
|
|||||||
auto r_file_fd = FileFd::open("server", FileFd::Read | FileFd::Create);
|
auto r_file_fd = FileFd::open("server", FileFd::Read | FileFd::Create);
|
||||||
CHECK(r_file_fd.is_ok()) << r_file_fd.error();
|
CHECK(r_file_fd.is_ok()) << r_file_fd.error();
|
||||||
auto file_fd = r_file_fd.move_as_ok();
|
auto file_fd = r_file_fd.move_as_ok();
|
||||||
// LOG(ERROR) << file_fd.get_native_fd();
|
|
||||||
file_fd.get_poll_info().extract_pollable_fd(observer);
|
file_fd.get_poll_info().extract_pollable_fd(observer);
|
||||||
file_fd.close();
|
file_fd.close();
|
||||||
cnt_--;
|
cnt_--;
|
||||||
|
@ -40,7 +40,7 @@ namespace detail {
|
|||||||
class ServerSocketFdImpl : private Iocp::Callback {
|
class ServerSocketFdImpl : private Iocp::Callback {
|
||||||
public:
|
public:
|
||||||
ServerSocketFdImpl(NativeFd fd, int socket_family) : info_(std::move(fd)), socket_family_(socket_family) {
|
ServerSocketFdImpl(NativeFd fd, int socket_family) : info_(std::move(fd)), socket_family_(socket_family) {
|
||||||
VLOG(fd) << get_native_fd().socket() << " create ServerSocketFd";
|
VLOG(fd) << get_native_fd() << " create ServerSocketFd";
|
||||||
Iocp::get()->subscribe(get_native_fd(), this);
|
Iocp::get()->subscribe(get_native_fd(), this);
|
||||||
notify_iocp_read();
|
notify_iocp_read();
|
||||||
}
|
}
|
||||||
@ -105,11 +105,11 @@ class ServerSocketFdImpl : private Iocp::Callback {
|
|||||||
info_.set_native_fd({});
|
info_.set_native_fd({});
|
||||||
}
|
}
|
||||||
void on_read() {
|
void on_read() {
|
||||||
VLOG(fd) << get_native_fd().socket() << " on_read";
|
VLOG(fd) << get_native_fd() << " on_read";
|
||||||
if (is_read_active_) {
|
if (is_read_active_) {
|
||||||
is_read_active_ = false;
|
is_read_active_ = false;
|
||||||
auto r_socket = SocketFd::from_native_fd(std::move(accept_socket_));
|
auto r_socket = SocketFd::from_native_fd(std::move(accept_socket_));
|
||||||
VLOG(fd) << get_native_fd().socket() << " finish accept";
|
VLOG(fd) << get_native_fd() << " finish accept";
|
||||||
if (r_socket.is_error()) {
|
if (r_socket.is_error()) {
|
||||||
return on_error(r_socket.move_as_error());
|
return on_error(r_socket.move_as_error());
|
||||||
}
|
}
|
||||||
@ -125,7 +125,7 @@ class ServerSocketFdImpl : private Iocp::Callback {
|
|||||||
CHECK(!is_read_active_);
|
CHECK(!is_read_active_);
|
||||||
accept_socket_ = NativeFd(socket(socket_family_, SOCK_STREAM, 0));
|
accept_socket_ = NativeFd(socket(socket_family_, SOCK_STREAM, 0));
|
||||||
std::memset(&read_overlapped_, 0, sizeof(read_overlapped_));
|
std::memset(&read_overlapped_, 0, sizeof(read_overlapped_));
|
||||||
VLOG(fd) << get_native_fd().socket() << " start accept";
|
VLOG(fd) << get_native_fd() << " start accept";
|
||||||
BOOL status = AcceptEx(get_native_fd().socket(), accept_socket_.socket(), addr_buf_, 0, MAX_ADDR_SIZE,
|
BOOL status = AcceptEx(get_native_fd().socket(), accept_socket_.socket(), addr_buf_, 0, MAX_ADDR_SIZE,
|
||||||
MAX_ADDR_SIZE, nullptr, &read_overlapped_);
|
MAX_ADDR_SIZE, nullptr, &read_overlapped_);
|
||||||
if (status == TRUE || check_status("Failed to accept connection")) {
|
if (status == TRUE || check_status("Failed to accept connection")) {
|
||||||
@ -183,12 +183,12 @@ class ServerSocketFdImpl : private Iocp::Callback {
|
|||||||
UNREACHABLE();
|
UNREACHABLE();
|
||||||
}
|
}
|
||||||
void notify_iocp_read() {
|
void notify_iocp_read() {
|
||||||
VLOG(fd) << get_native_fd().socket() << " notify_read";
|
VLOG(fd) << get_native_fd() << " notify_read";
|
||||||
inc_refcnt();
|
inc_refcnt();
|
||||||
Iocp::get()->post(0, this, nullptr);
|
Iocp::get()->post(0, this, nullptr);
|
||||||
}
|
}
|
||||||
void notify_iocp_close() {
|
void notify_iocp_close() {
|
||||||
VLOG(fd) << get_native_fd().socket() << " notify_close";
|
VLOG(fd) << get_native_fd() << " notify_close";
|
||||||
Iocp::get()->post(0, this, reinterpret_cast<WSAOVERLAPPED *>(&close_overlapped_));
|
Iocp::get()->post(0, this, reinterpret_cast<WSAOVERLAPPED *>(&close_overlapped_));
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
@ -36,7 +36,7 @@ namespace detail {
|
|||||||
class SocketFdImpl : private Iocp::Callback {
|
class SocketFdImpl : private Iocp::Callback {
|
||||||
public:
|
public:
|
||||||
explicit SocketFdImpl(NativeFd native_fd) : info(std::move(native_fd)) {
|
explicit SocketFdImpl(NativeFd native_fd) : info(std::move(native_fd)) {
|
||||||
VLOG(fd) << get_native_fd().socket() << " create from native_fd";
|
VLOG(fd) << get_native_fd() << " create from native_fd";
|
||||||
get_poll_info().add_flags(PollFlags::Write());
|
get_poll_info().add_flags(PollFlags::Write());
|
||||||
Iocp::get()->subscribe(get_native_fd(), this);
|
Iocp::get()->subscribe(get_native_fd(), this);
|
||||||
is_read_active_ = true;
|
is_read_active_ = true;
|
||||||
@ -44,7 +44,7 @@ class SocketFdImpl : private Iocp::Callback {
|
|||||||
}
|
}
|
||||||
|
|
||||||
SocketFdImpl(NativeFd native_fd, const IPAddress &addr) : info(std::move(native_fd)) {
|
SocketFdImpl(NativeFd native_fd, const IPAddress &addr) : info(std::move(native_fd)) {
|
||||||
VLOG(fd) << get_native_fd().socket() << " create from native_fd and connect";
|
VLOG(fd) << get_native_fd() << " create from native_fd and connect";
|
||||||
get_poll_info().add_flags(PollFlags::Write());
|
get_poll_info().add_flags(PollFlags::Write());
|
||||||
Iocp::get()->subscribe(get_native_fd(), this);
|
Iocp::get()->subscribe(get_native_fd(), this);
|
||||||
LPFN_CONNECTEX ConnectExPtr = nullptr;
|
LPFN_CONNECTEX ConnectExPtr = nullptr;
|
||||||
@ -232,7 +232,7 @@ class SocketFdImpl : private Iocp::Callback {
|
|||||||
}
|
}
|
||||||
|
|
||||||
void on_error(Status status) {
|
void on_error(Status status) {
|
||||||
VLOG(fd) << get_native_fd().socket() << " on error " << status;
|
VLOG(fd) << get_native_fd() << " on error " << status;
|
||||||
{
|
{
|
||||||
auto lock = lock_.lock();
|
auto lock = lock_.lock();
|
||||||
pending_errors_.push(std::move(status));
|
pending_errors_.push(std::move(status));
|
||||||
@ -241,7 +241,7 @@ class SocketFdImpl : private Iocp::Callback {
|
|||||||
}
|
}
|
||||||
|
|
||||||
void on_connected() {
|
void on_connected() {
|
||||||
VLOG(fd) << get_native_fd().socket() << " on connected";
|
VLOG(fd) << get_native_fd() << " on connected";
|
||||||
CHECK(!is_connected_);
|
CHECK(!is_connected_);
|
||||||
CHECK(is_read_active_);
|
CHECK(is_read_active_);
|
||||||
is_connected_ = true;
|
is_connected_ = true;
|
||||||
@ -251,7 +251,7 @@ class SocketFdImpl : private Iocp::Callback {
|
|||||||
}
|
}
|
||||||
|
|
||||||
void on_read(size_t size) {
|
void on_read(size_t size) {
|
||||||
VLOG(fd) << get_native_fd().socket() << " on read " << size;
|
VLOG(fd) << get_native_fd() << " on read " << size;
|
||||||
CHECK(is_read_active_);
|
CHECK(is_read_active_);
|
||||||
is_read_active_ = false;
|
is_read_active_ = false;
|
||||||
if (size == 0) {
|
if (size == 0) {
|
||||||
@ -264,7 +264,7 @@ class SocketFdImpl : private Iocp::Callback {
|
|||||||
}
|
}
|
||||||
|
|
||||||
void on_write(size_t size) {
|
void on_write(size_t size) {
|
||||||
VLOG(fd) << get_native_fd().socket() << " on write " << size;
|
VLOG(fd) << get_native_fd() << " on write " << size;
|
||||||
if (size == 0) {
|
if (size == 0) {
|
||||||
if (is_write_active_) {
|
if (is_write_active_) {
|
||||||
return;
|
return;
|
||||||
@ -278,12 +278,12 @@ class SocketFdImpl : private Iocp::Callback {
|
|||||||
}
|
}
|
||||||
|
|
||||||
void on_close() {
|
void on_close() {
|
||||||
VLOG(fd) << get_native_fd().socket() << " on close";
|
VLOG(fd) << get_native_fd() << " on close";
|
||||||
close_flag_ = true;
|
close_flag_ = true;
|
||||||
info.set_native_fd({});
|
info.set_native_fd({});
|
||||||
}
|
}
|
||||||
bool dec_refcnt() {
|
bool dec_refcnt() {
|
||||||
VLOG(fd) << get_native_fd().socket() << " dec_refcnt from " << refcnt_;
|
VLOG(fd) << get_native_fd() << " dec_refcnt from " << refcnt_;
|
||||||
if (--refcnt_ == 0) {
|
if (--refcnt_ == 0) {
|
||||||
delete this;
|
delete this;
|
||||||
return true;
|
return true;
|
||||||
@ -293,7 +293,7 @@ class SocketFdImpl : private Iocp::Callback {
|
|||||||
void inc_refcnt() {
|
void inc_refcnt() {
|
||||||
CHECK(refcnt_ != 0);
|
CHECK(refcnt_ != 0);
|
||||||
refcnt_++;
|
refcnt_++;
|
||||||
VLOG(fd) << get_native_fd().socket() << " inc_refcnt to " << refcnt_;
|
VLOG(fd) << get_native_fd() << " inc_refcnt to " << refcnt_;
|
||||||
}
|
}
|
||||||
|
|
||||||
void notify_iocp_write() {
|
void notify_iocp_write() {
|
||||||
|
@ -272,7 +272,7 @@ class UdpSocketFdImpl : private Iocp::Callback {
|
|||||||
}
|
}
|
||||||
|
|
||||||
void on_error(Status status) {
|
void on_error(Status status) {
|
||||||
VLOG(fd) << get_native_fd().socket() << " on error " << status;
|
VLOG(fd) << get_native_fd() << " on error " << status;
|
||||||
{
|
{
|
||||||
auto lock = lock_.lock();
|
auto lock = lock_.lock();
|
||||||
pending_errors_.push(std::move(status));
|
pending_errors_.push(std::move(status));
|
||||||
@ -281,7 +281,7 @@ class UdpSocketFdImpl : private Iocp::Callback {
|
|||||||
}
|
}
|
||||||
|
|
||||||
void on_connected() {
|
void on_connected() {
|
||||||
VLOG(fd) << get_native_fd().socket() << " on connected";
|
VLOG(fd) << get_native_fd() << " on connected";
|
||||||
CHECK(!is_connected_);
|
CHECK(!is_connected_);
|
||||||
CHECK(is_receive_active_);
|
CHECK(is_receive_active_);
|
||||||
is_connected_ = true;
|
is_connected_ = true;
|
||||||
@ -291,7 +291,7 @@ class UdpSocketFdImpl : private Iocp::Callback {
|
|||||||
}
|
}
|
||||||
|
|
||||||
void on_receive(size_t size) {
|
void on_receive(size_t size) {
|
||||||
VLOG(fd) << get_native_fd().socket() << " on receive " << size;
|
VLOG(fd) << get_native_fd() << " on receive " << size;
|
||||||
CHECK(is_receive_active_);
|
CHECK(is_receive_active_);
|
||||||
is_receive_active_ = false;
|
is_receive_active_ = false;
|
||||||
receive_helper_.from_native(receive_message_, size, to_receive_);
|
receive_helper_.from_native(receive_message_, size, to_receive_);
|
||||||
@ -306,7 +306,7 @@ class UdpSocketFdImpl : private Iocp::Callback {
|
|||||||
}
|
}
|
||||||
|
|
||||||
void on_send(size_t size) {
|
void on_send(size_t size) {
|
||||||
VLOG(fd) << get_native_fd().socket() << " on send " << size;
|
VLOG(fd) << get_native_fd() << " on send " << size;
|
||||||
if (size == 0) {
|
if (size == 0) {
|
||||||
if (is_send_active_) {
|
if (is_send_active_) {
|
||||||
return;
|
return;
|
||||||
@ -319,7 +319,7 @@ class UdpSocketFdImpl : private Iocp::Callback {
|
|||||||
}
|
}
|
||||||
|
|
||||||
void on_close() {
|
void on_close() {
|
||||||
VLOG(fd) << get_native_fd().socket() << " on close";
|
VLOG(fd) << get_native_fd() << " on close";
|
||||||
close_flag_ = true;
|
close_flag_ = true;
|
||||||
info_.set_native_fd({});
|
info_.set_native_fd({});
|
||||||
}
|
}
|
||||||
@ -527,8 +527,7 @@ class UdpSocketFdImpl {
|
|||||||
return Status::OK();
|
return Status::OK();
|
||||||
}
|
}
|
||||||
|
|
||||||
auto error =
|
auto error = Status::PosixError(recvmsg_errno, PSLICE() << "Receive from " << get_native_fd() << " has failed");
|
||||||
Status::PosixError(recvmsg_errno, PSLICE() << "Receive from [fd=" << get_native_fd() << "] has failed");
|
|
||||||
switch (recvmsg_errno) {
|
switch (recvmsg_errno) {
|
||||||
case EBADF:
|
case EBADF:
|
||||||
case EFAULT:
|
case EFAULT:
|
||||||
@ -575,7 +574,7 @@ class UdpSocketFdImpl {
|
|||||||
return Status::OK();
|
return Status::OK();
|
||||||
}
|
}
|
||||||
|
|
||||||
auto error = Status::PosixError(sendmsg_errno, PSLICE() << "Send from [fd=" << get_native_fd() << "] has failed");
|
auto error = Status::PosixError(sendmsg_errno, PSLICE() << "Send from " << get_native_fd() << " has failed");
|
||||||
switch (sendmsg_errno) {
|
switch (sendmsg_errno) {
|
||||||
// Still may send some other packets, but there is no point to resend this particular message
|
// Still may send some other packets, but there is no point to resend this particular message
|
||||||
case EACCES:
|
case EACCES:
|
||||||
|
Reference in New Issue
Block a user