2fc4d61610
* implement contact.checkin method * add batching to update uptime checks * rm batching * rm other unneeded things * fix lint * fix unit test * changes per CR comments * couple more CR changes * add identity check into grpcOpt * fix lint * why do you fix the test * revert test change * stop contact chore for repair test * put node in cache * comment out contact chore. See what happens * Revert "comment out contact chore. See what happens" This reverts commit 2e45008e36a50e0a842ae455ac83de77093d4daa. * try stopping contact earlier * stop contact chore in uplink_test * replace self on chore with *RoutingTable for access to latest node info * Revert "stop contact chore in uplink_test" This reverts commit 302db70f4071112d1b9f7ee0279225ea12757723. * Revert "try stopping contact earlier" This reverts commit 806cc3b82f9d598899dafd83da9315a1cb0cb43c. * Revert "stop contact chore for repair test" This reverts commit dd34de1cfdfc09b972186c9ab9a4f1e822446b79.
52 lines
1.3 KiB
Go
52 lines
1.3 KiB
Go
// Copyright (C) 2019 Storj Labs, Inc.
|
|
// See LICENSE for copying information.
|
|
|
|
package contact
|
|
|
|
import (
|
|
"context"
|
|
|
|
"google.golang.org/grpc"
|
|
|
|
"storj.io/storj/pkg/pb"
|
|
"storj.io/storj/pkg/peertls/tlsopts"
|
|
"storj.io/storj/pkg/storj"
|
|
"storj.io/storj/pkg/transport"
|
|
)
|
|
|
|
type client struct {
|
|
conn *grpc.ClientConn
|
|
client pb.ContactClient
|
|
}
|
|
|
|
// newClient dials the target contact endpoint
|
|
func newClient(ctx context.Context, transport transport.Client, target *pb.NodeAddress, peerIDFromContext storj.NodeID) (*client, error) {
|
|
opts, err := tlsopts.NewOptions(transport.Identity(), tlsopts.Config{PeerIDVersions: "latest"}, nil)
|
|
if err != nil {
|
|
return nil, Error.Wrap(err)
|
|
}
|
|
dialOption, err := opts.DialOption(peerIDFromContext)
|
|
if err != nil {
|
|
return nil, Error.Wrap(err)
|
|
}
|
|
conn, err := transport.DialAddress(ctx, target.Address, dialOption)
|
|
if err != nil {
|
|
return nil, Error.Wrap(err)
|
|
}
|
|
|
|
return &client{
|
|
conn: conn,
|
|
client: pb.NewContactClient(conn),
|
|
}, nil
|
|
}
|
|
|
|
// pingNode pings a node
|
|
func (client *client) pingNode(ctx context.Context, req *pb.ContactPingRequest, opt grpc.CallOption) (*pb.ContactPingResponse, error) {
|
|
return client.client.PingNode(ctx, req, opt)
|
|
}
|
|
|
|
// close closes the connection
|
|
func (client *client) close() error {
|
|
return client.conn.Close()
|
|
}
|