sprawl/sprawl

View on GitHub
pb/sprawl.proto

Summary

Maintainability
Test Coverage
syntax = "proto3";

package pb;

import "google/protobuf/timestamp.proto";

enum State {
    OPEN = 0;
    LOCKED = 1;
}

enum Operation {
    CREATE = 0;
    DELETE = 1;
    LOCK = 2;
  UNLOCK = 3;
  SYNC_REQUEST = 4;
  SYNC_RECEIVE = 5;
}

message Peer {
    string id = 1;
}

message Order {
    bytes id = 1;
    google.protobuf.Timestamp created = 2;
    string asset = 3;
    string counterAsset = 4;
    uint64 amount = 5;
    float price = 6;
    State state = 7;
    bytes signature = 8;
    uint32 nonce = 9;
    bytes metadata = 10;
}

message OrderList {
    repeated Order orders = 1;
}

message Channel {
    bytes id = 1;
    ChannelOptions options = 2;
}

message ChannelList {
    repeated Channel channels = 1;
}

message Recipient {
  bytes peerID = 1;
}

message WireMessage {
    bytes channelID = 1;
  Operation operation = 2;
    bytes data = 3;
}

message CreateRequest {
    bytes channelID = 1;
    string asset = 2;
    string counterAsset = 3;
    uint64 amount = 4;
    float price = 5;
}

message JoinRequest {
    string asset = 1;
    string counterAsset = 2;
}

message ChannelOptions {
    string assetPair = 1;
}

message OrderSpecificRequest {
    bytes orderID = 1;
    bytes channelID = 2;
}

message ChannelSpecificRequest {
    bytes id = 1;
}

message CreateResponse {
    Order createdOrder = 1;
}

message OrderListResponse {
    repeated Order orders = 1;
}

message ChannelListResponse {
    repeated Channel channels = 1;
}

message PeerListResponse {
    repeated string peerIDs = 1;
}

message JoinResponse {
    Channel joinedChannel = 1;
}

message Empty {}

service OrderHandler {
    rpc Create (CreateRequest) returns (CreateResponse);
    rpc Delete (OrderSpecificRequest) returns (Empty);
    rpc Lock (OrderSpecificRequest) returns (Empty);
    rpc Unlock (OrderSpecificRequest) returns (Empty);
    rpc GetOrder (OrderSpecificRequest) returns (Order);
    rpc GetAllOrders (Empty) returns (OrderList);
}

service ChannelHandler {
    rpc Join (JoinRequest) returns (JoinResponse);
    rpc Leave (ChannelSpecificRequest) returns (Empty);
    rpc GetChannel (ChannelSpecificRequest) returns (Channel);
    rpc GetAllChannels (Empty) returns (ChannelList);
}

service NodeHandler {
    rpc GetAllPeers (Empty) returns (PeerListResponse);
    rpc BlacklistPeer (Peer) returns (Empty);
}