github.com/kaisenlinux/docker.io@v0.0.0-20230510090727-ea55db55fac7/swarmkit/api/dispatcher.pb.go (about)

     1  // Code generated by protoc-gen-gogo. DO NOT EDIT.
     2  // source: github.com/docker/swarmkit/api/dispatcher.proto
     3  
     4  package api
     5  
     6  import (
     7  	context "context"
     8  	fmt "fmt"
     9  	github_com_docker_swarmkit_api_deepcopy "github.com/docker/swarmkit/api/deepcopy"
    10  	raftselector "github.com/docker/swarmkit/manager/raftselector"
    11  	_ "github.com/docker/swarmkit/protobuf/plugin"
    12  	_ "github.com/gogo/protobuf/gogoproto"
    13  	proto "github.com/gogo/protobuf/proto"
    14  	_ "github.com/gogo/protobuf/types"
    15  	github_com_gogo_protobuf_types "github.com/gogo/protobuf/types"
    16  	grpc "google.golang.org/grpc"
    17  	codes "google.golang.org/grpc/codes"
    18  	metadata "google.golang.org/grpc/metadata"
    19  	peer "google.golang.org/grpc/peer"
    20  	status "google.golang.org/grpc/status"
    21  	io "io"
    22  	math "math"
    23  	reflect "reflect"
    24  	strings "strings"
    25  	rafttime "time"
    26  	time "time"
    27  )
    28  
    29  // Reference imports to suppress errors if they are not otherwise used.
    30  var _ = proto.Marshal
    31  var _ = fmt.Errorf
    32  var _ = math.Inf
    33  var _ = time.Kitchen
    34  
    35  // This is a compile-time assertion to ensure that this generated file
    36  // is compatible with the proto package it is being compiled against.
    37  // A compilation error at this line likely means your copy of the
    38  // proto package needs to be updated.
    39  const _ = proto.GoGoProtoPackageIsVersion2 // please upgrade the proto package
    40  
    41  type AssignmentChange_AssignmentAction int32
    42  
    43  const (
    44  	AssignmentChange_AssignmentActionUpdate AssignmentChange_AssignmentAction = 0
    45  	AssignmentChange_AssignmentActionRemove AssignmentChange_AssignmentAction = 1
    46  )
    47  
    48  var AssignmentChange_AssignmentAction_name = map[int32]string{
    49  	0: "UPDATE",
    50  	1: "REMOVE",
    51  }
    52  
    53  var AssignmentChange_AssignmentAction_value = map[string]int32{
    54  	"UPDATE": 0,
    55  	"REMOVE": 1,
    56  }
    57  
    58  func (x AssignmentChange_AssignmentAction) String() string {
    59  	return proto.EnumName(AssignmentChange_AssignmentAction_name, int32(x))
    60  }
    61  
    62  func (AssignmentChange_AssignmentAction) EnumDescriptor() ([]byte, []int) {
    63  	return fileDescriptor_71002346457e55a8, []int{10, 0}
    64  }
    65  
    66  // AssignmentType specifies whether this assignment message carries
    67  // the full state, or is an update to an existing state.
    68  type AssignmentsMessage_Type int32
    69  
    70  const (
    71  	AssignmentsMessage_COMPLETE    AssignmentsMessage_Type = 0
    72  	AssignmentsMessage_INCREMENTAL AssignmentsMessage_Type = 1
    73  )
    74  
    75  var AssignmentsMessage_Type_name = map[int32]string{
    76  	0: "COMPLETE",
    77  	1: "INCREMENTAL",
    78  }
    79  
    80  var AssignmentsMessage_Type_value = map[string]int32{
    81  	"COMPLETE":    0,
    82  	"INCREMENTAL": 1,
    83  }
    84  
    85  func (x AssignmentsMessage_Type) String() string {
    86  	return proto.EnumName(AssignmentsMessage_Type_name, int32(x))
    87  }
    88  
    89  func (AssignmentsMessage_Type) EnumDescriptor() ([]byte, []int) {
    90  	return fileDescriptor_71002346457e55a8, []int{11, 0}
    91  }
    92  
    93  // SessionRequest starts a session.
    94  type SessionRequest struct {
    95  	Description *NodeDescription `protobuf:"bytes,1,opt,name=description,proto3" json:"description,omitempty"`
    96  	// SessionID can be provided to attempt resuming an existing session. If the
    97  	// SessionID is empty or invalid, a new SessionID will be assigned.
    98  	//
    99  	// See SessionMessage.SessionID for details.
   100  	SessionID string `protobuf:"bytes,2,opt,name=session_id,json=sessionId,proto3" json:"session_id,omitempty"`
   101  }
   102  
   103  func (m *SessionRequest) Reset()      { *m = SessionRequest{} }
   104  func (*SessionRequest) ProtoMessage() {}
   105  func (*SessionRequest) Descriptor() ([]byte, []int) {
   106  	return fileDescriptor_71002346457e55a8, []int{0}
   107  }
   108  func (m *SessionRequest) XXX_Unmarshal(b []byte) error {
   109  	return m.Unmarshal(b)
   110  }
   111  func (m *SessionRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
   112  	if deterministic {
   113  		return xxx_messageInfo_SessionRequest.Marshal(b, m, deterministic)
   114  	} else {
   115  		b = b[:cap(b)]
   116  		n, err := m.MarshalTo(b)
   117  		if err != nil {
   118  			return nil, err
   119  		}
   120  		return b[:n], nil
   121  	}
   122  }
   123  func (m *SessionRequest) XXX_Merge(src proto.Message) {
   124  	xxx_messageInfo_SessionRequest.Merge(m, src)
   125  }
   126  func (m *SessionRequest) XXX_Size() int {
   127  	return m.Size()
   128  }
   129  func (m *SessionRequest) XXX_DiscardUnknown() {
   130  	xxx_messageInfo_SessionRequest.DiscardUnknown(m)
   131  }
   132  
   133  var xxx_messageInfo_SessionRequest proto.InternalMessageInfo
   134  
   135  // SessionMessage instructs an agent on various actions as part of the current
   136  // session. An agent should act immediately on the contents.
   137  type SessionMessage struct {
   138  	// SessionID is allocated after a successful registration. It should be
   139  	// used on all RPC calls after registration. A dispatcher may choose to
   140  	// change the SessionID, at which time an agent must re-register and obtain
   141  	// a new one.
   142  	//
   143  	// All Dispatcher calls after register should include the SessionID. If the
   144  	// Dispatcher so chooses, it may reject the call with an InvalidArgument
   145  	// error code, at which time the agent should call Register to start a new
   146  	// session.
   147  	//
   148  	// As a rule, once an agent has a SessionID, it should never save it to
   149  	// disk or try to otherwise reuse. If the agent loses its SessionID, it
   150  	// must start a new session through a call to Register. A Dispatcher may
   151  	// choose to reuse the SessionID, if it sees fit, but it is not advised.
   152  	//
   153  	// The actual implementation of the SessionID is Dispatcher specific and
   154  	// should be treated as opaque by agents.
   155  	//
   156  	// From a Dispatcher perspective, there are many ways to use the SessionID
   157  	// to ensure uniqueness of a set of client RPC calls. One method is to keep
   158  	// the SessionID unique to every call to Register in a single Dispatcher
   159  	// instance. This ensures that the SessionID represents the unique
   160  	// session from a single Agent to Manager. If the Agent restarts, we
   161  	// allocate a new session, since the restarted Agent is not aware of the
   162  	// new SessionID.
   163  	//
   164  	// The most compelling use case is to support duplicate node detection. If
   165  	// one clones a virtual machine, including certificate material, two nodes
   166  	// may end up with the same identity. This can also happen if two identical
   167  	// agent processes are coming from the same node. If the SessionID is
   168  	// replicated through the cluster, we can immediately detect the condition
   169  	// and address it.
   170  	//
   171  	// Extending from the case above, we can actually detect a compromised
   172  	// identity. Coupled with provisions to rebuild node identity, we can ban
   173  	// the compromised node identity and have the nodes re-authenticate and
   174  	// build a new identity. At this time, an administrator can then
   175  	// re-authorize the compromised nodes, if it was a mistake or ensure that a
   176  	// misbehaved node can no longer connect to the cluster.
   177  	//
   178  	// We considered placing this field in a GRPC header. Because this is a
   179  	// critical feature of the protocol, we thought it should be represented
   180  	// directly in the RPC message set.
   181  	SessionID string `protobuf:"bytes,1,opt,name=session_id,json=sessionId,proto3" json:"session_id,omitempty"`
   182  	// Node identifies the registering node.
   183  	Node *Node `protobuf:"bytes,2,opt,name=node,proto3" json:"node,omitempty"`
   184  	// Managers provides a weight list of alternative dispatchers
   185  	Managers []*WeightedPeer `protobuf:"bytes,3,rep,name=managers,proto3" json:"managers,omitempty"`
   186  	// Symmetric encryption key distributed by the lead manager. Used by agents
   187  	// for securing network bootstrapping and communication.
   188  	NetworkBootstrapKeys []*EncryptionKey `protobuf:"bytes,4,rep,name=network_bootstrap_keys,json=networkBootstrapKeys,proto3" json:"network_bootstrap_keys,omitempty"`
   189  	// Which root certificates to trust
   190  	RootCA []byte `protobuf:"bytes,5,opt,name=RootCA,proto3" json:"RootCA,omitempty"`
   191  }
   192  
   193  func (m *SessionMessage) Reset()      { *m = SessionMessage{} }
   194  func (*SessionMessage) ProtoMessage() {}
   195  func (*SessionMessage) Descriptor() ([]byte, []int) {
   196  	return fileDescriptor_71002346457e55a8, []int{1}
   197  }
   198  func (m *SessionMessage) XXX_Unmarshal(b []byte) error {
   199  	return m.Unmarshal(b)
   200  }
   201  func (m *SessionMessage) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
   202  	if deterministic {
   203  		return xxx_messageInfo_SessionMessage.Marshal(b, m, deterministic)
   204  	} else {
   205  		b = b[:cap(b)]
   206  		n, err := m.MarshalTo(b)
   207  		if err != nil {
   208  			return nil, err
   209  		}
   210  		return b[:n], nil
   211  	}
   212  }
   213  func (m *SessionMessage) XXX_Merge(src proto.Message) {
   214  	xxx_messageInfo_SessionMessage.Merge(m, src)
   215  }
   216  func (m *SessionMessage) XXX_Size() int {
   217  	return m.Size()
   218  }
   219  func (m *SessionMessage) XXX_DiscardUnknown() {
   220  	xxx_messageInfo_SessionMessage.DiscardUnknown(m)
   221  }
   222  
   223  var xxx_messageInfo_SessionMessage proto.InternalMessageInfo
   224  
   225  // HeartbeatRequest provides identifying properties for a single heartbeat.
   226  type HeartbeatRequest struct {
   227  	SessionID string `protobuf:"bytes,1,opt,name=session_id,json=sessionId,proto3" json:"session_id,omitempty"`
   228  }
   229  
   230  func (m *HeartbeatRequest) Reset()      { *m = HeartbeatRequest{} }
   231  func (*HeartbeatRequest) ProtoMessage() {}
   232  func (*HeartbeatRequest) Descriptor() ([]byte, []int) {
   233  	return fileDescriptor_71002346457e55a8, []int{2}
   234  }
   235  func (m *HeartbeatRequest) XXX_Unmarshal(b []byte) error {
   236  	return m.Unmarshal(b)
   237  }
   238  func (m *HeartbeatRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
   239  	if deterministic {
   240  		return xxx_messageInfo_HeartbeatRequest.Marshal(b, m, deterministic)
   241  	} else {
   242  		b = b[:cap(b)]
   243  		n, err := m.MarshalTo(b)
   244  		if err != nil {
   245  			return nil, err
   246  		}
   247  		return b[:n], nil
   248  	}
   249  }
   250  func (m *HeartbeatRequest) XXX_Merge(src proto.Message) {
   251  	xxx_messageInfo_HeartbeatRequest.Merge(m, src)
   252  }
   253  func (m *HeartbeatRequest) XXX_Size() int {
   254  	return m.Size()
   255  }
   256  func (m *HeartbeatRequest) XXX_DiscardUnknown() {
   257  	xxx_messageInfo_HeartbeatRequest.DiscardUnknown(m)
   258  }
   259  
   260  var xxx_messageInfo_HeartbeatRequest proto.InternalMessageInfo
   261  
   262  type HeartbeatResponse struct {
   263  	// Period is the duration to wait before sending the next heartbeat.
   264  	// Well-behaved agents should update this on every heartbeat round trip.
   265  	Period time.Duration `protobuf:"bytes,1,opt,name=period,proto3,stdduration" json:"period"`
   266  }
   267  
   268  func (m *HeartbeatResponse) Reset()      { *m = HeartbeatResponse{} }
   269  func (*HeartbeatResponse) ProtoMessage() {}
   270  func (*HeartbeatResponse) Descriptor() ([]byte, []int) {
   271  	return fileDescriptor_71002346457e55a8, []int{3}
   272  }
   273  func (m *HeartbeatResponse) XXX_Unmarshal(b []byte) error {
   274  	return m.Unmarshal(b)
   275  }
   276  func (m *HeartbeatResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
   277  	if deterministic {
   278  		return xxx_messageInfo_HeartbeatResponse.Marshal(b, m, deterministic)
   279  	} else {
   280  		b = b[:cap(b)]
   281  		n, err := m.MarshalTo(b)
   282  		if err != nil {
   283  			return nil, err
   284  		}
   285  		return b[:n], nil
   286  	}
   287  }
   288  func (m *HeartbeatResponse) XXX_Merge(src proto.Message) {
   289  	xxx_messageInfo_HeartbeatResponse.Merge(m, src)
   290  }
   291  func (m *HeartbeatResponse) XXX_Size() int {
   292  	return m.Size()
   293  }
   294  func (m *HeartbeatResponse) XXX_DiscardUnknown() {
   295  	xxx_messageInfo_HeartbeatResponse.DiscardUnknown(m)
   296  }
   297  
   298  var xxx_messageInfo_HeartbeatResponse proto.InternalMessageInfo
   299  
   300  type UpdateTaskStatusRequest struct {
   301  	// Tasks should contain all statuses for running tasks. Only the status
   302  	// field must be set. The spec is not required.
   303  	SessionID string                                      `protobuf:"bytes,1,opt,name=session_id,json=sessionId,proto3" json:"session_id,omitempty"`
   304  	Updates   []*UpdateTaskStatusRequest_TaskStatusUpdate `protobuf:"bytes,3,rep,name=updates,proto3" json:"updates,omitempty"`
   305  }
   306  
   307  func (m *UpdateTaskStatusRequest) Reset()      { *m = UpdateTaskStatusRequest{} }
   308  func (*UpdateTaskStatusRequest) ProtoMessage() {}
   309  func (*UpdateTaskStatusRequest) Descriptor() ([]byte, []int) {
   310  	return fileDescriptor_71002346457e55a8, []int{4}
   311  }
   312  func (m *UpdateTaskStatusRequest) XXX_Unmarshal(b []byte) error {
   313  	return m.Unmarshal(b)
   314  }
   315  func (m *UpdateTaskStatusRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
   316  	if deterministic {
   317  		return xxx_messageInfo_UpdateTaskStatusRequest.Marshal(b, m, deterministic)
   318  	} else {
   319  		b = b[:cap(b)]
   320  		n, err := m.MarshalTo(b)
   321  		if err != nil {
   322  			return nil, err
   323  		}
   324  		return b[:n], nil
   325  	}
   326  }
   327  func (m *UpdateTaskStatusRequest) XXX_Merge(src proto.Message) {
   328  	xxx_messageInfo_UpdateTaskStatusRequest.Merge(m, src)
   329  }
   330  func (m *UpdateTaskStatusRequest) XXX_Size() int {
   331  	return m.Size()
   332  }
   333  func (m *UpdateTaskStatusRequest) XXX_DiscardUnknown() {
   334  	xxx_messageInfo_UpdateTaskStatusRequest.DiscardUnknown(m)
   335  }
   336  
   337  var xxx_messageInfo_UpdateTaskStatusRequest proto.InternalMessageInfo
   338  
   339  type UpdateTaskStatusRequest_TaskStatusUpdate struct {
   340  	TaskID string      `protobuf:"bytes,1,opt,name=task_id,json=taskId,proto3" json:"task_id,omitempty"`
   341  	Status *TaskStatus `protobuf:"bytes,2,opt,name=status,proto3" json:"status,omitempty"`
   342  }
   343  
   344  func (m *UpdateTaskStatusRequest_TaskStatusUpdate) Reset() {
   345  	*m = UpdateTaskStatusRequest_TaskStatusUpdate{}
   346  }
   347  func (*UpdateTaskStatusRequest_TaskStatusUpdate) ProtoMessage() {}
   348  func (*UpdateTaskStatusRequest_TaskStatusUpdate) Descriptor() ([]byte, []int) {
   349  	return fileDescriptor_71002346457e55a8, []int{4, 0}
   350  }
   351  func (m *UpdateTaskStatusRequest_TaskStatusUpdate) XXX_Unmarshal(b []byte) error {
   352  	return m.Unmarshal(b)
   353  }
   354  func (m *UpdateTaskStatusRequest_TaskStatusUpdate) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
   355  	if deterministic {
   356  		return xxx_messageInfo_UpdateTaskStatusRequest_TaskStatusUpdate.Marshal(b, m, deterministic)
   357  	} else {
   358  		b = b[:cap(b)]
   359  		n, err := m.MarshalTo(b)
   360  		if err != nil {
   361  			return nil, err
   362  		}
   363  		return b[:n], nil
   364  	}
   365  }
   366  func (m *UpdateTaskStatusRequest_TaskStatusUpdate) XXX_Merge(src proto.Message) {
   367  	xxx_messageInfo_UpdateTaskStatusRequest_TaskStatusUpdate.Merge(m, src)
   368  }
   369  func (m *UpdateTaskStatusRequest_TaskStatusUpdate) XXX_Size() int {
   370  	return m.Size()
   371  }
   372  func (m *UpdateTaskStatusRequest_TaskStatusUpdate) XXX_DiscardUnknown() {
   373  	xxx_messageInfo_UpdateTaskStatusRequest_TaskStatusUpdate.DiscardUnknown(m)
   374  }
   375  
   376  var xxx_messageInfo_UpdateTaskStatusRequest_TaskStatusUpdate proto.InternalMessageInfo
   377  
   378  type UpdateTaskStatusResponse struct {
   379  }
   380  
   381  func (m *UpdateTaskStatusResponse) Reset()      { *m = UpdateTaskStatusResponse{} }
   382  func (*UpdateTaskStatusResponse) ProtoMessage() {}
   383  func (*UpdateTaskStatusResponse) Descriptor() ([]byte, []int) {
   384  	return fileDescriptor_71002346457e55a8, []int{5}
   385  }
   386  func (m *UpdateTaskStatusResponse) XXX_Unmarshal(b []byte) error {
   387  	return m.Unmarshal(b)
   388  }
   389  func (m *UpdateTaskStatusResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
   390  	if deterministic {
   391  		return xxx_messageInfo_UpdateTaskStatusResponse.Marshal(b, m, deterministic)
   392  	} else {
   393  		b = b[:cap(b)]
   394  		n, err := m.MarshalTo(b)
   395  		if err != nil {
   396  			return nil, err
   397  		}
   398  		return b[:n], nil
   399  	}
   400  }
   401  func (m *UpdateTaskStatusResponse) XXX_Merge(src proto.Message) {
   402  	xxx_messageInfo_UpdateTaskStatusResponse.Merge(m, src)
   403  }
   404  func (m *UpdateTaskStatusResponse) XXX_Size() int {
   405  	return m.Size()
   406  }
   407  func (m *UpdateTaskStatusResponse) XXX_DiscardUnknown() {
   408  	xxx_messageInfo_UpdateTaskStatusResponse.DiscardUnknown(m)
   409  }
   410  
   411  var xxx_messageInfo_UpdateTaskStatusResponse proto.InternalMessageInfo
   412  
   413  type TasksRequest struct {
   414  	SessionID string `protobuf:"bytes,1,opt,name=session_id,json=sessionId,proto3" json:"session_id,omitempty"`
   415  }
   416  
   417  func (m *TasksRequest) Reset()      { *m = TasksRequest{} }
   418  func (*TasksRequest) ProtoMessage() {}
   419  func (*TasksRequest) Descriptor() ([]byte, []int) {
   420  	return fileDescriptor_71002346457e55a8, []int{6}
   421  }
   422  func (m *TasksRequest) XXX_Unmarshal(b []byte) error {
   423  	return m.Unmarshal(b)
   424  }
   425  func (m *TasksRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
   426  	if deterministic {
   427  		return xxx_messageInfo_TasksRequest.Marshal(b, m, deterministic)
   428  	} else {
   429  		b = b[:cap(b)]
   430  		n, err := m.MarshalTo(b)
   431  		if err != nil {
   432  			return nil, err
   433  		}
   434  		return b[:n], nil
   435  	}
   436  }
   437  func (m *TasksRequest) XXX_Merge(src proto.Message) {
   438  	xxx_messageInfo_TasksRequest.Merge(m, src)
   439  }
   440  func (m *TasksRequest) XXX_Size() int {
   441  	return m.Size()
   442  }
   443  func (m *TasksRequest) XXX_DiscardUnknown() {
   444  	xxx_messageInfo_TasksRequest.DiscardUnknown(m)
   445  }
   446  
   447  var xxx_messageInfo_TasksRequest proto.InternalMessageInfo
   448  
   449  type TasksMessage struct {
   450  	// Tasks is the set of tasks that should be running on the node.
   451  	// Tasks outside of this set running on the node should be terminated.
   452  	Tasks []*Task `protobuf:"bytes,1,rep,name=tasks,proto3" json:"tasks,omitempty"`
   453  }
   454  
   455  func (m *TasksMessage) Reset()      { *m = TasksMessage{} }
   456  func (*TasksMessage) ProtoMessage() {}
   457  func (*TasksMessage) Descriptor() ([]byte, []int) {
   458  	return fileDescriptor_71002346457e55a8, []int{7}
   459  }
   460  func (m *TasksMessage) XXX_Unmarshal(b []byte) error {
   461  	return m.Unmarshal(b)
   462  }
   463  func (m *TasksMessage) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
   464  	if deterministic {
   465  		return xxx_messageInfo_TasksMessage.Marshal(b, m, deterministic)
   466  	} else {
   467  		b = b[:cap(b)]
   468  		n, err := m.MarshalTo(b)
   469  		if err != nil {
   470  			return nil, err
   471  		}
   472  		return b[:n], nil
   473  	}
   474  }
   475  func (m *TasksMessage) XXX_Merge(src proto.Message) {
   476  	xxx_messageInfo_TasksMessage.Merge(m, src)
   477  }
   478  func (m *TasksMessage) XXX_Size() int {
   479  	return m.Size()
   480  }
   481  func (m *TasksMessage) XXX_DiscardUnknown() {
   482  	xxx_messageInfo_TasksMessage.DiscardUnknown(m)
   483  }
   484  
   485  var xxx_messageInfo_TasksMessage proto.InternalMessageInfo
   486  
   487  type AssignmentsRequest struct {
   488  	SessionID string `protobuf:"bytes,1,opt,name=session_id,json=sessionId,proto3" json:"session_id,omitempty"`
   489  }
   490  
   491  func (m *AssignmentsRequest) Reset()      { *m = AssignmentsRequest{} }
   492  func (*AssignmentsRequest) ProtoMessage() {}
   493  func (*AssignmentsRequest) Descriptor() ([]byte, []int) {
   494  	return fileDescriptor_71002346457e55a8, []int{8}
   495  }
   496  func (m *AssignmentsRequest) XXX_Unmarshal(b []byte) error {
   497  	return m.Unmarshal(b)
   498  }
   499  func (m *AssignmentsRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
   500  	if deterministic {
   501  		return xxx_messageInfo_AssignmentsRequest.Marshal(b, m, deterministic)
   502  	} else {
   503  		b = b[:cap(b)]
   504  		n, err := m.MarshalTo(b)
   505  		if err != nil {
   506  			return nil, err
   507  		}
   508  		return b[:n], nil
   509  	}
   510  }
   511  func (m *AssignmentsRequest) XXX_Merge(src proto.Message) {
   512  	xxx_messageInfo_AssignmentsRequest.Merge(m, src)
   513  }
   514  func (m *AssignmentsRequest) XXX_Size() int {
   515  	return m.Size()
   516  }
   517  func (m *AssignmentsRequest) XXX_DiscardUnknown() {
   518  	xxx_messageInfo_AssignmentsRequest.DiscardUnknown(m)
   519  }
   520  
   521  var xxx_messageInfo_AssignmentsRequest proto.InternalMessageInfo
   522  
   523  type Assignment struct {
   524  	// Types that are valid to be assigned to Item:
   525  	//	*Assignment_Task
   526  	//	*Assignment_Secret
   527  	//	*Assignment_Config
   528  	Item isAssignment_Item `protobuf_oneof:"item"`
   529  }
   530  
   531  func (m *Assignment) Reset()      { *m = Assignment{} }
   532  func (*Assignment) ProtoMessage() {}
   533  func (*Assignment) Descriptor() ([]byte, []int) {
   534  	return fileDescriptor_71002346457e55a8, []int{9}
   535  }
   536  func (m *Assignment) XXX_Unmarshal(b []byte) error {
   537  	return m.Unmarshal(b)
   538  }
   539  func (m *Assignment) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
   540  	if deterministic {
   541  		return xxx_messageInfo_Assignment.Marshal(b, m, deterministic)
   542  	} else {
   543  		b = b[:cap(b)]
   544  		n, err := m.MarshalTo(b)
   545  		if err != nil {
   546  			return nil, err
   547  		}
   548  		return b[:n], nil
   549  	}
   550  }
   551  func (m *Assignment) XXX_Merge(src proto.Message) {
   552  	xxx_messageInfo_Assignment.Merge(m, src)
   553  }
   554  func (m *Assignment) XXX_Size() int {
   555  	return m.Size()
   556  }
   557  func (m *Assignment) XXX_DiscardUnknown() {
   558  	xxx_messageInfo_Assignment.DiscardUnknown(m)
   559  }
   560  
   561  var xxx_messageInfo_Assignment proto.InternalMessageInfo
   562  
   563  type isAssignment_Item interface {
   564  	isAssignment_Item()
   565  	MarshalTo([]byte) (int, error)
   566  	Size() int
   567  }
   568  
   569  type Assignment_Task struct {
   570  	Task *Task `protobuf:"bytes,1,opt,name=task,proto3,oneof"`
   571  }
   572  type Assignment_Secret struct {
   573  	Secret *Secret `protobuf:"bytes,2,opt,name=secret,proto3,oneof"`
   574  }
   575  type Assignment_Config struct {
   576  	Config *Config `protobuf:"bytes,3,opt,name=config,proto3,oneof"`
   577  }
   578  
   579  func (*Assignment_Task) isAssignment_Item()   {}
   580  func (*Assignment_Secret) isAssignment_Item() {}
   581  func (*Assignment_Config) isAssignment_Item() {}
   582  
   583  func (m *Assignment) GetItem() isAssignment_Item {
   584  	if m != nil {
   585  		return m.Item
   586  	}
   587  	return nil
   588  }
   589  
   590  func (m *Assignment) GetTask() *Task {
   591  	if x, ok := m.GetItem().(*Assignment_Task); ok {
   592  		return x.Task
   593  	}
   594  	return nil
   595  }
   596  
   597  func (m *Assignment) GetSecret() *Secret {
   598  	if x, ok := m.GetItem().(*Assignment_Secret); ok {
   599  		return x.Secret
   600  	}
   601  	return nil
   602  }
   603  
   604  func (m *Assignment) GetConfig() *Config {
   605  	if x, ok := m.GetItem().(*Assignment_Config); ok {
   606  		return x.Config
   607  	}
   608  	return nil
   609  }
   610  
   611  // XXX_OneofFuncs is for the internal use of the proto package.
   612  func (*Assignment) XXX_OneofFuncs() (func(msg proto.Message, b *proto.Buffer) error, func(msg proto.Message, tag, wire int, b *proto.Buffer) (bool, error), func(msg proto.Message) (n int), []interface{}) {
   613  	return _Assignment_OneofMarshaler, _Assignment_OneofUnmarshaler, _Assignment_OneofSizer, []interface{}{
   614  		(*Assignment_Task)(nil),
   615  		(*Assignment_Secret)(nil),
   616  		(*Assignment_Config)(nil),
   617  	}
   618  }
   619  
   620  func _Assignment_OneofMarshaler(msg proto.Message, b *proto.Buffer) error {
   621  	m := msg.(*Assignment)
   622  	// item
   623  	switch x := m.Item.(type) {
   624  	case *Assignment_Task:
   625  		_ = b.EncodeVarint(1<<3 | proto.WireBytes)
   626  		if err := b.EncodeMessage(x.Task); err != nil {
   627  			return err
   628  		}
   629  	case *Assignment_Secret:
   630  		_ = b.EncodeVarint(2<<3 | proto.WireBytes)
   631  		if err := b.EncodeMessage(x.Secret); err != nil {
   632  			return err
   633  		}
   634  	case *Assignment_Config:
   635  		_ = b.EncodeVarint(3<<3 | proto.WireBytes)
   636  		if err := b.EncodeMessage(x.Config); err != nil {
   637  			return err
   638  		}
   639  	case nil:
   640  	default:
   641  		return fmt.Errorf("Assignment.Item has unexpected type %T", x)
   642  	}
   643  	return nil
   644  }
   645  
   646  func _Assignment_OneofUnmarshaler(msg proto.Message, tag, wire int, b *proto.Buffer) (bool, error) {
   647  	m := msg.(*Assignment)
   648  	switch tag {
   649  	case 1: // item.task
   650  		if wire != proto.WireBytes {
   651  			return true, proto.ErrInternalBadWireType
   652  		}
   653  		msg := new(Task)
   654  		err := b.DecodeMessage(msg)
   655  		m.Item = &Assignment_Task{msg}
   656  		return true, err
   657  	case 2: // item.secret
   658  		if wire != proto.WireBytes {
   659  			return true, proto.ErrInternalBadWireType
   660  		}
   661  		msg := new(Secret)
   662  		err := b.DecodeMessage(msg)
   663  		m.Item = &Assignment_Secret{msg}
   664  		return true, err
   665  	case 3: // item.config
   666  		if wire != proto.WireBytes {
   667  			return true, proto.ErrInternalBadWireType
   668  		}
   669  		msg := new(Config)
   670  		err := b.DecodeMessage(msg)
   671  		m.Item = &Assignment_Config{msg}
   672  		return true, err
   673  	default:
   674  		return false, nil
   675  	}
   676  }
   677  
   678  func _Assignment_OneofSizer(msg proto.Message) (n int) {
   679  	m := msg.(*Assignment)
   680  	// item
   681  	switch x := m.Item.(type) {
   682  	case *Assignment_Task:
   683  		s := proto.Size(x.Task)
   684  		n += 1 // tag and wire
   685  		n += proto.SizeVarint(uint64(s))
   686  		n += s
   687  	case *Assignment_Secret:
   688  		s := proto.Size(x.Secret)
   689  		n += 1 // tag and wire
   690  		n += proto.SizeVarint(uint64(s))
   691  		n += s
   692  	case *Assignment_Config:
   693  		s := proto.Size(x.Config)
   694  		n += 1 // tag and wire
   695  		n += proto.SizeVarint(uint64(s))
   696  		n += s
   697  	case nil:
   698  	default:
   699  		panic(fmt.Sprintf("proto: unexpected type %T in oneof", x))
   700  	}
   701  	return n
   702  }
   703  
   704  type AssignmentChange struct {
   705  	Assignment *Assignment                       `protobuf:"bytes,1,opt,name=assignment,proto3" json:"assignment,omitempty"`
   706  	Action     AssignmentChange_AssignmentAction `protobuf:"varint,2,opt,name=action,proto3,enum=docker.swarmkit.v1.AssignmentChange_AssignmentAction" json:"action,omitempty"`
   707  }
   708  
   709  func (m *AssignmentChange) Reset()      { *m = AssignmentChange{} }
   710  func (*AssignmentChange) ProtoMessage() {}
   711  func (*AssignmentChange) Descriptor() ([]byte, []int) {
   712  	return fileDescriptor_71002346457e55a8, []int{10}
   713  }
   714  func (m *AssignmentChange) XXX_Unmarshal(b []byte) error {
   715  	return m.Unmarshal(b)
   716  }
   717  func (m *AssignmentChange) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
   718  	if deterministic {
   719  		return xxx_messageInfo_AssignmentChange.Marshal(b, m, deterministic)
   720  	} else {
   721  		b = b[:cap(b)]
   722  		n, err := m.MarshalTo(b)
   723  		if err != nil {
   724  			return nil, err
   725  		}
   726  		return b[:n], nil
   727  	}
   728  }
   729  func (m *AssignmentChange) XXX_Merge(src proto.Message) {
   730  	xxx_messageInfo_AssignmentChange.Merge(m, src)
   731  }
   732  func (m *AssignmentChange) XXX_Size() int {
   733  	return m.Size()
   734  }
   735  func (m *AssignmentChange) XXX_DiscardUnknown() {
   736  	xxx_messageInfo_AssignmentChange.DiscardUnknown(m)
   737  }
   738  
   739  var xxx_messageInfo_AssignmentChange proto.InternalMessageInfo
   740  
   741  type AssignmentsMessage struct {
   742  	Type AssignmentsMessage_Type `protobuf:"varint,1,opt,name=type,proto3,enum=docker.swarmkit.v1.AssignmentsMessage_Type" json:"type,omitempty"`
   743  	// AppliesTo references the previous ResultsIn value, to chain
   744  	// incremental updates together. For the first update in a stream,
   745  	// AppliesTo is empty.  If AppliesTo does not match the previously
   746  	// received ResultsIn, the consumer of the stream should start a new
   747  	// Assignments stream to re-sync.
   748  	AppliesTo string `protobuf:"bytes,2,opt,name=applies_to,json=appliesTo,proto3" json:"applies_to,omitempty"`
   749  	// ResultsIn identifies the result of this assignments message, to
   750  	// match against the next message's AppliesTo value and protect
   751  	// against missed messages.
   752  	ResultsIn string `protobuf:"bytes,3,opt,name=results_in,json=resultsIn,proto3" json:"results_in,omitempty"`
   753  	// AssignmentChange is a set of changes to apply on this node.
   754  	Changes []*AssignmentChange `protobuf:"bytes,4,rep,name=changes,proto3" json:"changes,omitempty"`
   755  }
   756  
   757  func (m *AssignmentsMessage) Reset()      { *m = AssignmentsMessage{} }
   758  func (*AssignmentsMessage) ProtoMessage() {}
   759  func (*AssignmentsMessage) Descriptor() ([]byte, []int) {
   760  	return fileDescriptor_71002346457e55a8, []int{11}
   761  }
   762  func (m *AssignmentsMessage) XXX_Unmarshal(b []byte) error {
   763  	return m.Unmarshal(b)
   764  }
   765  func (m *AssignmentsMessage) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
   766  	if deterministic {
   767  		return xxx_messageInfo_AssignmentsMessage.Marshal(b, m, deterministic)
   768  	} else {
   769  		b = b[:cap(b)]
   770  		n, err := m.MarshalTo(b)
   771  		if err != nil {
   772  			return nil, err
   773  		}
   774  		return b[:n], nil
   775  	}
   776  }
   777  func (m *AssignmentsMessage) XXX_Merge(src proto.Message) {
   778  	xxx_messageInfo_AssignmentsMessage.Merge(m, src)
   779  }
   780  func (m *AssignmentsMessage) XXX_Size() int {
   781  	return m.Size()
   782  }
   783  func (m *AssignmentsMessage) XXX_DiscardUnknown() {
   784  	xxx_messageInfo_AssignmentsMessage.DiscardUnknown(m)
   785  }
   786  
   787  var xxx_messageInfo_AssignmentsMessage proto.InternalMessageInfo
   788  
   789  func init() {
   790  	proto.RegisterEnum("docker.swarmkit.v1.AssignmentChange_AssignmentAction", AssignmentChange_AssignmentAction_name, AssignmentChange_AssignmentAction_value)
   791  	proto.RegisterEnum("docker.swarmkit.v1.AssignmentsMessage_Type", AssignmentsMessage_Type_name, AssignmentsMessage_Type_value)
   792  	proto.RegisterType((*SessionRequest)(nil), "docker.swarmkit.v1.SessionRequest")
   793  	proto.RegisterType((*SessionMessage)(nil), "docker.swarmkit.v1.SessionMessage")
   794  	proto.RegisterType((*HeartbeatRequest)(nil), "docker.swarmkit.v1.HeartbeatRequest")
   795  	proto.RegisterType((*HeartbeatResponse)(nil), "docker.swarmkit.v1.HeartbeatResponse")
   796  	proto.RegisterType((*UpdateTaskStatusRequest)(nil), "docker.swarmkit.v1.UpdateTaskStatusRequest")
   797  	proto.RegisterType((*UpdateTaskStatusRequest_TaskStatusUpdate)(nil), "docker.swarmkit.v1.UpdateTaskStatusRequest.TaskStatusUpdate")
   798  	proto.RegisterType((*UpdateTaskStatusResponse)(nil), "docker.swarmkit.v1.UpdateTaskStatusResponse")
   799  	proto.RegisterType((*TasksRequest)(nil), "docker.swarmkit.v1.TasksRequest")
   800  	proto.RegisterType((*TasksMessage)(nil), "docker.swarmkit.v1.TasksMessage")
   801  	proto.RegisterType((*AssignmentsRequest)(nil), "docker.swarmkit.v1.AssignmentsRequest")
   802  	proto.RegisterType((*Assignment)(nil), "docker.swarmkit.v1.Assignment")
   803  	proto.RegisterType((*AssignmentChange)(nil), "docker.swarmkit.v1.AssignmentChange")
   804  	proto.RegisterType((*AssignmentsMessage)(nil), "docker.swarmkit.v1.AssignmentsMessage")
   805  }
   806  
   807  func init() {
   808  	proto.RegisterFile("github.com/docker/swarmkit/api/dispatcher.proto", fileDescriptor_71002346457e55a8)
   809  }
   810  
   811  var fileDescriptor_71002346457e55a8 = []byte{
   812  	// 1019 bytes of a gzipped FileDescriptorProto
   813  	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x9c, 0x55, 0xcf, 0x4f, 0x1b, 0x47,
   814  	0x18, 0xf5, 0x18, 0xb3, 0xe0, 0xcf, 0x84, 0xba, 0xa3, 0x88, 0xba, 0x96, 0xb2, 0xb8, 0x4b, 0x82,
   815  	0x50, 0x43, 0xd7, 0xa9, 0xfb, 0xeb, 0x50, 0x44, 0x8b, 0xb1, 0x25, 0xac, 0x04, 0x82, 0x06, 0x92,
   816  	0x1c, 0xd1, 0x7a, 0x77, 0xb2, 0x6c, 0x8d, 0x77, 0xb6, 0x3b, 0xe3, 0xa4, 0x3e, 0x54, 0xea, 0xa1,
   817  	0x91, 0xaa, 0x9e, 0xa2, 0x9e, 0x90, 0xaa, 0xfe, 0x0b, 0x55, 0xff, 0x0c, 0xd4, 0x53, 0x8e, 0x39,
   818  	0xd1, 0xc6, 0xdc, 0xfb, 0x07, 0xf4, 0x54, 0xed, 0xec, 0xac, 0xed, 0x12, 0x1b, 0x0c, 0x27, 0x7b,
   819  	0x67, 0xde, 0x7b, 0xf3, 0xf6, 0x7d, 0xdf, 0x7e, 0x03, 0x65, 0xd7, 0x13, 0x87, 0x9d, 0xa6, 0x69,
   820  	0xb3, 0x76, 0xd9, 0x61, 0x76, 0x8b, 0x86, 0x65, 0xfe, 0xdc, 0x0a, 0xdb, 0x2d, 0x4f, 0x94, 0xad,
   821  	0xc0, 0x2b, 0x3b, 0x1e, 0x0f, 0x2c, 0x61, 0x1f, 0xd2, 0xd0, 0x0c, 0x42, 0x26, 0x18, 0xc6, 0x31,
   822  	0xca, 0x4c, 0x50, 0xe6, 0xb3, 0x8f, 0x8b, 0x1f, 0x5e, 0x22, 0x22, 0xba, 0x01, 0xe5, 0x31, 0xbf,
   823  	0xb8, 0x7a, 0x09, 0x96, 0x35, 0xbf, 0xa1, 0xb6, 0x48, 0xd0, 0x37, 0x5d, 0xe6, 0x32, 0xf9, 0xb7,
   824  	0x1c, 0xfd, 0x53, 0xab, 0x5f, 0x5c, 0xa0, 0x21, 0x11, 0xcd, 0xce, 0xd3, 0x72, 0x70, 0xd4, 0x71,
   825  	0x3d, 0x5f, 0xfd, 0x28, 0xa2, 0xee, 0x32, 0xe6, 0x1e, 0xd1, 0x01, 0xc8, 0xe9, 0x84, 0x96, 0xf0,
   826  	0x98, 0xda, 0x37, 0x5e, 0x20, 0x98, 0xdf, 0xa3, 0x9c, 0x7b, 0xcc, 0x27, 0xf4, 0xdb, 0x0e, 0xe5,
   827  	0x02, 0xd7, 0x21, 0xe7, 0x50, 0x6e, 0x87, 0x5e, 0x10, 0xe1, 0x0a, 0xa8, 0x84, 0x56, 0x72, 0x95,
   828  	0x25, 0xf3, 0xed, 0x14, 0xcc, 0x1d, 0xe6, 0xd0, 0xda, 0x00, 0x4a, 0x86, 0x79, 0x78, 0x15, 0x80,
   829  	0xc7, 0xc2, 0x07, 0x9e, 0x53, 0x48, 0x97, 0xd0, 0x4a, 0xb6, 0x7a, 0xa3, 0x77, 0xba, 0x98, 0x55,
   830  	0xc7, 0x35, 0x6a, 0x24, 0xab, 0x00, 0x0d, 0xc7, 0xf8, 0x35, 0xdd, 0xf7, 0xb1, 0x4d, 0x39, 0xb7,
   831  	0x5c, 0x7a, 0x4e, 0x00, 0x5d, 0x2c, 0x80, 0x57, 0x21, 0xe3, 0x33, 0x87, 0xca, 0x83, 0x72, 0x95,
   832  	0xc2, 0x38, 0xbb, 0x44, 0xa2, 0xf0, 0x1a, 0xcc, 0xb6, 0x2d, 0xdf, 0x72, 0x69, 0xc8, 0x0b, 0x53,
   833  	0xa5, 0xa9, 0x95, 0x5c, 0xa5, 0x34, 0x8a, 0xf1, 0x84, 0x7a, 0xee, 0xa1, 0xa0, 0xce, 0x2e, 0xa5,
   834  	0x21, 0xe9, 0x33, 0xf0, 0x13, 0x58, 0xf0, 0xa9, 0x78, 0xce, 0xc2, 0xd6, 0x41, 0x93, 0x31, 0xc1,
   835  	0x45, 0x68, 0x05, 0x07, 0x2d, 0xda, 0xe5, 0x85, 0x8c, 0xd4, 0xfa, 0x60, 0x94, 0x56, 0xdd, 0xb7,
   836  	0xc3, 0xae, 0x8c, 0xe6, 0x3e, 0xed, 0x92, 0x9b, 0x4a, 0xa0, 0x9a, 0xf0, 0xef, 0xd3, 0x2e, 0xc7,
   837  	0x0b, 0xa0, 0x11, 0xc6, 0xc4, 0xe6, 0x46, 0x61, 0xba, 0x84, 0x56, 0xe6, 0x88, 0x7a, 0x32, 0xbe,
   838  	0x86, 0xfc, 0x16, 0xb5, 0x42, 0xd1, 0xa4, 0x96, 0x48, 0xca, 0x74, 0xa5, 0x78, 0x8c, 0x5d, 0x78,
   839  	0x77, 0x48, 0x81, 0x07, 0xcc, 0xe7, 0x14, 0x7f, 0x09, 0x5a, 0x40, 0x43, 0x8f, 0x39, 0xaa, 0xc8,
   840  	0xef, 0x9b, 0x71, 0xb7, 0x98, 0x49, 0xb7, 0x98, 0x35, 0xd5, 0x2d, 0xd5, 0xd9, 0x93, 0xd3, 0xc5,
   841  	0xd4, 0xf1, 0x5f, 0x8b, 0x88, 0x28, 0x8a, 0xf1, 0x32, 0x0d, 0xef, 0x3d, 0x0a, 0x1c, 0x4b, 0xd0,
   842  	0x7d, 0x8b, 0xb7, 0xf6, 0x84, 0x25, 0x3a, 0xfc, 0x5a, 0xde, 0xf0, 0x63, 0x98, 0xe9, 0x48, 0xa1,
   843  	0xa4, 0x16, 0x6b, 0xa3, 0xf2, 0x1b, 0x73, 0x96, 0x39, 0x58, 0x89, 0x11, 0x24, 0x11, 0x2b, 0x32,
   844  	0xc8, 0x9f, 0xdf, 0xc4, 0x4b, 0x30, 0x23, 0x2c, 0xde, 0x1a, 0xd8, 0x82, 0xde, 0xe9, 0xa2, 0x16,
   845  	0xc1, 0x1a, 0x35, 0xa2, 0x45, 0x5b, 0x0d, 0x07, 0x7f, 0x0e, 0x1a, 0x97, 0x24, 0xd5, 0x4d, 0xfa,
   846  	0x28, 0x3f, 0x43, 0x4e, 0x14, 0xda, 0x28, 0x42, 0xe1, 0x6d, 0x97, 0x71, 0xd6, 0xc6, 0x1a, 0xcc,
   847  	0x45, 0xab, 0xd7, 0x8b, 0xc8, 0x58, 0x57, 0xec, 0xe4, 0xdb, 0x30, 0x61, 0x3a, 0xf2, 0xca, 0x0b,
   848  	0x48, 0x06, 0x56, 0x18, 0x67, 0x90, 0xc4, 0x30, 0xa3, 0x0a, 0x78, 0x83, 0x73, 0xcf, 0xf5, 0xdb,
   849  	0xd4, 0x17, 0xd7, 0xf4, 0xf0, 0x07, 0x02, 0x18, 0x88, 0x60, 0x13, 0x32, 0x91, 0xb6, 0x6a, 0x9d,
   850  	0xb1, 0x0e, 0xb6, 0x52, 0x44, 0xe2, 0xf0, 0xa7, 0xa0, 0x71, 0x6a, 0x87, 0x54, 0xa8, 0x50, 0x8b,
   851  	0xa3, 0x18, 0x7b, 0x12, 0xb1, 0x95, 0x22, 0x0a, 0x1b, 0xb1, 0x6c, 0xe6, 0x3f, 0xf5, 0xdc, 0xc2,
   852  	0xd4, 0x78, 0xd6, 0xa6, 0x44, 0x44, 0xac, 0x18, 0x5b, 0xd5, 0x20, 0xe3, 0x09, 0xda, 0x36, 0x5e,
   853  	0xa4, 0x21, 0x3f, 0xb0, 0xbc, 0x79, 0x68, 0xf9, 0x2e, 0xc5, 0xeb, 0x00, 0x56, 0x7f, 0x4d, 0xd9,
   854  	0x1f, 0x59, 0xe1, 0x01, 0x93, 0x0c, 0x31, 0xf0, 0x36, 0x68, 0x96, 0x2d, 0x47, 0x63, 0xf4, 0x22,
   855  	0xf3, 0x95, 0xcf, 0x2e, 0xe6, 0xc6, 0xa7, 0x0e, 0x2d, 0x6c, 0x48, 0x32, 0x51, 0x22, 0x46, 0x73,
   856  	0xd8, 0x62, 0xbc, 0x87, 0x97, 0x41, 0x7b, 0xb4, 0x5b, 0xdb, 0xd8, 0xaf, 0xe7, 0x53, 0xc5, 0xe2,
   857  	0xcf, 0xbf, 0x95, 0x16, 0xce, 0x23, 0x54, 0x37, 0x2f, 0x83, 0x46, 0xea, 0xdb, 0x0f, 0x1f, 0xd7,
   858  	0xf3, 0x68, 0x34, 0x8e, 0xd0, 0x36, 0x7b, 0x46, 0x8d, 0x7f, 0xd1, 0xff, 0xea, 0x9f, 0x74, 0xd1,
   859  	0x57, 0x90, 0x89, 0x2e, 0x2a, 0x99, 0xc1, 0x7c, 0xe5, 0xee, 0xc5, 0xef, 0x91, 0xb0, 0xcc, 0xfd,
   860  	0x6e, 0x40, 0x89, 0x24, 0xe2, 0x5b, 0x00, 0x56, 0x10, 0x1c, 0x79, 0x94, 0x1f, 0x08, 0x16, 0xcf,
   861  	0x78, 0x92, 0x55, 0x2b, 0xfb, 0x2c, 0xda, 0x0e, 0x29, 0xef, 0x1c, 0x09, 0x7e, 0xe0, 0xf9, 0xb2,
   862  	0x80, 0x59, 0x92, 0x55, 0x2b, 0x0d, 0x1f, 0xaf, 0xc3, 0x8c, 0x2d, 0xc3, 0x49, 0xe6, 0xe6, 0xed,
   863  	0x49, 0x92, 0x24, 0x09, 0xc9, 0xb8, 0x03, 0x99, 0xc8, 0x0b, 0x9e, 0x83, 0xd9, 0xcd, 0x87, 0xdb,
   864  	0xbb, 0x0f, 0xea, 0x51, 0x5e, 0xf8, 0x1d, 0xc8, 0x35, 0x76, 0x36, 0x49, 0x7d, 0xbb, 0xbe, 0xb3,
   865  	0xbf, 0xf1, 0x20, 0x8f, 0x2a, 0xc7, 0xd3, 0x00, 0xb5, 0xfe, 0xa5, 0x8e, 0xbf, 0x83, 0x19, 0xd5,
   866  	0xde, 0xd8, 0x18, 0xdd, 0x82, 0xc3, 0xb7, 0x61, 0xf1, 0x22, 0x8c, 0x4a, 0xc4, 0x58, 0xfa, 0xf3,
   867  	0xf7, 0x7f, 0x8e, 0xd3, 0xb7, 0x60, 0x4e, 0x62, 0x3e, 0x8a, 0xe6, 0x3a, 0x0d, 0xe1, 0x46, 0xfc,
   868  	0xa4, 0x6e, 0x8d, 0x7b, 0x08, 0x7f, 0x0f, 0xd9, 0xfe, 0x0c, 0xc6, 0x23, 0xdf, 0xf5, 0xfc, 0x90,
   869  	0x2f, 0xde, 0xb9, 0x04, 0xa5, 0x86, 0xcb, 0x24, 0x06, 0xf0, 0x2f, 0x08, 0xf2, 0xe7, 0xc7, 0x13,
   870  	0xbe, 0x7b, 0x85, 0x51, 0x5b, 0x5c, 0x9d, 0x0c, 0x7c, 0x15, 0x53, 0x1d, 0x98, 0x96, 0x83, 0x0d,
   871  	0x97, 0xc6, 0x0d, 0x90, 0xfe, 0xe9, 0xe3, 0x11, 0x49, 0x1d, 0x96, 0x27, 0x38, 0xf1, 0xa7, 0x34,
   872  	0xba, 0x87, 0xf0, 0x8f, 0x08, 0x72, 0x43, 0xad, 0x8d, 0x97, 0x2f, 0xe9, 0xfd, 0xc4, 0xc3, 0xf2,
   873  	0x64, 0xdf, 0xc8, 0x84, 0x1d, 0x51, 0xbd, 0x7d, 0xf2, 0x46, 0x4f, 0xbd, 0x7e, 0xa3, 0xa7, 0x7e,
   874  	0xe8, 0xe9, 0xe8, 0xa4, 0xa7, 0xa3, 0x57, 0x3d, 0x1d, 0xfd, 0xdd, 0xd3, 0xd1, 0xcb, 0x33, 0x3d,
   875  	0xf5, 0xea, 0x4c, 0x4f, 0xbd, 0x3e, 0xd3, 0x53, 0x4d, 0x4d, 0x5e, 0xc7, 0x9f, 0xfc, 0x17, 0x00,
   876  	0x00, 0xff, 0xff, 0xa9, 0xc4, 0x36, 0xaa, 0xba, 0x0a, 0x00, 0x00,
   877  }
   878  
   879  type authenticatedWrapperDispatcherServer struct {
   880  	local     DispatcherServer
   881  	authorize func(context.Context, []string) error
   882  }
   883  
   884  func NewAuthenticatedWrapperDispatcherServer(local DispatcherServer, authorize func(context.Context, []string) error) DispatcherServer {
   885  	return &authenticatedWrapperDispatcherServer{
   886  		local:     local,
   887  		authorize: authorize,
   888  	}
   889  }
   890  
   891  func (p *authenticatedWrapperDispatcherServer) Session(r *SessionRequest, stream Dispatcher_SessionServer) error {
   892  
   893  	if err := p.authorize(stream.Context(), []string{"swarm-worker", "swarm-manager"}); err != nil {
   894  		return err
   895  	}
   896  	return p.local.Session(r, stream)
   897  }
   898  
   899  func (p *authenticatedWrapperDispatcherServer) Heartbeat(ctx context.Context, r *HeartbeatRequest) (*HeartbeatResponse, error) {
   900  
   901  	if err := p.authorize(ctx, []string{"swarm-worker", "swarm-manager"}); err != nil {
   902  		return nil, err
   903  	}
   904  	return p.local.Heartbeat(ctx, r)
   905  }
   906  
   907  func (p *authenticatedWrapperDispatcherServer) UpdateTaskStatus(ctx context.Context, r *UpdateTaskStatusRequest) (*UpdateTaskStatusResponse, error) {
   908  
   909  	if err := p.authorize(ctx, []string{"swarm-worker", "swarm-manager"}); err != nil {
   910  		return nil, err
   911  	}
   912  	return p.local.UpdateTaskStatus(ctx, r)
   913  }
   914  
   915  func (p *authenticatedWrapperDispatcherServer) Tasks(r *TasksRequest, stream Dispatcher_TasksServer) error {
   916  
   917  	if err := p.authorize(stream.Context(), []string{"swarm-worker", "swarm-manager"}); err != nil {
   918  		return err
   919  	}
   920  	return p.local.Tasks(r, stream)
   921  }
   922  
   923  func (p *authenticatedWrapperDispatcherServer) Assignments(r *AssignmentsRequest, stream Dispatcher_AssignmentsServer) error {
   924  
   925  	if err := p.authorize(stream.Context(), []string{"swarm-worker", "swarm-manager"}); err != nil {
   926  		return err
   927  	}
   928  	return p.local.Assignments(r, stream)
   929  }
   930  
   931  func (m *SessionRequest) Copy() *SessionRequest {
   932  	if m == nil {
   933  		return nil
   934  	}
   935  	o := &SessionRequest{}
   936  	o.CopyFrom(m)
   937  	return o
   938  }
   939  
   940  func (m *SessionRequest) CopyFrom(src interface{}) {
   941  
   942  	o := src.(*SessionRequest)
   943  	*m = *o
   944  	if o.Description != nil {
   945  		m.Description = &NodeDescription{}
   946  		github_com_docker_swarmkit_api_deepcopy.Copy(m.Description, o.Description)
   947  	}
   948  }
   949  
   950  func (m *SessionMessage) Copy() *SessionMessage {
   951  	if m == nil {
   952  		return nil
   953  	}
   954  	o := &SessionMessage{}
   955  	o.CopyFrom(m)
   956  	return o
   957  }
   958  
   959  func (m *SessionMessage) CopyFrom(src interface{}) {
   960  
   961  	o := src.(*SessionMessage)
   962  	*m = *o
   963  	if o.Node != nil {
   964  		m.Node = &Node{}
   965  		github_com_docker_swarmkit_api_deepcopy.Copy(m.Node, o.Node)
   966  	}
   967  	if o.Managers != nil {
   968  		m.Managers = make([]*WeightedPeer, len(o.Managers))
   969  		for i := range m.Managers {
   970  			m.Managers[i] = &WeightedPeer{}
   971  			github_com_docker_swarmkit_api_deepcopy.Copy(m.Managers[i], o.Managers[i])
   972  		}
   973  	}
   974  
   975  	if o.NetworkBootstrapKeys != nil {
   976  		m.NetworkBootstrapKeys = make([]*EncryptionKey, len(o.NetworkBootstrapKeys))
   977  		for i := range m.NetworkBootstrapKeys {
   978  			m.NetworkBootstrapKeys[i] = &EncryptionKey{}
   979  			github_com_docker_swarmkit_api_deepcopy.Copy(m.NetworkBootstrapKeys[i], o.NetworkBootstrapKeys[i])
   980  		}
   981  	}
   982  
   983  	if o.RootCA != nil {
   984  		m.RootCA = make([]byte, len(o.RootCA))
   985  		copy(m.RootCA, o.RootCA)
   986  	}
   987  }
   988  
   989  func (m *HeartbeatRequest) Copy() *HeartbeatRequest {
   990  	if m == nil {
   991  		return nil
   992  	}
   993  	o := &HeartbeatRequest{}
   994  	o.CopyFrom(m)
   995  	return o
   996  }
   997  
   998  func (m *HeartbeatRequest) CopyFrom(src interface{}) {
   999  
  1000  	o := src.(*HeartbeatRequest)
  1001  	*m = *o
  1002  }
  1003  
  1004  func (m *HeartbeatResponse) Copy() *HeartbeatResponse {
  1005  	if m == nil {
  1006  		return nil
  1007  	}
  1008  	o := &HeartbeatResponse{}
  1009  	o.CopyFrom(m)
  1010  	return o
  1011  }
  1012  
  1013  func (m *HeartbeatResponse) CopyFrom(src interface{}) {
  1014  
  1015  	o := src.(*HeartbeatResponse)
  1016  	*m = *o
  1017  	github_com_docker_swarmkit_api_deepcopy.Copy(&m.Period, &o.Period)
  1018  }
  1019  
  1020  func (m *UpdateTaskStatusRequest) Copy() *UpdateTaskStatusRequest {
  1021  	if m == nil {
  1022  		return nil
  1023  	}
  1024  	o := &UpdateTaskStatusRequest{}
  1025  	o.CopyFrom(m)
  1026  	return o
  1027  }
  1028  
  1029  func (m *UpdateTaskStatusRequest) CopyFrom(src interface{}) {
  1030  
  1031  	o := src.(*UpdateTaskStatusRequest)
  1032  	*m = *o
  1033  	if o.Updates != nil {
  1034  		m.Updates = make([]*UpdateTaskStatusRequest_TaskStatusUpdate, len(o.Updates))
  1035  		for i := range m.Updates {
  1036  			m.Updates[i] = &UpdateTaskStatusRequest_TaskStatusUpdate{}
  1037  			github_com_docker_swarmkit_api_deepcopy.Copy(m.Updates[i], o.Updates[i])
  1038  		}
  1039  	}
  1040  
  1041  }
  1042  
  1043  func (m *UpdateTaskStatusRequest_TaskStatusUpdate) Copy() *UpdateTaskStatusRequest_TaskStatusUpdate {
  1044  	if m == nil {
  1045  		return nil
  1046  	}
  1047  	o := &UpdateTaskStatusRequest_TaskStatusUpdate{}
  1048  	o.CopyFrom(m)
  1049  	return o
  1050  }
  1051  
  1052  func (m *UpdateTaskStatusRequest_TaskStatusUpdate) CopyFrom(src interface{}) {
  1053  
  1054  	o := src.(*UpdateTaskStatusRequest_TaskStatusUpdate)
  1055  	*m = *o
  1056  	if o.Status != nil {
  1057  		m.Status = &TaskStatus{}
  1058  		github_com_docker_swarmkit_api_deepcopy.Copy(m.Status, o.Status)
  1059  	}
  1060  }
  1061  
  1062  func (m *UpdateTaskStatusResponse) Copy() *UpdateTaskStatusResponse {
  1063  	if m == nil {
  1064  		return nil
  1065  	}
  1066  	o := &UpdateTaskStatusResponse{}
  1067  	o.CopyFrom(m)
  1068  	return o
  1069  }
  1070  
  1071  func (m *UpdateTaskStatusResponse) CopyFrom(src interface{}) {}
  1072  func (m *TasksRequest) Copy() *TasksRequest {
  1073  	if m == nil {
  1074  		return nil
  1075  	}
  1076  	o := &TasksRequest{}
  1077  	o.CopyFrom(m)
  1078  	return o
  1079  }
  1080  
  1081  func (m *TasksRequest) CopyFrom(src interface{}) {
  1082  
  1083  	o := src.(*TasksRequest)
  1084  	*m = *o
  1085  }
  1086  
  1087  func (m *TasksMessage) Copy() *TasksMessage {
  1088  	if m == nil {
  1089  		return nil
  1090  	}
  1091  	o := &TasksMessage{}
  1092  	o.CopyFrom(m)
  1093  	return o
  1094  }
  1095  
  1096  func (m *TasksMessage) CopyFrom(src interface{}) {
  1097  
  1098  	o := src.(*TasksMessage)
  1099  	*m = *o
  1100  	if o.Tasks != nil {
  1101  		m.Tasks = make([]*Task, len(o.Tasks))
  1102  		for i := range m.Tasks {
  1103  			m.Tasks[i] = &Task{}
  1104  			github_com_docker_swarmkit_api_deepcopy.Copy(m.Tasks[i], o.Tasks[i])
  1105  		}
  1106  	}
  1107  
  1108  }
  1109  
  1110  func (m *AssignmentsRequest) Copy() *AssignmentsRequest {
  1111  	if m == nil {
  1112  		return nil
  1113  	}
  1114  	o := &AssignmentsRequest{}
  1115  	o.CopyFrom(m)
  1116  	return o
  1117  }
  1118  
  1119  func (m *AssignmentsRequest) CopyFrom(src interface{}) {
  1120  
  1121  	o := src.(*AssignmentsRequest)
  1122  	*m = *o
  1123  }
  1124  
  1125  func (m *Assignment) Copy() *Assignment {
  1126  	if m == nil {
  1127  		return nil
  1128  	}
  1129  	o := &Assignment{}
  1130  	o.CopyFrom(m)
  1131  	return o
  1132  }
  1133  
  1134  func (m *Assignment) CopyFrom(src interface{}) {
  1135  
  1136  	o := src.(*Assignment)
  1137  	*m = *o
  1138  	if o.Item != nil {
  1139  		switch o.Item.(type) {
  1140  		case *Assignment_Task:
  1141  			v := Assignment_Task{
  1142  				Task: &Task{},
  1143  			}
  1144  			github_com_docker_swarmkit_api_deepcopy.Copy(v.Task, o.GetTask())
  1145  			m.Item = &v
  1146  		case *Assignment_Secret:
  1147  			v := Assignment_Secret{
  1148  				Secret: &Secret{},
  1149  			}
  1150  			github_com_docker_swarmkit_api_deepcopy.Copy(v.Secret, o.GetSecret())
  1151  			m.Item = &v
  1152  		case *Assignment_Config:
  1153  			v := Assignment_Config{
  1154  				Config: &Config{},
  1155  			}
  1156  			github_com_docker_swarmkit_api_deepcopy.Copy(v.Config, o.GetConfig())
  1157  			m.Item = &v
  1158  		}
  1159  	}
  1160  
  1161  }
  1162  
  1163  func (m *AssignmentChange) Copy() *AssignmentChange {
  1164  	if m == nil {
  1165  		return nil
  1166  	}
  1167  	o := &AssignmentChange{}
  1168  	o.CopyFrom(m)
  1169  	return o
  1170  }
  1171  
  1172  func (m *AssignmentChange) CopyFrom(src interface{}) {
  1173  
  1174  	o := src.(*AssignmentChange)
  1175  	*m = *o
  1176  	if o.Assignment != nil {
  1177  		m.Assignment = &Assignment{}
  1178  		github_com_docker_swarmkit_api_deepcopy.Copy(m.Assignment, o.Assignment)
  1179  	}
  1180  }
  1181  
  1182  func (m *AssignmentsMessage) Copy() *AssignmentsMessage {
  1183  	if m == nil {
  1184  		return nil
  1185  	}
  1186  	o := &AssignmentsMessage{}
  1187  	o.CopyFrom(m)
  1188  	return o
  1189  }
  1190  
  1191  func (m *AssignmentsMessage) CopyFrom(src interface{}) {
  1192  
  1193  	o := src.(*AssignmentsMessage)
  1194  	*m = *o
  1195  	if o.Changes != nil {
  1196  		m.Changes = make([]*AssignmentChange, len(o.Changes))
  1197  		for i := range m.Changes {
  1198  			m.Changes[i] = &AssignmentChange{}
  1199  			github_com_docker_swarmkit_api_deepcopy.Copy(m.Changes[i], o.Changes[i])
  1200  		}
  1201  	}
  1202  
  1203  }
  1204  
  1205  // Reference imports to suppress errors if they are not otherwise used.
  1206  var _ context.Context
  1207  var _ grpc.ClientConn
  1208  
  1209  // This is a compile-time assertion to ensure that this generated file
  1210  // is compatible with the grpc package it is being compiled against.
  1211  const _ = grpc.SupportPackageIsVersion4
  1212  
  1213  // DispatcherClient is the client API for Dispatcher service.
  1214  //
  1215  // For semantics around ctx use and closing/ending streaming RPCs, please refer to https://godoc.org/google.golang.org/grpc#ClientConn.NewStream.
  1216  type DispatcherClient interface {
  1217  	// Session starts an agent session with the dispatcher. The session is
  1218  	// started after the first SessionMessage is received.
  1219  	//
  1220  	// Once started, the agent is controlled with a stream of SessionMessage.
  1221  	// Agents should list on the stream at all times for instructions.
  1222  	Session(ctx context.Context, in *SessionRequest, opts ...grpc.CallOption) (Dispatcher_SessionClient, error)
  1223  	// Heartbeat is heartbeat method for nodes. It returns new TTL in response.
  1224  	// Node should send new heartbeat earlier than now + TTL, otherwise it will
  1225  	// be deregistered from dispatcher and its status will be updated to NodeStatus_DOWN
  1226  	Heartbeat(ctx context.Context, in *HeartbeatRequest, opts ...grpc.CallOption) (*HeartbeatResponse, error)
  1227  	// UpdateTaskStatus updates status of task. Node should send such updates
  1228  	// on every status change of its tasks.
  1229  	//
  1230  	// Whether receiving batch updates or single status updates, this method
  1231  	// should be accepting. Errors should only be returned if the entire update
  1232  	// should be retried, due to data loss or other problems.
  1233  	//
  1234  	// If a task is unknown the dispatcher, the status update should be
  1235  	// accepted regardless.
  1236  	UpdateTaskStatus(ctx context.Context, in *UpdateTaskStatusRequest, opts ...grpc.CallOption) (*UpdateTaskStatusResponse, error)
  1237  	// Tasks is a stream of tasks state for node. Each message contains full list
  1238  	// of tasks which should be run on node, if task is not present in that list,
  1239  	// it should be terminated.
  1240  	Tasks(ctx context.Context, in *TasksRequest, opts ...grpc.CallOption) (Dispatcher_TasksClient, error)
  1241  	// Assignments is a stream of assignments such as tasks and secrets for node.
  1242  	// The first message in the stream contains all of the tasks and secrets
  1243  	// that are relevant to the node. Future messages in the stream are updates to
  1244  	// the set of assignments.
  1245  	Assignments(ctx context.Context, in *AssignmentsRequest, opts ...grpc.CallOption) (Dispatcher_AssignmentsClient, error)
  1246  }
  1247  
  1248  type dispatcherClient struct {
  1249  	cc *grpc.ClientConn
  1250  }
  1251  
  1252  func NewDispatcherClient(cc *grpc.ClientConn) DispatcherClient {
  1253  	return &dispatcherClient{cc}
  1254  }
  1255  
  1256  func (c *dispatcherClient) Session(ctx context.Context, in *SessionRequest, opts ...grpc.CallOption) (Dispatcher_SessionClient, error) {
  1257  	stream, err := c.cc.NewStream(ctx, &_Dispatcher_serviceDesc.Streams[0], "/docker.swarmkit.v1.Dispatcher/Session", opts...)
  1258  	if err != nil {
  1259  		return nil, err
  1260  	}
  1261  	x := &dispatcherSessionClient{stream}
  1262  	if err := x.ClientStream.SendMsg(in); err != nil {
  1263  		return nil, err
  1264  	}
  1265  	if err := x.ClientStream.CloseSend(); err != nil {
  1266  		return nil, err
  1267  	}
  1268  	return x, nil
  1269  }
  1270  
  1271  type Dispatcher_SessionClient interface {
  1272  	Recv() (*SessionMessage, error)
  1273  	grpc.ClientStream
  1274  }
  1275  
  1276  type dispatcherSessionClient struct {
  1277  	grpc.ClientStream
  1278  }
  1279  
  1280  func (x *dispatcherSessionClient) Recv() (*SessionMessage, error) {
  1281  	m := new(SessionMessage)
  1282  	if err := x.ClientStream.RecvMsg(m); err != nil {
  1283  		return nil, err
  1284  	}
  1285  	return m, nil
  1286  }
  1287  
  1288  func (c *dispatcherClient) Heartbeat(ctx context.Context, in *HeartbeatRequest, opts ...grpc.CallOption) (*HeartbeatResponse, error) {
  1289  	out := new(HeartbeatResponse)
  1290  	err := c.cc.Invoke(ctx, "/docker.swarmkit.v1.Dispatcher/Heartbeat", in, out, opts...)
  1291  	if err != nil {
  1292  		return nil, err
  1293  	}
  1294  	return out, nil
  1295  }
  1296  
  1297  func (c *dispatcherClient) UpdateTaskStatus(ctx context.Context, in *UpdateTaskStatusRequest, opts ...grpc.CallOption) (*UpdateTaskStatusResponse, error) {
  1298  	out := new(UpdateTaskStatusResponse)
  1299  	err := c.cc.Invoke(ctx, "/docker.swarmkit.v1.Dispatcher/UpdateTaskStatus", in, out, opts...)
  1300  	if err != nil {
  1301  		return nil, err
  1302  	}
  1303  	return out, nil
  1304  }
  1305  
  1306  // Deprecated: Do not use.
  1307  func (c *dispatcherClient) Tasks(ctx context.Context, in *TasksRequest, opts ...grpc.CallOption) (Dispatcher_TasksClient, error) {
  1308  	stream, err := c.cc.NewStream(ctx, &_Dispatcher_serviceDesc.Streams[1], "/docker.swarmkit.v1.Dispatcher/Tasks", opts...)
  1309  	if err != nil {
  1310  		return nil, err
  1311  	}
  1312  	x := &dispatcherTasksClient{stream}
  1313  	if err := x.ClientStream.SendMsg(in); err != nil {
  1314  		return nil, err
  1315  	}
  1316  	if err := x.ClientStream.CloseSend(); err != nil {
  1317  		return nil, err
  1318  	}
  1319  	return x, nil
  1320  }
  1321  
  1322  type Dispatcher_TasksClient interface {
  1323  	Recv() (*TasksMessage, error)
  1324  	grpc.ClientStream
  1325  }
  1326  
  1327  type dispatcherTasksClient struct {
  1328  	grpc.ClientStream
  1329  }
  1330  
  1331  func (x *dispatcherTasksClient) Recv() (*TasksMessage, error) {
  1332  	m := new(TasksMessage)
  1333  	if err := x.ClientStream.RecvMsg(m); err != nil {
  1334  		return nil, err
  1335  	}
  1336  	return m, nil
  1337  }
  1338  
  1339  func (c *dispatcherClient) Assignments(ctx context.Context, in *AssignmentsRequest, opts ...grpc.CallOption) (Dispatcher_AssignmentsClient, error) {
  1340  	stream, err := c.cc.NewStream(ctx, &_Dispatcher_serviceDesc.Streams[2], "/docker.swarmkit.v1.Dispatcher/Assignments", opts...)
  1341  	if err != nil {
  1342  		return nil, err
  1343  	}
  1344  	x := &dispatcherAssignmentsClient{stream}
  1345  	if err := x.ClientStream.SendMsg(in); err != nil {
  1346  		return nil, err
  1347  	}
  1348  	if err := x.ClientStream.CloseSend(); err != nil {
  1349  		return nil, err
  1350  	}
  1351  	return x, nil
  1352  }
  1353  
  1354  type Dispatcher_AssignmentsClient interface {
  1355  	Recv() (*AssignmentsMessage, error)
  1356  	grpc.ClientStream
  1357  }
  1358  
  1359  type dispatcherAssignmentsClient struct {
  1360  	grpc.ClientStream
  1361  }
  1362  
  1363  func (x *dispatcherAssignmentsClient) Recv() (*AssignmentsMessage, error) {
  1364  	m := new(AssignmentsMessage)
  1365  	if err := x.ClientStream.RecvMsg(m); err != nil {
  1366  		return nil, err
  1367  	}
  1368  	return m, nil
  1369  }
  1370  
  1371  // DispatcherServer is the server API for Dispatcher service.
  1372  type DispatcherServer interface {
  1373  	// Session starts an agent session with the dispatcher. The session is
  1374  	// started after the first SessionMessage is received.
  1375  	//
  1376  	// Once started, the agent is controlled with a stream of SessionMessage.
  1377  	// Agents should list on the stream at all times for instructions.
  1378  	Session(*SessionRequest, Dispatcher_SessionServer) error
  1379  	// Heartbeat is heartbeat method for nodes. It returns new TTL in response.
  1380  	// Node should send new heartbeat earlier than now + TTL, otherwise it will
  1381  	// be deregistered from dispatcher and its status will be updated to NodeStatus_DOWN
  1382  	Heartbeat(context.Context, *HeartbeatRequest) (*HeartbeatResponse, error)
  1383  	// UpdateTaskStatus updates status of task. Node should send such updates
  1384  	// on every status change of its tasks.
  1385  	//
  1386  	// Whether receiving batch updates or single status updates, this method
  1387  	// should be accepting. Errors should only be returned if the entire update
  1388  	// should be retried, due to data loss or other problems.
  1389  	//
  1390  	// If a task is unknown the dispatcher, the status update should be
  1391  	// accepted regardless.
  1392  	UpdateTaskStatus(context.Context, *UpdateTaskStatusRequest) (*UpdateTaskStatusResponse, error)
  1393  	// Tasks is a stream of tasks state for node. Each message contains full list
  1394  	// of tasks which should be run on node, if task is not present in that list,
  1395  	// it should be terminated.
  1396  	Tasks(*TasksRequest, Dispatcher_TasksServer) error
  1397  	// Assignments is a stream of assignments such as tasks and secrets for node.
  1398  	// The first message in the stream contains all of the tasks and secrets
  1399  	// that are relevant to the node. Future messages in the stream are updates to
  1400  	// the set of assignments.
  1401  	Assignments(*AssignmentsRequest, Dispatcher_AssignmentsServer) error
  1402  }
  1403  
  1404  func RegisterDispatcherServer(s *grpc.Server, srv DispatcherServer) {
  1405  	s.RegisterService(&_Dispatcher_serviceDesc, srv)
  1406  }
  1407  
  1408  func _Dispatcher_Session_Handler(srv interface{}, stream grpc.ServerStream) error {
  1409  	m := new(SessionRequest)
  1410  	if err := stream.RecvMsg(m); err != nil {
  1411  		return err
  1412  	}
  1413  	return srv.(DispatcherServer).Session(m, &dispatcherSessionServer{stream})
  1414  }
  1415  
  1416  type Dispatcher_SessionServer interface {
  1417  	Send(*SessionMessage) error
  1418  	grpc.ServerStream
  1419  }
  1420  
  1421  type dispatcherSessionServer struct {
  1422  	grpc.ServerStream
  1423  }
  1424  
  1425  func (x *dispatcherSessionServer) Send(m *SessionMessage) error {
  1426  	return x.ServerStream.SendMsg(m)
  1427  }
  1428  
  1429  func _Dispatcher_Heartbeat_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
  1430  	in := new(HeartbeatRequest)
  1431  	if err := dec(in); err != nil {
  1432  		return nil, err
  1433  	}
  1434  	if interceptor == nil {
  1435  		return srv.(DispatcherServer).Heartbeat(ctx, in)
  1436  	}
  1437  	info := &grpc.UnaryServerInfo{
  1438  		Server:     srv,
  1439  		FullMethod: "/docker.swarmkit.v1.Dispatcher/Heartbeat",
  1440  	}
  1441  	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
  1442  		return srv.(DispatcherServer).Heartbeat(ctx, req.(*HeartbeatRequest))
  1443  	}
  1444  	return interceptor(ctx, in, info, handler)
  1445  }
  1446  
  1447  func _Dispatcher_UpdateTaskStatus_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
  1448  	in := new(UpdateTaskStatusRequest)
  1449  	if err := dec(in); err != nil {
  1450  		return nil, err
  1451  	}
  1452  	if interceptor == nil {
  1453  		return srv.(DispatcherServer).UpdateTaskStatus(ctx, in)
  1454  	}
  1455  	info := &grpc.UnaryServerInfo{
  1456  		Server:     srv,
  1457  		FullMethod: "/docker.swarmkit.v1.Dispatcher/UpdateTaskStatus",
  1458  	}
  1459  	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
  1460  		return srv.(DispatcherServer).UpdateTaskStatus(ctx, req.(*UpdateTaskStatusRequest))
  1461  	}
  1462  	return interceptor(ctx, in, info, handler)
  1463  }
  1464  
  1465  func _Dispatcher_Tasks_Handler(srv interface{}, stream grpc.ServerStream) error {
  1466  	m := new(TasksRequest)
  1467  	if err := stream.RecvMsg(m); err != nil {
  1468  		return err
  1469  	}
  1470  	return srv.(DispatcherServer).Tasks(m, &dispatcherTasksServer{stream})
  1471  }
  1472  
  1473  type Dispatcher_TasksServer interface {
  1474  	Send(*TasksMessage) error
  1475  	grpc.ServerStream
  1476  }
  1477  
  1478  type dispatcherTasksServer struct {
  1479  	grpc.ServerStream
  1480  }
  1481  
  1482  func (x *dispatcherTasksServer) Send(m *TasksMessage) error {
  1483  	return x.ServerStream.SendMsg(m)
  1484  }
  1485  
  1486  func _Dispatcher_Assignments_Handler(srv interface{}, stream grpc.ServerStream) error {
  1487  	m := new(AssignmentsRequest)
  1488  	if err := stream.RecvMsg(m); err != nil {
  1489  		return err
  1490  	}
  1491  	return srv.(DispatcherServer).Assignments(m, &dispatcherAssignmentsServer{stream})
  1492  }
  1493  
  1494  type Dispatcher_AssignmentsServer interface {
  1495  	Send(*AssignmentsMessage) error
  1496  	grpc.ServerStream
  1497  }
  1498  
  1499  type dispatcherAssignmentsServer struct {
  1500  	grpc.ServerStream
  1501  }
  1502  
  1503  func (x *dispatcherAssignmentsServer) Send(m *AssignmentsMessage) error {
  1504  	return x.ServerStream.SendMsg(m)
  1505  }
  1506  
  1507  var _Dispatcher_serviceDesc = grpc.ServiceDesc{
  1508  	ServiceName: "docker.swarmkit.v1.Dispatcher",
  1509  	HandlerType: (*DispatcherServer)(nil),
  1510  	Methods: []grpc.MethodDesc{
  1511  		{
  1512  			MethodName: "Heartbeat",
  1513  			Handler:    _Dispatcher_Heartbeat_Handler,
  1514  		},
  1515  		{
  1516  			MethodName: "UpdateTaskStatus",
  1517  			Handler:    _Dispatcher_UpdateTaskStatus_Handler,
  1518  		},
  1519  	},
  1520  	Streams: []grpc.StreamDesc{
  1521  		{
  1522  			StreamName:    "Session",
  1523  			Handler:       _Dispatcher_Session_Handler,
  1524  			ServerStreams: true,
  1525  		},
  1526  		{
  1527  			StreamName:    "Tasks",
  1528  			Handler:       _Dispatcher_Tasks_Handler,
  1529  			ServerStreams: true,
  1530  		},
  1531  		{
  1532  			StreamName:    "Assignments",
  1533  			Handler:       _Dispatcher_Assignments_Handler,
  1534  			ServerStreams: true,
  1535  		},
  1536  	},
  1537  	Metadata: "github.com/docker/swarmkit/api/dispatcher.proto",
  1538  }
  1539  
  1540  func (m *SessionRequest) Marshal() (dAtA []byte, err error) {
  1541  	size := m.Size()
  1542  	dAtA = make([]byte, size)
  1543  	n, err := m.MarshalTo(dAtA)
  1544  	if err != nil {
  1545  		return nil, err
  1546  	}
  1547  	return dAtA[:n], nil
  1548  }
  1549  
  1550  func (m *SessionRequest) MarshalTo(dAtA []byte) (int, error) {
  1551  	var i int
  1552  	_ = i
  1553  	var l int
  1554  	_ = l
  1555  	if m.Description != nil {
  1556  		dAtA[i] = 0xa
  1557  		i++
  1558  		i = encodeVarintDispatcher(dAtA, i, uint64(m.Description.Size()))
  1559  		n1, err := m.Description.MarshalTo(dAtA[i:])
  1560  		if err != nil {
  1561  			return 0, err
  1562  		}
  1563  		i += n1
  1564  	}
  1565  	if len(m.SessionID) > 0 {
  1566  		dAtA[i] = 0x12
  1567  		i++
  1568  		i = encodeVarintDispatcher(dAtA, i, uint64(len(m.SessionID)))
  1569  		i += copy(dAtA[i:], m.SessionID)
  1570  	}
  1571  	return i, nil
  1572  }
  1573  
  1574  func (m *SessionMessage) Marshal() (dAtA []byte, err error) {
  1575  	size := m.Size()
  1576  	dAtA = make([]byte, size)
  1577  	n, err := m.MarshalTo(dAtA)
  1578  	if err != nil {
  1579  		return nil, err
  1580  	}
  1581  	return dAtA[:n], nil
  1582  }
  1583  
  1584  func (m *SessionMessage) MarshalTo(dAtA []byte) (int, error) {
  1585  	var i int
  1586  	_ = i
  1587  	var l int
  1588  	_ = l
  1589  	if len(m.SessionID) > 0 {
  1590  		dAtA[i] = 0xa
  1591  		i++
  1592  		i = encodeVarintDispatcher(dAtA, i, uint64(len(m.SessionID)))
  1593  		i += copy(dAtA[i:], m.SessionID)
  1594  	}
  1595  	if m.Node != nil {
  1596  		dAtA[i] = 0x12
  1597  		i++
  1598  		i = encodeVarintDispatcher(dAtA, i, uint64(m.Node.Size()))
  1599  		n2, err := m.Node.MarshalTo(dAtA[i:])
  1600  		if err != nil {
  1601  			return 0, err
  1602  		}
  1603  		i += n2
  1604  	}
  1605  	if len(m.Managers) > 0 {
  1606  		for _, msg := range m.Managers {
  1607  			dAtA[i] = 0x1a
  1608  			i++
  1609  			i = encodeVarintDispatcher(dAtA, i, uint64(msg.Size()))
  1610  			n, err := msg.MarshalTo(dAtA[i:])
  1611  			if err != nil {
  1612  				return 0, err
  1613  			}
  1614  			i += n
  1615  		}
  1616  	}
  1617  	if len(m.NetworkBootstrapKeys) > 0 {
  1618  		for _, msg := range m.NetworkBootstrapKeys {
  1619  			dAtA[i] = 0x22
  1620  			i++
  1621  			i = encodeVarintDispatcher(dAtA, i, uint64(msg.Size()))
  1622  			n, err := msg.MarshalTo(dAtA[i:])
  1623  			if err != nil {
  1624  				return 0, err
  1625  			}
  1626  			i += n
  1627  		}
  1628  	}
  1629  	if len(m.RootCA) > 0 {
  1630  		dAtA[i] = 0x2a
  1631  		i++
  1632  		i = encodeVarintDispatcher(dAtA, i, uint64(len(m.RootCA)))
  1633  		i += copy(dAtA[i:], m.RootCA)
  1634  	}
  1635  	return i, nil
  1636  }
  1637  
  1638  func (m *HeartbeatRequest) Marshal() (dAtA []byte, err error) {
  1639  	size := m.Size()
  1640  	dAtA = make([]byte, size)
  1641  	n, err := m.MarshalTo(dAtA)
  1642  	if err != nil {
  1643  		return nil, err
  1644  	}
  1645  	return dAtA[:n], nil
  1646  }
  1647  
  1648  func (m *HeartbeatRequest) MarshalTo(dAtA []byte) (int, error) {
  1649  	var i int
  1650  	_ = i
  1651  	var l int
  1652  	_ = l
  1653  	if len(m.SessionID) > 0 {
  1654  		dAtA[i] = 0xa
  1655  		i++
  1656  		i = encodeVarintDispatcher(dAtA, i, uint64(len(m.SessionID)))
  1657  		i += copy(dAtA[i:], m.SessionID)
  1658  	}
  1659  	return i, nil
  1660  }
  1661  
  1662  func (m *HeartbeatResponse) Marshal() (dAtA []byte, err error) {
  1663  	size := m.Size()
  1664  	dAtA = make([]byte, size)
  1665  	n, err := m.MarshalTo(dAtA)
  1666  	if err != nil {
  1667  		return nil, err
  1668  	}
  1669  	return dAtA[:n], nil
  1670  }
  1671  
  1672  func (m *HeartbeatResponse) MarshalTo(dAtA []byte) (int, error) {
  1673  	var i int
  1674  	_ = i
  1675  	var l int
  1676  	_ = l
  1677  	dAtA[i] = 0xa
  1678  	i++
  1679  	i = encodeVarintDispatcher(dAtA, i, uint64(github_com_gogo_protobuf_types.SizeOfStdDuration(m.Period)))
  1680  	n3, err := github_com_gogo_protobuf_types.StdDurationMarshalTo(m.Period, dAtA[i:])
  1681  	if err != nil {
  1682  		return 0, err
  1683  	}
  1684  	i += n3
  1685  	return i, nil
  1686  }
  1687  
  1688  func (m *UpdateTaskStatusRequest) Marshal() (dAtA []byte, err error) {
  1689  	size := m.Size()
  1690  	dAtA = make([]byte, size)
  1691  	n, err := m.MarshalTo(dAtA)
  1692  	if err != nil {
  1693  		return nil, err
  1694  	}
  1695  	return dAtA[:n], nil
  1696  }
  1697  
  1698  func (m *UpdateTaskStatusRequest) MarshalTo(dAtA []byte) (int, error) {
  1699  	var i int
  1700  	_ = i
  1701  	var l int
  1702  	_ = l
  1703  	if len(m.SessionID) > 0 {
  1704  		dAtA[i] = 0xa
  1705  		i++
  1706  		i = encodeVarintDispatcher(dAtA, i, uint64(len(m.SessionID)))
  1707  		i += copy(dAtA[i:], m.SessionID)
  1708  	}
  1709  	if len(m.Updates) > 0 {
  1710  		for _, msg := range m.Updates {
  1711  			dAtA[i] = 0x1a
  1712  			i++
  1713  			i = encodeVarintDispatcher(dAtA, i, uint64(msg.Size()))
  1714  			n, err := msg.MarshalTo(dAtA[i:])
  1715  			if err != nil {
  1716  				return 0, err
  1717  			}
  1718  			i += n
  1719  		}
  1720  	}
  1721  	return i, nil
  1722  }
  1723  
  1724  func (m *UpdateTaskStatusRequest_TaskStatusUpdate) Marshal() (dAtA []byte, err error) {
  1725  	size := m.Size()
  1726  	dAtA = make([]byte, size)
  1727  	n, err := m.MarshalTo(dAtA)
  1728  	if err != nil {
  1729  		return nil, err
  1730  	}
  1731  	return dAtA[:n], nil
  1732  }
  1733  
  1734  func (m *UpdateTaskStatusRequest_TaskStatusUpdate) MarshalTo(dAtA []byte) (int, error) {
  1735  	var i int
  1736  	_ = i
  1737  	var l int
  1738  	_ = l
  1739  	if len(m.TaskID) > 0 {
  1740  		dAtA[i] = 0xa
  1741  		i++
  1742  		i = encodeVarintDispatcher(dAtA, i, uint64(len(m.TaskID)))
  1743  		i += copy(dAtA[i:], m.TaskID)
  1744  	}
  1745  	if m.Status != nil {
  1746  		dAtA[i] = 0x12
  1747  		i++
  1748  		i = encodeVarintDispatcher(dAtA, i, uint64(m.Status.Size()))
  1749  		n4, err := m.Status.MarshalTo(dAtA[i:])
  1750  		if err != nil {
  1751  			return 0, err
  1752  		}
  1753  		i += n4
  1754  	}
  1755  	return i, nil
  1756  }
  1757  
  1758  func (m *UpdateTaskStatusResponse) Marshal() (dAtA []byte, err error) {
  1759  	size := m.Size()
  1760  	dAtA = make([]byte, size)
  1761  	n, err := m.MarshalTo(dAtA)
  1762  	if err != nil {
  1763  		return nil, err
  1764  	}
  1765  	return dAtA[:n], nil
  1766  }
  1767  
  1768  func (m *UpdateTaskStatusResponse) MarshalTo(dAtA []byte) (int, error) {
  1769  	var i int
  1770  	_ = i
  1771  	var l int
  1772  	_ = l
  1773  	return i, nil
  1774  }
  1775  
  1776  func (m *TasksRequest) Marshal() (dAtA []byte, err error) {
  1777  	size := m.Size()
  1778  	dAtA = make([]byte, size)
  1779  	n, err := m.MarshalTo(dAtA)
  1780  	if err != nil {
  1781  		return nil, err
  1782  	}
  1783  	return dAtA[:n], nil
  1784  }
  1785  
  1786  func (m *TasksRequest) MarshalTo(dAtA []byte) (int, error) {
  1787  	var i int
  1788  	_ = i
  1789  	var l int
  1790  	_ = l
  1791  	if len(m.SessionID) > 0 {
  1792  		dAtA[i] = 0xa
  1793  		i++
  1794  		i = encodeVarintDispatcher(dAtA, i, uint64(len(m.SessionID)))
  1795  		i += copy(dAtA[i:], m.SessionID)
  1796  	}
  1797  	return i, nil
  1798  }
  1799  
  1800  func (m *TasksMessage) Marshal() (dAtA []byte, err error) {
  1801  	size := m.Size()
  1802  	dAtA = make([]byte, size)
  1803  	n, err := m.MarshalTo(dAtA)
  1804  	if err != nil {
  1805  		return nil, err
  1806  	}
  1807  	return dAtA[:n], nil
  1808  }
  1809  
  1810  func (m *TasksMessage) MarshalTo(dAtA []byte) (int, error) {
  1811  	var i int
  1812  	_ = i
  1813  	var l int
  1814  	_ = l
  1815  	if len(m.Tasks) > 0 {
  1816  		for _, msg := range m.Tasks {
  1817  			dAtA[i] = 0xa
  1818  			i++
  1819  			i = encodeVarintDispatcher(dAtA, i, uint64(msg.Size()))
  1820  			n, err := msg.MarshalTo(dAtA[i:])
  1821  			if err != nil {
  1822  				return 0, err
  1823  			}
  1824  			i += n
  1825  		}
  1826  	}
  1827  	return i, nil
  1828  }
  1829  
  1830  func (m *AssignmentsRequest) Marshal() (dAtA []byte, err error) {
  1831  	size := m.Size()
  1832  	dAtA = make([]byte, size)
  1833  	n, err := m.MarshalTo(dAtA)
  1834  	if err != nil {
  1835  		return nil, err
  1836  	}
  1837  	return dAtA[:n], nil
  1838  }
  1839  
  1840  func (m *AssignmentsRequest) MarshalTo(dAtA []byte) (int, error) {
  1841  	var i int
  1842  	_ = i
  1843  	var l int
  1844  	_ = l
  1845  	if len(m.SessionID) > 0 {
  1846  		dAtA[i] = 0xa
  1847  		i++
  1848  		i = encodeVarintDispatcher(dAtA, i, uint64(len(m.SessionID)))
  1849  		i += copy(dAtA[i:], m.SessionID)
  1850  	}
  1851  	return i, nil
  1852  }
  1853  
  1854  func (m *Assignment) Marshal() (dAtA []byte, err error) {
  1855  	size := m.Size()
  1856  	dAtA = make([]byte, size)
  1857  	n, err := m.MarshalTo(dAtA)
  1858  	if err != nil {
  1859  		return nil, err
  1860  	}
  1861  	return dAtA[:n], nil
  1862  }
  1863  
  1864  func (m *Assignment) MarshalTo(dAtA []byte) (int, error) {
  1865  	var i int
  1866  	_ = i
  1867  	var l int
  1868  	_ = l
  1869  	if m.Item != nil {
  1870  		nn5, err := m.Item.MarshalTo(dAtA[i:])
  1871  		if err != nil {
  1872  			return 0, err
  1873  		}
  1874  		i += nn5
  1875  	}
  1876  	return i, nil
  1877  }
  1878  
  1879  func (m *Assignment_Task) MarshalTo(dAtA []byte) (int, error) {
  1880  	i := 0
  1881  	if m.Task != nil {
  1882  		dAtA[i] = 0xa
  1883  		i++
  1884  		i = encodeVarintDispatcher(dAtA, i, uint64(m.Task.Size()))
  1885  		n6, err := m.Task.MarshalTo(dAtA[i:])
  1886  		if err != nil {
  1887  			return 0, err
  1888  		}
  1889  		i += n6
  1890  	}
  1891  	return i, nil
  1892  }
  1893  func (m *Assignment_Secret) MarshalTo(dAtA []byte) (int, error) {
  1894  	i := 0
  1895  	if m.Secret != nil {
  1896  		dAtA[i] = 0x12
  1897  		i++
  1898  		i = encodeVarintDispatcher(dAtA, i, uint64(m.Secret.Size()))
  1899  		n7, err := m.Secret.MarshalTo(dAtA[i:])
  1900  		if err != nil {
  1901  			return 0, err
  1902  		}
  1903  		i += n7
  1904  	}
  1905  	return i, nil
  1906  }
  1907  func (m *Assignment_Config) MarshalTo(dAtA []byte) (int, error) {
  1908  	i := 0
  1909  	if m.Config != nil {
  1910  		dAtA[i] = 0x1a
  1911  		i++
  1912  		i = encodeVarintDispatcher(dAtA, i, uint64(m.Config.Size()))
  1913  		n8, err := m.Config.MarshalTo(dAtA[i:])
  1914  		if err != nil {
  1915  			return 0, err
  1916  		}
  1917  		i += n8
  1918  	}
  1919  	return i, nil
  1920  }
  1921  func (m *AssignmentChange) Marshal() (dAtA []byte, err error) {
  1922  	size := m.Size()
  1923  	dAtA = make([]byte, size)
  1924  	n, err := m.MarshalTo(dAtA)
  1925  	if err != nil {
  1926  		return nil, err
  1927  	}
  1928  	return dAtA[:n], nil
  1929  }
  1930  
  1931  func (m *AssignmentChange) MarshalTo(dAtA []byte) (int, error) {
  1932  	var i int
  1933  	_ = i
  1934  	var l int
  1935  	_ = l
  1936  	if m.Assignment != nil {
  1937  		dAtA[i] = 0xa
  1938  		i++
  1939  		i = encodeVarintDispatcher(dAtA, i, uint64(m.Assignment.Size()))
  1940  		n9, err := m.Assignment.MarshalTo(dAtA[i:])
  1941  		if err != nil {
  1942  			return 0, err
  1943  		}
  1944  		i += n9
  1945  	}
  1946  	if m.Action != 0 {
  1947  		dAtA[i] = 0x10
  1948  		i++
  1949  		i = encodeVarintDispatcher(dAtA, i, uint64(m.Action))
  1950  	}
  1951  	return i, nil
  1952  }
  1953  
  1954  func (m *AssignmentsMessage) Marshal() (dAtA []byte, err error) {
  1955  	size := m.Size()
  1956  	dAtA = make([]byte, size)
  1957  	n, err := m.MarshalTo(dAtA)
  1958  	if err != nil {
  1959  		return nil, err
  1960  	}
  1961  	return dAtA[:n], nil
  1962  }
  1963  
  1964  func (m *AssignmentsMessage) MarshalTo(dAtA []byte) (int, error) {
  1965  	var i int
  1966  	_ = i
  1967  	var l int
  1968  	_ = l
  1969  	if m.Type != 0 {
  1970  		dAtA[i] = 0x8
  1971  		i++
  1972  		i = encodeVarintDispatcher(dAtA, i, uint64(m.Type))
  1973  	}
  1974  	if len(m.AppliesTo) > 0 {
  1975  		dAtA[i] = 0x12
  1976  		i++
  1977  		i = encodeVarintDispatcher(dAtA, i, uint64(len(m.AppliesTo)))
  1978  		i += copy(dAtA[i:], m.AppliesTo)
  1979  	}
  1980  	if len(m.ResultsIn) > 0 {
  1981  		dAtA[i] = 0x1a
  1982  		i++
  1983  		i = encodeVarintDispatcher(dAtA, i, uint64(len(m.ResultsIn)))
  1984  		i += copy(dAtA[i:], m.ResultsIn)
  1985  	}
  1986  	if len(m.Changes) > 0 {
  1987  		for _, msg := range m.Changes {
  1988  			dAtA[i] = 0x22
  1989  			i++
  1990  			i = encodeVarintDispatcher(dAtA, i, uint64(msg.Size()))
  1991  			n, err := msg.MarshalTo(dAtA[i:])
  1992  			if err != nil {
  1993  				return 0, err
  1994  			}
  1995  			i += n
  1996  		}
  1997  	}
  1998  	return i, nil
  1999  }
  2000  
  2001  func encodeVarintDispatcher(dAtA []byte, offset int, v uint64) int {
  2002  	for v >= 1<<7 {
  2003  		dAtA[offset] = uint8(v&0x7f | 0x80)
  2004  		v >>= 7
  2005  		offset++
  2006  	}
  2007  	dAtA[offset] = uint8(v)
  2008  	return offset + 1
  2009  }
  2010  
  2011  type raftProxyDispatcherServer struct {
  2012  	local                       DispatcherServer
  2013  	connSelector                raftselector.ConnProvider
  2014  	localCtxMods, remoteCtxMods []func(context.Context) (context.Context, error)
  2015  }
  2016  
  2017  func NewRaftProxyDispatcherServer(local DispatcherServer, connSelector raftselector.ConnProvider, localCtxMod, remoteCtxMod func(context.Context) (context.Context, error)) DispatcherServer {
  2018  	redirectChecker := func(ctx context.Context) (context.Context, error) {
  2019  		p, ok := peer.FromContext(ctx)
  2020  		if !ok {
  2021  			return ctx, status.Errorf(codes.InvalidArgument, "remote addr is not found in context")
  2022  		}
  2023  		addr := p.Addr.String()
  2024  		md, ok := metadata.FromIncomingContext(ctx)
  2025  		if ok && len(md["redirect"]) != 0 {
  2026  			return ctx, status.Errorf(codes.ResourceExhausted, "more than one redirect to leader from: %s", md["redirect"])
  2027  		}
  2028  		if !ok {
  2029  			md = metadata.New(map[string]string{})
  2030  		}
  2031  		md["redirect"] = append(md["redirect"], addr)
  2032  		return metadata.NewOutgoingContext(ctx, md), nil
  2033  	}
  2034  	remoteMods := []func(context.Context) (context.Context, error){redirectChecker}
  2035  	remoteMods = append(remoteMods, remoteCtxMod)
  2036  
  2037  	var localMods []func(context.Context) (context.Context, error)
  2038  	if localCtxMod != nil {
  2039  		localMods = []func(context.Context) (context.Context, error){localCtxMod}
  2040  	}
  2041  
  2042  	return &raftProxyDispatcherServer{
  2043  		local:         local,
  2044  		connSelector:  connSelector,
  2045  		localCtxMods:  localMods,
  2046  		remoteCtxMods: remoteMods,
  2047  	}
  2048  }
  2049  func (p *raftProxyDispatcherServer) runCtxMods(ctx context.Context, ctxMods []func(context.Context) (context.Context, error)) (context.Context, error) {
  2050  	var err error
  2051  	for _, mod := range ctxMods {
  2052  		ctx, err = mod(ctx)
  2053  		if err != nil {
  2054  			return ctx, err
  2055  		}
  2056  	}
  2057  	return ctx, nil
  2058  }
  2059  func (p *raftProxyDispatcherServer) pollNewLeaderConn(ctx context.Context) (*grpc.ClientConn, error) {
  2060  	ticker := rafttime.NewTicker(500 * rafttime.Millisecond)
  2061  	defer ticker.Stop()
  2062  	for {
  2063  		select {
  2064  		case <-ticker.C:
  2065  			conn, err := p.connSelector.LeaderConn(ctx)
  2066  			if err != nil {
  2067  				return nil, err
  2068  			}
  2069  
  2070  			client := NewHealthClient(conn)
  2071  
  2072  			resp, err := client.Check(ctx, &HealthCheckRequest{Service: "Raft"})
  2073  			if err != nil || resp.Status != HealthCheckResponse_SERVING {
  2074  				continue
  2075  			}
  2076  			return conn, nil
  2077  		case <-ctx.Done():
  2078  			return nil, ctx.Err()
  2079  		}
  2080  	}
  2081  }
  2082  
  2083  type Dispatcher_SessionServerWrapper struct {
  2084  	Dispatcher_SessionServer
  2085  	ctx context.Context
  2086  }
  2087  
  2088  func (s Dispatcher_SessionServerWrapper) Context() context.Context {
  2089  	return s.ctx
  2090  }
  2091  
  2092  func (p *raftProxyDispatcherServer) Session(r *SessionRequest, stream Dispatcher_SessionServer) error {
  2093  	ctx := stream.Context()
  2094  	conn, err := p.connSelector.LeaderConn(ctx)
  2095  	if err != nil {
  2096  		if err == raftselector.ErrIsLeader {
  2097  			ctx, err = p.runCtxMods(ctx, p.localCtxMods)
  2098  			if err != nil {
  2099  				return err
  2100  			}
  2101  			streamWrapper := Dispatcher_SessionServerWrapper{
  2102  				Dispatcher_SessionServer: stream,
  2103  				ctx:                      ctx,
  2104  			}
  2105  			return p.local.Session(r, streamWrapper)
  2106  		}
  2107  		return err
  2108  	}
  2109  	ctx, err = p.runCtxMods(ctx, p.remoteCtxMods)
  2110  	if err != nil {
  2111  		return err
  2112  	}
  2113  	clientStream, err := NewDispatcherClient(conn).Session(ctx, r)
  2114  
  2115  	if err != nil {
  2116  		return err
  2117  	}
  2118  
  2119  	for {
  2120  		msg, err := clientStream.Recv()
  2121  		if err == io.EOF {
  2122  			break
  2123  		}
  2124  		if err != nil {
  2125  			return err
  2126  		}
  2127  		if err := stream.Send(msg); err != nil {
  2128  			return err
  2129  		}
  2130  	}
  2131  	return nil
  2132  }
  2133  
  2134  func (p *raftProxyDispatcherServer) Heartbeat(ctx context.Context, r *HeartbeatRequest) (*HeartbeatResponse, error) {
  2135  
  2136  	conn, err := p.connSelector.LeaderConn(ctx)
  2137  	if err != nil {
  2138  		if err == raftselector.ErrIsLeader {
  2139  			ctx, err = p.runCtxMods(ctx, p.localCtxMods)
  2140  			if err != nil {
  2141  				return nil, err
  2142  			}
  2143  			return p.local.Heartbeat(ctx, r)
  2144  		}
  2145  		return nil, err
  2146  	}
  2147  	modCtx, err := p.runCtxMods(ctx, p.remoteCtxMods)
  2148  	if err != nil {
  2149  		return nil, err
  2150  	}
  2151  
  2152  	resp, err := NewDispatcherClient(conn).Heartbeat(modCtx, r)
  2153  	if err != nil {
  2154  		if !strings.Contains(err.Error(), "is closing") && !strings.Contains(err.Error(), "the connection is unavailable") && !strings.Contains(err.Error(), "connection error") {
  2155  			return resp, err
  2156  		}
  2157  		conn, err := p.pollNewLeaderConn(ctx)
  2158  		if err != nil {
  2159  			if err == raftselector.ErrIsLeader {
  2160  				return p.local.Heartbeat(ctx, r)
  2161  			}
  2162  			return nil, err
  2163  		}
  2164  		return NewDispatcherClient(conn).Heartbeat(modCtx, r)
  2165  	}
  2166  	return resp, err
  2167  }
  2168  
  2169  func (p *raftProxyDispatcherServer) UpdateTaskStatus(ctx context.Context, r *UpdateTaskStatusRequest) (*UpdateTaskStatusResponse, error) {
  2170  
  2171  	conn, err := p.connSelector.LeaderConn(ctx)
  2172  	if err != nil {
  2173  		if err == raftselector.ErrIsLeader {
  2174  			ctx, err = p.runCtxMods(ctx, p.localCtxMods)
  2175  			if err != nil {
  2176  				return nil, err
  2177  			}
  2178  			return p.local.UpdateTaskStatus(ctx, r)
  2179  		}
  2180  		return nil, err
  2181  	}
  2182  	modCtx, err := p.runCtxMods(ctx, p.remoteCtxMods)
  2183  	if err != nil {
  2184  		return nil, err
  2185  	}
  2186  
  2187  	resp, err := NewDispatcherClient(conn).UpdateTaskStatus(modCtx, r)
  2188  	if err != nil {
  2189  		if !strings.Contains(err.Error(), "is closing") && !strings.Contains(err.Error(), "the connection is unavailable") && !strings.Contains(err.Error(), "connection error") {
  2190  			return resp, err
  2191  		}
  2192  		conn, err := p.pollNewLeaderConn(ctx)
  2193  		if err != nil {
  2194  			if err == raftselector.ErrIsLeader {
  2195  				return p.local.UpdateTaskStatus(ctx, r)
  2196  			}
  2197  			return nil, err
  2198  		}
  2199  		return NewDispatcherClient(conn).UpdateTaskStatus(modCtx, r)
  2200  	}
  2201  	return resp, err
  2202  }
  2203  
  2204  type Dispatcher_TasksServerWrapper struct {
  2205  	Dispatcher_TasksServer
  2206  	ctx context.Context
  2207  }
  2208  
  2209  func (s Dispatcher_TasksServerWrapper) Context() context.Context {
  2210  	return s.ctx
  2211  }
  2212  
  2213  func (p *raftProxyDispatcherServer) Tasks(r *TasksRequest, stream Dispatcher_TasksServer) error {
  2214  	ctx := stream.Context()
  2215  	conn, err := p.connSelector.LeaderConn(ctx)
  2216  	if err != nil {
  2217  		if err == raftselector.ErrIsLeader {
  2218  			ctx, err = p.runCtxMods(ctx, p.localCtxMods)
  2219  			if err != nil {
  2220  				return err
  2221  			}
  2222  			streamWrapper := Dispatcher_TasksServerWrapper{
  2223  				Dispatcher_TasksServer: stream,
  2224  				ctx:                    ctx,
  2225  			}
  2226  			return p.local.Tasks(r, streamWrapper)
  2227  		}
  2228  		return err
  2229  	}
  2230  	ctx, err = p.runCtxMods(ctx, p.remoteCtxMods)
  2231  	if err != nil {
  2232  		return err
  2233  	}
  2234  	clientStream, err := NewDispatcherClient(conn).Tasks(ctx, r)
  2235  
  2236  	if err != nil {
  2237  		return err
  2238  	}
  2239  
  2240  	for {
  2241  		msg, err := clientStream.Recv()
  2242  		if err == io.EOF {
  2243  			break
  2244  		}
  2245  		if err != nil {
  2246  			return err
  2247  		}
  2248  		if err := stream.Send(msg); err != nil {
  2249  			return err
  2250  		}
  2251  	}
  2252  	return nil
  2253  }
  2254  
  2255  type Dispatcher_AssignmentsServerWrapper struct {
  2256  	Dispatcher_AssignmentsServer
  2257  	ctx context.Context
  2258  }
  2259  
  2260  func (s Dispatcher_AssignmentsServerWrapper) Context() context.Context {
  2261  	return s.ctx
  2262  }
  2263  
  2264  func (p *raftProxyDispatcherServer) Assignments(r *AssignmentsRequest, stream Dispatcher_AssignmentsServer) error {
  2265  	ctx := stream.Context()
  2266  	conn, err := p.connSelector.LeaderConn(ctx)
  2267  	if err != nil {
  2268  		if err == raftselector.ErrIsLeader {
  2269  			ctx, err = p.runCtxMods(ctx, p.localCtxMods)
  2270  			if err != nil {
  2271  				return err
  2272  			}
  2273  			streamWrapper := Dispatcher_AssignmentsServerWrapper{
  2274  				Dispatcher_AssignmentsServer: stream,
  2275  				ctx:                          ctx,
  2276  			}
  2277  			return p.local.Assignments(r, streamWrapper)
  2278  		}
  2279  		return err
  2280  	}
  2281  	ctx, err = p.runCtxMods(ctx, p.remoteCtxMods)
  2282  	if err != nil {
  2283  		return err
  2284  	}
  2285  	clientStream, err := NewDispatcherClient(conn).Assignments(ctx, r)
  2286  
  2287  	if err != nil {
  2288  		return err
  2289  	}
  2290  
  2291  	for {
  2292  		msg, err := clientStream.Recv()
  2293  		if err == io.EOF {
  2294  			break
  2295  		}
  2296  		if err != nil {
  2297  			return err
  2298  		}
  2299  		if err := stream.Send(msg); err != nil {
  2300  			return err
  2301  		}
  2302  	}
  2303  	return nil
  2304  }
  2305  
  2306  func (m *SessionRequest) Size() (n int) {
  2307  	if m == nil {
  2308  		return 0
  2309  	}
  2310  	var l int
  2311  	_ = l
  2312  	if m.Description != nil {
  2313  		l = m.Description.Size()
  2314  		n += 1 + l + sovDispatcher(uint64(l))
  2315  	}
  2316  	l = len(m.SessionID)
  2317  	if l > 0 {
  2318  		n += 1 + l + sovDispatcher(uint64(l))
  2319  	}
  2320  	return n
  2321  }
  2322  
  2323  func (m *SessionMessage) Size() (n int) {
  2324  	if m == nil {
  2325  		return 0
  2326  	}
  2327  	var l int
  2328  	_ = l
  2329  	l = len(m.SessionID)
  2330  	if l > 0 {
  2331  		n += 1 + l + sovDispatcher(uint64(l))
  2332  	}
  2333  	if m.Node != nil {
  2334  		l = m.Node.Size()
  2335  		n += 1 + l + sovDispatcher(uint64(l))
  2336  	}
  2337  	if len(m.Managers) > 0 {
  2338  		for _, e := range m.Managers {
  2339  			l = e.Size()
  2340  			n += 1 + l + sovDispatcher(uint64(l))
  2341  		}
  2342  	}
  2343  	if len(m.NetworkBootstrapKeys) > 0 {
  2344  		for _, e := range m.NetworkBootstrapKeys {
  2345  			l = e.Size()
  2346  			n += 1 + l + sovDispatcher(uint64(l))
  2347  		}
  2348  	}
  2349  	l = len(m.RootCA)
  2350  	if l > 0 {
  2351  		n += 1 + l + sovDispatcher(uint64(l))
  2352  	}
  2353  	return n
  2354  }
  2355  
  2356  func (m *HeartbeatRequest) Size() (n int) {
  2357  	if m == nil {
  2358  		return 0
  2359  	}
  2360  	var l int
  2361  	_ = l
  2362  	l = len(m.SessionID)
  2363  	if l > 0 {
  2364  		n += 1 + l + sovDispatcher(uint64(l))
  2365  	}
  2366  	return n
  2367  }
  2368  
  2369  func (m *HeartbeatResponse) Size() (n int) {
  2370  	if m == nil {
  2371  		return 0
  2372  	}
  2373  	var l int
  2374  	_ = l
  2375  	l = github_com_gogo_protobuf_types.SizeOfStdDuration(m.Period)
  2376  	n += 1 + l + sovDispatcher(uint64(l))
  2377  	return n
  2378  }
  2379  
  2380  func (m *UpdateTaskStatusRequest) Size() (n int) {
  2381  	if m == nil {
  2382  		return 0
  2383  	}
  2384  	var l int
  2385  	_ = l
  2386  	l = len(m.SessionID)
  2387  	if l > 0 {
  2388  		n += 1 + l + sovDispatcher(uint64(l))
  2389  	}
  2390  	if len(m.Updates) > 0 {
  2391  		for _, e := range m.Updates {
  2392  			l = e.Size()
  2393  			n += 1 + l + sovDispatcher(uint64(l))
  2394  		}
  2395  	}
  2396  	return n
  2397  }
  2398  
  2399  func (m *UpdateTaskStatusRequest_TaskStatusUpdate) Size() (n int) {
  2400  	if m == nil {
  2401  		return 0
  2402  	}
  2403  	var l int
  2404  	_ = l
  2405  	l = len(m.TaskID)
  2406  	if l > 0 {
  2407  		n += 1 + l + sovDispatcher(uint64(l))
  2408  	}
  2409  	if m.Status != nil {
  2410  		l = m.Status.Size()
  2411  		n += 1 + l + sovDispatcher(uint64(l))
  2412  	}
  2413  	return n
  2414  }
  2415  
  2416  func (m *UpdateTaskStatusResponse) Size() (n int) {
  2417  	if m == nil {
  2418  		return 0
  2419  	}
  2420  	var l int
  2421  	_ = l
  2422  	return n
  2423  }
  2424  
  2425  func (m *TasksRequest) Size() (n int) {
  2426  	if m == nil {
  2427  		return 0
  2428  	}
  2429  	var l int
  2430  	_ = l
  2431  	l = len(m.SessionID)
  2432  	if l > 0 {
  2433  		n += 1 + l + sovDispatcher(uint64(l))
  2434  	}
  2435  	return n
  2436  }
  2437  
  2438  func (m *TasksMessage) Size() (n int) {
  2439  	if m == nil {
  2440  		return 0
  2441  	}
  2442  	var l int
  2443  	_ = l
  2444  	if len(m.Tasks) > 0 {
  2445  		for _, e := range m.Tasks {
  2446  			l = e.Size()
  2447  			n += 1 + l + sovDispatcher(uint64(l))
  2448  		}
  2449  	}
  2450  	return n
  2451  }
  2452  
  2453  func (m *AssignmentsRequest) Size() (n int) {
  2454  	if m == nil {
  2455  		return 0
  2456  	}
  2457  	var l int
  2458  	_ = l
  2459  	l = len(m.SessionID)
  2460  	if l > 0 {
  2461  		n += 1 + l + sovDispatcher(uint64(l))
  2462  	}
  2463  	return n
  2464  }
  2465  
  2466  func (m *Assignment) Size() (n int) {
  2467  	if m == nil {
  2468  		return 0
  2469  	}
  2470  	var l int
  2471  	_ = l
  2472  	if m.Item != nil {
  2473  		n += m.Item.Size()
  2474  	}
  2475  	return n
  2476  }
  2477  
  2478  func (m *Assignment_Task) Size() (n int) {
  2479  	if m == nil {
  2480  		return 0
  2481  	}
  2482  	var l int
  2483  	_ = l
  2484  	if m.Task != nil {
  2485  		l = m.Task.Size()
  2486  		n += 1 + l + sovDispatcher(uint64(l))
  2487  	}
  2488  	return n
  2489  }
  2490  func (m *Assignment_Secret) Size() (n int) {
  2491  	if m == nil {
  2492  		return 0
  2493  	}
  2494  	var l int
  2495  	_ = l
  2496  	if m.Secret != nil {
  2497  		l = m.Secret.Size()
  2498  		n += 1 + l + sovDispatcher(uint64(l))
  2499  	}
  2500  	return n
  2501  }
  2502  func (m *Assignment_Config) Size() (n int) {
  2503  	if m == nil {
  2504  		return 0
  2505  	}
  2506  	var l int
  2507  	_ = l
  2508  	if m.Config != nil {
  2509  		l = m.Config.Size()
  2510  		n += 1 + l + sovDispatcher(uint64(l))
  2511  	}
  2512  	return n
  2513  }
  2514  func (m *AssignmentChange) Size() (n int) {
  2515  	if m == nil {
  2516  		return 0
  2517  	}
  2518  	var l int
  2519  	_ = l
  2520  	if m.Assignment != nil {
  2521  		l = m.Assignment.Size()
  2522  		n += 1 + l + sovDispatcher(uint64(l))
  2523  	}
  2524  	if m.Action != 0 {
  2525  		n += 1 + sovDispatcher(uint64(m.Action))
  2526  	}
  2527  	return n
  2528  }
  2529  
  2530  func (m *AssignmentsMessage) Size() (n int) {
  2531  	if m == nil {
  2532  		return 0
  2533  	}
  2534  	var l int
  2535  	_ = l
  2536  	if m.Type != 0 {
  2537  		n += 1 + sovDispatcher(uint64(m.Type))
  2538  	}
  2539  	l = len(m.AppliesTo)
  2540  	if l > 0 {
  2541  		n += 1 + l + sovDispatcher(uint64(l))
  2542  	}
  2543  	l = len(m.ResultsIn)
  2544  	if l > 0 {
  2545  		n += 1 + l + sovDispatcher(uint64(l))
  2546  	}
  2547  	if len(m.Changes) > 0 {
  2548  		for _, e := range m.Changes {
  2549  			l = e.Size()
  2550  			n += 1 + l + sovDispatcher(uint64(l))
  2551  		}
  2552  	}
  2553  	return n
  2554  }
  2555  
  2556  func sovDispatcher(x uint64) (n int) {
  2557  	for {
  2558  		n++
  2559  		x >>= 7
  2560  		if x == 0 {
  2561  			break
  2562  		}
  2563  	}
  2564  	return n
  2565  }
  2566  func sozDispatcher(x uint64) (n int) {
  2567  	return sovDispatcher(uint64((x << 1) ^ uint64((int64(x) >> 63))))
  2568  }
  2569  func (this *SessionRequest) String() string {
  2570  	if this == nil {
  2571  		return "nil"
  2572  	}
  2573  	s := strings.Join([]string{`&SessionRequest{`,
  2574  		`Description:` + strings.Replace(fmt.Sprintf("%v", this.Description), "NodeDescription", "NodeDescription", 1) + `,`,
  2575  		`SessionID:` + fmt.Sprintf("%v", this.SessionID) + `,`,
  2576  		`}`,
  2577  	}, "")
  2578  	return s
  2579  }
  2580  func (this *SessionMessage) String() string {
  2581  	if this == nil {
  2582  		return "nil"
  2583  	}
  2584  	s := strings.Join([]string{`&SessionMessage{`,
  2585  		`SessionID:` + fmt.Sprintf("%v", this.SessionID) + `,`,
  2586  		`Node:` + strings.Replace(fmt.Sprintf("%v", this.Node), "Node", "Node", 1) + `,`,
  2587  		`Managers:` + strings.Replace(fmt.Sprintf("%v", this.Managers), "WeightedPeer", "WeightedPeer", 1) + `,`,
  2588  		`NetworkBootstrapKeys:` + strings.Replace(fmt.Sprintf("%v", this.NetworkBootstrapKeys), "EncryptionKey", "EncryptionKey", 1) + `,`,
  2589  		`RootCA:` + fmt.Sprintf("%v", this.RootCA) + `,`,
  2590  		`}`,
  2591  	}, "")
  2592  	return s
  2593  }
  2594  func (this *HeartbeatRequest) String() string {
  2595  	if this == nil {
  2596  		return "nil"
  2597  	}
  2598  	s := strings.Join([]string{`&HeartbeatRequest{`,
  2599  		`SessionID:` + fmt.Sprintf("%v", this.SessionID) + `,`,
  2600  		`}`,
  2601  	}, "")
  2602  	return s
  2603  }
  2604  func (this *HeartbeatResponse) String() string {
  2605  	if this == nil {
  2606  		return "nil"
  2607  	}
  2608  	s := strings.Join([]string{`&HeartbeatResponse{`,
  2609  		`Period:` + strings.Replace(strings.Replace(this.Period.String(), "Duration", "types.Duration", 1), `&`, ``, 1) + `,`,
  2610  		`}`,
  2611  	}, "")
  2612  	return s
  2613  }
  2614  func (this *UpdateTaskStatusRequest) String() string {
  2615  	if this == nil {
  2616  		return "nil"
  2617  	}
  2618  	s := strings.Join([]string{`&UpdateTaskStatusRequest{`,
  2619  		`SessionID:` + fmt.Sprintf("%v", this.SessionID) + `,`,
  2620  		`Updates:` + strings.Replace(fmt.Sprintf("%v", this.Updates), "UpdateTaskStatusRequest_TaskStatusUpdate", "UpdateTaskStatusRequest_TaskStatusUpdate", 1) + `,`,
  2621  		`}`,
  2622  	}, "")
  2623  	return s
  2624  }
  2625  func (this *UpdateTaskStatusRequest_TaskStatusUpdate) String() string {
  2626  	if this == nil {
  2627  		return "nil"
  2628  	}
  2629  	s := strings.Join([]string{`&UpdateTaskStatusRequest_TaskStatusUpdate{`,
  2630  		`TaskID:` + fmt.Sprintf("%v", this.TaskID) + `,`,
  2631  		`Status:` + strings.Replace(fmt.Sprintf("%v", this.Status), "TaskStatus", "TaskStatus", 1) + `,`,
  2632  		`}`,
  2633  	}, "")
  2634  	return s
  2635  }
  2636  func (this *UpdateTaskStatusResponse) String() string {
  2637  	if this == nil {
  2638  		return "nil"
  2639  	}
  2640  	s := strings.Join([]string{`&UpdateTaskStatusResponse{`,
  2641  		`}`,
  2642  	}, "")
  2643  	return s
  2644  }
  2645  func (this *TasksRequest) String() string {
  2646  	if this == nil {
  2647  		return "nil"
  2648  	}
  2649  	s := strings.Join([]string{`&TasksRequest{`,
  2650  		`SessionID:` + fmt.Sprintf("%v", this.SessionID) + `,`,
  2651  		`}`,
  2652  	}, "")
  2653  	return s
  2654  }
  2655  func (this *TasksMessage) String() string {
  2656  	if this == nil {
  2657  		return "nil"
  2658  	}
  2659  	s := strings.Join([]string{`&TasksMessage{`,
  2660  		`Tasks:` + strings.Replace(fmt.Sprintf("%v", this.Tasks), "Task", "Task", 1) + `,`,
  2661  		`}`,
  2662  	}, "")
  2663  	return s
  2664  }
  2665  func (this *AssignmentsRequest) String() string {
  2666  	if this == nil {
  2667  		return "nil"
  2668  	}
  2669  	s := strings.Join([]string{`&AssignmentsRequest{`,
  2670  		`SessionID:` + fmt.Sprintf("%v", this.SessionID) + `,`,
  2671  		`}`,
  2672  	}, "")
  2673  	return s
  2674  }
  2675  func (this *Assignment) String() string {
  2676  	if this == nil {
  2677  		return "nil"
  2678  	}
  2679  	s := strings.Join([]string{`&Assignment{`,
  2680  		`Item:` + fmt.Sprintf("%v", this.Item) + `,`,
  2681  		`}`,
  2682  	}, "")
  2683  	return s
  2684  }
  2685  func (this *Assignment_Task) String() string {
  2686  	if this == nil {
  2687  		return "nil"
  2688  	}
  2689  	s := strings.Join([]string{`&Assignment_Task{`,
  2690  		`Task:` + strings.Replace(fmt.Sprintf("%v", this.Task), "Task", "Task", 1) + `,`,
  2691  		`}`,
  2692  	}, "")
  2693  	return s
  2694  }
  2695  func (this *Assignment_Secret) String() string {
  2696  	if this == nil {
  2697  		return "nil"
  2698  	}
  2699  	s := strings.Join([]string{`&Assignment_Secret{`,
  2700  		`Secret:` + strings.Replace(fmt.Sprintf("%v", this.Secret), "Secret", "Secret", 1) + `,`,
  2701  		`}`,
  2702  	}, "")
  2703  	return s
  2704  }
  2705  func (this *Assignment_Config) String() string {
  2706  	if this == nil {
  2707  		return "nil"
  2708  	}
  2709  	s := strings.Join([]string{`&Assignment_Config{`,
  2710  		`Config:` + strings.Replace(fmt.Sprintf("%v", this.Config), "Config", "Config", 1) + `,`,
  2711  		`}`,
  2712  	}, "")
  2713  	return s
  2714  }
  2715  func (this *AssignmentChange) String() string {
  2716  	if this == nil {
  2717  		return "nil"
  2718  	}
  2719  	s := strings.Join([]string{`&AssignmentChange{`,
  2720  		`Assignment:` + strings.Replace(fmt.Sprintf("%v", this.Assignment), "Assignment", "Assignment", 1) + `,`,
  2721  		`Action:` + fmt.Sprintf("%v", this.Action) + `,`,
  2722  		`}`,
  2723  	}, "")
  2724  	return s
  2725  }
  2726  func (this *AssignmentsMessage) String() string {
  2727  	if this == nil {
  2728  		return "nil"
  2729  	}
  2730  	s := strings.Join([]string{`&AssignmentsMessage{`,
  2731  		`Type:` + fmt.Sprintf("%v", this.Type) + `,`,
  2732  		`AppliesTo:` + fmt.Sprintf("%v", this.AppliesTo) + `,`,
  2733  		`ResultsIn:` + fmt.Sprintf("%v", this.ResultsIn) + `,`,
  2734  		`Changes:` + strings.Replace(fmt.Sprintf("%v", this.Changes), "AssignmentChange", "AssignmentChange", 1) + `,`,
  2735  		`}`,
  2736  	}, "")
  2737  	return s
  2738  }
  2739  func valueToStringDispatcher(v interface{}) string {
  2740  	rv := reflect.ValueOf(v)
  2741  	if rv.IsNil() {
  2742  		return "nil"
  2743  	}
  2744  	pv := reflect.Indirect(rv).Interface()
  2745  	return fmt.Sprintf("*%v", pv)
  2746  }
  2747  func (m *SessionRequest) Unmarshal(dAtA []byte) error {
  2748  	l := len(dAtA)
  2749  	iNdEx := 0
  2750  	for iNdEx < l {
  2751  		preIndex := iNdEx
  2752  		var wire uint64
  2753  		for shift := uint(0); ; shift += 7 {
  2754  			if shift >= 64 {
  2755  				return ErrIntOverflowDispatcher
  2756  			}
  2757  			if iNdEx >= l {
  2758  				return io.ErrUnexpectedEOF
  2759  			}
  2760  			b := dAtA[iNdEx]
  2761  			iNdEx++
  2762  			wire |= uint64(b&0x7F) << shift
  2763  			if b < 0x80 {
  2764  				break
  2765  			}
  2766  		}
  2767  		fieldNum := int32(wire >> 3)
  2768  		wireType := int(wire & 0x7)
  2769  		if wireType == 4 {
  2770  			return fmt.Errorf("proto: SessionRequest: wiretype end group for non-group")
  2771  		}
  2772  		if fieldNum <= 0 {
  2773  			return fmt.Errorf("proto: SessionRequest: illegal tag %d (wire type %d)", fieldNum, wire)
  2774  		}
  2775  		switch fieldNum {
  2776  		case 1:
  2777  			if wireType != 2 {
  2778  				return fmt.Errorf("proto: wrong wireType = %d for field Description", wireType)
  2779  			}
  2780  			var msglen int
  2781  			for shift := uint(0); ; shift += 7 {
  2782  				if shift >= 64 {
  2783  					return ErrIntOverflowDispatcher
  2784  				}
  2785  				if iNdEx >= l {
  2786  					return io.ErrUnexpectedEOF
  2787  				}
  2788  				b := dAtA[iNdEx]
  2789  				iNdEx++
  2790  				msglen |= int(b&0x7F) << shift
  2791  				if b < 0x80 {
  2792  					break
  2793  				}
  2794  			}
  2795  			if msglen < 0 {
  2796  				return ErrInvalidLengthDispatcher
  2797  			}
  2798  			postIndex := iNdEx + msglen
  2799  			if postIndex < 0 {
  2800  				return ErrInvalidLengthDispatcher
  2801  			}
  2802  			if postIndex > l {
  2803  				return io.ErrUnexpectedEOF
  2804  			}
  2805  			if m.Description == nil {
  2806  				m.Description = &NodeDescription{}
  2807  			}
  2808  			if err := m.Description.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
  2809  				return err
  2810  			}
  2811  			iNdEx = postIndex
  2812  		case 2:
  2813  			if wireType != 2 {
  2814  				return fmt.Errorf("proto: wrong wireType = %d for field SessionID", wireType)
  2815  			}
  2816  			var stringLen uint64
  2817  			for shift := uint(0); ; shift += 7 {
  2818  				if shift >= 64 {
  2819  					return ErrIntOverflowDispatcher
  2820  				}
  2821  				if iNdEx >= l {
  2822  					return io.ErrUnexpectedEOF
  2823  				}
  2824  				b := dAtA[iNdEx]
  2825  				iNdEx++
  2826  				stringLen |= uint64(b&0x7F) << shift
  2827  				if b < 0x80 {
  2828  					break
  2829  				}
  2830  			}
  2831  			intStringLen := int(stringLen)
  2832  			if intStringLen < 0 {
  2833  				return ErrInvalidLengthDispatcher
  2834  			}
  2835  			postIndex := iNdEx + intStringLen
  2836  			if postIndex < 0 {
  2837  				return ErrInvalidLengthDispatcher
  2838  			}
  2839  			if postIndex > l {
  2840  				return io.ErrUnexpectedEOF
  2841  			}
  2842  			m.SessionID = string(dAtA[iNdEx:postIndex])
  2843  			iNdEx = postIndex
  2844  		default:
  2845  			iNdEx = preIndex
  2846  			skippy, err := skipDispatcher(dAtA[iNdEx:])
  2847  			if err != nil {
  2848  				return err
  2849  			}
  2850  			if skippy < 0 {
  2851  				return ErrInvalidLengthDispatcher
  2852  			}
  2853  			if (iNdEx + skippy) < 0 {
  2854  				return ErrInvalidLengthDispatcher
  2855  			}
  2856  			if (iNdEx + skippy) > l {
  2857  				return io.ErrUnexpectedEOF
  2858  			}
  2859  			iNdEx += skippy
  2860  		}
  2861  	}
  2862  
  2863  	if iNdEx > l {
  2864  		return io.ErrUnexpectedEOF
  2865  	}
  2866  	return nil
  2867  }
  2868  func (m *SessionMessage) Unmarshal(dAtA []byte) error {
  2869  	l := len(dAtA)
  2870  	iNdEx := 0
  2871  	for iNdEx < l {
  2872  		preIndex := iNdEx
  2873  		var wire uint64
  2874  		for shift := uint(0); ; shift += 7 {
  2875  			if shift >= 64 {
  2876  				return ErrIntOverflowDispatcher
  2877  			}
  2878  			if iNdEx >= l {
  2879  				return io.ErrUnexpectedEOF
  2880  			}
  2881  			b := dAtA[iNdEx]
  2882  			iNdEx++
  2883  			wire |= uint64(b&0x7F) << shift
  2884  			if b < 0x80 {
  2885  				break
  2886  			}
  2887  		}
  2888  		fieldNum := int32(wire >> 3)
  2889  		wireType := int(wire & 0x7)
  2890  		if wireType == 4 {
  2891  			return fmt.Errorf("proto: SessionMessage: wiretype end group for non-group")
  2892  		}
  2893  		if fieldNum <= 0 {
  2894  			return fmt.Errorf("proto: SessionMessage: illegal tag %d (wire type %d)", fieldNum, wire)
  2895  		}
  2896  		switch fieldNum {
  2897  		case 1:
  2898  			if wireType != 2 {
  2899  				return fmt.Errorf("proto: wrong wireType = %d for field SessionID", wireType)
  2900  			}
  2901  			var stringLen uint64
  2902  			for shift := uint(0); ; shift += 7 {
  2903  				if shift >= 64 {
  2904  					return ErrIntOverflowDispatcher
  2905  				}
  2906  				if iNdEx >= l {
  2907  					return io.ErrUnexpectedEOF
  2908  				}
  2909  				b := dAtA[iNdEx]
  2910  				iNdEx++
  2911  				stringLen |= uint64(b&0x7F) << shift
  2912  				if b < 0x80 {
  2913  					break
  2914  				}
  2915  			}
  2916  			intStringLen := int(stringLen)
  2917  			if intStringLen < 0 {
  2918  				return ErrInvalidLengthDispatcher
  2919  			}
  2920  			postIndex := iNdEx + intStringLen
  2921  			if postIndex < 0 {
  2922  				return ErrInvalidLengthDispatcher
  2923  			}
  2924  			if postIndex > l {
  2925  				return io.ErrUnexpectedEOF
  2926  			}
  2927  			m.SessionID = string(dAtA[iNdEx:postIndex])
  2928  			iNdEx = postIndex
  2929  		case 2:
  2930  			if wireType != 2 {
  2931  				return fmt.Errorf("proto: wrong wireType = %d for field Node", wireType)
  2932  			}
  2933  			var msglen int
  2934  			for shift := uint(0); ; shift += 7 {
  2935  				if shift >= 64 {
  2936  					return ErrIntOverflowDispatcher
  2937  				}
  2938  				if iNdEx >= l {
  2939  					return io.ErrUnexpectedEOF
  2940  				}
  2941  				b := dAtA[iNdEx]
  2942  				iNdEx++
  2943  				msglen |= int(b&0x7F) << shift
  2944  				if b < 0x80 {
  2945  					break
  2946  				}
  2947  			}
  2948  			if msglen < 0 {
  2949  				return ErrInvalidLengthDispatcher
  2950  			}
  2951  			postIndex := iNdEx + msglen
  2952  			if postIndex < 0 {
  2953  				return ErrInvalidLengthDispatcher
  2954  			}
  2955  			if postIndex > l {
  2956  				return io.ErrUnexpectedEOF
  2957  			}
  2958  			if m.Node == nil {
  2959  				m.Node = &Node{}
  2960  			}
  2961  			if err := m.Node.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
  2962  				return err
  2963  			}
  2964  			iNdEx = postIndex
  2965  		case 3:
  2966  			if wireType != 2 {
  2967  				return fmt.Errorf("proto: wrong wireType = %d for field Managers", wireType)
  2968  			}
  2969  			var msglen int
  2970  			for shift := uint(0); ; shift += 7 {
  2971  				if shift >= 64 {
  2972  					return ErrIntOverflowDispatcher
  2973  				}
  2974  				if iNdEx >= l {
  2975  					return io.ErrUnexpectedEOF
  2976  				}
  2977  				b := dAtA[iNdEx]
  2978  				iNdEx++
  2979  				msglen |= int(b&0x7F) << shift
  2980  				if b < 0x80 {
  2981  					break
  2982  				}
  2983  			}
  2984  			if msglen < 0 {
  2985  				return ErrInvalidLengthDispatcher
  2986  			}
  2987  			postIndex := iNdEx + msglen
  2988  			if postIndex < 0 {
  2989  				return ErrInvalidLengthDispatcher
  2990  			}
  2991  			if postIndex > l {
  2992  				return io.ErrUnexpectedEOF
  2993  			}
  2994  			m.Managers = append(m.Managers, &WeightedPeer{})
  2995  			if err := m.Managers[len(m.Managers)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
  2996  				return err
  2997  			}
  2998  			iNdEx = postIndex
  2999  		case 4:
  3000  			if wireType != 2 {
  3001  				return fmt.Errorf("proto: wrong wireType = %d for field NetworkBootstrapKeys", wireType)
  3002  			}
  3003  			var msglen int
  3004  			for shift := uint(0); ; shift += 7 {
  3005  				if shift >= 64 {
  3006  					return ErrIntOverflowDispatcher
  3007  				}
  3008  				if iNdEx >= l {
  3009  					return io.ErrUnexpectedEOF
  3010  				}
  3011  				b := dAtA[iNdEx]
  3012  				iNdEx++
  3013  				msglen |= int(b&0x7F) << shift
  3014  				if b < 0x80 {
  3015  					break
  3016  				}
  3017  			}
  3018  			if msglen < 0 {
  3019  				return ErrInvalidLengthDispatcher
  3020  			}
  3021  			postIndex := iNdEx + msglen
  3022  			if postIndex < 0 {
  3023  				return ErrInvalidLengthDispatcher
  3024  			}
  3025  			if postIndex > l {
  3026  				return io.ErrUnexpectedEOF
  3027  			}
  3028  			m.NetworkBootstrapKeys = append(m.NetworkBootstrapKeys, &EncryptionKey{})
  3029  			if err := m.NetworkBootstrapKeys[len(m.NetworkBootstrapKeys)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
  3030  				return err
  3031  			}
  3032  			iNdEx = postIndex
  3033  		case 5:
  3034  			if wireType != 2 {
  3035  				return fmt.Errorf("proto: wrong wireType = %d for field RootCA", wireType)
  3036  			}
  3037  			var byteLen int
  3038  			for shift := uint(0); ; shift += 7 {
  3039  				if shift >= 64 {
  3040  					return ErrIntOverflowDispatcher
  3041  				}
  3042  				if iNdEx >= l {
  3043  					return io.ErrUnexpectedEOF
  3044  				}
  3045  				b := dAtA[iNdEx]
  3046  				iNdEx++
  3047  				byteLen |= int(b&0x7F) << shift
  3048  				if b < 0x80 {
  3049  					break
  3050  				}
  3051  			}
  3052  			if byteLen < 0 {
  3053  				return ErrInvalidLengthDispatcher
  3054  			}
  3055  			postIndex := iNdEx + byteLen
  3056  			if postIndex < 0 {
  3057  				return ErrInvalidLengthDispatcher
  3058  			}
  3059  			if postIndex > l {
  3060  				return io.ErrUnexpectedEOF
  3061  			}
  3062  			m.RootCA = append(m.RootCA[:0], dAtA[iNdEx:postIndex]...)
  3063  			if m.RootCA == nil {
  3064  				m.RootCA = []byte{}
  3065  			}
  3066  			iNdEx = postIndex
  3067  		default:
  3068  			iNdEx = preIndex
  3069  			skippy, err := skipDispatcher(dAtA[iNdEx:])
  3070  			if err != nil {
  3071  				return err
  3072  			}
  3073  			if skippy < 0 {
  3074  				return ErrInvalidLengthDispatcher
  3075  			}
  3076  			if (iNdEx + skippy) < 0 {
  3077  				return ErrInvalidLengthDispatcher
  3078  			}
  3079  			if (iNdEx + skippy) > l {
  3080  				return io.ErrUnexpectedEOF
  3081  			}
  3082  			iNdEx += skippy
  3083  		}
  3084  	}
  3085  
  3086  	if iNdEx > l {
  3087  		return io.ErrUnexpectedEOF
  3088  	}
  3089  	return nil
  3090  }
  3091  func (m *HeartbeatRequest) Unmarshal(dAtA []byte) error {
  3092  	l := len(dAtA)
  3093  	iNdEx := 0
  3094  	for iNdEx < l {
  3095  		preIndex := iNdEx
  3096  		var wire uint64
  3097  		for shift := uint(0); ; shift += 7 {
  3098  			if shift >= 64 {
  3099  				return ErrIntOverflowDispatcher
  3100  			}
  3101  			if iNdEx >= l {
  3102  				return io.ErrUnexpectedEOF
  3103  			}
  3104  			b := dAtA[iNdEx]
  3105  			iNdEx++
  3106  			wire |= uint64(b&0x7F) << shift
  3107  			if b < 0x80 {
  3108  				break
  3109  			}
  3110  		}
  3111  		fieldNum := int32(wire >> 3)
  3112  		wireType := int(wire & 0x7)
  3113  		if wireType == 4 {
  3114  			return fmt.Errorf("proto: HeartbeatRequest: wiretype end group for non-group")
  3115  		}
  3116  		if fieldNum <= 0 {
  3117  			return fmt.Errorf("proto: HeartbeatRequest: illegal tag %d (wire type %d)", fieldNum, wire)
  3118  		}
  3119  		switch fieldNum {
  3120  		case 1:
  3121  			if wireType != 2 {
  3122  				return fmt.Errorf("proto: wrong wireType = %d for field SessionID", wireType)
  3123  			}
  3124  			var stringLen uint64
  3125  			for shift := uint(0); ; shift += 7 {
  3126  				if shift >= 64 {
  3127  					return ErrIntOverflowDispatcher
  3128  				}
  3129  				if iNdEx >= l {
  3130  					return io.ErrUnexpectedEOF
  3131  				}
  3132  				b := dAtA[iNdEx]
  3133  				iNdEx++
  3134  				stringLen |= uint64(b&0x7F) << shift
  3135  				if b < 0x80 {
  3136  					break
  3137  				}
  3138  			}
  3139  			intStringLen := int(stringLen)
  3140  			if intStringLen < 0 {
  3141  				return ErrInvalidLengthDispatcher
  3142  			}
  3143  			postIndex := iNdEx + intStringLen
  3144  			if postIndex < 0 {
  3145  				return ErrInvalidLengthDispatcher
  3146  			}
  3147  			if postIndex > l {
  3148  				return io.ErrUnexpectedEOF
  3149  			}
  3150  			m.SessionID = string(dAtA[iNdEx:postIndex])
  3151  			iNdEx = postIndex
  3152  		default:
  3153  			iNdEx = preIndex
  3154  			skippy, err := skipDispatcher(dAtA[iNdEx:])
  3155  			if err != nil {
  3156  				return err
  3157  			}
  3158  			if skippy < 0 {
  3159  				return ErrInvalidLengthDispatcher
  3160  			}
  3161  			if (iNdEx + skippy) < 0 {
  3162  				return ErrInvalidLengthDispatcher
  3163  			}
  3164  			if (iNdEx + skippy) > l {
  3165  				return io.ErrUnexpectedEOF
  3166  			}
  3167  			iNdEx += skippy
  3168  		}
  3169  	}
  3170  
  3171  	if iNdEx > l {
  3172  		return io.ErrUnexpectedEOF
  3173  	}
  3174  	return nil
  3175  }
  3176  func (m *HeartbeatResponse) Unmarshal(dAtA []byte) error {
  3177  	l := len(dAtA)
  3178  	iNdEx := 0
  3179  	for iNdEx < l {
  3180  		preIndex := iNdEx
  3181  		var wire uint64
  3182  		for shift := uint(0); ; shift += 7 {
  3183  			if shift >= 64 {
  3184  				return ErrIntOverflowDispatcher
  3185  			}
  3186  			if iNdEx >= l {
  3187  				return io.ErrUnexpectedEOF
  3188  			}
  3189  			b := dAtA[iNdEx]
  3190  			iNdEx++
  3191  			wire |= uint64(b&0x7F) << shift
  3192  			if b < 0x80 {
  3193  				break
  3194  			}
  3195  		}
  3196  		fieldNum := int32(wire >> 3)
  3197  		wireType := int(wire & 0x7)
  3198  		if wireType == 4 {
  3199  			return fmt.Errorf("proto: HeartbeatResponse: wiretype end group for non-group")
  3200  		}
  3201  		if fieldNum <= 0 {
  3202  			return fmt.Errorf("proto: HeartbeatResponse: illegal tag %d (wire type %d)", fieldNum, wire)
  3203  		}
  3204  		switch fieldNum {
  3205  		case 1:
  3206  			if wireType != 2 {
  3207  				return fmt.Errorf("proto: wrong wireType = %d for field Period", wireType)
  3208  			}
  3209  			var msglen int
  3210  			for shift := uint(0); ; shift += 7 {
  3211  				if shift >= 64 {
  3212  					return ErrIntOverflowDispatcher
  3213  				}
  3214  				if iNdEx >= l {
  3215  					return io.ErrUnexpectedEOF
  3216  				}
  3217  				b := dAtA[iNdEx]
  3218  				iNdEx++
  3219  				msglen |= int(b&0x7F) << shift
  3220  				if b < 0x80 {
  3221  					break
  3222  				}
  3223  			}
  3224  			if msglen < 0 {
  3225  				return ErrInvalidLengthDispatcher
  3226  			}
  3227  			postIndex := iNdEx + msglen
  3228  			if postIndex < 0 {
  3229  				return ErrInvalidLengthDispatcher
  3230  			}
  3231  			if postIndex > l {
  3232  				return io.ErrUnexpectedEOF
  3233  			}
  3234  			if err := github_com_gogo_protobuf_types.StdDurationUnmarshal(&m.Period, dAtA[iNdEx:postIndex]); err != nil {
  3235  				return err
  3236  			}
  3237  			iNdEx = postIndex
  3238  		default:
  3239  			iNdEx = preIndex
  3240  			skippy, err := skipDispatcher(dAtA[iNdEx:])
  3241  			if err != nil {
  3242  				return err
  3243  			}
  3244  			if skippy < 0 {
  3245  				return ErrInvalidLengthDispatcher
  3246  			}
  3247  			if (iNdEx + skippy) < 0 {
  3248  				return ErrInvalidLengthDispatcher
  3249  			}
  3250  			if (iNdEx + skippy) > l {
  3251  				return io.ErrUnexpectedEOF
  3252  			}
  3253  			iNdEx += skippy
  3254  		}
  3255  	}
  3256  
  3257  	if iNdEx > l {
  3258  		return io.ErrUnexpectedEOF
  3259  	}
  3260  	return nil
  3261  }
  3262  func (m *UpdateTaskStatusRequest) Unmarshal(dAtA []byte) error {
  3263  	l := len(dAtA)
  3264  	iNdEx := 0
  3265  	for iNdEx < l {
  3266  		preIndex := iNdEx
  3267  		var wire uint64
  3268  		for shift := uint(0); ; shift += 7 {
  3269  			if shift >= 64 {
  3270  				return ErrIntOverflowDispatcher
  3271  			}
  3272  			if iNdEx >= l {
  3273  				return io.ErrUnexpectedEOF
  3274  			}
  3275  			b := dAtA[iNdEx]
  3276  			iNdEx++
  3277  			wire |= uint64(b&0x7F) << shift
  3278  			if b < 0x80 {
  3279  				break
  3280  			}
  3281  		}
  3282  		fieldNum := int32(wire >> 3)
  3283  		wireType := int(wire & 0x7)
  3284  		if wireType == 4 {
  3285  			return fmt.Errorf("proto: UpdateTaskStatusRequest: wiretype end group for non-group")
  3286  		}
  3287  		if fieldNum <= 0 {
  3288  			return fmt.Errorf("proto: UpdateTaskStatusRequest: illegal tag %d (wire type %d)", fieldNum, wire)
  3289  		}
  3290  		switch fieldNum {
  3291  		case 1:
  3292  			if wireType != 2 {
  3293  				return fmt.Errorf("proto: wrong wireType = %d for field SessionID", wireType)
  3294  			}
  3295  			var stringLen uint64
  3296  			for shift := uint(0); ; shift += 7 {
  3297  				if shift >= 64 {
  3298  					return ErrIntOverflowDispatcher
  3299  				}
  3300  				if iNdEx >= l {
  3301  					return io.ErrUnexpectedEOF
  3302  				}
  3303  				b := dAtA[iNdEx]
  3304  				iNdEx++
  3305  				stringLen |= uint64(b&0x7F) << shift
  3306  				if b < 0x80 {
  3307  					break
  3308  				}
  3309  			}
  3310  			intStringLen := int(stringLen)
  3311  			if intStringLen < 0 {
  3312  				return ErrInvalidLengthDispatcher
  3313  			}
  3314  			postIndex := iNdEx + intStringLen
  3315  			if postIndex < 0 {
  3316  				return ErrInvalidLengthDispatcher
  3317  			}
  3318  			if postIndex > l {
  3319  				return io.ErrUnexpectedEOF
  3320  			}
  3321  			m.SessionID = string(dAtA[iNdEx:postIndex])
  3322  			iNdEx = postIndex
  3323  		case 3:
  3324  			if wireType != 2 {
  3325  				return fmt.Errorf("proto: wrong wireType = %d for field Updates", wireType)
  3326  			}
  3327  			var msglen int
  3328  			for shift := uint(0); ; shift += 7 {
  3329  				if shift >= 64 {
  3330  					return ErrIntOverflowDispatcher
  3331  				}
  3332  				if iNdEx >= l {
  3333  					return io.ErrUnexpectedEOF
  3334  				}
  3335  				b := dAtA[iNdEx]
  3336  				iNdEx++
  3337  				msglen |= int(b&0x7F) << shift
  3338  				if b < 0x80 {
  3339  					break
  3340  				}
  3341  			}
  3342  			if msglen < 0 {
  3343  				return ErrInvalidLengthDispatcher
  3344  			}
  3345  			postIndex := iNdEx + msglen
  3346  			if postIndex < 0 {
  3347  				return ErrInvalidLengthDispatcher
  3348  			}
  3349  			if postIndex > l {
  3350  				return io.ErrUnexpectedEOF
  3351  			}
  3352  			m.Updates = append(m.Updates, &UpdateTaskStatusRequest_TaskStatusUpdate{})
  3353  			if err := m.Updates[len(m.Updates)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
  3354  				return err
  3355  			}
  3356  			iNdEx = postIndex
  3357  		default:
  3358  			iNdEx = preIndex
  3359  			skippy, err := skipDispatcher(dAtA[iNdEx:])
  3360  			if err != nil {
  3361  				return err
  3362  			}
  3363  			if skippy < 0 {
  3364  				return ErrInvalidLengthDispatcher
  3365  			}
  3366  			if (iNdEx + skippy) < 0 {
  3367  				return ErrInvalidLengthDispatcher
  3368  			}
  3369  			if (iNdEx + skippy) > l {
  3370  				return io.ErrUnexpectedEOF
  3371  			}
  3372  			iNdEx += skippy
  3373  		}
  3374  	}
  3375  
  3376  	if iNdEx > l {
  3377  		return io.ErrUnexpectedEOF
  3378  	}
  3379  	return nil
  3380  }
  3381  func (m *UpdateTaskStatusRequest_TaskStatusUpdate) Unmarshal(dAtA []byte) error {
  3382  	l := len(dAtA)
  3383  	iNdEx := 0
  3384  	for iNdEx < l {
  3385  		preIndex := iNdEx
  3386  		var wire uint64
  3387  		for shift := uint(0); ; shift += 7 {
  3388  			if shift >= 64 {
  3389  				return ErrIntOverflowDispatcher
  3390  			}
  3391  			if iNdEx >= l {
  3392  				return io.ErrUnexpectedEOF
  3393  			}
  3394  			b := dAtA[iNdEx]
  3395  			iNdEx++
  3396  			wire |= uint64(b&0x7F) << shift
  3397  			if b < 0x80 {
  3398  				break
  3399  			}
  3400  		}
  3401  		fieldNum := int32(wire >> 3)
  3402  		wireType := int(wire & 0x7)
  3403  		if wireType == 4 {
  3404  			return fmt.Errorf("proto: TaskStatusUpdate: wiretype end group for non-group")
  3405  		}
  3406  		if fieldNum <= 0 {
  3407  			return fmt.Errorf("proto: TaskStatusUpdate: illegal tag %d (wire type %d)", fieldNum, wire)
  3408  		}
  3409  		switch fieldNum {
  3410  		case 1:
  3411  			if wireType != 2 {
  3412  				return fmt.Errorf("proto: wrong wireType = %d for field TaskID", wireType)
  3413  			}
  3414  			var stringLen uint64
  3415  			for shift := uint(0); ; shift += 7 {
  3416  				if shift >= 64 {
  3417  					return ErrIntOverflowDispatcher
  3418  				}
  3419  				if iNdEx >= l {
  3420  					return io.ErrUnexpectedEOF
  3421  				}
  3422  				b := dAtA[iNdEx]
  3423  				iNdEx++
  3424  				stringLen |= uint64(b&0x7F) << shift
  3425  				if b < 0x80 {
  3426  					break
  3427  				}
  3428  			}
  3429  			intStringLen := int(stringLen)
  3430  			if intStringLen < 0 {
  3431  				return ErrInvalidLengthDispatcher
  3432  			}
  3433  			postIndex := iNdEx + intStringLen
  3434  			if postIndex < 0 {
  3435  				return ErrInvalidLengthDispatcher
  3436  			}
  3437  			if postIndex > l {
  3438  				return io.ErrUnexpectedEOF
  3439  			}
  3440  			m.TaskID = string(dAtA[iNdEx:postIndex])
  3441  			iNdEx = postIndex
  3442  		case 2:
  3443  			if wireType != 2 {
  3444  				return fmt.Errorf("proto: wrong wireType = %d for field Status", wireType)
  3445  			}
  3446  			var msglen int
  3447  			for shift := uint(0); ; shift += 7 {
  3448  				if shift >= 64 {
  3449  					return ErrIntOverflowDispatcher
  3450  				}
  3451  				if iNdEx >= l {
  3452  					return io.ErrUnexpectedEOF
  3453  				}
  3454  				b := dAtA[iNdEx]
  3455  				iNdEx++
  3456  				msglen |= int(b&0x7F) << shift
  3457  				if b < 0x80 {
  3458  					break
  3459  				}
  3460  			}
  3461  			if msglen < 0 {
  3462  				return ErrInvalidLengthDispatcher
  3463  			}
  3464  			postIndex := iNdEx + msglen
  3465  			if postIndex < 0 {
  3466  				return ErrInvalidLengthDispatcher
  3467  			}
  3468  			if postIndex > l {
  3469  				return io.ErrUnexpectedEOF
  3470  			}
  3471  			if m.Status == nil {
  3472  				m.Status = &TaskStatus{}
  3473  			}
  3474  			if err := m.Status.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
  3475  				return err
  3476  			}
  3477  			iNdEx = postIndex
  3478  		default:
  3479  			iNdEx = preIndex
  3480  			skippy, err := skipDispatcher(dAtA[iNdEx:])
  3481  			if err != nil {
  3482  				return err
  3483  			}
  3484  			if skippy < 0 {
  3485  				return ErrInvalidLengthDispatcher
  3486  			}
  3487  			if (iNdEx + skippy) < 0 {
  3488  				return ErrInvalidLengthDispatcher
  3489  			}
  3490  			if (iNdEx + skippy) > l {
  3491  				return io.ErrUnexpectedEOF
  3492  			}
  3493  			iNdEx += skippy
  3494  		}
  3495  	}
  3496  
  3497  	if iNdEx > l {
  3498  		return io.ErrUnexpectedEOF
  3499  	}
  3500  	return nil
  3501  }
  3502  func (m *UpdateTaskStatusResponse) Unmarshal(dAtA []byte) error {
  3503  	l := len(dAtA)
  3504  	iNdEx := 0
  3505  	for iNdEx < l {
  3506  		preIndex := iNdEx
  3507  		var wire uint64
  3508  		for shift := uint(0); ; shift += 7 {
  3509  			if shift >= 64 {
  3510  				return ErrIntOverflowDispatcher
  3511  			}
  3512  			if iNdEx >= l {
  3513  				return io.ErrUnexpectedEOF
  3514  			}
  3515  			b := dAtA[iNdEx]
  3516  			iNdEx++
  3517  			wire |= uint64(b&0x7F) << shift
  3518  			if b < 0x80 {
  3519  				break
  3520  			}
  3521  		}
  3522  		fieldNum := int32(wire >> 3)
  3523  		wireType := int(wire & 0x7)
  3524  		if wireType == 4 {
  3525  			return fmt.Errorf("proto: UpdateTaskStatusResponse: wiretype end group for non-group")
  3526  		}
  3527  		if fieldNum <= 0 {
  3528  			return fmt.Errorf("proto: UpdateTaskStatusResponse: illegal tag %d (wire type %d)", fieldNum, wire)
  3529  		}
  3530  		switch fieldNum {
  3531  		default:
  3532  			iNdEx = preIndex
  3533  			skippy, err := skipDispatcher(dAtA[iNdEx:])
  3534  			if err != nil {
  3535  				return err
  3536  			}
  3537  			if skippy < 0 {
  3538  				return ErrInvalidLengthDispatcher
  3539  			}
  3540  			if (iNdEx + skippy) < 0 {
  3541  				return ErrInvalidLengthDispatcher
  3542  			}
  3543  			if (iNdEx + skippy) > l {
  3544  				return io.ErrUnexpectedEOF
  3545  			}
  3546  			iNdEx += skippy
  3547  		}
  3548  	}
  3549  
  3550  	if iNdEx > l {
  3551  		return io.ErrUnexpectedEOF
  3552  	}
  3553  	return nil
  3554  }
  3555  func (m *TasksRequest) Unmarshal(dAtA []byte) error {
  3556  	l := len(dAtA)
  3557  	iNdEx := 0
  3558  	for iNdEx < l {
  3559  		preIndex := iNdEx
  3560  		var wire uint64
  3561  		for shift := uint(0); ; shift += 7 {
  3562  			if shift >= 64 {
  3563  				return ErrIntOverflowDispatcher
  3564  			}
  3565  			if iNdEx >= l {
  3566  				return io.ErrUnexpectedEOF
  3567  			}
  3568  			b := dAtA[iNdEx]
  3569  			iNdEx++
  3570  			wire |= uint64(b&0x7F) << shift
  3571  			if b < 0x80 {
  3572  				break
  3573  			}
  3574  		}
  3575  		fieldNum := int32(wire >> 3)
  3576  		wireType := int(wire & 0x7)
  3577  		if wireType == 4 {
  3578  			return fmt.Errorf("proto: TasksRequest: wiretype end group for non-group")
  3579  		}
  3580  		if fieldNum <= 0 {
  3581  			return fmt.Errorf("proto: TasksRequest: illegal tag %d (wire type %d)", fieldNum, wire)
  3582  		}
  3583  		switch fieldNum {
  3584  		case 1:
  3585  			if wireType != 2 {
  3586  				return fmt.Errorf("proto: wrong wireType = %d for field SessionID", wireType)
  3587  			}
  3588  			var stringLen uint64
  3589  			for shift := uint(0); ; shift += 7 {
  3590  				if shift >= 64 {
  3591  					return ErrIntOverflowDispatcher
  3592  				}
  3593  				if iNdEx >= l {
  3594  					return io.ErrUnexpectedEOF
  3595  				}
  3596  				b := dAtA[iNdEx]
  3597  				iNdEx++
  3598  				stringLen |= uint64(b&0x7F) << shift
  3599  				if b < 0x80 {
  3600  					break
  3601  				}
  3602  			}
  3603  			intStringLen := int(stringLen)
  3604  			if intStringLen < 0 {
  3605  				return ErrInvalidLengthDispatcher
  3606  			}
  3607  			postIndex := iNdEx + intStringLen
  3608  			if postIndex < 0 {
  3609  				return ErrInvalidLengthDispatcher
  3610  			}
  3611  			if postIndex > l {
  3612  				return io.ErrUnexpectedEOF
  3613  			}
  3614  			m.SessionID = string(dAtA[iNdEx:postIndex])
  3615  			iNdEx = postIndex
  3616  		default:
  3617  			iNdEx = preIndex
  3618  			skippy, err := skipDispatcher(dAtA[iNdEx:])
  3619  			if err != nil {
  3620  				return err
  3621  			}
  3622  			if skippy < 0 {
  3623  				return ErrInvalidLengthDispatcher
  3624  			}
  3625  			if (iNdEx + skippy) < 0 {
  3626  				return ErrInvalidLengthDispatcher
  3627  			}
  3628  			if (iNdEx + skippy) > l {
  3629  				return io.ErrUnexpectedEOF
  3630  			}
  3631  			iNdEx += skippy
  3632  		}
  3633  	}
  3634  
  3635  	if iNdEx > l {
  3636  		return io.ErrUnexpectedEOF
  3637  	}
  3638  	return nil
  3639  }
  3640  func (m *TasksMessage) Unmarshal(dAtA []byte) error {
  3641  	l := len(dAtA)
  3642  	iNdEx := 0
  3643  	for iNdEx < l {
  3644  		preIndex := iNdEx
  3645  		var wire uint64
  3646  		for shift := uint(0); ; shift += 7 {
  3647  			if shift >= 64 {
  3648  				return ErrIntOverflowDispatcher
  3649  			}
  3650  			if iNdEx >= l {
  3651  				return io.ErrUnexpectedEOF
  3652  			}
  3653  			b := dAtA[iNdEx]
  3654  			iNdEx++
  3655  			wire |= uint64(b&0x7F) << shift
  3656  			if b < 0x80 {
  3657  				break
  3658  			}
  3659  		}
  3660  		fieldNum := int32(wire >> 3)
  3661  		wireType := int(wire & 0x7)
  3662  		if wireType == 4 {
  3663  			return fmt.Errorf("proto: TasksMessage: wiretype end group for non-group")
  3664  		}
  3665  		if fieldNum <= 0 {
  3666  			return fmt.Errorf("proto: TasksMessage: illegal tag %d (wire type %d)", fieldNum, wire)
  3667  		}
  3668  		switch fieldNum {
  3669  		case 1:
  3670  			if wireType != 2 {
  3671  				return fmt.Errorf("proto: wrong wireType = %d for field Tasks", wireType)
  3672  			}
  3673  			var msglen int
  3674  			for shift := uint(0); ; shift += 7 {
  3675  				if shift >= 64 {
  3676  					return ErrIntOverflowDispatcher
  3677  				}
  3678  				if iNdEx >= l {
  3679  					return io.ErrUnexpectedEOF
  3680  				}
  3681  				b := dAtA[iNdEx]
  3682  				iNdEx++
  3683  				msglen |= int(b&0x7F) << shift
  3684  				if b < 0x80 {
  3685  					break
  3686  				}
  3687  			}
  3688  			if msglen < 0 {
  3689  				return ErrInvalidLengthDispatcher
  3690  			}
  3691  			postIndex := iNdEx + msglen
  3692  			if postIndex < 0 {
  3693  				return ErrInvalidLengthDispatcher
  3694  			}
  3695  			if postIndex > l {
  3696  				return io.ErrUnexpectedEOF
  3697  			}
  3698  			m.Tasks = append(m.Tasks, &Task{})
  3699  			if err := m.Tasks[len(m.Tasks)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
  3700  				return err
  3701  			}
  3702  			iNdEx = postIndex
  3703  		default:
  3704  			iNdEx = preIndex
  3705  			skippy, err := skipDispatcher(dAtA[iNdEx:])
  3706  			if err != nil {
  3707  				return err
  3708  			}
  3709  			if skippy < 0 {
  3710  				return ErrInvalidLengthDispatcher
  3711  			}
  3712  			if (iNdEx + skippy) < 0 {
  3713  				return ErrInvalidLengthDispatcher
  3714  			}
  3715  			if (iNdEx + skippy) > l {
  3716  				return io.ErrUnexpectedEOF
  3717  			}
  3718  			iNdEx += skippy
  3719  		}
  3720  	}
  3721  
  3722  	if iNdEx > l {
  3723  		return io.ErrUnexpectedEOF
  3724  	}
  3725  	return nil
  3726  }
  3727  func (m *AssignmentsRequest) Unmarshal(dAtA []byte) error {
  3728  	l := len(dAtA)
  3729  	iNdEx := 0
  3730  	for iNdEx < l {
  3731  		preIndex := iNdEx
  3732  		var wire uint64
  3733  		for shift := uint(0); ; shift += 7 {
  3734  			if shift >= 64 {
  3735  				return ErrIntOverflowDispatcher
  3736  			}
  3737  			if iNdEx >= l {
  3738  				return io.ErrUnexpectedEOF
  3739  			}
  3740  			b := dAtA[iNdEx]
  3741  			iNdEx++
  3742  			wire |= uint64(b&0x7F) << shift
  3743  			if b < 0x80 {
  3744  				break
  3745  			}
  3746  		}
  3747  		fieldNum := int32(wire >> 3)
  3748  		wireType := int(wire & 0x7)
  3749  		if wireType == 4 {
  3750  			return fmt.Errorf("proto: AssignmentsRequest: wiretype end group for non-group")
  3751  		}
  3752  		if fieldNum <= 0 {
  3753  			return fmt.Errorf("proto: AssignmentsRequest: illegal tag %d (wire type %d)", fieldNum, wire)
  3754  		}
  3755  		switch fieldNum {
  3756  		case 1:
  3757  			if wireType != 2 {
  3758  				return fmt.Errorf("proto: wrong wireType = %d for field SessionID", wireType)
  3759  			}
  3760  			var stringLen uint64
  3761  			for shift := uint(0); ; shift += 7 {
  3762  				if shift >= 64 {
  3763  					return ErrIntOverflowDispatcher
  3764  				}
  3765  				if iNdEx >= l {
  3766  					return io.ErrUnexpectedEOF
  3767  				}
  3768  				b := dAtA[iNdEx]
  3769  				iNdEx++
  3770  				stringLen |= uint64(b&0x7F) << shift
  3771  				if b < 0x80 {
  3772  					break
  3773  				}
  3774  			}
  3775  			intStringLen := int(stringLen)
  3776  			if intStringLen < 0 {
  3777  				return ErrInvalidLengthDispatcher
  3778  			}
  3779  			postIndex := iNdEx + intStringLen
  3780  			if postIndex < 0 {
  3781  				return ErrInvalidLengthDispatcher
  3782  			}
  3783  			if postIndex > l {
  3784  				return io.ErrUnexpectedEOF
  3785  			}
  3786  			m.SessionID = string(dAtA[iNdEx:postIndex])
  3787  			iNdEx = postIndex
  3788  		default:
  3789  			iNdEx = preIndex
  3790  			skippy, err := skipDispatcher(dAtA[iNdEx:])
  3791  			if err != nil {
  3792  				return err
  3793  			}
  3794  			if skippy < 0 {
  3795  				return ErrInvalidLengthDispatcher
  3796  			}
  3797  			if (iNdEx + skippy) < 0 {
  3798  				return ErrInvalidLengthDispatcher
  3799  			}
  3800  			if (iNdEx + skippy) > l {
  3801  				return io.ErrUnexpectedEOF
  3802  			}
  3803  			iNdEx += skippy
  3804  		}
  3805  	}
  3806  
  3807  	if iNdEx > l {
  3808  		return io.ErrUnexpectedEOF
  3809  	}
  3810  	return nil
  3811  }
  3812  func (m *Assignment) Unmarshal(dAtA []byte) error {
  3813  	l := len(dAtA)
  3814  	iNdEx := 0
  3815  	for iNdEx < l {
  3816  		preIndex := iNdEx
  3817  		var wire uint64
  3818  		for shift := uint(0); ; shift += 7 {
  3819  			if shift >= 64 {
  3820  				return ErrIntOverflowDispatcher
  3821  			}
  3822  			if iNdEx >= l {
  3823  				return io.ErrUnexpectedEOF
  3824  			}
  3825  			b := dAtA[iNdEx]
  3826  			iNdEx++
  3827  			wire |= uint64(b&0x7F) << shift
  3828  			if b < 0x80 {
  3829  				break
  3830  			}
  3831  		}
  3832  		fieldNum := int32(wire >> 3)
  3833  		wireType := int(wire & 0x7)
  3834  		if wireType == 4 {
  3835  			return fmt.Errorf("proto: Assignment: wiretype end group for non-group")
  3836  		}
  3837  		if fieldNum <= 0 {
  3838  			return fmt.Errorf("proto: Assignment: illegal tag %d (wire type %d)", fieldNum, wire)
  3839  		}
  3840  		switch fieldNum {
  3841  		case 1:
  3842  			if wireType != 2 {
  3843  				return fmt.Errorf("proto: wrong wireType = %d for field Task", wireType)
  3844  			}
  3845  			var msglen int
  3846  			for shift := uint(0); ; shift += 7 {
  3847  				if shift >= 64 {
  3848  					return ErrIntOverflowDispatcher
  3849  				}
  3850  				if iNdEx >= l {
  3851  					return io.ErrUnexpectedEOF
  3852  				}
  3853  				b := dAtA[iNdEx]
  3854  				iNdEx++
  3855  				msglen |= int(b&0x7F) << shift
  3856  				if b < 0x80 {
  3857  					break
  3858  				}
  3859  			}
  3860  			if msglen < 0 {
  3861  				return ErrInvalidLengthDispatcher
  3862  			}
  3863  			postIndex := iNdEx + msglen
  3864  			if postIndex < 0 {
  3865  				return ErrInvalidLengthDispatcher
  3866  			}
  3867  			if postIndex > l {
  3868  				return io.ErrUnexpectedEOF
  3869  			}
  3870  			v := &Task{}
  3871  			if err := v.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
  3872  				return err
  3873  			}
  3874  			m.Item = &Assignment_Task{v}
  3875  			iNdEx = postIndex
  3876  		case 2:
  3877  			if wireType != 2 {
  3878  				return fmt.Errorf("proto: wrong wireType = %d for field Secret", wireType)
  3879  			}
  3880  			var msglen int
  3881  			for shift := uint(0); ; shift += 7 {
  3882  				if shift >= 64 {
  3883  					return ErrIntOverflowDispatcher
  3884  				}
  3885  				if iNdEx >= l {
  3886  					return io.ErrUnexpectedEOF
  3887  				}
  3888  				b := dAtA[iNdEx]
  3889  				iNdEx++
  3890  				msglen |= int(b&0x7F) << shift
  3891  				if b < 0x80 {
  3892  					break
  3893  				}
  3894  			}
  3895  			if msglen < 0 {
  3896  				return ErrInvalidLengthDispatcher
  3897  			}
  3898  			postIndex := iNdEx + msglen
  3899  			if postIndex < 0 {
  3900  				return ErrInvalidLengthDispatcher
  3901  			}
  3902  			if postIndex > l {
  3903  				return io.ErrUnexpectedEOF
  3904  			}
  3905  			v := &Secret{}
  3906  			if err := v.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
  3907  				return err
  3908  			}
  3909  			m.Item = &Assignment_Secret{v}
  3910  			iNdEx = postIndex
  3911  		case 3:
  3912  			if wireType != 2 {
  3913  				return fmt.Errorf("proto: wrong wireType = %d for field Config", wireType)
  3914  			}
  3915  			var msglen int
  3916  			for shift := uint(0); ; shift += 7 {
  3917  				if shift >= 64 {
  3918  					return ErrIntOverflowDispatcher
  3919  				}
  3920  				if iNdEx >= l {
  3921  					return io.ErrUnexpectedEOF
  3922  				}
  3923  				b := dAtA[iNdEx]
  3924  				iNdEx++
  3925  				msglen |= int(b&0x7F) << shift
  3926  				if b < 0x80 {
  3927  					break
  3928  				}
  3929  			}
  3930  			if msglen < 0 {
  3931  				return ErrInvalidLengthDispatcher
  3932  			}
  3933  			postIndex := iNdEx + msglen
  3934  			if postIndex < 0 {
  3935  				return ErrInvalidLengthDispatcher
  3936  			}
  3937  			if postIndex > l {
  3938  				return io.ErrUnexpectedEOF
  3939  			}
  3940  			v := &Config{}
  3941  			if err := v.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
  3942  				return err
  3943  			}
  3944  			m.Item = &Assignment_Config{v}
  3945  			iNdEx = postIndex
  3946  		default:
  3947  			iNdEx = preIndex
  3948  			skippy, err := skipDispatcher(dAtA[iNdEx:])
  3949  			if err != nil {
  3950  				return err
  3951  			}
  3952  			if skippy < 0 {
  3953  				return ErrInvalidLengthDispatcher
  3954  			}
  3955  			if (iNdEx + skippy) < 0 {
  3956  				return ErrInvalidLengthDispatcher
  3957  			}
  3958  			if (iNdEx + skippy) > l {
  3959  				return io.ErrUnexpectedEOF
  3960  			}
  3961  			iNdEx += skippy
  3962  		}
  3963  	}
  3964  
  3965  	if iNdEx > l {
  3966  		return io.ErrUnexpectedEOF
  3967  	}
  3968  	return nil
  3969  }
  3970  func (m *AssignmentChange) Unmarshal(dAtA []byte) error {
  3971  	l := len(dAtA)
  3972  	iNdEx := 0
  3973  	for iNdEx < l {
  3974  		preIndex := iNdEx
  3975  		var wire uint64
  3976  		for shift := uint(0); ; shift += 7 {
  3977  			if shift >= 64 {
  3978  				return ErrIntOverflowDispatcher
  3979  			}
  3980  			if iNdEx >= l {
  3981  				return io.ErrUnexpectedEOF
  3982  			}
  3983  			b := dAtA[iNdEx]
  3984  			iNdEx++
  3985  			wire |= uint64(b&0x7F) << shift
  3986  			if b < 0x80 {
  3987  				break
  3988  			}
  3989  		}
  3990  		fieldNum := int32(wire >> 3)
  3991  		wireType := int(wire & 0x7)
  3992  		if wireType == 4 {
  3993  			return fmt.Errorf("proto: AssignmentChange: wiretype end group for non-group")
  3994  		}
  3995  		if fieldNum <= 0 {
  3996  			return fmt.Errorf("proto: AssignmentChange: illegal tag %d (wire type %d)", fieldNum, wire)
  3997  		}
  3998  		switch fieldNum {
  3999  		case 1:
  4000  			if wireType != 2 {
  4001  				return fmt.Errorf("proto: wrong wireType = %d for field Assignment", wireType)
  4002  			}
  4003  			var msglen int
  4004  			for shift := uint(0); ; shift += 7 {
  4005  				if shift >= 64 {
  4006  					return ErrIntOverflowDispatcher
  4007  				}
  4008  				if iNdEx >= l {
  4009  					return io.ErrUnexpectedEOF
  4010  				}
  4011  				b := dAtA[iNdEx]
  4012  				iNdEx++
  4013  				msglen |= int(b&0x7F) << shift
  4014  				if b < 0x80 {
  4015  					break
  4016  				}
  4017  			}
  4018  			if msglen < 0 {
  4019  				return ErrInvalidLengthDispatcher
  4020  			}
  4021  			postIndex := iNdEx + msglen
  4022  			if postIndex < 0 {
  4023  				return ErrInvalidLengthDispatcher
  4024  			}
  4025  			if postIndex > l {
  4026  				return io.ErrUnexpectedEOF
  4027  			}
  4028  			if m.Assignment == nil {
  4029  				m.Assignment = &Assignment{}
  4030  			}
  4031  			if err := m.Assignment.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
  4032  				return err
  4033  			}
  4034  			iNdEx = postIndex
  4035  		case 2:
  4036  			if wireType != 0 {
  4037  				return fmt.Errorf("proto: wrong wireType = %d for field Action", wireType)
  4038  			}
  4039  			m.Action = 0
  4040  			for shift := uint(0); ; shift += 7 {
  4041  				if shift >= 64 {
  4042  					return ErrIntOverflowDispatcher
  4043  				}
  4044  				if iNdEx >= l {
  4045  					return io.ErrUnexpectedEOF
  4046  				}
  4047  				b := dAtA[iNdEx]
  4048  				iNdEx++
  4049  				m.Action |= AssignmentChange_AssignmentAction(b&0x7F) << shift
  4050  				if b < 0x80 {
  4051  					break
  4052  				}
  4053  			}
  4054  		default:
  4055  			iNdEx = preIndex
  4056  			skippy, err := skipDispatcher(dAtA[iNdEx:])
  4057  			if err != nil {
  4058  				return err
  4059  			}
  4060  			if skippy < 0 {
  4061  				return ErrInvalidLengthDispatcher
  4062  			}
  4063  			if (iNdEx + skippy) < 0 {
  4064  				return ErrInvalidLengthDispatcher
  4065  			}
  4066  			if (iNdEx + skippy) > l {
  4067  				return io.ErrUnexpectedEOF
  4068  			}
  4069  			iNdEx += skippy
  4070  		}
  4071  	}
  4072  
  4073  	if iNdEx > l {
  4074  		return io.ErrUnexpectedEOF
  4075  	}
  4076  	return nil
  4077  }
  4078  func (m *AssignmentsMessage) Unmarshal(dAtA []byte) error {
  4079  	l := len(dAtA)
  4080  	iNdEx := 0
  4081  	for iNdEx < l {
  4082  		preIndex := iNdEx
  4083  		var wire uint64
  4084  		for shift := uint(0); ; shift += 7 {
  4085  			if shift >= 64 {
  4086  				return ErrIntOverflowDispatcher
  4087  			}
  4088  			if iNdEx >= l {
  4089  				return io.ErrUnexpectedEOF
  4090  			}
  4091  			b := dAtA[iNdEx]
  4092  			iNdEx++
  4093  			wire |= uint64(b&0x7F) << shift
  4094  			if b < 0x80 {
  4095  				break
  4096  			}
  4097  		}
  4098  		fieldNum := int32(wire >> 3)
  4099  		wireType := int(wire & 0x7)
  4100  		if wireType == 4 {
  4101  			return fmt.Errorf("proto: AssignmentsMessage: wiretype end group for non-group")
  4102  		}
  4103  		if fieldNum <= 0 {
  4104  			return fmt.Errorf("proto: AssignmentsMessage: illegal tag %d (wire type %d)", fieldNum, wire)
  4105  		}
  4106  		switch fieldNum {
  4107  		case 1:
  4108  			if wireType != 0 {
  4109  				return fmt.Errorf("proto: wrong wireType = %d for field Type", wireType)
  4110  			}
  4111  			m.Type = 0
  4112  			for shift := uint(0); ; shift += 7 {
  4113  				if shift >= 64 {
  4114  					return ErrIntOverflowDispatcher
  4115  				}
  4116  				if iNdEx >= l {
  4117  					return io.ErrUnexpectedEOF
  4118  				}
  4119  				b := dAtA[iNdEx]
  4120  				iNdEx++
  4121  				m.Type |= AssignmentsMessage_Type(b&0x7F) << shift
  4122  				if b < 0x80 {
  4123  					break
  4124  				}
  4125  			}
  4126  		case 2:
  4127  			if wireType != 2 {
  4128  				return fmt.Errorf("proto: wrong wireType = %d for field AppliesTo", wireType)
  4129  			}
  4130  			var stringLen uint64
  4131  			for shift := uint(0); ; shift += 7 {
  4132  				if shift >= 64 {
  4133  					return ErrIntOverflowDispatcher
  4134  				}
  4135  				if iNdEx >= l {
  4136  					return io.ErrUnexpectedEOF
  4137  				}
  4138  				b := dAtA[iNdEx]
  4139  				iNdEx++
  4140  				stringLen |= uint64(b&0x7F) << shift
  4141  				if b < 0x80 {
  4142  					break
  4143  				}
  4144  			}
  4145  			intStringLen := int(stringLen)
  4146  			if intStringLen < 0 {
  4147  				return ErrInvalidLengthDispatcher
  4148  			}
  4149  			postIndex := iNdEx + intStringLen
  4150  			if postIndex < 0 {
  4151  				return ErrInvalidLengthDispatcher
  4152  			}
  4153  			if postIndex > l {
  4154  				return io.ErrUnexpectedEOF
  4155  			}
  4156  			m.AppliesTo = string(dAtA[iNdEx:postIndex])
  4157  			iNdEx = postIndex
  4158  		case 3:
  4159  			if wireType != 2 {
  4160  				return fmt.Errorf("proto: wrong wireType = %d for field ResultsIn", wireType)
  4161  			}
  4162  			var stringLen uint64
  4163  			for shift := uint(0); ; shift += 7 {
  4164  				if shift >= 64 {
  4165  					return ErrIntOverflowDispatcher
  4166  				}
  4167  				if iNdEx >= l {
  4168  					return io.ErrUnexpectedEOF
  4169  				}
  4170  				b := dAtA[iNdEx]
  4171  				iNdEx++
  4172  				stringLen |= uint64(b&0x7F) << shift
  4173  				if b < 0x80 {
  4174  					break
  4175  				}
  4176  			}
  4177  			intStringLen := int(stringLen)
  4178  			if intStringLen < 0 {
  4179  				return ErrInvalidLengthDispatcher
  4180  			}
  4181  			postIndex := iNdEx + intStringLen
  4182  			if postIndex < 0 {
  4183  				return ErrInvalidLengthDispatcher
  4184  			}
  4185  			if postIndex > l {
  4186  				return io.ErrUnexpectedEOF
  4187  			}
  4188  			m.ResultsIn = string(dAtA[iNdEx:postIndex])
  4189  			iNdEx = postIndex
  4190  		case 4:
  4191  			if wireType != 2 {
  4192  				return fmt.Errorf("proto: wrong wireType = %d for field Changes", wireType)
  4193  			}
  4194  			var msglen int
  4195  			for shift := uint(0); ; shift += 7 {
  4196  				if shift >= 64 {
  4197  					return ErrIntOverflowDispatcher
  4198  				}
  4199  				if iNdEx >= l {
  4200  					return io.ErrUnexpectedEOF
  4201  				}
  4202  				b := dAtA[iNdEx]
  4203  				iNdEx++
  4204  				msglen |= int(b&0x7F) << shift
  4205  				if b < 0x80 {
  4206  					break
  4207  				}
  4208  			}
  4209  			if msglen < 0 {
  4210  				return ErrInvalidLengthDispatcher
  4211  			}
  4212  			postIndex := iNdEx + msglen
  4213  			if postIndex < 0 {
  4214  				return ErrInvalidLengthDispatcher
  4215  			}
  4216  			if postIndex > l {
  4217  				return io.ErrUnexpectedEOF
  4218  			}
  4219  			m.Changes = append(m.Changes, &AssignmentChange{})
  4220  			if err := m.Changes[len(m.Changes)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
  4221  				return err
  4222  			}
  4223  			iNdEx = postIndex
  4224  		default:
  4225  			iNdEx = preIndex
  4226  			skippy, err := skipDispatcher(dAtA[iNdEx:])
  4227  			if err != nil {
  4228  				return err
  4229  			}
  4230  			if skippy < 0 {
  4231  				return ErrInvalidLengthDispatcher
  4232  			}
  4233  			if (iNdEx + skippy) < 0 {
  4234  				return ErrInvalidLengthDispatcher
  4235  			}
  4236  			if (iNdEx + skippy) > l {
  4237  				return io.ErrUnexpectedEOF
  4238  			}
  4239  			iNdEx += skippy
  4240  		}
  4241  	}
  4242  
  4243  	if iNdEx > l {
  4244  		return io.ErrUnexpectedEOF
  4245  	}
  4246  	return nil
  4247  }
  4248  func skipDispatcher(dAtA []byte) (n int, err error) {
  4249  	l := len(dAtA)
  4250  	iNdEx := 0
  4251  	for iNdEx < l {
  4252  		var wire uint64
  4253  		for shift := uint(0); ; shift += 7 {
  4254  			if shift >= 64 {
  4255  				return 0, ErrIntOverflowDispatcher
  4256  			}
  4257  			if iNdEx >= l {
  4258  				return 0, io.ErrUnexpectedEOF
  4259  			}
  4260  			b := dAtA[iNdEx]
  4261  			iNdEx++
  4262  			wire |= (uint64(b) & 0x7F) << shift
  4263  			if b < 0x80 {
  4264  				break
  4265  			}
  4266  		}
  4267  		wireType := int(wire & 0x7)
  4268  		switch wireType {
  4269  		case 0:
  4270  			for shift := uint(0); ; shift += 7 {
  4271  				if shift >= 64 {
  4272  					return 0, ErrIntOverflowDispatcher
  4273  				}
  4274  				if iNdEx >= l {
  4275  					return 0, io.ErrUnexpectedEOF
  4276  				}
  4277  				iNdEx++
  4278  				if dAtA[iNdEx-1] < 0x80 {
  4279  					break
  4280  				}
  4281  			}
  4282  			return iNdEx, nil
  4283  		case 1:
  4284  			iNdEx += 8
  4285  			return iNdEx, nil
  4286  		case 2:
  4287  			var length int
  4288  			for shift := uint(0); ; shift += 7 {
  4289  				if shift >= 64 {
  4290  					return 0, ErrIntOverflowDispatcher
  4291  				}
  4292  				if iNdEx >= l {
  4293  					return 0, io.ErrUnexpectedEOF
  4294  				}
  4295  				b := dAtA[iNdEx]
  4296  				iNdEx++
  4297  				length |= (int(b) & 0x7F) << shift
  4298  				if b < 0x80 {
  4299  					break
  4300  				}
  4301  			}
  4302  			if length < 0 {
  4303  				return 0, ErrInvalidLengthDispatcher
  4304  			}
  4305  			iNdEx += length
  4306  			if iNdEx < 0 {
  4307  				return 0, ErrInvalidLengthDispatcher
  4308  			}
  4309  			return iNdEx, nil
  4310  		case 3:
  4311  			for {
  4312  				var innerWire uint64
  4313  				var start int = iNdEx
  4314  				for shift := uint(0); ; shift += 7 {
  4315  					if shift >= 64 {
  4316  						return 0, ErrIntOverflowDispatcher
  4317  					}
  4318  					if iNdEx >= l {
  4319  						return 0, io.ErrUnexpectedEOF
  4320  					}
  4321  					b := dAtA[iNdEx]
  4322  					iNdEx++
  4323  					innerWire |= (uint64(b) & 0x7F) << shift
  4324  					if b < 0x80 {
  4325  						break
  4326  					}
  4327  				}
  4328  				innerWireType := int(innerWire & 0x7)
  4329  				if innerWireType == 4 {
  4330  					break
  4331  				}
  4332  				next, err := skipDispatcher(dAtA[start:])
  4333  				if err != nil {
  4334  					return 0, err
  4335  				}
  4336  				iNdEx = start + next
  4337  				if iNdEx < 0 {
  4338  					return 0, ErrInvalidLengthDispatcher
  4339  				}
  4340  			}
  4341  			return iNdEx, nil
  4342  		case 4:
  4343  			return iNdEx, nil
  4344  		case 5:
  4345  			iNdEx += 4
  4346  			return iNdEx, nil
  4347  		default:
  4348  			return 0, fmt.Errorf("proto: illegal wireType %d", wireType)
  4349  		}
  4350  	}
  4351  	panic("unreachable")
  4352  }
  4353  
  4354  var (
  4355  	ErrInvalidLengthDispatcher = fmt.Errorf("proto: negative length found during unmarshaling")
  4356  	ErrIntOverflowDispatcher   = fmt.Errorf("proto: integer overflow")
  4357  )