|
15 | 15 | * limitations under the License.
|
16 | 16 | */
|
17 | 17 |
|
18 |
| -use std::{net::ToSocketAddrs, str::FromStr}; |
19 |
| - |
20 |
| -use crate::triple::transport::DubboServer; |
| 18 | +use crate::{common::url::Url, triple::server::builder::ServerBuilder}; |
21 | 19 |
|
22 | 20 | #[derive(Default, Clone)]
|
23 | 21 | pub struct TripleServer {
|
24 |
| - s: DubboServer, |
25 |
| - service_names: Vec<String>, |
| 22 | + builder: ServerBuilder, |
26 | 23 | }
|
27 | 24 |
|
28 | 25 | impl TripleServer {
|
29 |
| - pub fn new(names: Vec<String>) -> TripleServer { |
| 26 | + pub fn new() -> TripleServer { |
30 | 27 | Self {
|
31 |
| - service_names: names, |
32 |
| - s: DubboServer::new(), |
| 28 | + builder: ServerBuilder::new(), |
33 | 29 | }
|
34 | 30 | }
|
35 | 31 |
|
36 |
| - pub async fn serve(mut self, url: String) { |
37 |
| - { |
38 |
| - let lock = super::TRIPLE_SERVICES.read().unwrap(); |
39 |
| - for name in self.service_names.iter() { |
40 |
| - if lock.get(name).is_none() { |
41 |
| - tracing::warn!("service ({}) not register", name); |
42 |
| - continue; |
43 |
| - } |
44 |
| - let svc = lock.get(name).unwrap(); |
45 |
| - |
46 |
| - self.s = self.s.add_service(name.clone(), svc.clone()); |
47 |
| - } |
48 |
| - } |
49 |
| - |
50 |
| - let uri = match http::Uri::from_str(&url) { |
51 |
| - Ok(v) => v, |
52 |
| - Err(err) => { |
53 |
| - tracing::error!("http uri parse error: {}, url: {:?}", err, &url); |
54 |
| - return; |
55 |
| - } |
56 |
| - }; |
57 |
| - |
58 |
| - let authority = match uri.authority() { |
59 |
| - Some(v) => v.to_owned(), |
60 |
| - None => { |
61 |
| - tracing::error!("http authority is none"); |
62 |
| - return; |
63 |
| - } |
64 |
| - }; |
65 |
| - |
66 |
| - self.s |
67 |
| - .with_listener("tcp".to_string()) |
68 |
| - .serve( |
69 |
| - authority |
70 |
| - .to_string() |
71 |
| - .to_socket_addrs() |
72 |
| - .unwrap() |
73 |
| - .next() |
74 |
| - .unwrap(), |
75 |
| - ) |
76 |
| - .await |
77 |
| - .unwrap(); |
| 32 | + pub async fn serve(mut self, url: Url) { |
| 33 | + self.builder = ServerBuilder::from(url); |
| 34 | + self.builder.build().serve().await.unwrap() |
78 | 35 | }
|
79 | 36 | }
|
0 commit comments