package common type callType uint8 const ( _ callType = iota callUnary callClientStream callServerStream callBidirStream ) // CallMethodInfo is an information about the RPC. type CallMethodInfo struct { // Name of the service. Service string // Name of the RPC. Name string t callType } // ServerStream checks if CallMethodInfo contains // information about the server-side streaming RPC. func (c CallMethodInfo) ServerStream() bool { return c.t == callServerStream || c.t == callBidirStream } // ClientStream checks if CallMethodInfo contains // information about the client-side streaming RPC. func (c CallMethodInfo) ClientStream() bool { return c.t == callClientStream || c.t == callBidirStream } func (c *CallMethodInfo) setCommon(service, name string) { c.Service = service c.Name = name } // CallMethodInfoUnary returns CallMethodInfo structure // initialized for the unary RPC. func CallMethodInfoUnary(service, name string) (info CallMethodInfo) { info.setCommon(service, name) info.t = callUnary return } // CallMethodInfoClientStream returns CallMethodInfo structure // initialized for the client-side streaming RPC. func CallMethodInfoClientStream(service, name string) (info CallMethodInfo) { info.setCommon(service, name) info.t = callClientStream return } // CallMethodInfoServerStream returns CallMethodInfo structure // initialized for the server-side streaming RPC. func CallMethodInfoServerStream(service, name string) (info CallMethodInfo) { info.setCommon(service, name) info.t = callServerStream return } // CallMethodInfoBidirectionalStream returns CallMethodInfo structure // initialized for the bidirectional streaming RPC. func CallMethodInfoBidirectionalStream(service, name string) (info CallMethodInfo) { info.setCommon(service, name) info.t = callBidirStream return }