1use jvm_serializable::java::io::*;
2use multimap::MultiMap;
3use serde::{Deserialize, Serialize};
4use std::collections::hash_map::RandomState;
5use std::sync::{Arc, Mutex, RwLock};
6
7#[jvm_object(io.vertx.core.net.impl.ServerID,5636540499169644934)]
9pub struct ServerID {
10 pub port: i32,
11 pub host: String,
12}
13
14#[jvm_object(io.vertx.core.eventbus.impl.clustered.ClusterNodeInfo,1)]
16pub struct ClusterNodeInfo {
17 pub nodeId: String,
18 pub serverID: ServerID,
19}
20
21pub trait ClusterManager: Send {
23 fn add_sub(&self, address: String);
25
26 fn set_cluster_node_info(&mut self, node: ClusterNodeInfo);
28
29 fn get_node_id(&self) -> String;
31
32 fn get_nodes(&self) -> Vec<String>;
34
35 fn get_ha_infos(&self) -> Arc<Mutex<Vec<ClusterNodeInfo>>>;
37
38 fn get_subs(&self) -> Arc<RwLock<MultiMap<String, ClusterNodeInfo>>>;
40
41 fn join(&mut self);
43
44 fn leave(&self);
46
47 fn next(&self, len: usize) -> usize;
49}
50
51pub struct NoClusterManager;
53
54impl ClusterManager for NoClusterManager {
55 fn add_sub(&self, _address: String) {
56 unimplemented!()
57 }
58
59 fn set_cluster_node_info(&mut self, _node: ClusterNodeInfo) {
60 unimplemented!()
61 }
62
63 fn get_node_id(&self) -> String {
64 unimplemented!()
65 }
66
67 fn get_nodes(&self) -> Vec<String> {
68 unimplemented!()
69 }
70
71 fn get_ha_infos(&self) -> Arc<Mutex<Vec<ClusterNodeInfo>>> {
72 unimplemented!()
73 }
74
75 fn get_subs(&self) -> Arc<RwLock<MultiMap<String, ClusterNodeInfo, RandomState>>> {
76 unimplemented!()
77 }
78
79 fn join(&mut self) {
80 unimplemented!()
81 }
82
83 fn leave(&self) {
84 unimplemented!()
85 }
86
87 fn next(&self, _len: usize) -> usize {
88 unimplemented!()
89 }
90}