connectivity.go (2684B)
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 }