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// }