pull/14544/head
Dan Zhang 7 years ago
parent b293e9e822
commit 6cc5a09ffd
  1. 12
      src/core/lib/iomgr/udp_server.cc
  2. 5
      test/core/iomgr/udp_server_test.cc

@ -123,7 +123,7 @@ class GrpcUdpListener {
// connections. // connections.
grpc_closure orphan_fd_closure_; grpc_closure orphan_fd_closure_;
grpc_closure destroyed_closure_; grpc_closure destroyed_closure_;
// To be scheduled on another thread to actually read/write. // To be scheduled on another thread to actually read/write.
grpc_closure do_read_closure_; grpc_closure do_read_closure_;
grpc_closure do_write_closure_; grpc_closure do_write_closure_;
grpc_closure notify_on_write_closure_; grpc_closure notify_on_write_closure_;
@ -159,9 +159,7 @@ GrpcUdpListener::GrpcUdpListener(grpc_udp_server* server, int fd,
gpr_mu_init(&mutex_); gpr_mu_init(&mutex_);
} }
GrpcUdpListener::~GrpcUdpListener() { GrpcUdpListener::~GrpcUdpListener() { gpr_mu_destroy(&mutex_); }
gpr_mu_destroy(&mutex_);
}
/* the overall server */ /* the overall server */
struct grpc_udp_server { struct grpc_udp_server {
@ -239,7 +237,6 @@ void GrpcUdpListener::shutdown_fd(void* args, grpc_error* error) {
gpr_mu_unlock(sp->mutex()); gpr_mu_unlock(sp->mutex());
} }
static void finish_shutdown(grpc_udp_server* s) { static void finish_shutdown(grpc_udp_server* s) {
if (s->shutdown_complete != nullptr) { if (s->shutdown_complete != nullptr) {
GRPC_CLOSURE_SCHED(s->shutdown_complete, GRPC_ERROR_NONE); GRPC_CLOSURE_SCHED(s->shutdown_complete, GRPC_ERROR_NONE);
@ -248,7 +245,7 @@ static void finish_shutdown(grpc_udp_server* s) {
gpr_mu_destroy(&s->mu); gpr_mu_destroy(&s->mu);
gpr_log(GPR_DEBUG, "Destroy all listeners."); gpr_log(GPR_DEBUG, "Destroy all listeners.");
for(size_t i = 0; i < s->listeners.size(); ++i) { for (size_t i = 0; i < s->listeners.size(); ++i) {
s->listeners[i].OnDestroy(); s->listeners[i].OnDestroy();
} }
@ -257,7 +254,6 @@ static void finish_shutdown(grpc_udp_server* s) {
} }
grpc_core::Delete(s); grpc_core::Delete(s);
} }
static void destroyed_port(void* server, grpc_error* error) { static void destroyed_port(void* server, grpc_error* error) {
@ -658,7 +654,7 @@ void grpc_udp_server_start(grpc_udp_server* s, grpc_pollset** pollsets,
s->pollsets = pollsets; s->pollsets = pollsets;
s->user_data = user_data; s->user_data = user_data;
for(size_t i = 0; i < s->listeners.size(); ++i) { for (size_t i = 0; i < s->listeners.size(); ++i) {
s->listeners[i].StartListening(pollsets, pollset_count, s->handler_factory); s->listeners[i].StartListening(pollsets, pollset_count, s->handler_factory);
} }

@ -82,7 +82,7 @@ class TestGrpcUdpHandler : public GrpcUdpHandler {
} }
void OnCanWrite(void* user_data, void OnCanWrite(void* user_data,
grpc_closure* notify_on_write_closure) override { grpc_closure* notify_on_write_closure) override {
gpr_mu_lock(g_mu); gpr_mu_lock(g_mu);
g_number_of_writes++; g_number_of_writes++;
@ -115,7 +115,6 @@ class TestGrpcUdpHandlerFactory : public GrpcUdpHandlerFactory {
void DestroyUdpHandler(GrpcUdpHandler* handler) override { void DestroyUdpHandler(GrpcUdpHandler* handler) override {
gpr_log(GPR_INFO, "Destroy handler"); gpr_log(GPR_INFO, "Destroy handler");
grpc_core::Delete(reinterpret_cast<TestGrpcUdpHandler*>(handler)); grpc_core::Delete(reinterpret_cast<TestGrpcUdpHandler*>(handler));
} }
}; };
@ -253,7 +252,7 @@ static void test_no_op_with_port_and_socket_factory(void) {
grpc_socket_factory_unref(&socket_factory->base); grpc_socket_factory_unref(&socket_factory->base);
/* The server haven't start listening, so no udp handler to be notified. */ /* The server haven't start listening, so no udp handler to be notified. */
GPR_ASSERT(g_number_of_orphan_calls == 0); GPR_ASSERT(g_number_of_orphan_calls == 0);
shutdown_and_destroy_pollset(); shutdown_and_destroy_pollset();
} }

Loading…
Cancel
Save