1// +build go1.7 2 3/* 4 * 5 * Copyright 2016 gRPC authors. 6 * 7 * Licensed under the Apache License, Version 2.0 (the "License"); 8 * you may not use this file except in compliance with the License. 9 * You may obtain a copy of the License at 10 * 11 * http://www.apache.org/licenses/LICENSE-2.0 12 * 13 * Unless required by applicable law or agreed to in writing, software 14 * distributed under the License is distributed on an "AS IS" BASIS, 15 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 16 * See the License for the specific language governing permissions and 17 * limitations under the License. 18 * 19 */ 20 21package transport 22 23import ( 24 "context" 25 "net" 26 "net/http" 27 28 "google.golang.org/grpc/codes" 29 30 netctx "golang.org/x/net/context" 31) 32 33// dialContext connects to the address on the named network. 34func dialContext(ctx context.Context, network, address string) (net.Conn, error) { 35 return (&net.Dialer{}).DialContext(ctx, network, address) 36} 37 38// ContextErr converts the error from context package into a StreamError. 39func ContextErr(err error) StreamError { 40 switch err { 41 case context.DeadlineExceeded, netctx.DeadlineExceeded: 42 return streamErrorf(codes.DeadlineExceeded, "%v", err) 43 case context.Canceled, netctx.Canceled: 44 return streamErrorf(codes.Canceled, "%v", err) 45 } 46 return streamErrorf(codes.Internal, "Unexpected error from context packet: %v", err) 47} 48 49// contextFromRequest returns a context from the HTTP Request. 50func contextFromRequest(r *http.Request) context.Context { 51 return r.Context() 52} 53