rpc: Add UNKNOWN connection status for contacts

UNKNOWN is the new default status for contacts. A contact is in the
UNKNOWN state when we're not sure whether they are available or not, and
is in the OFFLINE state when we believe that we're online but attempts
to connect to that contact have failed.
This commit is contained in:
John Brooks 2016-09-15 18:30:37 -06:00
parent 346971368b
commit 6e68f861d8
3 changed files with 66 additions and 48 deletions

View File

@ -16,23 +16,26 @@ var _ = math.Inf
type Contact_Status int32
const (
Contact_OFFLINE Contact_Status = 0
Contact_ONLINE Contact_Status = 1
Contact_REQUEST Contact_Status = 2
Contact_REJECTED Contact_Status = 3
Contact_UNKNOWN Contact_Status = 0
Contact_OFFLINE Contact_Status = 1
Contact_ONLINE Contact_Status = 2
Contact_REQUEST Contact_Status = 3
Contact_REJECTED Contact_Status = 4
)
var Contact_Status_name = map[int32]string{
0: "OFFLINE",
1: "ONLINE",
2: "REQUEST",
3: "REJECTED",
0: "UNKNOWN",
1: "OFFLINE",
2: "ONLINE",
3: "REQUEST",
4: "REJECTED",
}
var Contact_Status_value = map[string]int32{
"OFFLINE": 0,
"ONLINE": 1,
"REQUEST": 2,
"REJECTED": 3,
"UNKNOWN": 0,
"OFFLINE": 1,
"ONLINE": 2,
"REQUEST": 3,
"REJECTED": 4,
}
func (x Contact_Status) String() string {
@ -306,36 +309,37 @@ func init() {
func init() { proto.RegisterFile("contact.proto", fileDescriptor1) }
var fileDescriptor1 = []byte{
// 495 bytes of a gzipped FileDescriptorProto
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x09, 0x6e, 0x88, 0x02, 0xff, 0x9c, 0x53, 0xd1, 0x6e, 0xd3, 0x30,
0x14, 0x5d, 0x9a, 0x2c, 0x69, 0x6f, 0xb7, 0xd2, 0x59, 0x13, 0x0a, 0xec, 0x65, 0xb2, 0x10, 0xe2,
0x85, 0x80, 0x0a, 0x8f, 0x48, 0xac, 0x6b, 0x32, 0x51, 0x14, 0x92, 0xe2, 0x25, 0x1f, 0x90, 0x26,
0x96, 0x16, 0x28, 0x4e, 0x49, 0x5c, 0x60, 0xdf, 0xc6, 0x2b, 0x1f, 0xc4, 0x27, 0x60, 0x3b, 0x4e,
0xc7, 0x36, 0x40, 0x68, 0x6f, 0xd7, 0xf7, 0x9c, 0xeb, 0x7b, 0xcf, 0x3d, 0x36, 0xec, 0xe7, 0x15,
0xe3, 0x59, 0xce, 0xbd, 0x75, 0x5d, 0xf1, 0x0a, 0xf5, 0xeb, 0x32, 0xaf, 0xf2, 0x0b, 0xca, 0xf1,
0xf7, 0x1e, 0x38, 0xb3, 0x16, 0x43, 0x23, 0xe8, 0x95, 0x85, 0x6b, 0x1c, 0x1b, 0x4f, 0x76, 0x89,
0x88, 0x90, 0x0b, 0x4e, 0x56, 0x14, 0x35, 0x6d, 0x1a, 0xb7, 0x27, 0x92, 0x03, 0xd2, 0x1d, 0xd1,
0x43, 0xe8, 0xb3, 0x32, 0xff, 0xc8, 0xb2, 0x4f, 0xd4, 0x35, 0x15, 0xb4, 0x3d, 0xa3, 0x63, 0x18,
0x7e, 0xbd, 0xa0, 0x6c, 0x56, 0xd3, 0x8c, 0xd3, 0xc2, 0xb5, 0x14, 0xfc, 0x7b, 0x0a, 0x3d, 0x82,
0xfd, 0x55, 0xd6, 0x70, 0xd1, 0x96, 0xd1, 0x5c, 0x72, 0x76, 0x15, 0xe7, 0x7a, 0x12, 0x4d, 0xc0,
0xa9, 0xe9, 0xe7, 0x0d, 0x6d, 0xb8, 0x6b, 0x0b, 0x7c, 0x38, 0x71, 0xbd, 0x6e, 0x6a, 0x4f, 0x4f,
0x4c, 0x5a, 0x9c, 0x74, 0x44, 0xf4, 0x1c, 0xec, 0x86, 0x67, 0x7c, 0xd3, 0xb8, 0x20, 0x4a, 0x46,
0x7f, 0x28, 0xf1, 0xce, 0x15, 0x4e, 0x34, 0x0f, 0xbf, 0x02, 0xbb, 0xcd, 0xa0, 0x21, 0x38, 0xf1,
0xd9, 0x59, 0x38, 0x8f, 0x82, 0xf1, 0x0e, 0x02, 0xb0, 0xe3, 0x48, 0xc5, 0x86, 0x04, 0x48, 0xf0,
0x3e, 0x0d, 0xce, 0x93, 0x71, 0x0f, 0xed, 0x41, 0x9f, 0x04, 0x6f, 0x83, 0x59, 0x12, 0xf8, 0x63,
0x13, 0xff, 0x30, 0x60, 0x74, 0x7d, 0x16, 0x74, 0x02, 0x83, 0xa2, 0xac, 0x85, 0x84, 0xb2, 0x62,
0x6a, 0x97, 0xa3, 0x09, 0xfe, 0xdb, 0xe0, 0x9e, 0xdf, 0x31, 0xc9, 0x55, 0xd1, 0x1d, 0xd7, 0x8e,
0xc0, 0xe2, 0xf4, 0x1b, 0xd7, 0xfb, 0x56, 0x31, 0x7e, 0x0c, 0x83, 0x6d, 0x07, 0x29, 0x63, 0x1e,
0x9d, 0xc6, 0x69, 0xe4, 0x0b, 0x7d, 0x42, 0x46, 0x9c, 0x26, 0xed, 0xc9, 0xc0, 0x2e, 0xdc, 0x7f,
0x57, 0xb1, 0x92, 0x57, 0xb5, 0x9e, 0xaf, 0xd1, 0x03, 0xe2, 0x9f, 0x06, 0xec, 0xe9, 0x5c, 0xf0,
0x85, 0x32, 0x8e, 0x9e, 0x89, 0x36, 0x97, 0x6b, 0xaa, 0x95, 0x1d, 0xdd, 0x52, 0xa6, 0x58, 0x5e,
0x22, 0x28, 0x44, 0x11, 0xd1, 0x53, 0x70, 0xf4, 0xdb, 0x53, 0x6a, 0x86, 0x93, 0x83, 0x5b, 0x35,
0x6f, 0x76, 0x48, 0xc7, 0x41, 0x2f, 0xaf, 0x5c, 0x37, 0xff, 0xed, 0xba, 0xac, 0xd2, 0x54, 0xfc,
0x1a, 0x2c, 0xd9, 0x12, 0xf5, 0xc1, 0x8a, 0xd2, 0x30, 0x6c, 0x05, 0x2e, 0xe2, 0x45, 0x1a, 0x4e,
0x13, 0x69, 0xa1, 0x03, 0xe6, 0xd4, 0xf7, 0x85, 0x7d, 0xc2, 0xd7, 0x74, 0xe1, 0xcb, 0xa4, 0x29,
0x63, 0x3f, 0x08, 0x03, 0x11, 0x5b, 0xa7, 0x03, 0x70, 0x9a, 0xcd, 0xf2, 0x83, 0x58, 0x15, 0x3e,
0x80, 0x7b, 0xd3, 0xa2, 0xd8, 0xf6, 0x5a, 0xaf, 0x2e, 0xf1, 0x09, 0x1c, 0xfa, 0x74, 0x45, 0x39,
0xbd, 0xe1, 0xf5, 0x7f, 0x7f, 0x18, 0x7c, 0x08, 0xe8, 0xc6, 0x0d, 0xf2, 0xde, 0x23, 0x78, 0x40,
0xa8, 0x6c, 0x3a, 0x67, 0xcb, 0x6a, 0xc3, 0x8a, 0xee, 0x3d, 0x4b, 0x70, 0x69, 0xab, 0xaf, 0xfa,
0xe2, 0x57, 0x00, 0x00, 0x00, 0xff, 0xff, 0xa1, 0xab, 0x53, 0xdb, 0xbb, 0x03, 0x00, 0x00,
// 503 bytes of a gzipped FileDescriptorProto
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x09, 0x6e, 0x88, 0x02, 0xff, 0x9c, 0x53, 0x51, 0x6f, 0xd3, 0x30,
0x10, 0x5e, 0x9a, 0x2c, 0x69, 0xaf, 0x5b, 0xe9, 0xac, 0x09, 0x05, 0xf6, 0x32, 0x59, 0x08, 0xf1,
0x42, 0x40, 0x85, 0x77, 0xd6, 0x35, 0x99, 0x28, 0x84, 0xa4, 0x78, 0x89, 0x78, 0x4e, 0x13, 0x4b,
0x0b, 0x14, 0xa7, 0x24, 0x2e, 0xb0, 0xff, 0xc7, 0x03, 0x3f, 0x87, 0x9f, 0x80, 0xed, 0x38, 0x1d,
0xdb, 0x00, 0x21, 0xde, 0xee, 0xee, 0xfb, 0xce, 0x77, 0xdf, 0xdd, 0x19, 0xf6, 0xf3, 0x8a, 0xf1,
0x2c, 0xe7, 0xde, 0xba, 0xae, 0x78, 0x85, 0xfa, 0x75, 0x99, 0x57, 0xf9, 0x05, 0xe5, 0xf8, 0x7b,
0x0f, 0x9c, 0x59, 0x8b, 0xa1, 0x11, 0xf4, 0xca, 0xc2, 0x35, 0x8e, 0x8d, 0x47, 0xbb, 0x44, 0x58,
0xc8, 0x05, 0x27, 0x2b, 0x8a, 0x9a, 0x36, 0x8d, 0xdb, 0x13, 0xc1, 0x01, 0xe9, 0x5c, 0x74, 0x1f,
0xfa, 0xac, 0xcc, 0x3f, 0xb0, 0xec, 0x23, 0x75, 0x4d, 0x05, 0x6d, 0x7d, 0x74, 0x0c, 0xc3, 0x2f,
0x17, 0x94, 0xcd, 0x6a, 0x9a, 0x71, 0x5a, 0xb8, 0x96, 0x82, 0x7f, 0x0d, 0xa1, 0x07, 0xb0, 0xbf,
0xca, 0x1a, 0x2e, 0xca, 0x32, 0x9a, 0x4b, 0xce, 0xae, 0xe2, 0x5c, 0x0f, 0xa2, 0x09, 0x38, 0x35,
0xfd, 0xb4, 0xa1, 0x0d, 0x77, 0x6d, 0x81, 0x0f, 0x27, 0xae, 0xd7, 0x75, 0xed, 0xe9, 0x8e, 0x49,
0x8b, 0x93, 0x8e, 0x88, 0x9e, 0x82, 0xdd, 0xf0, 0x8c, 0x6f, 0x1a, 0x17, 0x44, 0xca, 0xe8, 0x37,
0x29, 0xde, 0xb9, 0xc2, 0x89, 0xe6, 0xe1, 0x39, 0xd8, 0x6d, 0x04, 0x0d, 0xc1, 0x49, 0xa3, 0xd7,
0x51, 0xfc, 0x2e, 0x1a, 0xef, 0x48, 0x27, 0x3e, 0x3b, 0x0b, 0xe7, 0x51, 0x30, 0x36, 0x10, 0x80,
0x1d, 0x47, 0xca, 0xee, 0x49, 0x80, 0x04, 0x6f, 0xd3, 0xe0, 0x3c, 0x19, 0x9b, 0x68, 0x0f, 0xfa,
0x24, 0x78, 0x15, 0xcc, 0x92, 0xc0, 0x1f, 0x5b, 0xf8, 0x9b, 0x01, 0xa3, 0xeb, 0x8d, 0xa1, 0x13,
0x18, 0x14, 0x65, 0x2d, 0xf4, 0x94, 0x15, 0x53, 0x83, 0x1d, 0x4d, 0xf0, 0x9f, 0x54, 0x78, 0x7e,
0xc7, 0x24, 0x57, 0x49, 0xff, 0xb9, 0x03, 0x04, 0x16, 0xa7, 0x5f, 0xb9, 0x1e, 0xbe, 0xb2, 0xf1,
0x43, 0x18, 0x6c, 0x2b, 0x48, 0x19, 0xf3, 0xe8, 0x34, 0x4e, 0x23, 0x5f, 0x88, 0x15, 0x32, 0xe2,
0x34, 0x69, 0x3d, 0x03, 0xbb, 0x70, 0xf7, 0x4d, 0xc5, 0x4a, 0x5e, 0xd5, 0xba, 0xbf, 0x46, 0x37,
0x88, 0x7f, 0x18, 0xb0, 0xa7, 0x63, 0xc1, 0x67, 0xca, 0x38, 0x7a, 0x22, 0xca, 0x5c, 0xae, 0xa9,
0x56, 0x76, 0x74, 0x4b, 0x99, 0x62, 0x79, 0x89, 0xa0, 0x10, 0x45, 0x44, 0x8f, 0xc1, 0xd1, 0x87,
0xa8, 0xd4, 0x0c, 0x27, 0x07, 0xb7, 0x72, 0x5e, 0xee, 0x90, 0x8e, 0x83, 0x9e, 0x5f, 0x9d, 0x80,
0xf9, 0xf7, 0x13, 0x90, 0x59, 0x9a, 0x8a, 0x5f, 0x80, 0x25, 0x4b, 0xa2, 0x3e, 0x58, 0x51, 0x1a,
0x86, 0xad, 0xc0, 0x45, 0xbc, 0x48, 0xc3, 0x69, 0x22, 0xd7, 0xe9, 0x80, 0x39, 0xf5, 0x7d, 0xb1,
0x4b, 0xb1, 0xd7, 0x74, 0xe1, 0xcb, 0xa0, 0x29, 0x6d, 0x3f, 0x08, 0x03, 0x61, 0x5b, 0xa7, 0x03,
0x70, 0x9a, 0xcd, 0xf2, 0xbd, 0x18, 0x15, 0x3e, 0x80, 0x3b, 0xd3, 0xa2, 0xd8, 0xd6, 0x5a, 0xaf,
0x2e, 0xf1, 0x09, 0x1c, 0xfa, 0x74, 0x45, 0x39, 0xbd, 0xb1, 0xeb, 0x7f, 0xfe, 0x3d, 0xf8, 0x10,
0xd0, 0x8d, 0x17, 0xe4, 0xbb, 0x47, 0x70, 0x8f, 0x50, 0x59, 0x74, 0xce, 0x96, 0xd5, 0x86, 0x15,
0xdd, 0x71, 0x4b, 0x70, 0x69, 0xab, 0x7f, 0xfb, 0xec, 0x67, 0x00, 0x00, 0x00, 0xff, 0xff, 0x53,
0x03, 0x9d, 0x60, 0xc8, 0x03, 0x00, 0x00,
}

View File

@ -1,6 +1,9 @@
syntax = "proto3";
package ricochet;
// XXX Using integer contact IDs seems dangerous, and it's especially a
// problem that 0 is a valid contact ID. Switch to UUID? Or use address?
message Contact {
int32 id = 1;
string address = 2;
@ -10,10 +13,11 @@ message Contact {
ContactRequest request = 6;
enum Status {
OFFLINE = 0;
ONLINE = 1;
REQUEST = 2;
REJECTED = 3;
UNKNOWN = 0;
OFFLINE = 1;
ONLINE = 2;
REQUEST = 3;
REJECTED = 4;
}
Status status = 10;
}

View File

@ -71,6 +71,11 @@ type RicochetCoreClient interface {
StopNetwork(ctx context.Context, in *StopNetworkRequest, opts ...grpc.CallOption) (*NetworkStatus, error)
// XXX Service status
GetIdentity(ctx context.Context, in *IdentityRequest, opts ...grpc.CallOption) (*Identity, error)
// Query contacts and monitor for contact changes. The full contact list
// is sent in POPULATE events, terminated by a POPULATE event with no
// subject. Any new, removed, or modified contacts, including changes in
// the state of contacts, are sent as ADD, UPDATE, or DELETE events until
// the stream is closed.
MonitorContacts(ctx context.Context, in *MonitorContactsRequest, opts ...grpc.CallOption) (RicochetCore_MonitorContactsClient, error)
AddContactRequest(ctx context.Context, in *ContactRequest, opts ...grpc.CallOption) (*Contact, error)
UpdateContact(ctx context.Context, in *Contact, opts ...grpc.CallOption) (*Contact, error)
@ -285,6 +290,11 @@ type RicochetCoreServer interface {
StopNetwork(context.Context, *StopNetworkRequest) (*NetworkStatus, error)
// XXX Service status
GetIdentity(context.Context, *IdentityRequest) (*Identity, error)
// Query contacts and monitor for contact changes. The full contact list
// is sent in POPULATE events, terminated by a POPULATE event with no
// subject. Any new, removed, or modified contacts, including changes in
// the state of contacts, are sent as ADD, UPDATE, or DELETE events until
// the stream is closed.
MonitorContacts(*MonitorContactsRequest, RicochetCore_MonitorContactsServer) error
AddContactRequest(context.Context, *ContactRequest) (*Contact, error)
UpdateContact(context.Context, *Contact) (*Contact, error)