north_common/discovery/discovery_options.rs
1use std::collections::HashMap;
2
3#[derive(Copy, Clone, Debug)]
4#[derive(Default)]
5pub enum DiscoveryHttpMethods {
6 Post,
7 #[default]
8 Get,
9 Delete,
10 Patch,
11 Options,
12 Head,
13 Put,
14}
15
16
17/*
18#[derive(Default, Clone)]
19pub struct ScriptDiscoveryOptions {
20 service_id: String,
21 service_name: String,
22 interval: i64,
23 fail_fast: bool,
24 scheme: String,
25
26 args: Vec<String>,
27 timeout: Option<i64>,
28 script: String,
29}
30
31#[derive(Default, Clone)]
32pub struct HttpDiscoveryOptions {
33 service_id: String,
34 service_name: String,
35 interval: i64,
36 fail_fast: bool,
37 scheme: String,
38
39 timeout: Option<i64>,
40
41 body: Option<String>,
42 header: HashMap<String, String>,
43 http: String,
44 skip_verify_tls: Option<bool>,
45 method: DiscoveryHttpMethods,
46}
47
48#[derive(Default, Clone)]
49pub struct TcpDiscoveryOptions {
50 service_id: String,
51 service_name: String,
52 interval: i64,
53 fail_fast: bool,
54 scheme: String,
55
56 timeout: Option<i64>,
57 tcp: String,
58}
59
60#[derive(Default, Clone)]
61pub struct DockerDiscoveryOptions {
62 service_id: String,
63 service_name: String,
64 interval: i64,
65 fail_fast: bool,
66 scheme: String,
67
68 timeout: Option<i64>,
69 shell: String,
70 args: Option<String>,
71 docker_container_id: String,
72}
73
74#[derive(Default, Clone)]
75pub struct GrpcDiscoveryOptions {
76 service_id: String,
77 service_name: String,
78 interval: i64,
79 fail_fast: bool,
80 scheme: String,
81
82 timeout: Option<i64>,
83 grpc: String,
84 use_tls: bool,
85}
86
87#[derive(Default, Clone)]
88pub struct TtlDiscoveryOptions {
89 service_id: String,
90 service_name: String,
91 interval: i64,
92 fail_fast: bool,
93 scheme: String,
94
95 timeout: Option<i64>,
96 ttl: Option<i64>,
97}
98
99#[derive(Default, Clone)]
100pub struct AliasServiceDiscoveryOptions {
101 service_id: String,
102 service_name: String,
103 interval: i64,
104 fail_fast: bool,
105 scheme: String,
106
107 timeout: Option<i64>,
108 ttl: Option<i64>,
109 alias_service: String,
110 alias_node: Option<String>,
111}
112*/
113
114#[derive(Default, Clone, Debug)]
115pub struct DiscoveryOptions {
116 pub service_id: String,
117 pub service_name: String,
118 pub interval: i64,
119 pub fail_fast: bool,
120 pub scheme: String,
121
122 pub timeout: Option<i64>,
123
124 pub body: Option<String>,
125 pub header: HashMap<String, String>,
126 pub http: String,
127 pub skip_verify_tls: Option<bool>,
128 pub method: DiscoveryHttpMethods,
129}
130
131// pub union DiscoveryOptions {
132// http: ManuallyDrop<HttpDiscoveryOptions>,
133// alias: ManuallyDrop<AliasServiceDiscoveryOptions>,
134// grpc: ManuallyDrop<GrpcDiscoveryOptions>,
135// ttl: ManuallyDrop<TtlDiscoveryOptions>,
136// docker: ManuallyDrop<DockerDiscoveryOptions>,
137// script: ManuallyDrop<ScriptDiscoveryOptions>,
138// }