33
44#[ cfg( with_testing) ]
55use std:: num:: NonZeroUsize ;
6- use std:: { collections :: HashSet , sync:: Arc } ;
6+ use std:: sync:: Arc ;
77
88use futures:: Future ;
99use linera_base:: {
@@ -15,7 +15,7 @@ use linera_base::{
1515} ;
1616use linera_chain:: types:: ConfirmedBlockCertificate ;
1717use linera_core:: {
18- client:: { BlanketMessagePolicy , ChainClient , Client , MessagePolicy , PendingProposal } ,
18+ client:: { ChainClient , Client , MessagePolicy } ,
1919 data_types:: { ChainInfoQuery , ClientOutcome } ,
2020 join_set_ext:: JoinSet ,
2121 node:: { CrossChainMessageDelivery , ValidatorNode } ,
@@ -71,8 +71,6 @@ pub struct ClientContext<Env: Environment, W> {
7171 pub retry_delay : Duration ,
7272 pub max_retries : u32 ,
7373 pub chain_listeners : JoinSet ,
74- pub blanket_message_policy : BlanketMessagePolicy ,
75- pub restrict_chain_ids_to : Option < HashSet < ChainId > > ,
7674}
7775
7876impl < Env : Environment , W > chain_listener:: ClientContext for ClientContext < Env , W >
8987 self . client . storage_client ( )
9088 }
9189
92- fn make_chain_client ( & self , chain_id : ChainId ) -> ChainClient < Env > {
93- // We only create clients for chains we have in the wallet, or for the admin chain.
94- let chain = self
95- . wallet
96- . get ( chain_id)
97- . cloned ( )
98- . unwrap_or_else ( || UserChain :: make_other ( chain_id, Timestamp :: from ( 0 ) ) ) ;
99-
100- self . make_chain_client_internal (
101- chain_id,
102- chain. block_hash ,
103- chain. next_block_height ,
104- chain. pending_proposal ,
105- chain. owner ,
106- )
107- }
108-
109- fn client ( & self ) -> & Client < Env > {
90+ fn client ( & self ) -> & Arc < Client < Env > > {
11091 & self . client
11192 }
11293
@@ -153,6 +134,10 @@ where
153134 } ,
154135 options. max_pending_message_bundles ,
155136 wallet. genesis_admin_chain ( ) ,
137+ MessagePolicy :: new (
138+ options. blanket_message_policy ,
139+ options. restrict_chain_ids_to ,
140+ ) ,
156141 delivery,
157142 options. long_lived_services ,
158143 chain_ids,
@@ -170,8 +155,6 @@ where
170155 retry_delay : options. retry_delay ,
171156 max_retries : options. max_retries ,
172157 chain_listeners : JoinSet :: default ( ) ,
173- blanket_message_policy : options. blanket_message_policy ,
174- restrict_chain_ids_to : options. restrict_chain_ids_to ,
175158 }
176159 }
177160
@@ -204,6 +187,7 @@ where
204187 } ,
205188 10 ,
206189 wallet. genesis_admin_chain ( ) ,
190+ MessagePolicy :: new_accept_all ( ) ,
207191 delivery,
208192 false ,
209193 chain_ids,
@@ -221,8 +205,6 @@ where
221205 retry_delay,
222206 max_retries,
223207 chain_listeners : JoinSet :: default ( ) ,
224- blanket_message_policy : BlanketMessagePolicy :: Accept ,
225- restrict_chain_ids_to : None ,
226208 }
227209 }
228210}
@@ -267,28 +249,6 @@ impl<Env: Environment, W: Persist<Target = Wallet>> ClientContext<Env, W> {
267249 . expect ( "No non-admin chain specified in wallet with no non-admin chain" )
268250 }
269251
270- fn make_chain_client_internal (
271- & self ,
272- chain_id : ChainId ,
273- block_hash : Option < CryptoHash > ,
274- next_block_height : BlockHeight ,
275- pending_proposal : Option < PendingProposal > ,
276- preferred_owner : Option < AccountOwner > ,
277- ) -> ChainClient < Env > {
278- let mut chain_client = self . client . create_chain_client (
279- chain_id,
280- block_hash,
281- next_block_height,
282- pending_proposal,
283- preferred_owner,
284- ) ;
285- chain_client. options_mut ( ) . message_policy = MessagePolicy :: new (
286- self . blanket_message_policy ,
287- self . restrict_chain_ids_to . clone ( ) ,
288- ) ;
289- chain_client
290- }
291-
292252 pub fn make_node_provider ( & self ) -> NodeProvider {
293253 NodeProvider :: new ( self . make_node_options ( ) )
294254 }
@@ -907,7 +867,7 @@ where
907867 benchmark_chains. insert ( chain_id, pub_key. into ( ) ) ;
908868 self . client . track_chain ( chain_id) ;
909869
910- let mut chain_client = self . make_chain_client_internal (
870+ let mut chain_client = self . client . create_chain_client (
911871 chain_id,
912872 None ,
913873 BlockHeight :: ZERO ,
0 commit comments