mirror of
				https://gitea.com/Lydanne/buildx.git
				synced 2025-11-04 10:03:42 +08:00 
			
		
		
		
	
		
			
				
	
	
		
			74 lines
		
	
	
		
			2.1 KiB
		
	
	
	
		
			Go
		
	
	
	
	
	
			
		
		
	
	
			74 lines
		
	
	
		
			2.1 KiB
		
	
	
	
		
			Go
		
	
	
	
	
	
/*
 | 
						|
 *
 | 
						|
 * Copyright 2017 gRPC authors.
 | 
						|
 *
 | 
						|
 * Licensed under the Apache License, Version 2.0 (the "License");
 | 
						|
 * you may not use this file except in compliance with the License.
 | 
						|
 * You may obtain a copy of the License at
 | 
						|
 *
 | 
						|
 *     http://www.apache.org/licenses/LICENSE-2.0
 | 
						|
 *
 | 
						|
 * Unless required by applicable law or agreed to in writing, software
 | 
						|
 * distributed under the License is distributed on an "AS IS" BASIS,
 | 
						|
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 | 
						|
 * See the License for the specific language governing permissions and
 | 
						|
 * limitations under the License.
 | 
						|
 *
 | 
						|
 */
 | 
						|
 | 
						|
// Package connectivity defines connectivity semantics.
 | 
						|
// For details, see https://github.com/grpc/grpc/blob/master/doc/connectivity-semantics-and-api.md.
 | 
						|
// All APIs in this package are experimental.
 | 
						|
package connectivity
 | 
						|
 | 
						|
import (
 | 
						|
	"context"
 | 
						|
 | 
						|
	"google.golang.org/grpc/grpclog"
 | 
						|
)
 | 
						|
 | 
						|
// State indicates the state of connectivity.
 | 
						|
// It can be the state of a ClientConn or SubConn.
 | 
						|
type State int
 | 
						|
 | 
						|
func (s State) String() string {
 | 
						|
	switch s {
 | 
						|
	case Idle:
 | 
						|
		return "IDLE"
 | 
						|
	case Connecting:
 | 
						|
		return "CONNECTING"
 | 
						|
	case Ready:
 | 
						|
		return "READY"
 | 
						|
	case TransientFailure:
 | 
						|
		return "TRANSIENT_FAILURE"
 | 
						|
	case Shutdown:
 | 
						|
		return "SHUTDOWN"
 | 
						|
	default:
 | 
						|
		grpclog.Errorf("unknown connectivity state: %d", s)
 | 
						|
		return "Invalid-State"
 | 
						|
	}
 | 
						|
}
 | 
						|
 | 
						|
const (
 | 
						|
	// Idle indicates the ClientConn is idle.
 | 
						|
	Idle State = iota
 | 
						|
	// Connecting indicates the ClientConn is connecting.
 | 
						|
	Connecting
 | 
						|
	// Ready indicates the ClientConn is ready for work.
 | 
						|
	Ready
 | 
						|
	// TransientFailure indicates the ClientConn has seen a failure but expects to recover.
 | 
						|
	TransientFailure
 | 
						|
	// Shutdown indicates the ClientConn has started shutting down.
 | 
						|
	Shutdown
 | 
						|
)
 | 
						|
 | 
						|
// Reporter reports the connectivity states.
 | 
						|
type Reporter interface {
 | 
						|
	// CurrentState returns the current state of the reporter.
 | 
						|
	CurrentState() State
 | 
						|
	// WaitForStateChange blocks until the reporter's state is different from the given state,
 | 
						|
	// and returns true.
 | 
						|
	// It returns false if <-ctx.Done() can proceed (ctx got timeout or got canceled).
 | 
						|
	WaitForStateChange(context.Context, State) bool
 | 
						|
}
 |