Skip to content

Commit 4a85e62

Browse files
authored
Merge pull request #237 from status-im/nim-waku-v0.5
2 parents 1f05695 + c4d0501 commit 4a85e62

File tree

8 files changed

+109
-11
lines changed

8 files changed

+109
-11
lines changed

CHANGELOG.md

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,10 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
77

88
## [Unreleased]
99

10+
### Changed
11+
- **Breaking**: Store Response Protobuf change to align with nim-waku v0.5
12+
([nim-waku#676](https://github.com/status-im/nim-waku/pull/676)).
13+
1014
## [0.8.1] - 2021-07-16
1115

1216
### Added

nim-waku

proto/waku/v2/store.proto

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@ import "waku/v2/message.proto";
77
message Index {
88
bytes digest = 1;
99
double received_time = 2;
10+
double sender_time = 3;
1011
}
1112

1213
message PagingInfo {
@@ -32,8 +33,13 @@ message HistoryQuery {
3233
}
3334

3435
message HistoryResponse {
35-
repeated WakuMessage messages = 1;
36-
PagingInfo paging_info = 2;
36+
repeated WakuMessage messages = 2;
37+
PagingInfo paging_info = 3;
38+
enum Error {
39+
ERROR_NONE_UNSPECIFIED = 0;
40+
ERROR_INVALID_CURSOR = 1;
41+
}
42+
Error error = 4;
3743
}
3844

3945
message HistoryRPC {

src/lib/waku.spec.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,7 @@ describe('Waku Dial', function () {
2929
expect(nimPeers).to.deep.equal([
3030
{
3131
multiaddr: multiAddrWithId,
32-
protocol: '/vac/waku/relay/2.0.0-beta2',
32+
protocol: '/vac/waku/relay/2.0.0',
3333
connected: true,
3434
},
3535
]);

src/lib/waku_relay/index.spec.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -72,7 +72,7 @@ describe('Waku Relay', () => {
7272
it('Register correct protocols', async function () {
7373
const protocols = Array.from(waku1.libp2p.upgrader.protocols.keys());
7474

75-
expect(protocols).to.contain('/vac/waku/relay/2.0.0-beta2');
75+
expect(protocols).to.contain('/vac/waku/relay/2.0.0');
7676
expect(protocols.findIndex((value) => value.match(/sub/))).to.eq(-1);
7777
});
7878

src/lib/waku_store/index.ts

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@ import Libp2p from 'libp2p';
66
import { Peer } from 'libp2p/src/peer-store';
77
import PeerId from 'peer-id';
88

9+
import { HistoryResponse_Error } from '../../proto/waku/v2/store';
910
import { getPeersForProtocol, selectRandomPeer } from '../select_peer';
1011
import { WakuMessage } from '../waku_message';
1112
import { DefaultPubsubTopic } from '../waku_relay';
@@ -117,6 +118,14 @@ export class WakuStore {
117118
return null;
118119
}
119120

121+
if (
122+
response.error &&
123+
response.error === HistoryResponse_Error.ERROR_INVALID_CURSOR
124+
) {
125+
console.log('Error in response: INVALID CURSOR');
126+
return null;
127+
}
128+
120129
if (!response.messages || !response.messages.length) {
121130
// No messages left (or stored)
122131
console.log('No messages present in HistoryRPC response');

src/proto/waku/v2/store.ts

Lines changed: 79 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@ export const protobufPackage = 'waku.v2';
88
export interface Index {
99
digest: Uint8Array;
1010
receivedTime: number;
11+
senderTime: number;
1112
}
1213

1314
export interface PagingInfo {
@@ -67,6 +68,43 @@ export interface HistoryQuery {
6768
export interface HistoryResponse {
6869
messages: WakuMessage[];
6970
pagingInfo: PagingInfo | undefined;
71+
error: HistoryResponse_Error;
72+
}
73+
74+
export enum HistoryResponse_Error {
75+
ERROR_NONE_UNSPECIFIED = 0,
76+
ERROR_INVALID_CURSOR = 1,
77+
UNRECOGNIZED = -1,
78+
}
79+
80+
export function historyResponse_ErrorFromJSON(
81+
object: any
82+
): HistoryResponse_Error {
83+
switch (object) {
84+
case 0:
85+
case 'ERROR_NONE_UNSPECIFIED':
86+
return HistoryResponse_Error.ERROR_NONE_UNSPECIFIED;
87+
case 1:
88+
case 'ERROR_INVALID_CURSOR':
89+
return HistoryResponse_Error.ERROR_INVALID_CURSOR;
90+
case -1:
91+
case 'UNRECOGNIZED':
92+
default:
93+
return HistoryResponse_Error.UNRECOGNIZED;
94+
}
95+
}
96+
97+
export function historyResponse_ErrorToJSON(
98+
object: HistoryResponse_Error
99+
): string {
100+
switch (object) {
101+
case HistoryResponse_Error.ERROR_NONE_UNSPECIFIED:
102+
return 'ERROR_NONE_UNSPECIFIED';
103+
case HistoryResponse_Error.ERROR_INVALID_CURSOR:
104+
return 'ERROR_INVALID_CURSOR';
105+
default:
106+
return 'UNKNOWN';
107+
}
70108
}
71109

72110
export interface HistoryRPC {
@@ -75,7 +113,7 @@ export interface HistoryRPC {
75113
response: HistoryResponse | undefined;
76114
}
77115

78-
const baseIndex: object = { receivedTime: 0 };
116+
const baseIndex: object = { receivedTime: 0, senderTime: 0 };
79117

80118
export const Index = {
81119
encode(message: Index, writer: _m0.Writer = _m0.Writer.create()): _m0.Writer {
@@ -85,6 +123,9 @@ export const Index = {
85123
if (message.receivedTime !== 0) {
86124
writer.uint32(17).double(message.receivedTime);
87125
}
126+
if (message.senderTime !== 0) {
127+
writer.uint32(25).double(message.senderTime);
128+
}
88129
return writer;
89130
},
90131

@@ -102,6 +143,9 @@ export const Index = {
102143
case 2:
103144
message.receivedTime = reader.double();
104145
break;
146+
case 3:
147+
message.senderTime = reader.double();
148+
break;
105149
default:
106150
reader.skipType(tag & 7);
107151
break;
@@ -121,6 +165,11 @@ export const Index = {
121165
} else {
122166
message.receivedTime = 0;
123167
}
168+
if (object.senderTime !== undefined && object.senderTime !== null) {
169+
message.senderTime = Number(object.senderTime);
170+
} else {
171+
message.senderTime = 0;
172+
}
124173
return message;
125174
},
126175

@@ -132,6 +181,7 @@ export const Index = {
132181
));
133182
message.receivedTime !== undefined &&
134183
(obj.receivedTime = message.receivedTime);
184+
message.senderTime !== undefined && (obj.senderTime = message.senderTime);
135185
return obj;
136186
},
137187

@@ -147,6 +197,11 @@ export const Index = {
147197
} else {
148198
message.receivedTime = 0;
149199
}
200+
if (object.senderTime !== undefined && object.senderTime !== null) {
201+
message.senderTime = object.senderTime;
202+
} else {
203+
message.senderTime = 0;
204+
}
150205
return message;
151206
},
152207
};
@@ -445,18 +500,21 @@ export const HistoryQuery = {
445500
},
446501
};
447502

448-
const baseHistoryResponse: object = {};
503+
const baseHistoryResponse: object = { error: 0 };
449504

450505
export const HistoryResponse = {
451506
encode(
452507
message: HistoryResponse,
453508
writer: _m0.Writer = _m0.Writer.create()
454509
): _m0.Writer {
455510
for (const v of message.messages) {
456-
WakuMessage.encode(v!, writer.uint32(10).fork()).ldelim();
511+
WakuMessage.encode(v!, writer.uint32(18).fork()).ldelim();
457512
}
458513
if (message.pagingInfo !== undefined) {
459-
PagingInfo.encode(message.pagingInfo, writer.uint32(18).fork()).ldelim();
514+
PagingInfo.encode(message.pagingInfo, writer.uint32(26).fork()).ldelim();
515+
}
516+
if (message.error !== 0) {
517+
writer.uint32(32).int32(message.error);
460518
}
461519
return writer;
462520
},
@@ -469,12 +527,15 @@ export const HistoryResponse = {
469527
while (reader.pos < end) {
470528
const tag = reader.uint32();
471529
switch (tag >>> 3) {
472-
case 1:
530+
case 2:
473531
message.messages.push(WakuMessage.decode(reader, reader.uint32()));
474532
break;
475-
case 2:
533+
case 3:
476534
message.pagingInfo = PagingInfo.decode(reader, reader.uint32());
477535
break;
536+
case 4:
537+
message.error = reader.int32() as any;
538+
break;
478539
default:
479540
reader.skipType(tag & 7);
480541
break;
@@ -496,6 +557,11 @@ export const HistoryResponse = {
496557
} else {
497558
message.pagingInfo = undefined;
498559
}
560+
if (object.error !== undefined && object.error !== null) {
561+
message.error = historyResponse_ErrorFromJSON(object.error);
562+
} else {
563+
message.error = 0;
564+
}
499565
return message;
500566
},
501567

@@ -512,6 +578,8 @@ export const HistoryResponse = {
512578
(obj.pagingInfo = message.pagingInfo
513579
? PagingInfo.toJSON(message.pagingInfo)
514580
: undefined);
581+
message.error !== undefined &&
582+
(obj.error = historyResponse_ErrorToJSON(message.error));
515583
return obj;
516584
},
517585

@@ -528,6 +596,11 @@ export const HistoryResponse = {
528596
} else {
529597
message.pagingInfo = undefined;
530598
}
599+
if (object.error !== undefined && object.error !== null) {
600+
message.error = object.error;
601+
} else {
602+
message.error = 0;
603+
}
531604
return message;
532605
},
533606
};

src/test_utils/nim_waku.ts

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -63,6 +63,7 @@ export interface KeyPair {
6363
export interface WakuRelayMessage {
6464
payload: string;
6565
contentTopic?: string;
66+
timestamp?: number; // Float in seconds
6667
}
6768

6869
export class NimWaku {
@@ -177,10 +178,15 @@ export class NimWaku {
177178
if (!message.payload) {
178179
throw 'Attempting to send empty message';
179180
}
181+
let timestamp;
182+
if (message.timestamp) {
183+
timestamp = message.timestamp.valueOf() / 1000;
184+
}
180185

181186
const rpcMessage = {
182187
payload: bufToHex(message.payload),
183188
contentTopic: message.contentTopic,
189+
timestamp,
184190
};
185191

186192
return this.rpcCall<boolean>('post_waku_v2_relay_v1_message', [

0 commit comments

Comments
 (0)