connectivity.go raw

   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  	"google.golang.org/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  }
  95