diff --git a/grpc/src/client/load_balancing/child_manager.rs b/grpc/src/client/load_balancing/child_manager.rs index 0d4af6542..fea17bfe5 100644 --- a/grpc/src/client/load_balancing/child_manager.rs +++ b/grpc/src/client/load_balancing/child_manager.rs @@ -262,6 +262,10 @@ impl LbPolicy for ChildManager self.resolve_child_controller(channel_controller, child_idx); } } + + fn exit_idle(&mut self, _channel_controller: &mut dyn ChannelController) { + todo!("implement exit_idle") + } } struct WrappedController<'a> { diff --git a/grpc/src/client/load_balancing/mod.rs b/grpc/src/client/load_balancing/mod.rs index b91950c31..7cb562660 100644 --- a/grpc/src/client/load_balancing/mod.rs +++ b/grpc/src/client/load_balancing/mod.rs @@ -169,6 +169,10 @@ pub trait LbPolicy: Send { /// Called by the channel in response to a call from the LB policy to the /// WorkScheduler's request_work method. fn work(&mut self, channel_controller: &mut dyn ChannelController); + + /// Called by the channel when an LbPolicy goes idle and the channel + /// wants it to start connecting to subchannels again. + fn exit_idle(&mut self, channel_controller: &mut dyn ChannelController); } /// Controls channel behaviors. diff --git a/grpc/src/client/load_balancing/pick_first.rs b/grpc/src/client/load_balancing/pick_first.rs index ed7ae76f6..54ae78711 100644 --- a/grpc/src/client/load_balancing/pick_first.rs +++ b/grpc/src/client/load_balancing/pick_first.rs @@ -99,6 +99,10 @@ impl LbPolicy for PickFirstPolicy { } fn work(&mut self, channel_controller: &mut dyn ChannelController) {} + + fn exit_idle(&mut self, _channel_controller: &mut dyn ChannelController) { + todo!("implement exit_idle") + } } struct OneSubchannelPicker {