storj/pkg/pb/overlay.proto
Dennis Coyle dee2c137c8
Remove BKAD dependency from pkg/kademlia (#294)
* slowly but surely

* hardcode ID for tests so we can get predictable results

* skipping bad test

* removing tests of bkad

* wip

* new algorithm for worker

* clean up

* remove skipped test

* changes

* uncomment

* fixed conflicts

* maybe done ?

* cleanup

* boot bkad

* wip

* cleanup

* undo change

* fixes

* wip

* wip

* moving nodeID around

* wip

* wip

* fixes

* fixes after merge

* added TODO

* fixed tests post identity

* linter fixes

* wip

* PR review comments

* wip

* fixing tests

* fix tests

* force db directory

* bad test

* fixes race condition

* small cleanups

* adding db folder

* testing

* wip

* cleanup

* cleanup

* linters

* export Restrict

* add timeout

* testing

* linters

* forgot one

* moar fixes from master merge

* PR comments

* moar PR comments

* removed stun flag

* remove duplicate declaration

* remove old tests

* remove timeout

* fix tests

* missed one

* changed StringToID >> IDFromString

* PR comments

* stupid linter

* moevd overlay mock

* fixed merge conflicts

* fixes

* linter
2018-10-08 11:09:37 -04:00

131 lines
3.2 KiB
Protocol Buffer

// Copyright (C) 2018 Storj Labs, Inc.
// See LICENSE for copying information.
syntax = "proto3";
option go_package = "pb";
import "google/protobuf/duration.proto";
package overlay;
// NodeTransport is an enum of possible transports for the overlay network
enum NodeTransport {
TCP = 0;
}
// Overlay defines the interface for communication with the overlay network
service Overlay {
// Lookup finds a nodes address from the network
rpc Lookup(LookupRequest) returns (LookupResponse);
// BulkLookup finds nodes addresses from the network
rpc BulkLookup(LookupRequests) returns (LookupResponses);
// FindStorageNodes finds a list of nodes in the network that meet the specified request parameters
rpc FindStorageNodes(FindStorageNodesRequest) returns (FindStorageNodesResponse);
}
service Nodes {
rpc Query(QueryRequest) returns (QueryResponse);
}
// LookupRequest is is request message for the lookup rpc call
message LookupRequest {
string nodeID = 1;
}
// LookupResponse is is response message for the lookup rpc call
message LookupResponse {
Node node = 1;
}
//LookupRequests is a list of LookupRequest
message LookupRequests {
repeated LookupRequest lookuprequest = 1;
}
//LookupResponse is a list of LookupResponse
message LookupResponses {
repeated LookupResponse lookupresponse = 1;
}
// FindStorageNodesResponse is is response message for the FindStorageNodes rpc call
message FindStorageNodesResponse {
repeated Node nodes = 1;
}
// FindStorageNodesRequest is is request message for the FindStorageNodes rpc call
message FindStorageNodesRequest {
int64 objectSize = 1;
google.protobuf.Duration contractLength = 2;
OverlayOptions opts = 3;
}
// NodeAddress contains the information needed to communicate with a node on the network
message NodeAddress {
NodeTransport transport = 1;
string address = 2;
}
// OverlayOptions is a set of criteria that a node must meet to be considered for a storage opportunity
message OverlayOptions {
google.protobuf.Duration maxLatency = 1;
NodeRep minReputation = 2; // Not sure what NodeRep is yet.
int64 minSpeedKbps = 3;
int64 amount = 4;
NodeRestrictions restrictions = 5;
}
// NodeRep is the reputation characteristics of a node
message NodeRep {}
// NodeRestrictions contains all relevant data about a nodes ability to store data
message NodeRestrictions {
int64 freeBandwidth = 1;
int64 freeDisk = 2;
}
// Node represents a node in the overlay network
message Node {
string id = 1;
NodeAddress address = 2;
NodeType type = 3;
NodeRestrictions restrictions = 4;
}
// NodeType is an enum of possible node types
enum NodeType {
ADMIN = 0;
STORAGE = 1;
}
message QueryRequest {
overlay.Node sender = 1;
overlay.Node target = 2;
int64 limit = 3;
bool pingback = 4;
}
message QueryResponse {
overlay.Node sender = 1;
repeated overlay.Node response = 2;
}
message Restriction {
enum Operator {
LT = 0;
EQ = 1;
GT = 2;
LTE = 3;
GTE = 4;
}
enum Operand {
freeBandwidth = 0;
freeDisk = 1;
}
Operator operator = 1;
Operand operand = 2;
int64 value = 3;
}