You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
115 lines
4.0 KiB
115 lines
4.0 KiB
// Copyright 2016 Apcera Inc. All rights reserved.
|
|
//
|
|
// Uses https://github.com/gogo/protobuf
|
|
// compiled via `protoc -I=. -I=$GOPATH/src --gogofaster_out=. protocol.proto`
|
|
|
|
syntax = "proto3";
|
|
package pb;
|
|
|
|
import "github.com/gogo/protobuf/gogoproto/gogo.proto";
|
|
|
|
option (gogoproto.marshaler_all) = true;
|
|
option (gogoproto.sizer_all) = true;
|
|
option (gogoproto.unmarshaler_all) = true;
|
|
option (gogoproto.goproto_getters_all) = false;
|
|
|
|
// How messages are delivered to the STAN cluster
|
|
message PubMsg {
|
|
string clientID = 1; // ClientID
|
|
string guid = 2; // guid
|
|
string subject = 3; // subject
|
|
string reply = 4; // optional reply
|
|
bytes data = 5; // payload
|
|
|
|
bytes sha256 = 10; // optional sha256 of data
|
|
}
|
|
|
|
// Used to ACK to publishers
|
|
message PubAck {
|
|
string guid = 1; // guid
|
|
string error = 2; // err string, empty/omitted if no error
|
|
}
|
|
|
|
// Msg struct. Sequence is assigned for global ordering by
|
|
// the cluster after the publisher has been acknowledged.
|
|
message MsgProto {
|
|
uint64 sequence = 1; // globally ordered sequence number for the subject's channel
|
|
string subject = 2; // subject
|
|
string reply = 3; // optional reply
|
|
bytes data = 4; // payload
|
|
int64 timestamp = 5; // received timestamp
|
|
bool redelivered = 6; // Flag specifying if the message is being redelivered
|
|
|
|
uint32 CRC32 = 10; // optional IEEE CRC32
|
|
}
|
|
|
|
// Ack will deliver an ack for a delivered msg.
|
|
message Ack {
|
|
string subject = 1; // Subject
|
|
uint64 sequence = 2; // Sequence to acknowledge
|
|
}
|
|
|
|
// Connection Request
|
|
message ConnectRequest {
|
|
string clientID = 1; // Client name/identifier.
|
|
string heartbeatInbox = 2; // Inbox for server initiated heartbeats.
|
|
}
|
|
|
|
// Response to a client connect
|
|
message ConnectResponse {
|
|
string pubPrefix = 1; // Prefix to use when publishing to this STAN cluster
|
|
string subRequests = 2; // Subject to use for subscription requests
|
|
string unsubRequests = 3; // Subject to use for unsubscribe requests
|
|
string closeRequests = 4; // Subject for closing the stan connection
|
|
string error = 5; // err string, empty/omitted if no error
|
|
string subCloseRequests = 6; // Subject to use for subscription close requests
|
|
|
|
string publicKey = 100; // Possibly used to sign acks, etc.
|
|
}
|
|
|
|
// Enum for start position type.
|
|
enum StartPosition {
|
|
NewOnly = 0;
|
|
LastReceived = 1;
|
|
TimeDeltaStart = 2;
|
|
SequenceStart = 3;
|
|
First = 4;
|
|
}
|
|
|
|
// Protocol for a client to subscribe
|
|
message SubscriptionRequest {
|
|
string clientID = 1; // ClientID
|
|
string subject = 2; // Formal subject to subscribe to, e.g. foo.bar
|
|
string qGroup = 3; // Optional queue group
|
|
string inbox = 4; // Inbox subject to deliver messages on
|
|
int32 maxInFlight = 5; // Maximum inflight messages without an ack allowed
|
|
int32 ackWaitInSecs = 6; // Timeout for receiving an ack from the client
|
|
string durableName = 7; // Optional durable name which survives client restarts
|
|
StartPosition startPosition = 10; // Start position
|
|
uint64 startSequence = 11; // Optional start sequence number
|
|
int64 startTimeDelta = 12; // Optional start time
|
|
}
|
|
|
|
// Response for SubscriptionRequest and UnsubscribeRequests
|
|
message SubscriptionResponse {
|
|
string ackInbox = 2; // ackInbox for sending acks
|
|
string error = 3; // err string, empty/omitted if no error
|
|
}
|
|
|
|
// Protocol for a clients to unsubscribe. Will return a SubscriptionResponse
|
|
message UnsubscribeRequest {
|
|
string clientID = 1; // ClientID
|
|
string subject = 2; // subject for the subscription
|
|
string inbox = 3; // Inbox subject to identify subscription
|
|
string durableName = 4; // Optional durable name which survives client restarts
|
|
}
|
|
|
|
// Protocol for a client to close a connection
|
|
message CloseRequest {
|
|
string clientID = 1; // Client name provided to Connect() requests
|
|
}
|
|
|
|
// Response for CloseRequest
|
|
message CloseResponse {
|
|
string error = 1; // err string, empty/omitted if no error
|
|
}
|
|
|