Group the port picking functions

pull/12046/head
Yuchen Zeng 8 years ago
parent 32c0153f81
commit 36969385e5
  1. 25
      test/core/util/port.c
  2. 15
      test/core/util/port.h

@ -105,8 +105,27 @@ static void grpc_recycle_unused_port_impl(int port) {
GPR_ASSERT(free_chosen_port(port));
}
int (*grpc_pick_unused_port)(void) = grpc_pick_unused_port_impl;
int (*grpc_pick_unused_port_or_die)(void) = grpc_pick_unused_port_or_die_impl;
void (*grpc_recycle_unused_port)(int port) = grpc_recycle_unused_port_impl;
static grpc_pick_port_functions g_pick_port_functions = {
grpc_pick_unused_port_impl, grpc_pick_unused_port_or_die_impl,
grpc_recycle_unused_port_impl};
int grpc_pick_unused_port(void) {
return g_pick_port_functions.pick_unused_port_fn();
}
int grpc_pick_unused_port_or_die(void) {
return g_pick_port_functions.pick_unused_port_or_die_fn();
}
void grpc_recycle_unused_port(int port) {
g_pick_port_functions.recycle_unused_port_fn(port);
}
void grpc_set_pick_port_functions(grpc_pick_port_functions functions) {
GPR_ASSERT(functions.pick_unused_port_fn != NULL);
GPR_ASSERT(functions.pick_unused_port_or_die_fn != NULL);
GPR_ASSERT(functions.recycle_unused_port_fn != NULL);
g_pick_port_functions = functions;
}
#endif /* GRPC_TEST_PICK_PORT */

@ -23,18 +23,27 @@
extern "C" {
#endif
typedef struct grpc_pick_port_functions {
int (*pick_unused_port_fn)(void);
int (*pick_unused_port_or_die_fn)(void);
void (*recycle_unused_port_fn)(int port);
} grpc_pick_port_functions;
/* pick a port number that is currently unused by either tcp or udp. return
0 on failure. */
extern int (*grpc_pick_unused_port)(void);
int grpc_pick_unused_port(void);
/* pick a port number that is currently unused by either tcp or udp. abort
on failure. */
extern int (*grpc_pick_unused_port_or_die)(void);
int grpc_pick_unused_port_or_die(void);
/* Return a port which was previously returned by grpc_pick_unused_port().
* Implementations of grpc_pick_unused_port() backed by a portserver may limit
* the total number of ports available; this lets a binary return its allocated
* ports back to the server if it is going to allocate a large number. */
extern void (*grpc_recycle_unused_port)(int port);
void grpc_recycle_unused_port(int port);
/** Request the family of pick_port functions in \a functions be used. */
void grpc_set_pick_port_functions(grpc_pick_port_functions functions);
#ifdef __cplusplus
}

Loading…
Cancel
Save