github.com/hxx258456/ccgo@v0.0.5-0.20230213014102-48b35f46f66f/grpc/connectivity/connectivity.go (about)

     1  /*
     2   *
     3   * Copyright 2017 gRPC authors.
     4   *
     5   * Licensed under the Apache License, Version 2.0 (the "License");
     6   * you may not use this file except in compliance with the License.
     7   * You may obtain a copy of the License at
     8   *
     9   *     http://www.apache.org/licenses/LICENSE-2.0
    10   *
    11   * Unless required by applicable law or agreed to in writing, software
    12   * distributed under the License is distributed on an "AS IS" BASIS,
    13   * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    14   * See the License for the specific language governing permissions and
    15   * limitations under the License.
    16   *
    17   */
    18  
    19  // Package connectivity defines connectivity semantics.
    20  // For details, see https://github.com/grpc/grpc/blob/master/doc/connectivity-semantics-and-api.md.
    21  package connectivity
    22  
    23  import (
    24  	"github.com/hxx258456/ccgo/grpc/grpclog"
    25  )
    26  
    27  var logger = grpclog.Component("core")
    28  
    29  // State indicates the state of connectivity.
    30  // It can be the state of a ClientConn or SubConn.
    31  type State int
    32  
    33  func (s State) String() string {
    34  	switch s {
    35  	case Idle:
    36  		return "IDLE"
    37  	case Connecting:
    38  		return "CONNECTING"
    39  	case Ready:
    40  		return "READY"
    41  	case TransientFailure:
    42  		return "TRANSIENT_FAILURE"
    43  	case Shutdown:
    44  		return "SHUTDOWN"
    45  	default:
    46  		logger.Errorf("unknown connectivity state: %d", s)
    47  		return "INVALID_STATE"
    48  	}
    49  }
    50  
    51  const (
    52  	// Idle indicates the ClientConn is idle.
    53  	Idle State = iota
    54  	// Connecting indicates the ClientConn is connecting.
    55  	Connecting
    56  	// Ready indicates the ClientConn is ready for work.
    57  	Ready
    58  	// TransientFailure indicates the ClientConn has seen a failure but expects to recover.
    59  	TransientFailure
    60  	// Shutdown indicates the ClientConn has started shutting down.
    61  	Shutdown
    62  )
    63  
    64  // ServingMode indicates the current mode of operation of the server.
    65  //
    66  // Only xDS enabled gRPC servers currently report their serving mode.
    67  type ServingMode int
    68  
    69  const (
    70  	// ServingModeStarting indicates that the server is starting up.
    71  	ServingModeStarting ServingMode = iota
    72  	// ServingModeServing indicates that the server contains all required
    73  	// configuration and is serving RPCs.
    74  	ServingModeServing
    75  	// ServingModeNotServing indicates that the server is not accepting new
    76  	// connections. Existing connections will be closed gracefully, allowing
    77  	// in-progress RPCs to complete. A server enters this mode when it does not
    78  	// contain the required configuration to serve RPCs.
    79  	ServingModeNotServing
    80  )
    81  
    82  func (s ServingMode) String() string {
    83  	switch s {
    84  	case ServingModeStarting:
    85  		return "STARTING"
    86  	case ServingModeServing:
    87  		return "SERVING"
    88  	case ServingModeNotServing:
    89  		return "NOT_SERVING"
    90  	default:
    91  		logger.Errorf("unknown serving mode: %d", s)
    92  		return "INVALID_MODE"
    93  	}
    94  }