Skip to content

Commit cef1367

Browse files
RangerMauveMauve Signweaverachou11
authored
Feat: RPC acknowledgements, add role after project details are sent (#1015)
* feat: Add feature flags and rpc ack messages * test: acks enabled/disabled * test: fix tests for new RPC timings / features * fix: Add role after project details received * Update src/local-peers.js Co-authored-by: Andrew Chou <[email protected]> * Update src/local-peers.js Co-authored-by: Andrew Chou <[email protected]> * core: Cleanup per PR review * core: deffered -> deferred --------- Co-authored-by: Mauve Signweaver <[email protected]> Co-authored-by: Andrew Chou <[email protected]>
1 parent 6226952 commit cef1367

File tree

9 files changed

+909
-17
lines changed

9 files changed

+909
-17
lines changed

proto/rpc.proto

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -39,6 +39,27 @@ message DeviceInfo {
3939
tablet = 2;
4040
desktop = 3;
4141
}
42+
enum RPCFeatures {
43+
features_unspecified = 0;
44+
ack = 1;
45+
}
4246
string name = 1;
4347
optional DeviceType deviceType = 2;
48+
repeated RPCFeatures features = 3;
49+
}
50+
51+
message InviteAck {
52+
bytes inviteId = 1;
53+
}
54+
55+
message InviteCancelAck {
56+
bytes inviteId = 1;
57+
}
58+
59+
message InviteResponseAck {
60+
bytes inviteId = 1;
4461
}
62+
63+
message ProjectJoinDetailsAck {
64+
bytes inviteId = 1;
65+
}

src/generated/rpc.d.ts

