From 26d8a090ff577fd6e428405162cf5841c2a133ce Mon Sep 17 00:00:00 2001 From: Zhang Jingqiang Date: Tue, 28 Oct 2025 09:05:24 +0800 Subject: [PATCH] g3proxy: use less allocation when publish data to escaper --- g3proxy/src/control/capnp/escaper.rs | 2 +- g3proxy/src/escape/comply_audit/mod.rs | 2 +- g3proxy/src/escape/direct_fixed/mod.rs | 2 +- g3proxy/src/escape/direct_float/mod.rs | 2 +- g3proxy/src/escape/direct_float/publish.rs | 4 ++-- g3proxy/src/escape/divert_tcp/mod.rs | 2 +- g3proxy/src/escape/dummy_deny/mod.rs | 2 +- g3proxy/src/escape/mod.rs | 2 +- g3proxy/src/escape/proxy_float/mod.rs | 2 +- g3proxy/src/escape/proxy_float/source/mod.rs | 4 ++-- g3proxy/src/escape/proxy_http/mod.rs | 2 +- g3proxy/src/escape/proxy_https/mod.rs | 2 +- g3proxy/src/escape/proxy_socks5/mod.rs | 2 +- g3proxy/src/escape/proxy_socks5s/mod.rs | 2 +- g3proxy/src/escape/route_client/mod.rs | 2 +- g3proxy/src/escape/route_failover/mod.rs | 2 +- g3proxy/src/escape/route_geoip/mod.rs | 2 +- g3proxy/src/escape/route_mapping/mod.rs | 2 +- g3proxy/src/escape/route_query/mod.rs | 2 +- g3proxy/src/escape/route_resolved/mod.rs | 2 +- g3proxy/src/escape/route_select/mod.rs | 2 +- g3proxy/src/escape/route_upstream/mod.rs | 2 +- g3proxy/src/escape/trick_float/mod.rs | 2 +- 23 files changed, 25 insertions(+), 25 deletions(-) diff --git a/g3proxy/src/control/capnp/escaper.rs b/g3proxy/src/control/capnp/escaper.rs index 7b0a5e56..6fcd1532 100644 --- a/g3proxy/src/control/capnp/escaper.rs +++ b/g3proxy/src/control/capnp/escaper.rs @@ -28,7 +28,7 @@ impl escaper_control::Server for EscaperControlImpl { params: escaper_control::PublishParams, mut results: escaper_control::PublishResults, ) -> capnp::Result<()> { - let data = params.get()?.get_data()?.to_string()?; + let data = params.get()?.get_data()?.to_str()?; let r = self.escaper.publish(data).await; set_operation_result(results.get().init_result(), r); Ok(()) diff --git a/g3proxy/src/escape/comply_audit/mod.rs b/g3proxy/src/escape/comply_audit/mod.rs index ef9f541e..29d54366 100644 --- a/g3proxy/src/escape/comply_audit/mod.rs +++ b/g3proxy/src/escape/comply_audit/mod.rs @@ -94,7 +94,7 @@ impl Escaper for ComplyAuditEscaper { Some(&self.stats) } - async fn publish(&self, _data: String) -> anyhow::Result<()> { + async fn publish(&self, _data: &str) -> anyhow::Result<()> { Err(anyhow!("not implemented")) } diff --git a/g3proxy/src/escape/direct_fixed/mod.rs b/g3proxy/src/escape/direct_fixed/mod.rs index 1351a6f8..f6ade68f 100644 --- a/g3proxy/src/escape/direct_fixed/mod.rs +++ b/g3proxy/src/escape/direct_fixed/mod.rs @@ -291,7 +291,7 @@ impl Escaper for DirectFixedEscaper { Some(self.stats.clone()) } - async fn publish(&self, _data: String) -> anyhow::Result<()> { + async fn publish(&self, _data: &str) -> anyhow::Result<()> { Err(anyhow!("not implemented")) } diff --git a/g3proxy/src/escape/direct_float/mod.rs b/g3proxy/src/escape/direct_float/mod.rs index f032eac7..df5c895f 100644 --- a/g3proxy/src/escape/direct_float/mod.rs +++ b/g3proxy/src/escape/direct_float/mod.rs @@ -337,7 +337,7 @@ impl Escaper for DirectFloatEscaper { Some(Arc::clone(&self.stats) as ArcEscaperStats) } - async fn publish(&self, data: String) -> anyhow::Result<()> { + async fn publish(&self, data: &str) -> anyhow::Result<()> { publish::publish_records(&self.config, &self.bind_v4, &self.bind_v6, data).await } diff --git a/g3proxy/src/escape/direct_float/publish.rs b/g3proxy/src/escape/direct_float/publish.rs index a0cd45fb..99e6e0b0 100644 --- a/g3proxy/src/escape/direct_float/publish.rs +++ b/g3proxy/src/escape/direct_float/publish.rs @@ -93,10 +93,10 @@ pub(super) async fn publish_records( config: &DirectFloatEscaperConfig, v4_container: &ArcSwap, v6_container: &ArcSwap, - data: String, + data: &str, ) -> anyhow::Result<()> { let obj = - Value::from_str(&data).map_err(|e| anyhow!("the input data is not valid json: {:?}", e))?; + Value::from_str(data).map_err(|e| anyhow!("the input data is not valid json: {:?}", e))?; if let Value::Object(map) = obj { for (k, v) in map.into_iter() { diff --git a/g3proxy/src/escape/divert_tcp/mod.rs b/g3proxy/src/escape/divert_tcp/mod.rs index 6b644572..ac55bb73 100644 --- a/g3proxy/src/escape/divert_tcp/mod.rs +++ b/g3proxy/src/escape/divert_tcp/mod.rs @@ -196,7 +196,7 @@ impl Escaper for DivertTcpEscaper { Some(self.stats.clone()) } - async fn publish(&self, _data: String) -> anyhow::Result<()> { + async fn publish(&self, _data: &str) -> anyhow::Result<()> { Err(anyhow!("not implemented")) } diff --git a/g3proxy/src/escape/dummy_deny/mod.rs b/g3proxy/src/escape/dummy_deny/mod.rs index 50eb5706..21dd5892 100644 --- a/g3proxy/src/escape/dummy_deny/mod.rs +++ b/g3proxy/src/escape/dummy_deny/mod.rs @@ -86,7 +86,7 @@ impl Escaper for DummyDenyEscaper { Some(self.stats.clone()) } - async fn publish(&self, _data: String) -> anyhow::Result<()> { + async fn publish(&self, _data: &str) -> anyhow::Result<()> { Err(anyhow!("not implemented")) } diff --git a/g3proxy/src/escape/mod.rs b/g3proxy/src/escape/mod.rs index 49b4734a..0a161b47 100644 --- a/g3proxy/src/escape/mod.rs +++ b/g3proxy/src/escape/mod.rs @@ -157,7 +157,7 @@ pub(crate) trait Escaper: EscaperInternal { None } - async fn publish(&self, data: String) -> anyhow::Result<()>; + async fn publish(&self, data: &str) -> anyhow::Result<()>; async fn tcp_setup_connection( &self, diff --git a/g3proxy/src/escape/proxy_float/mod.rs b/g3proxy/src/escape/proxy_float/mod.rs index 14ebd3b9..82e24b13 100644 --- a/g3proxy/src/escape/proxy_float/mod.rs +++ b/g3proxy/src/escape/proxy_float/mod.rs @@ -175,7 +175,7 @@ impl Escaper for ProxyFloatEscaper { Some(self.stats.clone()) } - async fn publish(&self, data: String) -> anyhow::Result<()> { + async fn publish(&self, data: &str) -> anyhow::Result<()> { source::publish_peers(&self.config, &self.peers, data).await } diff --git a/g3proxy/src/escape/proxy_float/source/mod.rs b/g3proxy/src/escape/proxy_float/source/mod.rs index 4b33fb32..eef20a7d 100644 --- a/g3proxy/src/escape/proxy_float/source/mod.rs +++ b/g3proxy/src/escape/proxy_float/source/mod.rs @@ -49,9 +49,9 @@ async fn parse_and_save_peers( pub(super) async fn publish_peers( config: &ProxyFloatEscaperConfig, peers_container: &Arc>, - data: String, + data: &str, ) -> anyhow::Result<()> { - let obj = serde_json::from_str(&data) + let obj = serde_json::from_str(data) .map_err(|e| anyhow!("the publish data is not valid json: {e:?}"))?; let records = match obj { serde_json::Value::Array(v) => v, diff --git a/g3proxy/src/escape/proxy_http/mod.rs b/g3proxy/src/escape/proxy_http/mod.rs index 201876a2..27dd9fda 100644 --- a/g3proxy/src/escape/proxy_http/mod.rs +++ b/g3proxy/src/escape/proxy_http/mod.rs @@ -166,7 +166,7 @@ impl Escaper for ProxyHttpEscaper { Some(self.stats.clone()) } - async fn publish(&self, _data: String) -> anyhow::Result<()> { + async fn publish(&self, _data: &str) -> anyhow::Result<()> { Err(anyhow!("not implemented")) } diff --git a/g3proxy/src/escape/proxy_https/mod.rs b/g3proxy/src/escape/proxy_https/mod.rs index 04867019..89bc299c 100644 --- a/g3proxy/src/escape/proxy_https/mod.rs +++ b/g3proxy/src/escape/proxy_https/mod.rs @@ -175,7 +175,7 @@ impl Escaper for ProxyHttpsEscaper { Some(self.stats.clone()) } - async fn publish(&self, _data: String) -> anyhow::Result<()> { + async fn publish(&self, _data: &str) -> anyhow::Result<()> { Err(anyhow!("not implemented")) } diff --git a/g3proxy/src/escape/proxy_socks5/mod.rs b/g3proxy/src/escape/proxy_socks5/mod.rs index 7bccee7e..0c8e1940 100644 --- a/g3proxy/src/escape/proxy_socks5/mod.rs +++ b/g3proxy/src/escape/proxy_socks5/mod.rs @@ -166,7 +166,7 @@ impl Escaper for ProxySocks5Escaper { Some(Arc::clone(&self.stats) as ArcEscaperStats) } - async fn publish(&self, _data: String) -> anyhow::Result<()> { + async fn publish(&self, _data: &str) -> anyhow::Result<()> { Err(anyhow!("not implemented")) } diff --git a/g3proxy/src/escape/proxy_socks5s/mod.rs b/g3proxy/src/escape/proxy_socks5s/mod.rs index 09e13fde..2189e604 100644 --- a/g3proxy/src/escape/proxy_socks5s/mod.rs +++ b/g3proxy/src/escape/proxy_socks5s/mod.rs @@ -174,7 +174,7 @@ impl Escaper for ProxySocks5sEscaper { Some(Arc::clone(&self.stats) as ArcEscaperStats) } - async fn publish(&self, _data: String) -> anyhow::Result<()> { + async fn publish(&self, _data: &str) -> anyhow::Result<()> { Err(anyhow!("not implemented")) } diff --git a/g3proxy/src/escape/route_client/mod.rs b/g3proxy/src/escape/route_client/mod.rs index bc0534bb..e9dfd19c 100644 --- a/g3proxy/src/escape/route_client/mod.rs +++ b/g3proxy/src/escape/route_client/mod.rs @@ -139,7 +139,7 @@ impl Escaper for RouteClientEscaper { Some(&self.stats) } - async fn publish(&self, _data: String) -> anyhow::Result<()> { + async fn publish(&self, _data: &str) -> anyhow::Result<()> { Err(anyhow!("not implemented")) } diff --git a/g3proxy/src/escape/route_failover/mod.rs b/g3proxy/src/escape/route_failover/mod.rs index 975a636d..da76691c 100644 --- a/g3proxy/src/escape/route_failover/mod.rs +++ b/g3proxy/src/escape/route_failover/mod.rs @@ -104,7 +104,7 @@ impl Escaper for RouteFailoverEscaper { Some(&self.stats) } - async fn publish(&self, _data: String) -> anyhow::Result<()> { + async fn publish(&self, _data: &str) -> anyhow::Result<()> { Err(anyhow!("not implemented")) } diff --git a/g3proxy/src/escape/route_geoip/mod.rs b/g3proxy/src/escape/route_geoip/mod.rs index f8e38ce7..aebb755d 100644 --- a/g3proxy/src/escape/route_geoip/mod.rs +++ b/g3proxy/src/escape/route_geoip/mod.rs @@ -240,7 +240,7 @@ impl Escaper for RouteGeoIpEscaper { Some(&self.stats) } - async fn publish(&self, _data: String) -> anyhow::Result<()> { + async fn publish(&self, _data: &str) -> anyhow::Result<()> { Err(anyhow!("not implemented")) } diff --git a/g3proxy/src/escape/route_mapping/mod.rs b/g3proxy/src/escape/route_mapping/mod.rs index ba9591ac..16c91911 100644 --- a/g3proxy/src/escape/route_mapping/mod.rs +++ b/g3proxy/src/escape/route_mapping/mod.rs @@ -112,7 +112,7 @@ impl Escaper for RouteMappingEscaper { Some(&self.stats) } - async fn publish(&self, _data: String) -> anyhow::Result<()> { + async fn publish(&self, _data: &str) -> anyhow::Result<()> { Err(anyhow!("not implemented")) } diff --git a/g3proxy/src/escape/route_query/mod.rs b/g3proxy/src/escape/route_query/mod.rs index bfb74208..60208df5 100644 --- a/g3proxy/src/escape/route_query/mod.rs +++ b/g3proxy/src/escape/route_query/mod.rs @@ -136,7 +136,7 @@ impl Escaper for RouteQueryEscaper { Some(&self.stats) } - async fn publish(&self, _data: String) -> anyhow::Result<()> { + async fn publish(&self, _data: &str) -> anyhow::Result<()> { Err(anyhow!("not implemented")) } diff --git a/g3proxy/src/escape/route_resolved/mod.rs b/g3proxy/src/escape/route_resolved/mod.rs index f373ac84..5f26732b 100644 --- a/g3proxy/src/escape/route_resolved/mod.rs +++ b/g3proxy/src/escape/route_resolved/mod.rs @@ -161,7 +161,7 @@ impl Escaper for RouteResolvedEscaper { Some(&self.stats) } - async fn publish(&self, _data: String) -> anyhow::Result<()> { + async fn publish(&self, _data: &str) -> anyhow::Result<()> { Err(anyhow!("not implemented")) } diff --git a/g3proxy/src/escape/route_select/mod.rs b/g3proxy/src/escape/route_select/mod.rs index 48aa832d..25872bfb 100644 --- a/g3proxy/src/escape/route_select/mod.rs +++ b/g3proxy/src/escape/route_select/mod.rs @@ -145,7 +145,7 @@ impl Escaper for RouteSelectEscaper { Some(&self.stats) } - async fn publish(&self, _data: String) -> anyhow::Result<()> { + async fn publish(&self, _data: &str) -> anyhow::Result<()> { Err(anyhow!("not implemented")) } diff --git a/g3proxy/src/escape/route_upstream/mod.rs b/g3proxy/src/escape/route_upstream/mod.rs index cae82a0f..84936c24 100644 --- a/g3proxy/src/escape/route_upstream/mod.rs +++ b/g3proxy/src/escape/route_upstream/mod.rs @@ -164,7 +164,7 @@ impl Escaper for RouteUpstreamEscaper { Some(&self.stats) } - async fn publish(&self, _data: String) -> anyhow::Result<()> { + async fn publish(&self, _data: &str) -> anyhow::Result<()> { Err(anyhow!("not implemented")) } diff --git a/g3proxy/src/escape/trick_float/mod.rs b/g3proxy/src/escape/trick_float/mod.rs index 15828c1e..e4a1e5a4 100644 --- a/g3proxy/src/escape/trick_float/mod.rs +++ b/g3proxy/src/escape/trick_float/mod.rs @@ -111,7 +111,7 @@ impl Escaper for TrickFloatEscaper { Some(&self.stats) } - async fn publish(&self, _data: String) -> anyhow::Result<()> { + async fn publish(&self, _data: &str) -> anyhow::Result<()> { Err(anyhow!("not implemented")) }