1 |
|
2 |
|
3 |
|
4 |
|
5 |
|
6 |
|
7 |
|
8 |
|
9 |
|
10 |
|
11 |
|
12 |
|
13 |
|
14 |
|
15 |
|
16 |
|
17 |
|
18 | import { CompressionAlgorithms } from './compression-algorithms';
|
19 |
|
20 |
|
21 |
|
22 |
|
23 | export interface ChannelOptions {
|
24 | 'grpc.ssl_target_name_override'?: string;
|
25 | 'grpc.primary_user_agent'?: string;
|
26 | 'grpc.secondary_user_agent'?: string;
|
27 | 'grpc.default_authority'?: string;
|
28 | 'grpc.keepalive_time_ms'?: number;
|
29 | 'grpc.keepalive_timeout_ms'?: number;
|
30 | 'grpc.keepalive_permit_without_calls'?: number;
|
31 | 'grpc.service_config'?: string;
|
32 | 'grpc.max_concurrent_streams'?: number;
|
33 | 'grpc.initial_reconnect_backoff_ms'?: number;
|
34 | 'grpc.max_reconnect_backoff_ms'?: number;
|
35 | 'grpc.use_local_subchannel_pool'?: number;
|
36 | 'grpc.max_send_message_length'?: number;
|
37 | 'grpc.max_receive_message_length'?: number;
|
38 | 'grpc.enable_http_proxy'?: number;
|
39 | |
40 |
|
41 |
|
42 | 'grpc.http_connect_target'?: string;
|
43 | 'grpc.http_connect_creds'?: string;
|
44 | 'grpc.default_compression_algorithm'?: CompressionAlgorithms;
|
45 | 'grpc.enable_channelz'?: number;
|
46 | 'grpc.dns_min_time_between_resolutions_ms'?: number;
|
47 | 'grpc.enable_retries'?: number;
|
48 | 'grpc.per_rpc_retry_buffer_size'?: number;
|
49 | |
50 |
|
51 |
|
52 |
|
53 |
|
54 | 'grpc.retry_buffer_size'?: number;
|
55 | 'grpc.max_connection_age_ms'?: number;
|
56 | 'grpc.max_connection_age_grace_ms'?: number;
|
57 | 'grpc-node.max_session_memory'?: number;
|
58 | 'grpc.service_config_disable_resolution'?: number;
|
59 |
|
60 | [key: string]: any;
|
61 | }
|
62 |
|
63 |
|
64 |
|
65 |
|
66 |
|
67 | export const recognizedOptions = {
|
68 | 'grpc.ssl_target_name_override': true,
|
69 | 'grpc.primary_user_agent': true,
|
70 | 'grpc.secondary_user_agent': true,
|
71 | 'grpc.default_authority': true,
|
72 | 'grpc.keepalive_time_ms': true,
|
73 | 'grpc.keepalive_timeout_ms': true,
|
74 | 'grpc.keepalive_permit_without_calls': true,
|
75 | 'grpc.service_config': true,
|
76 | 'grpc.max_concurrent_streams': true,
|
77 | 'grpc.initial_reconnect_backoff_ms': true,
|
78 | 'grpc.max_reconnect_backoff_ms': true,
|
79 | 'grpc.use_local_subchannel_pool': true,
|
80 | 'grpc.max_send_message_length': true,
|
81 | 'grpc.max_receive_message_length': true,
|
82 | 'grpc.enable_http_proxy': true,
|
83 | 'grpc.enable_channelz': true,
|
84 | 'grpc.dns_min_time_between_resolutions_ms': true,
|
85 | 'grpc.enable_retries': true,
|
86 | 'grpc.per_rpc_retry_buffer_size': true,
|
87 | 'grpc.retry_buffer_size': true,
|
88 | 'grpc.max_connection_age_ms': true,
|
89 | 'grpc.max_connection_age_grace_ms': true,
|
90 | 'grpc-node.max_session_memory': true,
|
91 | 'grpc.service_config_disable_resolution': true,
|
92 | };
|
93 |
|
94 | export function channelOptionsEqual(
|
95 | options1: ChannelOptions,
|
96 | options2: ChannelOptions
|
97 | ) {
|
98 | const keys1 = Object.keys(options1).sort();
|
99 | const keys2 = Object.keys(options2).sort();
|
100 | if (keys1.length !== keys2.length) {
|
101 | return false;
|
102 | }
|
103 | for (let i = 0; i < keys1.length; i += 1) {
|
104 | if (keys1[i] !== keys2[i]) {
|
105 | return false;
|
106 | }
|
107 | if (options1[keys1[i]] !== options2[keys2[i]]) {
|
108 | return false;
|
109 | }
|
110 | }
|
111 | return true;
|
112 | }
|