|  | @@ -112,91 +112,25 @@ class TagSaver GRPC_FINAL : public CompletionQueueTag {
 | 
	
		
			
				|  |  |    void* tag_;
 | 
	
		
			
				|  |  |  };
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -template <typename T>
 | 
	
		
			
				|  |  | -void NotifyOnStateChangeShared(grpc_channel* channel,
 | 
	
		
			
				|  |  | -                               grpc_connectivity_state last_observed,
 | 
	
		
			
				|  |  | -                               const T& deadline,
 | 
	
		
			
				|  |  | -                               CompletionQueue* cq, void* tag) {
 | 
	
		
			
				|  |  | -  TimePoint<T> deadline_tp(deadline);
 | 
	
		
			
				|  |  | +}  // namespace
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +void Channel::NotifyOnStateChangeImpl(grpc_connectivity_state last_observed,
 | 
	
		
			
				|  |  | +                                      gpr_timespec deadline,
 | 
	
		
			
				|  |  | +                                      CompletionQueue* cq, void* tag) {
 | 
	
		
			
				|  |  |    TagSaver* tag_saver = new TagSaver(tag);
 | 
	
		
			
				|  |  | -  grpc_channel_watch_connectivity_state(
 | 
	
		
			
				|  |  | -      channel, last_observed, deadline_tp.raw_time(), cq->cq(), tag_saver);
 | 
	
		
			
				|  |  | +  grpc_channel_watch_connectivity_state(c_channel_, last_observed, deadline,
 | 
	
		
			
				|  |  | +                                        cq->cq(), tag_saver);
 | 
	
		
			
				|  |  |  }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -template <typename T>
 | 
	
		
			
				|  |  | -bool WaitForStateChangeShared(grpc_channel* channel,
 | 
	
		
			
				|  |  | -                              grpc_connectivity_state last_observed,
 | 
	
		
			
				|  |  | -                              const T& deadline) {
 | 
	
		
			
				|  |  | +bool Channel::WaitForStateChangeImpl(grpc_connectivity_state last_observed,
 | 
	
		
			
				|  |  | +                                     gpr_timespec deadline) {
 | 
	
		
			
				|  |  |    CompletionQueue cq;
 | 
	
		
			
				|  |  |    bool ok = false;
 | 
	
		
			
				|  |  |    void* tag = NULL;
 | 
	
		
			
				|  |  | -  NotifyOnStateChangeShared(channel, last_observed, deadline, &cq, NULL);
 | 
	
		
			
				|  |  | +  NotifyOnStateChangeImpl(last_observed, deadline, &cq, NULL);
 | 
	
		
			
				|  |  |    cq.Next(&tag, &ok);
 | 
	
		
			
				|  |  |    GPR_ASSERT(tag == NULL);
 | 
	
		
			
				|  |  |    return ok;
 | 
	
		
			
				|  |  |  }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -template <typename T>
 | 
	
		
			
				|  |  | -bool WaitForStateShared(grpc_channel* channel,
 | 
	
		
			
				|  |  | -                        grpc_connectivity_state target_state,
 | 
	
		
			
				|  |  | -                        const T& deadline) {
 | 
	
		
			
				|  |  | -  grpc_connectivity_state current_state =
 | 
	
		
			
				|  |  | -      grpc_channel_check_connectivity_state(channel, 0);
 | 
	
		
			
				|  |  | -  if (current_state == target_state) {
 | 
	
		
			
				|  |  | -    return true;
 | 
	
		
			
				|  |  | -  }
 | 
	
		
			
				|  |  | -  TimePoint<T> deadline_tp(deadline);
 | 
	
		
			
				|  |  | -  CompletionQueue cq;
 | 
	
		
			
				|  |  | -  bool ok = false;
 | 
	
		
			
				|  |  | -  void* tag = NULL;
 | 
	
		
			
				|  |  | -  while (current_state != target_state) {
 | 
	
		
			
				|  |  | -    NotifyOnStateChangeShared(channel, current_state, deadline_tp.raw_time(),
 | 
	
		
			
				|  |  | -                              &cq, NULL);
 | 
	
		
			
				|  |  | -    cq.Next(&tag, &ok);
 | 
	
		
			
				|  |  | -    if (!ok) {
 | 
	
		
			
				|  |  | -      return false;
 | 
	
		
			
				|  |  | -    }
 | 
	
		
			
				|  |  | -    current_state = grpc_channel_check_connectivity_state(channel, 0);
 | 
	
		
			
				|  |  | -  }
 | 
	
		
			
				|  |  | -  return true;
 | 
	
		
			
				|  |  | -}
 | 
	
		
			
				|  |  | -}  // namespace
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -void Channel::NotifyOnStateChange(grpc_connectivity_state last_observed,
 | 
	
		
			
				|  |  | -                                  gpr_timespec deadline,
 | 
	
		
			
				|  |  | -                                  CompletionQueue* cq, void* tag) {
 | 
	
		
			
				|  |  | -  NotifyOnStateChangeShared(c_channel_, last_observed, deadline, cq, tag);
 | 
	
		
			
				|  |  | -}
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -bool Channel::WaitForStateChange(grpc_connectivity_state last_observed,
 | 
	
		
			
				|  |  | -                                 gpr_timespec deadline) {
 | 
	
		
			
				|  |  | -  return WaitForStateChangeShared(c_channel_, last_observed, deadline);
 | 
	
		
			
				|  |  | -}
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -bool Channel::WaitForState(grpc_connectivity_state target_state,
 | 
	
		
			
				|  |  | -                           gpr_timespec deadline) {
 | 
	
		
			
				|  |  | -  return WaitForStateShared(c_channel_, target_state, deadline);
 | 
	
		
			
				|  |  | -}
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -#ifndef GRPC_CXX0X_NO_CHRONO
 | 
	
		
			
				|  |  | -void Channel::NotifyOnStateChange(
 | 
	
		
			
				|  |  | -      grpc_connectivity_state last_observed,
 | 
	
		
			
				|  |  | -      const std::chrono::system_clock::time_point& deadline,
 | 
	
		
			
				|  |  | -      CompletionQueue* cq, void* tag) {
 | 
	
		
			
				|  |  | -  NotifyOnStateChangeShared(c_channel_, last_observed, deadline, cq, tag);
 | 
	
		
			
				|  |  | -}
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -bool Channel::WaitForStateChange(
 | 
	
		
			
				|  |  | -      grpc_connectivity_state last_observed,
 | 
	
		
			
				|  |  | -      const std::chrono::system_clock::time_point& deadline) {
 | 
	
		
			
				|  |  | -  return WaitForStateChangeShared(c_channel_, last_observed, deadline);
 | 
	
		
			
				|  |  | -}
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -bool Channel::WaitForState(
 | 
	
		
			
				|  |  | -    grpc_connectivity_state target_state,
 | 
	
		
			
				|  |  | -    const std::chrono::system_clock::time_point& deadline) {
 | 
	
		
			
				|  |  | -  return WaitForStateShared(c_channel_, target_state, deadline);
 | 
	
		
			
				|  |  | -}
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -#endif  // !GRPC_CXX0X_NO_CHRONO
 | 
	
		
			
				|  |  |  }  // namespace grpc
 |