windows: Move runtime options out of the spec field
Signed-off-by: Kenfe-Mickael Laventure <mickael.laventure@gmail.com>
This commit is contained in:
		
							
								
								
									
										136
									
								
								vendor/github.com/golang/protobuf/ptypes/any.go
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										136
									
								
								vendor/github.com/golang/protobuf/ptypes/any.go
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							| @@ -0,0 +1,136 @@ | ||||
| // Go support for Protocol Buffers - Google's data interchange format | ||||
| // | ||||
| // Copyright 2016 The Go Authors.  All rights reserved. | ||||
| // https://github.com/golang/protobuf | ||||
| // | ||||
| // Redistribution and use in source and binary forms, with or without | ||||
| // modification, are permitted provided that the following conditions are | ||||
| // met: | ||||
| // | ||||
| //     * Redistributions of source code must retain the above copyright | ||||
| // notice, this list of conditions and the following disclaimer. | ||||
| //     * Redistributions in binary form must reproduce the above | ||||
| // copyright notice, this list of conditions and the following disclaimer | ||||
| // in the documentation and/or other materials provided with the | ||||
| // distribution. | ||||
| //     * Neither the name of Google Inc. nor the names of its | ||||
| // contributors may be used to endorse or promote products derived from | ||||
| // this software without specific prior written permission. | ||||
| // | ||||
| // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS | ||||
| // "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT | ||||
| // LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR | ||||
| // A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT | ||||
| // OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, | ||||
| // SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT | ||||
| // LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, | ||||
| // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY | ||||
| // THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT | ||||
| // (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE | ||||
| // OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. | ||||
|  | ||||
| package ptypes | ||||
|  | ||||
| // This file implements functions to marshal proto.Message to/from | ||||
| // google.protobuf.Any message. | ||||
|  | ||||
| import ( | ||||
| 	"fmt" | ||||
| 	"reflect" | ||||
| 	"strings" | ||||
|  | ||||
| 	"github.com/golang/protobuf/proto" | ||||
| 	"github.com/golang/protobuf/ptypes/any" | ||||
| ) | ||||
|  | ||||
| const googleApis = "type.googleapis.com/" | ||||
|  | ||||
| // AnyMessageName returns the name of the message contained in a google.protobuf.Any message. | ||||
| // | ||||
| // Note that regular type assertions should be done using the Is | ||||
| // function. AnyMessageName is provided for less common use cases like filtering a | ||||
| // sequence of Any messages based on a set of allowed message type names. | ||||
| func AnyMessageName(any *any.Any) (string, error) { | ||||
| 	slash := strings.LastIndex(any.TypeUrl, "/") | ||||
| 	if slash < 0 { | ||||
| 		return "", fmt.Errorf("message type url %q is invalid", any.TypeUrl) | ||||
| 	} | ||||
| 	return any.TypeUrl[slash+1:], nil | ||||
| } | ||||
|  | ||||
| // MarshalAny takes the protocol buffer and encodes it into google.protobuf.Any. | ||||
| func MarshalAny(pb proto.Message) (*any.Any, error) { | ||||
| 	value, err := proto.Marshal(pb) | ||||
| 	if err != nil { | ||||
| 		return nil, err | ||||
| 	} | ||||
| 	return &any.Any{TypeUrl: googleApis + proto.MessageName(pb), Value: value}, nil | ||||
| } | ||||
|  | ||||
| // DynamicAny is a value that can be passed to UnmarshalAny to automatically | ||||
| // allocate a proto.Message for the type specified in a google.protobuf.Any | ||||
| // message. The allocated message is stored in the embedded proto.Message. | ||||
| // | ||||
| // Example: | ||||
| // | ||||
| //   var x ptypes.DynamicAny | ||||
| //   if err := ptypes.UnmarshalAny(a, &x); err != nil { ... } | ||||
| //   fmt.Printf("unmarshaled message: %v", x.Message) | ||||
| type DynamicAny struct { | ||||
| 	proto.Message | ||||
| } | ||||
|  | ||||
| // Empty returns a new proto.Message of the type specified in a | ||||
| // google.protobuf.Any message. It returns an error if corresponding message | ||||
| // type isn't linked in. | ||||
| func Empty(any *any.Any) (proto.Message, error) { | ||||
| 	aname, err := AnyMessageName(any) | ||||
| 	if err != nil { | ||||
| 		return nil, err | ||||
| 	} | ||||
|  | ||||
| 	t := proto.MessageType(aname) | ||||
| 	if t == nil { | ||||
| 		return nil, fmt.Errorf("any: message type %q isn't linked in", aname) | ||||
| 	} | ||||
| 	return reflect.New(t.Elem()).Interface().(proto.Message), nil | ||||
| } | ||||
|  | ||||
| // UnmarshalAny parses the protocol buffer representation in a google.protobuf.Any | ||||
| // message and places the decoded result in pb. It returns an error if type of | ||||
| // contents of Any message does not match type of pb message. | ||||
| // | ||||
| // pb can be a proto.Message, or a *DynamicAny. | ||||
| func UnmarshalAny(any *any.Any, pb proto.Message) error { | ||||
| 	if d, ok := pb.(*DynamicAny); ok { | ||||
| 		if d.Message == nil { | ||||
| 			var err error | ||||
| 			d.Message, err = Empty(any) | ||||
| 			if err != nil { | ||||
| 				return err | ||||
| 			} | ||||
| 		} | ||||
| 		return UnmarshalAny(any, d.Message) | ||||
| 	} | ||||
|  | ||||
| 	aname, err := AnyMessageName(any) | ||||
| 	if err != nil { | ||||
| 		return err | ||||
| 	} | ||||
|  | ||||
| 	mname := proto.MessageName(pb) | ||||
| 	if aname != mname { | ||||
| 		return fmt.Errorf("mismatched message type: got %q want %q", aname, mname) | ||||
| 	} | ||||
| 	return proto.Unmarshal(any.Value, pb) | ||||
| } | ||||
|  | ||||
| // Is returns true if any value contains a given message type. | ||||
| func Is(any *any.Any, pb proto.Message) bool { | ||||
| 	aname, err := AnyMessageName(any) | ||||
| 	if err != nil { | ||||
| 		return false | ||||
| 	} | ||||
|  | ||||
| 	return aname == proto.MessageName(pb) | ||||
| } | ||||
							
								
								
									
										35
									
								
								vendor/github.com/golang/protobuf/ptypes/doc.go
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										35
									
								
								vendor/github.com/golang/protobuf/ptypes/doc.go
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							| @@ -0,0 +1,35 @@ | ||||
| // Go support for Protocol Buffers - Google's data interchange format | ||||
| // | ||||
| // Copyright 2016 The Go Authors.  All rights reserved. | ||||
| // https://github.com/golang/protobuf | ||||
| // | ||||
| // Redistribution and use in source and binary forms, with or without | ||||
| // modification, are permitted provided that the following conditions are | ||||
| // met: | ||||
| // | ||||
| //     * Redistributions of source code must retain the above copyright | ||||
| // notice, this list of conditions and the following disclaimer. | ||||
| //     * Redistributions in binary form must reproduce the above | ||||
| // copyright notice, this list of conditions and the following disclaimer | ||||
| // in the documentation and/or other materials provided with the | ||||
| // distribution. | ||||
| //     * Neither the name of Google Inc. nor the names of its | ||||
| // contributors may be used to endorse or promote products derived from | ||||
| // this software without specific prior written permission. | ||||
| // | ||||
| // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS | ||||
| // "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT | ||||
| // LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR | ||||
| // A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT | ||||
| // OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, | ||||
| // SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT | ||||
| // LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, | ||||
| // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY | ||||
| // THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT | ||||
| // (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE | ||||
| // OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. | ||||
|  | ||||
| /* | ||||
| Package ptypes contains code for interacting with well-known types. | ||||
| */ | ||||
| package ptypes | ||||
							
								
								
									
										102
									
								
								vendor/github.com/golang/protobuf/ptypes/duration.go
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										102
									
								
								vendor/github.com/golang/protobuf/ptypes/duration.go
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							| @@ -0,0 +1,102 @@ | ||||
| // Go support for Protocol Buffers - Google's data interchange format | ||||
| // | ||||
| // Copyright 2016 The Go Authors.  All rights reserved. | ||||
| // https://github.com/golang/protobuf | ||||
| // | ||||
| // Redistribution and use in source and binary forms, with or without | ||||
| // modification, are permitted provided that the following conditions are | ||||
| // met: | ||||
| // | ||||
| //     * Redistributions of source code must retain the above copyright | ||||
| // notice, this list of conditions and the following disclaimer. | ||||
| //     * Redistributions in binary form must reproduce the above | ||||
| // copyright notice, this list of conditions and the following disclaimer | ||||
| // in the documentation and/or other materials provided with the | ||||
| // distribution. | ||||
| //     * Neither the name of Google Inc. nor the names of its | ||||
| // contributors may be used to endorse or promote products derived from | ||||
| // this software without specific prior written permission. | ||||
| // | ||||
| // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS | ||||
| // "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT | ||||
| // LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR | ||||
| // A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT | ||||
| // OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, | ||||
| // SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT | ||||
| // LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, | ||||
| // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY | ||||
| // THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT | ||||
| // (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE | ||||
| // OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. | ||||
|  | ||||
| package ptypes | ||||
|  | ||||
| // This file implements conversions between google.protobuf.Duration | ||||
| // and time.Duration. | ||||
|  | ||||
| import ( | ||||
| 	"errors" | ||||
| 	"fmt" | ||||
| 	"time" | ||||
|  | ||||
| 	durpb "github.com/golang/protobuf/ptypes/duration" | ||||
| ) | ||||
|  | ||||
| const ( | ||||
| 	// Range of a durpb.Duration in seconds, as specified in | ||||
| 	// google/protobuf/duration.proto. This is about 10,000 years in seconds. | ||||
| 	maxSeconds = int64(10000 * 365.25 * 24 * 60 * 60) | ||||
| 	minSeconds = -maxSeconds | ||||
| ) | ||||
|  | ||||
| // validateDuration determines whether the durpb.Duration is valid according to the | ||||
| // definition in google/protobuf/duration.proto. A valid durpb.Duration | ||||
| // may still be too large to fit into a time.Duration (the range of durpb.Duration | ||||
| // is about 10,000 years, and the range of time.Duration is about 290). | ||||
| func validateDuration(d *durpb.Duration) error { | ||||
| 	if d == nil { | ||||
| 		return errors.New("duration: nil Duration") | ||||
| 	} | ||||
| 	if d.Seconds < minSeconds || d.Seconds > maxSeconds { | ||||
| 		return fmt.Errorf("duration: %v: seconds out of range", d) | ||||
| 	} | ||||
| 	if d.Nanos <= -1e9 || d.Nanos >= 1e9 { | ||||
| 		return fmt.Errorf("duration: %v: nanos out of range", d) | ||||
| 	} | ||||
| 	// Seconds and Nanos must have the same sign, unless d.Nanos is zero. | ||||
| 	if (d.Seconds < 0 && d.Nanos > 0) || (d.Seconds > 0 && d.Nanos < 0) { | ||||
| 		return fmt.Errorf("duration: %v: seconds and nanos have different signs", d) | ||||
| 	} | ||||
| 	return nil | ||||
| } | ||||
|  | ||||
| // Duration converts a durpb.Duration to a time.Duration. Duration | ||||
| // returns an error if the durpb.Duration is invalid or is too large to be | ||||
| // represented in a time.Duration. | ||||
| func Duration(p *durpb.Duration) (time.Duration, error) { | ||||
| 	if err := validateDuration(p); err != nil { | ||||
| 		return 0, err | ||||
| 	} | ||||
| 	d := time.Duration(p.Seconds) * time.Second | ||||
| 	if int64(d/time.Second) != p.Seconds { | ||||
| 		return 0, fmt.Errorf("duration: %v is out of range for time.Duration", p) | ||||
| 	} | ||||
| 	if p.Nanos != 0 { | ||||
| 		d += time.Duration(p.Nanos) | ||||
| 		if (d < 0) != (p.Nanos < 0) { | ||||
| 			return 0, fmt.Errorf("duration: %v is out of range for time.Duration", p) | ||||
| 		} | ||||
| 	} | ||||
| 	return d, nil | ||||
| } | ||||
|  | ||||
| // DurationProto converts a time.Duration to a durpb.Duration. | ||||
| func DurationProto(d time.Duration) *durpb.Duration { | ||||
| 	nanos := d.Nanoseconds() | ||||
| 	secs := nanos / 1e9 | ||||
| 	nanos -= secs * 1e9 | ||||
| 	return &durpb.Duration{ | ||||
| 		Seconds: secs, | ||||
| 		Nanos:   int32(nanos), | ||||
| 	} | ||||
| } | ||||
							
								
								
									
										146
									
								
								vendor/github.com/golang/protobuf/ptypes/duration/duration.pb.go
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										146
									
								
								vendor/github.com/golang/protobuf/ptypes/duration/duration.pb.go
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							| @@ -0,0 +1,146 @@ | ||||
| // Code generated by protoc-gen-go. DO NOT EDIT. | ||||
| // source: github.com/golang/protobuf/ptypes/duration/duration.proto | ||||
|  | ||||
| /* | ||||
| Package duration is a generated protocol buffer package. | ||||
|  | ||||
| It is generated from these files: | ||||
| 	github.com/golang/protobuf/ptypes/duration/duration.proto | ||||
|  | ||||
| It has these top-level messages: | ||||
| 	Duration | ||||
| */ | ||||
| package duration | ||||
|  | ||||
| import proto "github.com/golang/protobuf/proto" | ||||
| import fmt "fmt" | ||||
| import math "math" | ||||
|  | ||||
| // Reference imports to suppress errors if they are not otherwise used. | ||||
| var _ = proto.Marshal | ||||
| var _ = fmt.Errorf | ||||
| var _ = math.Inf | ||||
|  | ||||
| // This is a compile-time assertion to ensure that this generated file | ||||
| // is compatible with the proto package it is being compiled against. | ||||
| // A compilation error at this line likely means your copy of the | ||||
| // proto package needs to be updated. | ||||
| const _ = proto.ProtoPackageIsVersion2 // please upgrade the proto package | ||||
|  | ||||
| // A Duration represents a signed, fixed-length span of time represented | ||||
| // as a count of seconds and fractions of seconds at nanosecond | ||||
| // resolution. It is independent of any calendar and concepts like "day" | ||||
| // or "month". It is related to Timestamp in that the difference between | ||||
| // two Timestamp values is a Duration and it can be added or subtracted | ||||
| // from a Timestamp. Range is approximately +-10,000 years. | ||||
| // | ||||
| // # Examples | ||||
| // | ||||
| // Example 1: Compute Duration from two Timestamps in pseudo code. | ||||
| // | ||||
| //     Timestamp start = ...; | ||||
| //     Timestamp end = ...; | ||||
| //     Duration duration = ...; | ||||
| // | ||||
| //     duration.seconds = end.seconds - start.seconds; | ||||
| //     duration.nanos = end.nanos - start.nanos; | ||||
| // | ||||
| //     if (duration.seconds < 0 && duration.nanos > 0) { | ||||
| //       duration.seconds += 1; | ||||
| //       duration.nanos -= 1000000000; | ||||
| //     } else if (durations.seconds > 0 && duration.nanos < 0) { | ||||
| //       duration.seconds -= 1; | ||||
| //       duration.nanos += 1000000000; | ||||
| //     } | ||||
| // | ||||
| // Example 2: Compute Timestamp from Timestamp + Duration in pseudo code. | ||||
| // | ||||
| //     Timestamp start = ...; | ||||
| //     Duration duration = ...; | ||||
| //     Timestamp end = ...; | ||||
| // | ||||
| //     end.seconds = start.seconds + duration.seconds; | ||||
| //     end.nanos = start.nanos + duration.nanos; | ||||
| // | ||||
| //     if (end.nanos < 0) { | ||||
| //       end.seconds -= 1; | ||||
| //       end.nanos += 1000000000; | ||||
| //     } else if (end.nanos >= 1000000000) { | ||||
| //       end.seconds += 1; | ||||
| //       end.nanos -= 1000000000; | ||||
| //     } | ||||
| // | ||||
| // Example 3: Compute Duration from datetime.timedelta in Python. | ||||
| // | ||||
| //     td = datetime.timedelta(days=3, minutes=10) | ||||
| //     duration = Duration() | ||||
| //     duration.FromTimedelta(td) | ||||
| // | ||||
| // # JSON Mapping | ||||
| // | ||||
| // In JSON format, the Duration type is encoded as a string rather than an | ||||
| // object, where the string ends in the suffix "s" (indicating seconds) and | ||||
| // is preceded by the number of seconds, with nanoseconds expressed as | ||||
| // fractional seconds. For example, 3 seconds with 0 nanoseconds should be | ||||
| // encoded in JSON format as "3s", while 3 seconds and 1 nanosecond should | ||||
| // be expressed in JSON format as "3.000000001s", and 3 seconds and 1 | ||||
| // microsecond should be expressed in JSON format as "3.000001s". | ||||
| // | ||||
| // | ||||
| type Duration struct { | ||||
| 	// Signed seconds of the span of time. Must be from -315,576,000,000 | ||||
| 	// to +315,576,000,000 inclusive. Note: these bounds are computed from: | ||||
| 	// 60 sec/min * 60 min/hr * 24 hr/day * 365.25 days/year * 10000 years | ||||
| 	Seconds int64 `protobuf:"varint,1,opt,name=seconds" json:"seconds,omitempty"` | ||||
| 	// Signed fractions of a second at nanosecond resolution of the span | ||||
| 	// of time. Durations less than one second are represented with a 0 | ||||
| 	// `seconds` field and a positive or negative `nanos` field. For durations | ||||
| 	// of one second or more, a non-zero value for the `nanos` field must be | ||||
| 	// of the same sign as the `seconds` field. Must be from -999,999,999 | ||||
| 	// to +999,999,999 inclusive. | ||||
| 	Nanos int32 `protobuf:"varint,2,opt,name=nanos" json:"nanos,omitempty"` | ||||
| } | ||||
|  | ||||
| func (m *Duration) Reset()                    { *m = Duration{} } | ||||
| func (m *Duration) String() string            { return proto.CompactTextString(m) } | ||||
| func (*Duration) ProtoMessage()               {} | ||||
| func (*Duration) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{0} } | ||||
| func (*Duration) XXX_WellKnownType() string   { return "Duration" } | ||||
|  | ||||
| func (m *Duration) GetSeconds() int64 { | ||||
| 	if m != nil { | ||||
| 		return m.Seconds | ||||
| 	} | ||||
| 	return 0 | ||||
| } | ||||
|  | ||||
| func (m *Duration) GetNanos() int32 { | ||||
| 	if m != nil { | ||||
| 		return m.Nanos | ||||
| 	} | ||||
| 	return 0 | ||||
| } | ||||
|  | ||||
| func init() { | ||||
| 	proto.RegisterType((*Duration)(nil), "google.protobuf.Duration") | ||||
| } | ||||
|  | ||||
| func init() { | ||||
| 	proto.RegisterFile("github.com/golang/protobuf/ptypes/duration/duration.proto", fileDescriptor0) | ||||
| } | ||||
|  | ||||
| var fileDescriptor0 = []byte{ | ||||
| 	// 189 bytes of a gzipped FileDescriptorProto | ||||
| 	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xe2, 0xb2, 0x4c, 0xcf, 0x2c, 0xc9, | ||||
| 	0x28, 0x4d, 0xd2, 0x4b, 0xce, 0xcf, 0xd5, 0x4f, 0xcf, 0xcf, 0x49, 0xcc, 0x4b, 0xd7, 0x2f, 0x28, | ||||
| 	0xca, 0x2f, 0xc9, 0x4f, 0x2a, 0x4d, 0xd3, 0x2f, 0x28, 0xa9, 0x2c, 0x48, 0x2d, 0xd6, 0x4f, 0x29, | ||||
| 	0x2d, 0x4a, 0x2c, 0xc9, 0xcc, 0xcf, 0x83, 0x33, 0xf4, 0xc0, 0x2a, 0x84, 0xf8, 0xd3, 0xf3, 0xf3, | ||||
| 	0xd3, 0x73, 0x52, 0xf5, 0x60, 0xea, 0x95, 0xac, 0xb8, 0x38, 0x5c, 0xa0, 0x4a, 0x84, 0x24, 0xb8, | ||||
| 	0xd8, 0x8b, 0x53, 0x93, 0xf3, 0xf3, 0x52, 0x8a, 0x25, 0x18, 0x15, 0x18, 0x35, 0x98, 0x83, 0x60, | ||||
| 	0x5c, 0x21, 0x11, 0x2e, 0xd6, 0xbc, 0xc4, 0xbc, 0xfc, 0x62, 0x09, 0x26, 0x05, 0x46, 0x0d, 0xd6, | ||||
| 	0x20, 0x08, 0xc7, 0xa9, 0x86, 0x4b, 0x38, 0x39, 0x3f, 0x57, 0x0f, 0xcd, 0x48, 0x27, 0x5e, 0x98, | ||||
| 	0x81, 0x01, 0x20, 0x91, 0x00, 0xc6, 0x28, 0x2d, 0xe2, 0xdd, 0xfb, 0x83, 0x91, 0x71, 0x11, 0x13, | ||||
| 	0xb3, 0x7b, 0x80, 0xd3, 0x2a, 0x26, 0x39, 0x77, 0x88, 0xb9, 0x01, 0x50, 0xa5, 0x7a, 0xe1, 0xa9, | ||||
| 	0x39, 0x39, 0xde, 0x79, 0xf9, 0xe5, 0x79, 0x21, 0x20, 0x2d, 0x49, 0x6c, 0x60, 0x33, 0x8c, 0x01, | ||||
| 	0x01, 0x00, 0x00, 0xff, 0xff, 0x45, 0x5a, 0x81, 0x3d, 0x0e, 0x01, 0x00, 0x00, | ||||
| } | ||||
							
								
								
									
										117
									
								
								vendor/github.com/golang/protobuf/ptypes/duration/duration.proto
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										117
									
								
								vendor/github.com/golang/protobuf/ptypes/duration/duration.proto
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							| @@ -0,0 +1,117 @@ | ||||
| // Protocol Buffers - Google's data interchange format | ||||
| // Copyright 2008 Google Inc.  All rights reserved. | ||||
| // https://developers.google.com/protocol-buffers/ | ||||
| // | ||||
| // Redistribution and use in source and binary forms, with or without | ||||
| // modification, are permitted provided that the following conditions are | ||||
| // met: | ||||
| // | ||||
| //     * Redistributions of source code must retain the above copyright | ||||
| // notice, this list of conditions and the following disclaimer. | ||||
| //     * Redistributions in binary form must reproduce the above | ||||
| // copyright notice, this list of conditions and the following disclaimer | ||||
| // in the documentation and/or other materials provided with the | ||||
| // distribution. | ||||
| //     * Neither the name of Google Inc. nor the names of its | ||||
| // contributors may be used to endorse or promote products derived from | ||||
| // this software without specific prior written permission. | ||||
| // | ||||
| // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS | ||||
| // "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT | ||||
| // LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR | ||||
| // A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT | ||||
| // OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, | ||||
| // SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT | ||||
| // LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, | ||||
| // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY | ||||
| // THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT | ||||
| // (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE | ||||
| // OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. | ||||
|  | ||||
| syntax = "proto3"; | ||||
|  | ||||
| package google.protobuf; | ||||
|  | ||||
| option csharp_namespace = "Google.Protobuf.WellKnownTypes"; | ||||
| option cc_enable_arenas = true; | ||||
| option go_package = "github.com/golang/protobuf/ptypes/duration"; | ||||
| option java_package = "com.google.protobuf"; | ||||
| option java_outer_classname = "DurationProto"; | ||||
| option java_multiple_files = true; | ||||
| option objc_class_prefix = "GPB"; | ||||
|  | ||||
| // A Duration represents a signed, fixed-length span of time represented | ||||
| // as a count of seconds and fractions of seconds at nanosecond | ||||
| // resolution. It is independent of any calendar and concepts like "day" | ||||
| // or "month". It is related to Timestamp in that the difference between | ||||
| // two Timestamp values is a Duration and it can be added or subtracted | ||||
| // from a Timestamp. Range is approximately +-10,000 years. | ||||
| // | ||||
| // # Examples | ||||
| // | ||||
| // Example 1: Compute Duration from two Timestamps in pseudo code. | ||||
| // | ||||
| //     Timestamp start = ...; | ||||
| //     Timestamp end = ...; | ||||
| //     Duration duration = ...; | ||||
| // | ||||
| //     duration.seconds = end.seconds - start.seconds; | ||||
| //     duration.nanos = end.nanos - start.nanos; | ||||
| // | ||||
| //     if (duration.seconds < 0 && duration.nanos > 0) { | ||||
| //       duration.seconds += 1; | ||||
| //       duration.nanos -= 1000000000; | ||||
| //     } else if (durations.seconds > 0 && duration.nanos < 0) { | ||||
| //       duration.seconds -= 1; | ||||
| //       duration.nanos += 1000000000; | ||||
| //     } | ||||
| // | ||||
| // Example 2: Compute Timestamp from Timestamp + Duration in pseudo code. | ||||
| // | ||||
| //     Timestamp start = ...; | ||||
| //     Duration duration = ...; | ||||
| //     Timestamp end = ...; | ||||
| // | ||||
| //     end.seconds = start.seconds + duration.seconds; | ||||
| //     end.nanos = start.nanos + duration.nanos; | ||||
| // | ||||
| //     if (end.nanos < 0) { | ||||
| //       end.seconds -= 1; | ||||
| //       end.nanos += 1000000000; | ||||
| //     } else if (end.nanos >= 1000000000) { | ||||
| //       end.seconds += 1; | ||||
| //       end.nanos -= 1000000000; | ||||
| //     } | ||||
| // | ||||
| // Example 3: Compute Duration from datetime.timedelta in Python. | ||||
| // | ||||
| //     td = datetime.timedelta(days=3, minutes=10) | ||||
| //     duration = Duration() | ||||
| //     duration.FromTimedelta(td) | ||||
| // | ||||
| // # JSON Mapping | ||||
| // | ||||
| // In JSON format, the Duration type is encoded as a string rather than an | ||||
| // object, where the string ends in the suffix "s" (indicating seconds) and | ||||
| // is preceded by the number of seconds, with nanoseconds expressed as | ||||
| // fractional seconds. For example, 3 seconds with 0 nanoseconds should be | ||||
| // encoded in JSON format as "3s", while 3 seconds and 1 nanosecond should | ||||
| // be expressed in JSON format as "3.000000001s", and 3 seconds and 1 | ||||
| // microsecond should be expressed in JSON format as "3.000001s". | ||||
| // | ||||
| // | ||||
| message Duration { | ||||
|  | ||||
|   // Signed seconds of the span of time. Must be from -315,576,000,000 | ||||
|   // to +315,576,000,000 inclusive. Note: these bounds are computed from: | ||||
|   // 60 sec/min * 60 min/hr * 24 hr/day * 365.25 days/year * 10000 years | ||||
|   int64 seconds = 1; | ||||
|  | ||||
|   // Signed fractions of a second at nanosecond resolution of the span | ||||
|   // of time. Durations less than one second are represented with a 0 | ||||
|   // `seconds` field and a positive or negative `nanos` field. For durations | ||||
|   // of one second or more, a non-zero value for the `nanos` field must be | ||||
|   // of the same sign as the `seconds` field. Must be from -999,999,999 | ||||
|   // to +999,999,999 inclusive. | ||||
|   int32 nanos = 2; | ||||
| } | ||||
							
								
								
									
										125
									
								
								vendor/github.com/golang/protobuf/ptypes/timestamp.go
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										125
									
								
								vendor/github.com/golang/protobuf/ptypes/timestamp.go
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							| @@ -0,0 +1,125 @@ | ||||
| // Go support for Protocol Buffers - Google's data interchange format | ||||
| // | ||||
| // Copyright 2016 The Go Authors.  All rights reserved. | ||||
| // https://github.com/golang/protobuf | ||||
| // | ||||
| // Redistribution and use in source and binary forms, with or without | ||||
| // modification, are permitted provided that the following conditions are | ||||
| // met: | ||||
| // | ||||
| //     * Redistributions of source code must retain the above copyright | ||||
| // notice, this list of conditions and the following disclaimer. | ||||
| //     * Redistributions in binary form must reproduce the above | ||||
| // copyright notice, this list of conditions and the following disclaimer | ||||
| // in the documentation and/or other materials provided with the | ||||
| // distribution. | ||||
| //     * Neither the name of Google Inc. nor the names of its | ||||
| // contributors may be used to endorse or promote products derived from | ||||
| // this software without specific prior written permission. | ||||
| // | ||||
| // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS | ||||
| // "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT | ||||
| // LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR | ||||
| // A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT | ||||
| // OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, | ||||
| // SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT | ||||
| // LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, | ||||
| // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY | ||||
| // THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT | ||||
| // (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE | ||||
| // OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. | ||||
|  | ||||
| package ptypes | ||||
|  | ||||
| // This file implements operations on google.protobuf.Timestamp. | ||||
|  | ||||
| import ( | ||||
| 	"errors" | ||||
| 	"fmt" | ||||
| 	"time" | ||||
|  | ||||
| 	tspb "github.com/golang/protobuf/ptypes/timestamp" | ||||
| ) | ||||
|  | ||||
| const ( | ||||
| 	// Seconds field of the earliest valid Timestamp. | ||||
| 	// This is time.Date(1, 1, 1, 0, 0, 0, 0, time.UTC).Unix(). | ||||
| 	minValidSeconds = -62135596800 | ||||
| 	// Seconds field just after the latest valid Timestamp. | ||||
| 	// This is time.Date(10000, 1, 1, 0, 0, 0, 0, time.UTC).Unix(). | ||||
| 	maxValidSeconds = 253402300800 | ||||
| ) | ||||
|  | ||||
| // validateTimestamp determines whether a Timestamp is valid. | ||||
| // A valid timestamp represents a time in the range | ||||
| // [0001-01-01, 10000-01-01) and has a Nanos field | ||||
| // in the range [0, 1e9). | ||||
| // | ||||
| // If the Timestamp is valid, validateTimestamp returns nil. | ||||
| // Otherwise, it returns an error that describes | ||||
| // the problem. | ||||
| // | ||||
| // Every valid Timestamp can be represented by a time.Time, but the converse is not true. | ||||
| func validateTimestamp(ts *tspb.Timestamp) error { | ||||
| 	if ts == nil { | ||||
| 		return errors.New("timestamp: nil Timestamp") | ||||
| 	} | ||||
| 	if ts.Seconds < minValidSeconds { | ||||
| 		return fmt.Errorf("timestamp: %v before 0001-01-01", ts) | ||||
| 	} | ||||
| 	if ts.Seconds >= maxValidSeconds { | ||||
| 		return fmt.Errorf("timestamp: %v after 10000-01-01", ts) | ||||
| 	} | ||||
| 	if ts.Nanos < 0 || ts.Nanos >= 1e9 { | ||||
| 		return fmt.Errorf("timestamp: %v: nanos not in range [0, 1e9)", ts) | ||||
| 	} | ||||
| 	return nil | ||||
| } | ||||
|  | ||||
| // Timestamp converts a google.protobuf.Timestamp proto to a time.Time. | ||||
| // It returns an error if the argument is invalid. | ||||
| // | ||||
| // Unlike most Go functions, if Timestamp returns an error, the first return value | ||||
| // is not the zero time.Time. Instead, it is the value obtained from the | ||||
| // time.Unix function when passed the contents of the Timestamp, in the UTC | ||||
| // locale. This may or may not be a meaningful time; many invalid Timestamps | ||||
| // do map to valid time.Times. | ||||
| // | ||||
| // A nil Timestamp returns an error. The first return value in that case is | ||||
| // undefined. | ||||
| func Timestamp(ts *tspb.Timestamp) (time.Time, error) { | ||||
| 	// Don't return the zero value on error, because corresponds to a valid | ||||
| 	// timestamp. Instead return whatever time.Unix gives us. | ||||
| 	var t time.Time | ||||
| 	if ts == nil { | ||||
| 		t = time.Unix(0, 0).UTC() // treat nil like the empty Timestamp | ||||
| 	} else { | ||||
| 		t = time.Unix(ts.Seconds, int64(ts.Nanos)).UTC() | ||||
| 	} | ||||
| 	return t, validateTimestamp(ts) | ||||
| } | ||||
|  | ||||
| // TimestampProto converts the time.Time to a google.protobuf.Timestamp proto. | ||||
| // It returns an error if the resulting Timestamp is invalid. | ||||
| func TimestampProto(t time.Time) (*tspb.Timestamp, error) { | ||||
| 	seconds := t.Unix() | ||||
| 	nanos := int32(t.Sub(time.Unix(seconds, 0))) | ||||
| 	ts := &tspb.Timestamp{ | ||||
| 		Seconds: seconds, | ||||
| 		Nanos:   nanos, | ||||
| 	} | ||||
| 	if err := validateTimestamp(ts); err != nil { | ||||
| 		return nil, err | ||||
| 	} | ||||
| 	return ts, nil | ||||
| } | ||||
|  | ||||
| // TimestampString returns the RFC 3339 string for valid Timestamps. For invalid | ||||
| // Timestamps, it returns an error message in parentheses. | ||||
| func TimestampString(ts *tspb.Timestamp) string { | ||||
| 	t, err := Timestamp(ts) | ||||
| 	if err != nil { | ||||
| 		return fmt.Sprintf("(%v)", err) | ||||
| 	} | ||||
| 	return t.Format(time.RFC3339Nano) | ||||
| } | ||||
							
								
								
									
										162
									
								
								vendor/github.com/golang/protobuf/ptypes/timestamp/timestamp.pb.go
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										162
									
								
								vendor/github.com/golang/protobuf/ptypes/timestamp/timestamp.pb.go
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							| @@ -0,0 +1,162 @@ | ||||
| // Code generated by protoc-gen-go. DO NOT EDIT. | ||||
| // source: github.com/golang/protobuf/ptypes/timestamp/timestamp.proto | ||||
|  | ||||
| /* | ||||
| Package timestamp is a generated protocol buffer package. | ||||
|  | ||||
| It is generated from these files: | ||||
| 	github.com/golang/protobuf/ptypes/timestamp/timestamp.proto | ||||
|  | ||||
| It has these top-level messages: | ||||
| 	Timestamp | ||||
| */ | ||||
| package timestamp | ||||
|  | ||||
| import proto "github.com/golang/protobuf/proto" | ||||
| import fmt "fmt" | ||||
| import math "math" | ||||
|  | ||||
| // Reference imports to suppress errors if they are not otherwise used. | ||||
| var _ = proto.Marshal | ||||
| var _ = fmt.Errorf | ||||
| var _ = math.Inf | ||||
|  | ||||
| // This is a compile-time assertion to ensure that this generated file | ||||
| // is compatible with the proto package it is being compiled against. | ||||
| // A compilation error at this line likely means your copy of the | ||||
| // proto package needs to be updated. | ||||
| const _ = proto.ProtoPackageIsVersion2 // please upgrade the proto package | ||||
|  | ||||
| // A Timestamp represents a point in time independent of any time zone | ||||
| // or calendar, represented as seconds and fractions of seconds at | ||||
| // nanosecond resolution in UTC Epoch time. It is encoded using the | ||||
| // Proleptic Gregorian Calendar which extends the Gregorian calendar | ||||
| // backwards to year one. It is encoded assuming all minutes are 60 | ||||
| // seconds long, i.e. leap seconds are "smeared" so that no leap second | ||||
| // table is needed for interpretation. Range is from | ||||
| // 0001-01-01T00:00:00Z to 9999-12-31T23:59:59.999999999Z. | ||||
| // By restricting to that range, we ensure that we can convert to | ||||
| // and from  RFC 3339 date strings. | ||||
| // See [https://www.ietf.org/rfc/rfc3339.txt](https://www.ietf.org/rfc/rfc3339.txt). | ||||
| // | ||||
| // # Examples | ||||
| // | ||||
| // Example 1: Compute Timestamp from POSIX `time()`. | ||||
| // | ||||
| //     Timestamp timestamp; | ||||
| //     timestamp.set_seconds(time(NULL)); | ||||
| //     timestamp.set_nanos(0); | ||||
| // | ||||
| // Example 2: Compute Timestamp from POSIX `gettimeofday()`. | ||||
| // | ||||
| //     struct timeval tv; | ||||
| //     gettimeofday(&tv, NULL); | ||||
| // | ||||
| //     Timestamp timestamp; | ||||
| //     timestamp.set_seconds(tv.tv_sec); | ||||
| //     timestamp.set_nanos(tv.tv_usec * 1000); | ||||
| // | ||||
| // Example 3: Compute Timestamp from Win32 `GetSystemTimeAsFileTime()`. | ||||
| // | ||||
| //     FILETIME ft; | ||||
| //     GetSystemTimeAsFileTime(&ft); | ||||
| //     UINT64 ticks = (((UINT64)ft.dwHighDateTime) << 32) | ft.dwLowDateTime; | ||||
| // | ||||
| //     // A Windows tick is 100 nanoseconds. Windows epoch 1601-01-01T00:00:00Z | ||||
| //     // is 11644473600 seconds before Unix epoch 1970-01-01T00:00:00Z. | ||||
| //     Timestamp timestamp; | ||||
| //     timestamp.set_seconds((INT64) ((ticks / 10000000) - 11644473600LL)); | ||||
| //     timestamp.set_nanos((INT32) ((ticks % 10000000) * 100)); | ||||
| // | ||||
| // Example 4: Compute Timestamp from Java `System.currentTimeMillis()`. | ||||
| // | ||||
| //     long millis = System.currentTimeMillis(); | ||||
| // | ||||
| //     Timestamp timestamp = Timestamp.newBuilder().setSeconds(millis / 1000) | ||||
| //         .setNanos((int) ((millis % 1000) * 1000000)).build(); | ||||
| // | ||||
| // | ||||
| // Example 5: Compute Timestamp from current time in Python. | ||||
| // | ||||
| //     timestamp = Timestamp() | ||||
| //     timestamp.GetCurrentTime() | ||||
| // | ||||
| // # JSON Mapping | ||||
| // | ||||
| // In JSON format, the Timestamp type is encoded as a string in the | ||||
| // [RFC 3339](https://www.ietf.org/rfc/rfc3339.txt) format. That is, the | ||||
| // format is "{year}-{month}-{day}T{hour}:{min}:{sec}[.{frac_sec}]Z" | ||||
| // where {year} is always expressed using four digits while {month}, {day}, | ||||
| // {hour}, {min}, and {sec} are zero-padded to two digits each. The fractional | ||||
| // seconds, which can go up to 9 digits (i.e. up to 1 nanosecond resolution), | ||||
| // are optional. The "Z" suffix indicates the timezone ("UTC"); the timezone | ||||
| // is required, though only UTC (as indicated by "Z") is presently supported. | ||||
| // | ||||
| // For example, "2017-01-15T01:30:15.01Z" encodes 15.01 seconds past | ||||
| // 01:30 UTC on January 15, 2017. | ||||
| // | ||||
| // In JavaScript, one can convert a Date object to this format using the | ||||
| // standard [toISOString()](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/toISOString] | ||||
| // method. In Python, a standard `datetime.datetime` object can be converted | ||||
| // to this format using [`strftime`](https://docs.python.org/2/library/time.html#time.strftime) | ||||
| // with the time format spec '%Y-%m-%dT%H:%M:%S.%fZ'. Likewise, in Java, one | ||||
| // can use the Joda Time's [`ISODateTimeFormat.dateTime()`]( | ||||
| // http://joda-time.sourceforge.net/apidocs/org/joda/time/format/ISODateTimeFormat.html#dateTime()) | ||||
| // to obtain a formatter capable of generating timestamps in this format. | ||||
| // | ||||
| // | ||||
| type Timestamp struct { | ||||
| 	// Represents seconds of UTC time since Unix epoch | ||||
| 	// 1970-01-01T00:00:00Z. Must be from 0001-01-01T00:00:00Z to | ||||
| 	// 9999-12-31T23:59:59Z inclusive. | ||||
| 	Seconds int64 `protobuf:"varint,1,opt,name=seconds" json:"seconds,omitempty"` | ||||
| 	// Non-negative fractions of a second at nanosecond resolution. Negative | ||||
| 	// second values with fractions must still have non-negative nanos values | ||||
| 	// that count forward in time. Must be from 0 to 999,999,999 | ||||
| 	// inclusive. | ||||
| 	Nanos int32 `protobuf:"varint,2,opt,name=nanos" json:"nanos,omitempty"` | ||||
| } | ||||
|  | ||||
| func (m *Timestamp) Reset()                    { *m = Timestamp{} } | ||||
| func (m *Timestamp) String() string            { return proto.CompactTextString(m) } | ||||
| func (*Timestamp) ProtoMessage()               {} | ||||
| func (*Timestamp) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{0} } | ||||
| func (*Timestamp) XXX_WellKnownType() string   { return "Timestamp" } | ||||
|  | ||||
| func (m *Timestamp) GetSeconds() int64 { | ||||
| 	if m != nil { | ||||
| 		return m.Seconds | ||||
| 	} | ||||
| 	return 0 | ||||
| } | ||||
|  | ||||
| func (m *Timestamp) GetNanos() int32 { | ||||
| 	if m != nil { | ||||
| 		return m.Nanos | ||||
| 	} | ||||
| 	return 0 | ||||
| } | ||||
|  | ||||
| func init() { | ||||
| 	proto.RegisterType((*Timestamp)(nil), "google.protobuf.Timestamp") | ||||
| } | ||||
|  | ||||
| func init() { | ||||
| 	proto.RegisterFile("github.com/golang/protobuf/ptypes/timestamp/timestamp.proto", fileDescriptor0) | ||||
| } | ||||
|  | ||||
| var fileDescriptor0 = []byte{ | ||||
| 	// 190 bytes of a gzipped FileDescriptorProto | ||||
| 	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xe2, 0xb2, 0x4e, 0xcf, 0x2c, 0xc9, | ||||
| 	0x28, 0x4d, 0xd2, 0x4b, 0xce, 0xcf, 0xd5, 0x4f, 0xcf, 0xcf, 0x49, 0xcc, 0x4b, 0xd7, 0x2f, 0x28, | ||||
| 	0xca, 0x2f, 0xc9, 0x4f, 0x2a, 0x4d, 0xd3, 0x2f, 0x28, 0xa9, 0x2c, 0x48, 0x2d, 0xd6, 0x2f, 0xc9, | ||||
| 	0xcc, 0x4d, 0x2d, 0x2e, 0x49, 0xcc, 0x2d, 0x40, 0xb0, 0xf4, 0xc0, 0x6a, 0x84, 0xf8, 0xd3, 0xf3, | ||||
| 	0xf3, 0xd3, 0x73, 0x52, 0xf5, 0x60, 0x3a, 0x94, 0xac, 0xb9, 0x38, 0x43, 0x60, 0x6a, 0x84, 0x24, | ||||
| 	0xb8, 0xd8, 0x8b, 0x53, 0x93, 0xf3, 0xf3, 0x52, 0x8a, 0x25, 0x18, 0x15, 0x18, 0x35, 0x98, 0x83, | ||||
| 	0x60, 0x5c, 0x21, 0x11, 0x2e, 0xd6, 0xbc, 0xc4, 0xbc, 0xfc, 0x62, 0x09, 0x26, 0x05, 0x46, 0x0d, | ||||
| 	0xd6, 0x20, 0x08, 0xc7, 0xa9, 0x8e, 0x4b, 0x38, 0x39, 0x3f, 0x57, 0x0f, 0xcd, 0x4c, 0x27, 0x3e, | ||||
| 	0xb8, 0x89, 0x01, 0x20, 0xa1, 0x00, 0xc6, 0x28, 0x6d, 0x12, 0xdc, 0xfc, 0x83, 0x91, 0x71, 0x11, | ||||
| 	0x13, 0xb3, 0x7b, 0x80, 0xd3, 0x2a, 0x26, 0x39, 0x77, 0x88, 0xc9, 0x01, 0x50, 0xb5, 0x7a, 0xe1, | ||||
| 	0xa9, 0x39, 0x39, 0xde, 0x79, 0xf9, 0xe5, 0x79, 0x21, 0x20, 0x3d, 0x49, 0x6c, 0x60, 0x43, 0x8c, | ||||
| 	0x01, 0x01, 0x00, 0x00, 0xff, 0xff, 0x6b, 0x59, 0x0a, 0x4d, 0x13, 0x01, 0x00, 0x00, | ||||
| } | ||||
							
								
								
									
										133
									
								
								vendor/github.com/golang/protobuf/ptypes/timestamp/timestamp.proto
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										133
									
								
								vendor/github.com/golang/protobuf/ptypes/timestamp/timestamp.proto
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							| @@ -0,0 +1,133 @@ | ||||
| // Protocol Buffers - Google's data interchange format | ||||
| // Copyright 2008 Google Inc.  All rights reserved. | ||||
| // https://developers.google.com/protocol-buffers/ | ||||
| // | ||||
| // Redistribution and use in source and binary forms, with or without | ||||
| // modification, are permitted provided that the following conditions are | ||||
| // met: | ||||
| // | ||||
| //     * Redistributions of source code must retain the above copyright | ||||
| // notice, this list of conditions and the following disclaimer. | ||||
| //     * Redistributions in binary form must reproduce the above | ||||
| // copyright notice, this list of conditions and the following disclaimer | ||||
| // in the documentation and/or other materials provided with the | ||||
| // distribution. | ||||
| //     * Neither the name of Google Inc. nor the names of its | ||||
| // contributors may be used to endorse or promote products derived from | ||||
| // this software without specific prior written permission. | ||||
| // | ||||
| // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS | ||||
| // "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT | ||||
| // LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR | ||||
| // A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT | ||||
| // OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, | ||||
| // SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT | ||||
| // LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, | ||||
| // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY | ||||
| // THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT | ||||
| // (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE | ||||
| // OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. | ||||
|  | ||||
| syntax = "proto3"; | ||||
|  | ||||
| package google.protobuf; | ||||
|  | ||||
| option csharp_namespace = "Google.Protobuf.WellKnownTypes"; | ||||
| option cc_enable_arenas = true; | ||||
| option go_package = "github.com/golang/protobuf/ptypes/timestamp"; | ||||
| option java_package = "com.google.protobuf"; | ||||
| option java_outer_classname = "TimestampProto"; | ||||
| option java_multiple_files = true; | ||||
| option objc_class_prefix = "GPB"; | ||||
|  | ||||
| // A Timestamp represents a point in time independent of any time zone | ||||
| // or calendar, represented as seconds and fractions of seconds at | ||||
| // nanosecond resolution in UTC Epoch time. It is encoded using the | ||||
| // Proleptic Gregorian Calendar which extends the Gregorian calendar | ||||
| // backwards to year one. It is encoded assuming all minutes are 60 | ||||
| // seconds long, i.e. leap seconds are "smeared" so that no leap second | ||||
| // table is needed for interpretation. Range is from | ||||
| // 0001-01-01T00:00:00Z to 9999-12-31T23:59:59.999999999Z. | ||||
| // By restricting to that range, we ensure that we can convert to | ||||
| // and from  RFC 3339 date strings. | ||||
| // See [https://www.ietf.org/rfc/rfc3339.txt](https://www.ietf.org/rfc/rfc3339.txt). | ||||
| // | ||||
| // # Examples | ||||
| // | ||||
| // Example 1: Compute Timestamp from POSIX `time()`. | ||||
| // | ||||
| //     Timestamp timestamp; | ||||
| //     timestamp.set_seconds(time(NULL)); | ||||
| //     timestamp.set_nanos(0); | ||||
| // | ||||
| // Example 2: Compute Timestamp from POSIX `gettimeofday()`. | ||||
| // | ||||
| //     struct timeval tv; | ||||
| //     gettimeofday(&tv, NULL); | ||||
| // | ||||
| //     Timestamp timestamp; | ||||
| //     timestamp.set_seconds(tv.tv_sec); | ||||
| //     timestamp.set_nanos(tv.tv_usec * 1000); | ||||
| // | ||||
| // Example 3: Compute Timestamp from Win32 `GetSystemTimeAsFileTime()`. | ||||
| // | ||||
| //     FILETIME ft; | ||||
| //     GetSystemTimeAsFileTime(&ft); | ||||
| //     UINT64 ticks = (((UINT64)ft.dwHighDateTime) << 32) | ft.dwLowDateTime; | ||||
| // | ||||
| //     // A Windows tick is 100 nanoseconds. Windows epoch 1601-01-01T00:00:00Z | ||||
| //     // is 11644473600 seconds before Unix epoch 1970-01-01T00:00:00Z. | ||||
| //     Timestamp timestamp; | ||||
| //     timestamp.set_seconds((INT64) ((ticks / 10000000) - 11644473600LL)); | ||||
| //     timestamp.set_nanos((INT32) ((ticks % 10000000) * 100)); | ||||
| // | ||||
| // Example 4: Compute Timestamp from Java `System.currentTimeMillis()`. | ||||
| // | ||||
| //     long millis = System.currentTimeMillis(); | ||||
| // | ||||
| //     Timestamp timestamp = Timestamp.newBuilder().setSeconds(millis / 1000) | ||||
| //         .setNanos((int) ((millis % 1000) * 1000000)).build(); | ||||
| // | ||||
| // | ||||
| // Example 5: Compute Timestamp from current time in Python. | ||||
| // | ||||
| //     timestamp = Timestamp() | ||||
| //     timestamp.GetCurrentTime() | ||||
| // | ||||
| // # JSON Mapping | ||||
| // | ||||
| // In JSON format, the Timestamp type is encoded as a string in the | ||||
| // [RFC 3339](https://www.ietf.org/rfc/rfc3339.txt) format. That is, the | ||||
| // format is "{year}-{month}-{day}T{hour}:{min}:{sec}[.{frac_sec}]Z" | ||||
| // where {year} is always expressed using four digits while {month}, {day}, | ||||
| // {hour}, {min}, and {sec} are zero-padded to two digits each. The fractional | ||||
| // seconds, which can go up to 9 digits (i.e. up to 1 nanosecond resolution), | ||||
| // are optional. The "Z" suffix indicates the timezone ("UTC"); the timezone | ||||
| // is required, though only UTC (as indicated by "Z") is presently supported. | ||||
| // | ||||
| // For example, "2017-01-15T01:30:15.01Z" encodes 15.01 seconds past | ||||
| // 01:30 UTC on January 15, 2017. | ||||
| // | ||||
| // In JavaScript, one can convert a Date object to this format using the | ||||
| // standard [toISOString()](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/toISOString] | ||||
| // method. In Python, a standard `datetime.datetime` object can be converted | ||||
| // to this format using [`strftime`](https://docs.python.org/2/library/time.html#time.strftime) | ||||
| // with the time format spec '%Y-%m-%dT%H:%M:%S.%fZ'. Likewise, in Java, one | ||||
| // can use the Joda Time's [`ISODateTimeFormat.dateTime()`]( | ||||
| // http://joda-time.sourceforge.net/apidocs/org/joda/time/format/ISODateTimeFormat.html#dateTime()) | ||||
| // to obtain a formatter capable of generating timestamps in this format. | ||||
| // | ||||
| // | ||||
| message Timestamp { | ||||
|  | ||||
|   // Represents seconds of UTC time since Unix epoch | ||||
|   // 1970-01-01T00:00:00Z. Must be from 0001-01-01T00:00:00Z to | ||||
|   // 9999-12-31T23:59:59Z inclusive. | ||||
|   int64 seconds = 1; | ||||
|  | ||||
|   // Non-negative fractions of a second at nanosecond resolution. Negative | ||||
|   // second values with fractions must still have non-negative nanos values | ||||
|   // that count forward in time. Must be from 0 to 999,999,999 | ||||
|   // inclusive. | ||||
|   int32 nanos = 2; | ||||
| } | ||||
| @@ -11,6 +11,7 @@ import ( | ||||
| 	"github.com/containerd/containerd/log" | ||||
| 	"github.com/containerd/containerd/runtime" | ||||
| 	"github.com/containerd/containerd/windows/hcs" | ||||
| 	"github.com/containerd/containerd/windows/hcsshimopts" | ||||
| 	"github.com/gogo/protobuf/types" | ||||
| 	specs "github.com/opencontainers/runtime-spec/specs-go" | ||||
| 	"github.com/pkg/errors" | ||||
| @@ -36,20 +37,21 @@ func loadContainers(ctx context.Context, h *hcs.HCS) ([]*container, error) { | ||||
| 	return containers, nil | ||||
| } | ||||
|  | ||||
| func newContainer(ctx context.Context, h *hcs.HCS, id string, spec *RuntimeSpec, io runtime.IO) (*container, error) { | ||||
| func (r *Runtime) newContainer(ctx context.Context, id string, spec *specs.Spec, createOpts *hcsshimopts.CreateOptions, io runtime.IO) (*container, error) { | ||||
| 	cio, err := hcs.NewIO(io.Stdin, io.Stdout, io.Stderr, io.Terminal) | ||||
| 	if err != nil { | ||||
| 		return nil, err | ||||
| 	} | ||||
|  | ||||
| 	hcsCtr, err := h.CreateContainer(ctx, id, spec.OCISpec, spec.Configuration.TerminateDuration, cio) | ||||
| 	ctr, err := r.hcs.CreateContainer(ctx, id, spec, createOpts.TerminateDuration, cio) | ||||
| 	if err != nil { | ||||
| 		cio.Close() | ||||
| 		return nil, err | ||||
| 	} | ||||
| 	//sendEvent(id, events.RuntimeEvent_CREATE, hcsCtr.Pid(), 0, time.Time{}) | ||||
|  | ||||
| 	return &container{ | ||||
| 		ctr:    hcsCtr, | ||||
| 		ctr:    ctr, | ||||
| 		status: runtime.CreatedStatus, | ||||
| 	}, nil | ||||
| } | ||||
|   | ||||
| @@ -79,7 +79,7 @@ type HCS struct { | ||||
| 	pidPool  *pid.Pool | ||||
| } | ||||
|  | ||||
| func (s *HCS) CreateContainer(ctx context.Context, id string, spec specs.Spec, terminateDuration time.Duration, io *IO) (c *Container, err error) { | ||||
| func (s *HCS) CreateContainer(ctx context.Context, id string, spec *specs.Spec, terminateDuration time.Duration, io *IO) (c *Container, err error) { | ||||
| 	pid, err := s.pidPool.Get() | ||||
| 	if err != nil { | ||||
| 		return nil, err | ||||
| @@ -151,7 +151,7 @@ type Container struct { | ||||
| 	id              string | ||||
| 	stateDir        string | ||||
| 	pid             uint32 | ||||
| 	spec            specs.Spec | ||||
| 	spec            *specs.Spec | ||||
| 	io              *IO | ||||
| 	hcs             *HCS | ||||
| 	layerFolderPath string | ||||
| @@ -418,7 +418,7 @@ func (c *Container) addProcess(ctx context.Context, id string, spec *specs.Proce | ||||
|  | ||||
| // newContainerConfig generates a hcsshim container configuration from the | ||||
| // provided OCI Spec | ||||
| func newContainerConfig(ctx context.Context, owner, id string, spec specs.Spec) (*hcsshim.ContainerConfig, error) { | ||||
| func newContainerConfig(ctx context.Context, owner, id string, spec *specs.Spec) (*hcsshim.ContainerConfig, error) { | ||||
| 	if len(spec.Windows.LayerFolders) == 0 { | ||||
| 		return nil, errors.New("LayerFolders cannot be empty") | ||||
| 	} | ||||
|   | ||||
							
								
								
									
										2
									
								
								windows/hcsshimopts/doc.go
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										2
									
								
								windows/hcsshimopts/doc.go
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,2 @@ | ||||
| // hcsshimopts holds the windows runtime specific options | ||||
| package hcsshimopts | ||||
							
								
								
									
										352
									
								
								windows/hcsshimopts/hcsshim.pb.go
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										352
									
								
								windows/hcsshimopts/hcsshim.pb.go
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,352 @@ | ||||
| // Code generated by protoc-gen-gogo. | ||||
| // source: github.com/containerd/containerd/windows/hcsshimopts/hcsshim.proto | ||||
| // DO NOT EDIT! | ||||
|  | ||||
| /* | ||||
| 	Package hcsshimopts is a generated protocol buffer package. | ||||
|  | ||||
| 	It is generated from these files: | ||||
| 		github.com/containerd/containerd/windows/hcsshimopts/hcsshim.proto | ||||
|  | ||||
| 	It has these top-level messages: | ||||
| 		CreateOptions | ||||
| */ | ||||
| package hcsshimopts | ||||
|  | ||||
| import proto "github.com/gogo/protobuf/proto" | ||||
| import fmt "fmt" | ||||
| import math "math" | ||||
| import _ "github.com/gogo/protobuf/gogoproto" | ||||
| import _ "github.com/golang/protobuf/ptypes/duration" | ||||
|  | ||||
| import time "time" | ||||
|  | ||||
| import github_com_gogo_protobuf_types "github.com/gogo/protobuf/types" | ||||
|  | ||||
| import strings "strings" | ||||
| import reflect "reflect" | ||||
|  | ||||
| import io "io" | ||||
|  | ||||
| // Reference imports to suppress errors if they are not otherwise used. | ||||
| var _ = proto.Marshal | ||||
| var _ = fmt.Errorf | ||||
| var _ = math.Inf | ||||
| var _ = time.Kitchen | ||||
|  | ||||
| // This is a compile-time assertion to ensure that this generated file | ||||
| // is compatible with the proto package it is being compiled against. | ||||
| // A compilation error at this line likely means your copy of the | ||||
| // proto package needs to be updated. | ||||
| const _ = proto.GoGoProtoPackageIsVersion2 // please upgrade the proto package | ||||
|  | ||||
| type CreateOptions struct { | ||||
| 	TerminateDuration time.Duration `protobuf:"bytes,1,opt,name=terminate_duration,json=terminateDuration,stdduration" json:"terminate_duration"` | ||||
| } | ||||
|  | ||||
| func (m *CreateOptions) Reset()                    { *m = CreateOptions{} } | ||||
| func (*CreateOptions) ProtoMessage()               {} | ||||
| func (*CreateOptions) Descriptor() ([]byte, []int) { return fileDescriptorHcsshim, []int{0} } | ||||
|  | ||||
| func init() { | ||||
| 	proto.RegisterType((*CreateOptions)(nil), "containerd.windows.hcsshim.CreateOptions") | ||||
| } | ||||
| func (m *CreateOptions) Marshal() (dAtA []byte, err error) { | ||||
| 	size := m.Size() | ||||
| 	dAtA = make([]byte, size) | ||||
| 	n, err := m.MarshalTo(dAtA) | ||||
| 	if err != nil { | ||||
| 		return nil, err | ||||
| 	} | ||||
| 	return dAtA[:n], nil | ||||
| } | ||||
|  | ||||
| func (m *CreateOptions) MarshalTo(dAtA []byte) (int, error) { | ||||
| 	var i int | ||||
| 	_ = i | ||||
| 	var l int | ||||
| 	_ = l | ||||
| 	dAtA[i] = 0xa | ||||
| 	i++ | ||||
| 	i = encodeVarintHcsshim(dAtA, i, uint64(github_com_gogo_protobuf_types.SizeOfStdDuration(m.TerminateDuration))) | ||||
| 	n1, err := github_com_gogo_protobuf_types.StdDurationMarshalTo(m.TerminateDuration, dAtA[i:]) | ||||
| 	if err != nil { | ||||
| 		return 0, err | ||||
| 	} | ||||
| 	i += n1 | ||||
| 	return i, nil | ||||
| } | ||||
|  | ||||
| func encodeFixed64Hcsshim(dAtA []byte, offset int, v uint64) int { | ||||
| 	dAtA[offset] = uint8(v) | ||||
| 	dAtA[offset+1] = uint8(v >> 8) | ||||
| 	dAtA[offset+2] = uint8(v >> 16) | ||||
| 	dAtA[offset+3] = uint8(v >> 24) | ||||
| 	dAtA[offset+4] = uint8(v >> 32) | ||||
| 	dAtA[offset+5] = uint8(v >> 40) | ||||
| 	dAtA[offset+6] = uint8(v >> 48) | ||||
| 	dAtA[offset+7] = uint8(v >> 56) | ||||
| 	return offset + 8 | ||||
| } | ||||
| func encodeFixed32Hcsshim(dAtA []byte, offset int, v uint32) int { | ||||
| 	dAtA[offset] = uint8(v) | ||||
| 	dAtA[offset+1] = uint8(v >> 8) | ||||
| 	dAtA[offset+2] = uint8(v >> 16) | ||||
| 	dAtA[offset+3] = uint8(v >> 24) | ||||
| 	return offset + 4 | ||||
| } | ||||
| func encodeVarintHcsshim(dAtA []byte, offset int, v uint64) int { | ||||
| 	for v >= 1<<7 { | ||||
| 		dAtA[offset] = uint8(v&0x7f | 0x80) | ||||
| 		v >>= 7 | ||||
| 		offset++ | ||||
| 	} | ||||
| 	dAtA[offset] = uint8(v) | ||||
| 	return offset + 1 | ||||
| } | ||||
| func (m *CreateOptions) Size() (n int) { | ||||
| 	var l int | ||||
| 	_ = l | ||||
| 	l = github_com_gogo_protobuf_types.SizeOfStdDuration(m.TerminateDuration) | ||||
| 	n += 1 + l + sovHcsshim(uint64(l)) | ||||
| 	return n | ||||
| } | ||||
|  | ||||
| func sovHcsshim(x uint64) (n int) { | ||||
| 	for { | ||||
| 		n++ | ||||
| 		x >>= 7 | ||||
| 		if x == 0 { | ||||
| 			break | ||||
| 		} | ||||
| 	} | ||||
| 	return n | ||||
| } | ||||
| func sozHcsshim(x uint64) (n int) { | ||||
| 	return sovHcsshim(uint64((x << 1) ^ uint64((int64(x) >> 63)))) | ||||
| } | ||||
| func (this *CreateOptions) String() string { | ||||
| 	if this == nil { | ||||
| 		return "nil" | ||||
| 	} | ||||
| 	s := strings.Join([]string{`&CreateOptions{`, | ||||
| 		`TerminateDuration:` + strings.Replace(strings.Replace(this.TerminateDuration.String(), "Duration", "google_protobuf1.Duration", 1), `&`, ``, 1) + `,`, | ||||
| 		`}`, | ||||
| 	}, "") | ||||
| 	return s | ||||
| } | ||||
| func valueToStringHcsshim(v interface{}) string { | ||||
| 	rv := reflect.ValueOf(v) | ||||
| 	if rv.IsNil() { | ||||
| 		return "nil" | ||||
| 	} | ||||
| 	pv := reflect.Indirect(rv).Interface() | ||||
| 	return fmt.Sprintf("*%v", pv) | ||||
| } | ||||
| func (m *CreateOptions) Unmarshal(dAtA []byte) error { | ||||
| 	l := len(dAtA) | ||||
| 	iNdEx := 0 | ||||
| 	for iNdEx < l { | ||||
| 		preIndex := iNdEx | ||||
| 		var wire uint64 | ||||
| 		for shift := uint(0); ; shift += 7 { | ||||
| 			if shift >= 64 { | ||||
| 				return ErrIntOverflowHcsshim | ||||
| 			} | ||||
| 			if iNdEx >= l { | ||||
| 				return io.ErrUnexpectedEOF | ||||
| 			} | ||||
| 			b := dAtA[iNdEx] | ||||
| 			iNdEx++ | ||||
| 			wire |= (uint64(b) & 0x7F) << shift | ||||
| 			if b < 0x80 { | ||||
| 				break | ||||
| 			} | ||||
| 		} | ||||
| 		fieldNum := int32(wire >> 3) | ||||
| 		wireType := int(wire & 0x7) | ||||
| 		if wireType == 4 { | ||||
| 			return fmt.Errorf("proto: CreateOptions: wiretype end group for non-group") | ||||
| 		} | ||||
| 		if fieldNum <= 0 { | ||||
| 			return fmt.Errorf("proto: CreateOptions: illegal tag %d (wire type %d)", fieldNum, wire) | ||||
| 		} | ||||
| 		switch fieldNum { | ||||
| 		case 1: | ||||
| 			if wireType != 2 { | ||||
| 				return fmt.Errorf("proto: wrong wireType = %d for field TerminateDuration", wireType) | ||||
| 			} | ||||
| 			var msglen int | ||||
| 			for shift := uint(0); ; shift += 7 { | ||||
| 				if shift >= 64 { | ||||
| 					return ErrIntOverflowHcsshim | ||||
| 				} | ||||
| 				if iNdEx >= l { | ||||
| 					return io.ErrUnexpectedEOF | ||||
| 				} | ||||
| 				b := dAtA[iNdEx] | ||||
| 				iNdEx++ | ||||
| 				msglen |= (int(b) & 0x7F) << shift | ||||
| 				if b < 0x80 { | ||||
| 					break | ||||
| 				} | ||||
| 			} | ||||
| 			if msglen < 0 { | ||||
| 				return ErrInvalidLengthHcsshim | ||||
| 			} | ||||
| 			postIndex := iNdEx + msglen | ||||
| 			if postIndex > l { | ||||
| 				return io.ErrUnexpectedEOF | ||||
| 			} | ||||
| 			if err := github_com_gogo_protobuf_types.StdDurationUnmarshal(&m.TerminateDuration, dAtA[iNdEx:postIndex]); err != nil { | ||||
| 				return err | ||||
| 			} | ||||
| 			iNdEx = postIndex | ||||
| 		default: | ||||
| 			iNdEx = preIndex | ||||
| 			skippy, err := skipHcsshim(dAtA[iNdEx:]) | ||||
| 			if err != nil { | ||||
| 				return err | ||||
| 			} | ||||
| 			if skippy < 0 { | ||||
| 				return ErrInvalidLengthHcsshim | ||||
| 			} | ||||
| 			if (iNdEx + skippy) > l { | ||||
| 				return io.ErrUnexpectedEOF | ||||
| 			} | ||||
| 			iNdEx += skippy | ||||
| 		} | ||||
| 	} | ||||
|  | ||||
| 	if iNdEx > l { | ||||
| 		return io.ErrUnexpectedEOF | ||||
| 	} | ||||
| 	return nil | ||||
| } | ||||
| func skipHcsshim(dAtA []byte) (n int, err error) { | ||||
| 	l := len(dAtA) | ||||
| 	iNdEx := 0 | ||||
| 	for iNdEx < l { | ||||
| 		var wire uint64 | ||||
| 		for shift := uint(0); ; shift += 7 { | ||||
| 			if shift >= 64 { | ||||
| 				return 0, ErrIntOverflowHcsshim | ||||
| 			} | ||||
| 			if iNdEx >= l { | ||||
| 				return 0, io.ErrUnexpectedEOF | ||||
| 			} | ||||
| 			b := dAtA[iNdEx] | ||||
| 			iNdEx++ | ||||
| 			wire |= (uint64(b) & 0x7F) << shift | ||||
| 			if b < 0x80 { | ||||
| 				break | ||||
| 			} | ||||
| 		} | ||||
| 		wireType := int(wire & 0x7) | ||||
| 		switch wireType { | ||||
| 		case 0: | ||||
| 			for shift := uint(0); ; shift += 7 { | ||||
| 				if shift >= 64 { | ||||
| 					return 0, ErrIntOverflowHcsshim | ||||
| 				} | ||||
| 				if iNdEx >= l { | ||||
| 					return 0, io.ErrUnexpectedEOF | ||||
| 				} | ||||
| 				iNdEx++ | ||||
| 				if dAtA[iNdEx-1] < 0x80 { | ||||
| 					break | ||||
| 				} | ||||
| 			} | ||||
| 			return iNdEx, nil | ||||
| 		case 1: | ||||
| 			iNdEx += 8 | ||||
| 			return iNdEx, nil | ||||
| 		case 2: | ||||
| 			var length int | ||||
| 			for shift := uint(0); ; shift += 7 { | ||||
| 				if shift >= 64 { | ||||
| 					return 0, ErrIntOverflowHcsshim | ||||
| 				} | ||||
| 				if iNdEx >= l { | ||||
| 					return 0, io.ErrUnexpectedEOF | ||||
| 				} | ||||
| 				b := dAtA[iNdEx] | ||||
| 				iNdEx++ | ||||
| 				length |= (int(b) & 0x7F) << shift | ||||
| 				if b < 0x80 { | ||||
| 					break | ||||
| 				} | ||||
| 			} | ||||
| 			iNdEx += length | ||||
| 			if length < 0 { | ||||
| 				return 0, ErrInvalidLengthHcsshim | ||||
| 			} | ||||
| 			return iNdEx, nil | ||||
| 		case 3: | ||||
| 			for { | ||||
| 				var innerWire uint64 | ||||
| 				var start int = iNdEx | ||||
| 				for shift := uint(0); ; shift += 7 { | ||||
| 					if shift >= 64 { | ||||
| 						return 0, ErrIntOverflowHcsshim | ||||
| 					} | ||||
| 					if iNdEx >= l { | ||||
| 						return 0, io.ErrUnexpectedEOF | ||||
| 					} | ||||
| 					b := dAtA[iNdEx] | ||||
| 					iNdEx++ | ||||
| 					innerWire |= (uint64(b) & 0x7F) << shift | ||||
| 					if b < 0x80 { | ||||
| 						break | ||||
| 					} | ||||
| 				} | ||||
| 				innerWireType := int(innerWire & 0x7) | ||||
| 				if innerWireType == 4 { | ||||
| 					break | ||||
| 				} | ||||
| 				next, err := skipHcsshim(dAtA[start:]) | ||||
| 				if err != nil { | ||||
| 					return 0, err | ||||
| 				} | ||||
| 				iNdEx = start + next | ||||
| 			} | ||||
| 			return iNdEx, nil | ||||
| 		case 4: | ||||
| 			return iNdEx, nil | ||||
| 		case 5: | ||||
| 			iNdEx += 4 | ||||
| 			return iNdEx, nil | ||||
| 		default: | ||||
| 			return 0, fmt.Errorf("proto: illegal wireType %d", wireType) | ||||
| 		} | ||||
| 	} | ||||
| 	panic("unreachable") | ||||
| } | ||||
|  | ||||
| var ( | ||||
| 	ErrInvalidLengthHcsshim = fmt.Errorf("proto: negative length found during unmarshaling") | ||||
| 	ErrIntOverflowHcsshim   = fmt.Errorf("proto: integer overflow") | ||||
| ) | ||||
|  | ||||
| func init() { | ||||
| 	proto.RegisterFile("github.com/containerd/containerd/windows/hcsshimopts/hcsshim.proto", fileDescriptorHcsshim) | ||||
| } | ||||
|  | ||||
| var fileDescriptorHcsshim = []byte{ | ||||
| 	// 227 bytes of a gzipped FileDescriptorProto | ||||
| 	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xe2, 0x72, 0x4a, 0xcf, 0x2c, 0xc9, | ||||
| 	0x28, 0x4d, 0xd2, 0x4b, 0xce, 0xcf, 0xd5, 0x4f, 0xce, 0xcf, 0x2b, 0x49, 0xcc, 0xcc, 0x4b, 0x2d, | ||||
| 	0x4a, 0x41, 0x66, 0x96, 0x67, 0xe6, 0xa5, 0xe4, 0x97, 0x17, 0xeb, 0x67, 0x24, 0x17, 0x17, 0x67, | ||||
| 	0x64, 0xe6, 0xe6, 0x17, 0x94, 0xc0, 0xd9, 0x7a, 0x05, 0x45, 0xf9, 0x25, 0xf9, 0x42, 0x52, 0x08, | ||||
| 	0xd5, 0x7a, 0x50, 0xd5, 0x7a, 0x50, 0x15, 0x52, 0x22, 0xe9, 0xf9, 0xe9, 0xf9, 0x60, 0x65, 0xfa, | ||||
| 	0x20, 0x16, 0x44, 0x87, 0x94, 0x5c, 0x7a, 0x7e, 0x7e, 0x7a, 0x4e, 0xaa, 0x3e, 0x98, 0x97, 0x54, | ||||
| 	0x9a, 0xa6, 0x9f, 0x52, 0x5a, 0x94, 0x58, 0x92, 0x99, 0x9f, 0x07, 0x91, 0x57, 0x4a, 0xe6, 0xe2, | ||||
| 	0x75, 0x2e, 0x4a, 0x4d, 0x2c, 0x49, 0xf5, 0x2f, 0x00, 0x89, 0x16, 0x0b, 0x05, 0x71, 0x09, 0x95, | ||||
| 	0xa4, 0x16, 0xe5, 0x66, 0xe6, 0x25, 0x96, 0xa4, 0xc6, 0xc3, 0x14, 0x4b, 0x30, 0x2a, 0x30, 0x6a, | ||||
| 	0x70, 0x1b, 0x49, 0xea, 0x41, 0x4c, 0xd3, 0x83, 0x99, 0xa6, 0xe7, 0x02, 0x55, 0xe0, 0xc4, 0x71, | ||||
| 	0xe2, 0x9e, 0x3c, 0xc3, 0x8c, 0xfb, 0xf2, 0x8c, 0x41, 0x82, 0x70, 0xed, 0x70, 0xc9, 0xa8, 0x13, | ||||
| 	0x0f, 0xe5, 0x18, 0x6e, 0x3c, 0x94, 0x63, 0x68, 0x78, 0x24, 0xc7, 0x78, 0xe2, 0x91, 0x1c, 0xe3, | ||||
| 	0x85, 0x47, 0x72, 0x8c, 0x0f, 0x1e, 0xc9, 0x31, 0x46, 0x39, 0x90, 0x13, 0x28, 0xd6, 0x48, 0xec, | ||||
| 	0x24, 0x36, 0xb0, 0x5b, 0x8c, 0x01, 0x01, 0x00, 0x00, 0xff, 0xff, 0x75, 0x31, 0x65, 0xd0, 0x5f, | ||||
| 	0x01, 0x00, 0x00, | ||||
| } | ||||
							
								
								
									
										12
									
								
								windows/hcsshimopts/hcsshim.proto
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										12
									
								
								windows/hcsshimopts/hcsshim.proto
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,12 @@ | ||||
| syntax = "proto3"; | ||||
|  | ||||
| package containerd.windows.hcsshim; | ||||
|  | ||||
| import "gogoproto/gogo.proto"; | ||||
| import "google/protobuf/duration.proto"; | ||||
|  | ||||
| option go_package = "github.com/containerd/containerd/windows/hcsshimopts;hcsshimopts"; | ||||
|  | ||||
| message CreateOptions { | ||||
| 	google.protobuf.Duration terminate_duration = 1 [(gogoproto.stdduration) = true, (gogoproto.nullable) = false]; | ||||
| } | ||||
| @@ -14,6 +14,7 @@ import ( | ||||
| 	"github.com/containerd/containerd/runtime" | ||||
| 	"github.com/containerd/containerd/typeurl" | ||||
| 	"github.com/containerd/containerd/windows/hcs" | ||||
| 	"github.com/containerd/containerd/windows/hcsshimopts" | ||||
| 	"github.com/containerd/containerd/windows/pid" | ||||
| 	specs "github.com/opencontainers/runtime-spec/specs-go" | ||||
| 	"github.com/pkg/errors" | ||||
| @@ -106,12 +107,18 @@ func (r *Runtime) ID() string { | ||||
| } | ||||
|  | ||||
| func (r *Runtime) Create(ctx context.Context, id string, opts runtime.CreateOpts) (runtime.Task, error) { | ||||
| 	v, err := typeurl.UnmarshalAny(opts.Spec) | ||||
| 	s, err := typeurl.UnmarshalAny(opts.Spec) | ||||
| 	if err != nil { | ||||
| 		return nil, err | ||||
| 	} | ||||
| 	rtSpec := v.(*RuntimeSpec) | ||||
| 	ctr, err := newContainer(ctx, r.hcs, id, rtSpec, opts.IO) | ||||
| 	spec := s.(*specs.Spec) | ||||
|  | ||||
| 	o, err := typeurl.UnmarshalAny(opts.Options) | ||||
| 	if err != nil { | ||||
| 		return nil, err | ||||
| 	} | ||||
| 	createOpts := o.(*hcsshimopts.CreateOptions) | ||||
| 	ctr, err := r.newContainer(ctx, id, spec, createOpts, opts.IO) | ||||
| 	if err != nil { | ||||
| 		return nil, err | ||||
| 	} | ||||
|   | ||||
		Reference in New Issue
	
	Block a user
	 Kenfe-Mickael Laventure
					Kenfe-Mickael Laventure