Lines changed: 45 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,7 @@ export interface ProjectJoinDetails {
3333
export interface DeviceInfo {
3434
name: string;
3535
deviceType?: DeviceInfo_DeviceType | undefined;
36+
features: DeviceInfo_RPCFeatures[];
3637
}
3738
export declare const DeviceInfo_DeviceType: {
3839
readonly device_type_unspecified: "device_type_unspecified";
@@ -44,6 +45,26 @@ export declare const DeviceInfo_DeviceType: {
4445
export type DeviceInfo_DeviceType = typeof DeviceInfo_DeviceType[keyof typeof DeviceInfo_DeviceType];
4546
export declare function deviceInfo_DeviceTypeFromJSON(object: any): DeviceInfo_DeviceType;
4647
export declare function deviceInfo_DeviceTypeToNumber(object: DeviceInfo_DeviceType): number;
48+
export declare const DeviceInfo_RPCFeatures: {
49+
readonly features_unspecified: "features_unspecified";
50+
readonly ack: "ack";
51+
readonly UNRECOGNIZED: "UNRECOGNIZED";
52+
};
53+
export type DeviceInfo_RPCFeatures = typeof DeviceInfo_RPCFeatures[keyof typeof DeviceInfo_RPCFeatures];
54+
export declare function deviceInfo_RPCFeaturesFromJSON(object: any): DeviceInfo_RPCFeatures;
55+
export declare function deviceInfo_RPCFeaturesToNumber(object: DeviceInfo_RPCFeatures): number;
56+
export interface InviteAck {
57+
inviteId: Buffer;
58+
}
59+
export interface InviteCancelAck {
60+
inviteId: Buffer;
61+
}
62+
export interface InviteResponseAck {
63+
inviteId: Buffer;
64+
}
65+
export interface ProjectJoinDetailsAck {
66+
inviteId: Buffer;
67+
}
4768
export declare const Invite: {
4869
encode(message: Invite, writer?: _m0.Writer): _m0.Writer;
4970
decode(input: _m0.Reader | Uint8Array, length?: number): Invite;
@@ -74,6 +95,30 @@ export declare const DeviceInfo: {
7495
create<I extends Exact<DeepPartial<DeviceInfo>, I>>(base?: I): DeviceInfo;
7596
fromPartial<I extends Exact<DeepPartial<DeviceInfo>, I>>(object: I): DeviceInfo;
7697
};
98+
export declare const InviteAck: {
99+
encode(message: InviteAck, writer?: _m0.Writer): _m0.Writer;
100+
decode(input: _m0.Reader | Uint8Array, length?: number): InviteAck;
101+
create<I extends Exact<DeepPartial<InviteAck>, I>>(base?: I): InviteAck;
102+
fromPartial<I extends Exact<DeepPartial<InviteAck>, I>>(object: I): InviteAck;
103+
};
104+
export declare const InviteCancelAck: {
105+
encode(message: InviteCancelAck, writer?: _m0.Writer): _m0.Writer;
106+
decode(input: _m0.Reader | Uint8Array, length?: number): InviteCancelAck;
107+
create<I extends Exact<DeepPartial<InviteCancelAck>, I>>(base?: I): InviteCancelAck;
108+
fromPartial<I extends Exact<DeepPartial<InviteCancelAck>, I>>(object: I): InviteCancelAck;
109+
};
110+
export declare const InviteResponseAck: {
111+
encode(message: InviteResponseAck, writer?: _m0.Writer): _m0.Writer;
112+
decode(input: _m0.Reader | Uint8Array, length?: number): InviteResponseAck;
113+
create<I extends Exact<DeepPartial<InviteResponseAck>, I>>(base?: I): InviteResponseAck;
114+
fromPartial<I extends Exact<DeepPartial<InviteResponseAck>, I>>(object: I): InviteResponseAck;
115+
};
116+
export declare const ProjectJoinDetailsAck: {
117+
encode(message: ProjectJoinDetailsAck, writer?: _m0.Writer): _m0.Writer;
118+
decode(input: _m0.Reader | Uint8Array, length?: number): ProjectJoinDetailsAck;
119+
create<I extends Exact<DeepPartial<ProjectJoinDetailsAck>, I>>(base?: I): ProjectJoinDetailsAck;
120+
fromPartial<I extends Exact<DeepPartial<ProjectJoinDetailsAck>, I>>(object: I): ProjectJoinDetailsAck;
121+
};
77122
type Builtin = Date | Function | Uint8Array | string | number | boolean | undefined;
78123
type DeepPartial<T> = T extends Builtin ? T : T extends Array<infer U> ? Array<DeepPartial<U>> : T extends ReadonlyArray<infer U> ? ReadonlyArray<DeepPartial<U>> : T extends {} ? {
79124
[K in keyof T]?: DeepPartial<T[K]>;

src/generated/rpc.js

Lines changed: 220 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -85,6 +85,36 @@ export function deviceInfo_DeviceTypeToNumber(object) {
8585
return -1;
8686
}
8787
}
88+
export var DeviceInfo_RPCFeatures = {
89+
features_unspecified: "features_unspecified",
90+
ack: "ack",
91+
UNRECOGNIZED: "UNRECOGNIZED",
92+
};
93+
export function deviceInfo_RPCFeaturesFromJSON(object) {
94+
switch (object) {
95+
case 0:
96+
case "features_unspecified":
97+
return DeviceInfo_RPCFeatures.features_unspecified;
98+
case 1:
99+
case "ack":
100+
return DeviceInfo_RPCFeatures.ack;
101+
case -1:
102+
case "UNRECOGNIZED":
103+
default:
104+
return DeviceInfo_RPCFeatures.UNRECOGNIZED;
105+
}
106+
}
107+
export function deviceInfo_RPCFeaturesToNumber(object) {
108+
switch (object) {
109+
case DeviceInfo_RPCFeatures.features_unspecified:
110+
return 0;
111+
case DeviceInfo_RPCFeatures.ack:
112+
return 1;
113+
case DeviceInfo_RPCFeatures.UNRECOGNIZED:
114+
default:
115+
return -1;
116+
}
117+
}
88118
function createBaseInvite() {
89119
return { inviteId: Buffer.alloc(0), projectInviteId: Buffer.alloc(0), projectName: "", invitorName: "" };
90120
}
@@ -336,7 +366,7 @@ export var ProjectJoinDetails = {
336366
},
337367
};
338368
function createBaseDeviceInfo() {
339-
return { name: "" };
369+
return { name: "", features: [] };
340370
}
341371
export var DeviceInfo = {
342372
encode: function (message, writer) {
@@ -347,6 +377,12 @@ export var DeviceInfo = {
347377
if (message.deviceType !== undefined) {
348378
writer.uint32(16).int32(deviceInfo_DeviceTypeToNumber(message.deviceType));
349379
}
380+
writer.uint32(26).fork();
381+
for (var _i = 0, _a = message.features; _i < _a.length; _i++) {
382+
var v = _a[_i];
383+
writer.int32(deviceInfo_RPCFeaturesToNumber(v));
384+
}
385+
writer.ldelim();
350386
return writer;
351387
},
352388
decode: function (input, length) {
@@ -368,6 +404,19 @@ export var DeviceInfo = {
368404
}
369405
message.deviceType = deviceInfo_DeviceTypeFromJSON(reader.int32());
370406
continue;
407+
case 3:
408+
if (tag === 24) {
409+
message.features.push(deviceInfo_RPCFeaturesFromJSON(reader.int32()));
410+
continue;
411+
}
412+
if (tag === 26) {
413+
var end2 = reader.uint32() + reader.pos;
414+
while (reader.pos < end2) {
415+
message.features.push(deviceInfo_RPCFeaturesFromJSON(reader.int32()));
416+
}
417+
continue;
418+
}
419+
break;
371420
}
372421
if ((tag & 7) === 4 || tag === 0) {
373422
break;
@@ -380,10 +429,179 @@ export var DeviceInfo = {
380429
return DeviceInfo.fromPartial(base !== null && base !== void 0 ? base : {});
381430
},
382431
fromPartial: function (object) {
383-
var _a, _b;
432+
var _a, _b, _c;
384433
var message = createBaseDeviceInfo();
385434
message.name = (_a = object.name) !== null && _a !== void 0 ? _a : "";
386435
message.deviceType = (_b = object.deviceType) !== null && _b !== void 0 ? _b : undefined;
436+
message.features = ((_c = object.features) === null || _c === void 0 ? void 0 : _c.map(function (e) { return e; })) || [];
437+
return message;
438+
},
439+
};
440+
function createBaseInviteAck() {
441+
return { inviteId: Buffer.alloc(0) };
442+
}
443+
export var InviteAck = {
444+
encode: function (message, writer) {
445+
if (writer === void 0) { writer = _m0.Writer.create(); }
446+
if (message.inviteId.length !== 0) {
447+
writer.uint32(10).bytes(message.inviteId);
448+
}
449+
return writer;
450+
},
451+
decode: function (input, length) {
452+
var reader = input instanceof _m0.Reader ? input : _m0.Reader.create(input);
453+
var end = length === undefined ? reader.len : reader.pos + length;
454+
var message = createBaseInviteAck();
455+
while (reader.pos < end) {
456+
var tag = reader.uint32();
457+
switch (tag >>> 3) {
458+
case 1:
459+
if (tag !== 10) {
460+
break;
461+
}
462+
message.inviteId = reader.bytes();
463+
continue;
464+
}
465+
if ((tag & 7) === 4 || tag === 0) {
466+
break;
467+
}
468+
reader.skipType(tag & 7);
469+
}
470+
return message;
471+
},
472+
create: function (base) {
473+
return InviteAck.fromPartial(base !== null && base !== void 0 ? base : {});
474+
},
475+
fromPartial: function (object) {
476+
var _a;
477+
var message = createBaseInviteAck();
478+
message.inviteId = (_a = object.inviteId) !== null && _a !== void 0 ? _a : Buffer.alloc(0);
479+
return message;
480+
},
481+
};
482+
function createBaseInviteCancelAck() {
483+
return { inviteId: Buffer.alloc(0) };
484+
}
485+
export var InviteCancelAck = {
486+
encode: function (message, writer) {
487+
if (writer === void 0) { writer = _m0.Writer.create(); }
488+
if (message.inviteId.length !== 0) {
489+
writer.uint32(10).bytes(message.inviteId);
490+
}
491+
return writer;
492+
},
493+
decode: function (input, length) {
494+
var reader = input instanceof _m0.Reader ? input : _m0.Reader.create(input);
495+
var end = length === undefined ? reader.len : reader.pos + length;
496+
var message = createBaseInviteCancelAck();
497+
while (reader.pos < end) {
498+
var tag = reader.uint32();
499+
switch (tag >>> 3) {
500+
case 1:
501+
if (tag !== 10) {
502+
break;
503+
}
504+
message.inviteId = reader.bytes();
505+
continue;
506+
}
507+
if ((tag & 7) === 4 || tag === 0) {
508+
break;
509+
}
510+
reader.skipType(tag & 7);
511+
}
512+
return message;
513+
},
514+
create: function (base) {
515+
return InviteCancelAck.fromPartial(base !== null && base !== void 0 ? base : {});
516+
},
517+
fromPartial: function (object) {
518+
var _a;
519+
var message = createBaseInviteCancelAck();
520+
message.inviteId = (_a = object.inviteId) !== null && _a !== void 0 ? _a : Buffer.alloc(0);
521+
return message;
522+
},
523+
};
524+
function createBaseInviteResponseAck() {
525+
return { inviteId: Buffer.alloc(0) };
526+
}
527+
export var InviteResponseAck = {
528+
encode: function (message, writer) {
529+
if (writer === void 0) { writer = _m0.Writer.create(); }
530+
if (message.inviteId.length !== 0) {
531+
writer.uint32(10).bytes(message.inviteId);
532+
}
533+
return writer;
534+
},
535+
decode: function (input, length) {
536+
var reader = input instanceof _m0.Reader ? input : _m0.Reader.create(input);
537+
var end = length === undefined ? reader.len : reader.pos + length;
538+
var message = createBaseInviteResponseAck();
539+
while (reader.pos < end) {
540+
var tag = reader.uint32();
541+
switch (tag >>> 3) {
542+
case 1:
543+
if (tag !== 10) {
544+
break;
545+
}
546+
message.inviteId = reader.bytes();
547+
continue;
548+
}
549+
if ((tag & 7) === 4 || tag === 0) {
550+
break;
551+
}
552+
reader.skipType(tag & 7);
553+
}
554+
return message;
555+
},
556+
create: function (base) {
557+
return InviteResponseAck.fromPartial(base !== null && base !== void 0 ? base : {});
558+
},
559+
fromPartial: function (object) {
560+
var _a;
561+
var message = createBaseInviteResponseAck();
562+
message.inviteId = (_a = object.inviteId) !== null && _a !== void 0 ? _a : Buffer.alloc(0);
563+
return message;
564+
},
565+
};
566+
function createBaseProjectJoinDetailsAck() {
567+
return { inviteId: Buffer.alloc(0) };
568+
}
569+
export var ProjectJoinDetailsAck = {
570+
encode: function (message, writer) {
571+
if (writer === void 0) { writer = _m0.Writer.create(); }
572+
if (message.inviteId.length !== 0) {
573+
writer.uint32(10).bytes(message.inviteId);
574+
}
575+
return writer;
576+
},
577+
decode: function (input, length) {
578+
var reader = input instanceof _m0.Reader ? input : _m0.Reader.create(input);
579+
var end = length === undefined ? reader.len : reader.pos + length;
580+
var message = createBaseProjectJoinDetailsAck();
581+
while (reader.pos < end) {
582+
var tag = reader.uint32();
583+
switch (tag >>> 3) {
584+
case 1:
585+
if (tag !== 10) {
586+
break;
587+
}
588+
message.inviteId = reader.bytes();
589+
continue;
590+
}
591+
if ((tag & 7) === 4 || tag === 0) {
592+
break;
593+
}
594+
reader.skipType(tag & 7);
595+
}
596+
return message;
597+
},
598+
create: function (base) {
599+
return ProjectJoinDetailsAck.fromPartial(base !== null && base !== void 0 ? base : {});
600+
},
601+
fromPartial: function (object) {
602+
var _a;
603+
var message = createBaseProjectJoinDetailsAck();
604+
message.inviteId = (_a = object.inviteId) !== null && _a !== void 0 ? _a : Buffer.alloc(0);
387605
return message;
388606
},
389607
};

0 commit comments

Comments
 (0)