1 /* 2 * 3 * Copyright 2015-2016 gRPC authors. 4 * 5 * Licensed under the Apache License, Version 2.0 (the "License"); 6 * you may not use this file except in compliance with the License. 7 * You may obtain a copy of the License at 8 * 9 * http://www.apache.org/licenses/LICENSE-2.0 10 * 11 * Unless required by applicable law or agreed to in writing, software 12 * distributed under the License is distributed on an "AS IS" BASIS, 13 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14 * See the License for the specific language governing permissions and 15 * limitations under the License. 16 * 17 */ 18 19 #ifndef GRPC_TEST_CORE_UTIL_RECONNECT_SERVER_H 20 #define GRPC_TEST_CORE_UTIL_RECONNECT_SERVER_H 21 22 #include <grpc/support/sync.h> 23 #include <grpc/support/time.h> 24 #include "test/core/util/test_tcp_server.h" 25 26 typedef struct timestamp_list { 27 gpr_timespec timestamp; 28 struct timestamp_list* next; 29 } timestamp_list; 30 31 typedef struct reconnect_server { 32 test_tcp_server tcp_server; 33 timestamp_list* head; 34 timestamp_list* tail; 35 char* peer; 36 int max_reconnect_backoff_ms; 37 } reconnect_server; 38 39 void reconnect_server_init(reconnect_server* server); 40 void reconnect_server_start(reconnect_server* server, int port); 41 void reconnect_server_poll(reconnect_server* server, int seconds); 42 void reconnect_server_destroy(reconnect_server* server); 43 void reconnect_server_clear_timestamps(reconnect_server* server); 44 45 #endif /* GRPC_TEST_CORE_UTIL_RECONNECT_SERVER_H */ 46