code: func (p *Provider) handshake(client *Client) (*HandshakeResponse, error) {
  	defer metrics.MeasureSince([]string{"scada", "handshake"}, time.Now())
  	req := HandshakeRequest{
  		Service:        p.config.Service.Service,
  		ServiceVersion: p.config.Service.ServiceVersion,
  		Capabilities:   p.config.Service.Capabilities,
  		Meta:           p.config.Service.Meta,
  		ResourceType:   p.config.Service.ResourceType,
  		ResourceGroup:  p.config.ResourceGroup,
  		Token:          p.config.Token,
  	}
  	resp := new(HandshakeResponse)
  	if err := client.RPC("Session.Handshake", &req, resp); err != nil {
  		return nil, err
  	}
  	return resp, nil
  }
docs: // handshake does the initial handshake