Skip to content

Commit 2edab04

Browse files
authored
feat(zeromq): add ZMQ Publishers to NodeInfo API (#1674)
1 parent d59c0c9 commit 2edab04

31 files changed

+4263
-838
lines changed

node/node.go

+1-1
Original file line numberDiff line numberDiff line change
@@ -95,7 +95,7 @@ func NewNode(genDoc *genesis.Genesis, conf *config.Config,
9595
return nil, err
9696
}
9797

98-
grpcServer := grpc.NewServer(conf.GRPC, state, syn, net, consMgr, walletMgr)
98+
grpcServer := grpc.NewServer(conf.GRPC, state, syn, net, consMgr, walletMgr, zeromqServer)
9999
httpServer := http.NewServer(conf.HTTP, enableHTTPAuth)
100100
jsonrpcServer := jsonrpc.NewServer(conf.JSONRPC)
101101

wallet/wallet_test.go

+1-1
Original file line numberDiff line numberDiff line change
@@ -47,7 +47,7 @@ func setup(t *testing.T) *testData {
4747
gRPCServer := grpc.NewServer(
4848
grpcConf, mockState,
4949
nil, nil,
50-
nil, wallet.NewWalletManager(walletMgrConf),
50+
nil, wallet.NewWalletManager(walletMgrConf), nil,
5151
)
5252

5353
assert.NoError(t, gRPCServer.StartServer())

www/grpc/gen/dart/network.pb.dart

+83
Original file line numberDiff line numberDiff line change
@@ -185,6 +185,7 @@ class GetNodeInfoResponse extends $pb.GeneratedMessage {
185185
..pPS(9, const $core.bool.fromEnvironment('protobuf.omit_field_names') ? '' : 'protocols')
186186
..a<$core.double>(13, const $core.bool.fromEnvironment('protobuf.omit_field_names') ? '' : 'clockOffset', $pb.PbFieldType.OD)
187187
..aOM<ConnectionInfo>(14, const $core.bool.fromEnvironment('protobuf.omit_field_names') ? '' : 'connectionInfo', subBuilder: ConnectionInfo.create)
188+
..pc<ZMQPublisherInfo>(15, const $core.bool.fromEnvironment('protobuf.omit_field_names') ? '' : 'zmqPublishers', $pb.PbFieldType.PM, subBuilder: ZMQPublisherInfo.create)
188189
..hasRequiredFields = false
189190
;
190191

@@ -201,6 +202,7 @@ class GetNodeInfoResponse extends $pb.GeneratedMessage {
201202
$core.Iterable<$core.String>? protocols,
202203
$core.double? clockOffset,
203204
ConnectionInfo? connectionInfo,
205+
$core.Iterable<ZMQPublisherInfo>? zmqPublishers,
204206
}) {
205207
final _result = create();
206208
if (moniker != null) {
@@ -236,6 +238,9 @@ class GetNodeInfoResponse extends $pb.GeneratedMessage {
236238
if (connectionInfo != null) {
237239
_result.connectionInfo = connectionInfo;
238240
}
241+
if (zmqPublishers != null) {
242+
_result.zmqPublishers.addAll(zmqPublishers);
243+
}
239244
return _result;
240245
}
241246
factory GetNodeInfoResponse.fromBuffer($core.List<$core.int> i, [$pb.ExtensionRegistry r = $pb.ExtensionRegistry.EMPTY]) => create()..mergeFromBuffer(i, r);
@@ -347,6 +352,84 @@ class GetNodeInfoResponse extends $pb.GeneratedMessage {
347352
void clearConnectionInfo() => clearField(14);
348353
@$pb.TagNumber(14)
349354
ConnectionInfo ensureConnectionInfo() => $_ensure(10);
355+
356+
@$pb.TagNumber(15)
357+
$core.List<ZMQPublisherInfo> get zmqPublishers => $_getList(11);
358+
}
359+
360+
class ZMQPublisherInfo extends $pb.GeneratedMessage {
361+
static final $pb.BuilderInfo _i = $pb.BuilderInfo(const $core.bool.fromEnvironment('protobuf.omit_message_names') ? '' : 'ZMQPublisherInfo', package: const $pb.PackageName(const $core.bool.fromEnvironment('protobuf.omit_message_names') ? '' : 'pactus'), createEmptyInstance: create)
362+
..aOS(1, const $core.bool.fromEnvironment('protobuf.omit_field_names') ? '' : 'topic')
363+
..aOS(2, const $core.bool.fromEnvironment('protobuf.omit_field_names') ? '' : 'address')
364+
..a<$core.int>(3, const $core.bool.fromEnvironment('protobuf.omit_field_names') ? '' : 'hwm', $pb.PbFieldType.O3)
365+
..hasRequiredFields = false
366+
;
367+
368+
ZMQPublisherInfo._() : super();
369+
factory ZMQPublisherInfo({
370+
$core.String? topic,
371+
$core.String? address,
372+
$core.int? hwm,
373+
}) {
374+
final _result = create();
375+
if (topic != null) {
376+
_result.topic = topic;
377+
}
378+
if (address != null) {
379+
_result.address = address;
380+
}
381+
if (hwm != null) {
382+
_result.hwm = hwm;
383+
}
384+
return _result;
385+
}
386+
factory ZMQPublisherInfo.fromBuffer($core.List<$core.int> i, [$pb.ExtensionRegistry r = $pb.ExtensionRegistry.EMPTY]) => create()..mergeFromBuffer(i, r);
387+
factory ZMQPublisherInfo.fromJson($core.String i, [$pb.ExtensionRegistry r = $pb.ExtensionRegistry.EMPTY]) => create()..mergeFromJson(i, r);
388+
@$core.Deprecated(
389+
'Using this can add significant overhead to your binary. '
390+
'Use [GeneratedMessageGenericExtensions.deepCopy] instead. '
391+
'Will be removed in next major version')
392+
ZMQPublisherInfo clone() => ZMQPublisherInfo()..mergeFromMessage(this);
393+
@$core.Deprecated(
394+
'Using this can add significant overhead to your binary. '
395+
'Use [GeneratedMessageGenericExtensions.rebuild] instead. '
396+
'Will be removed in next major version')
397+
ZMQPublisherInfo copyWith(void Function(ZMQPublisherInfo) updates) => super.copyWith((message) => updates(message as ZMQPublisherInfo)) as ZMQPublisherInfo; // ignore: deprecated_member_use
398+
$pb.BuilderInfo get info_ => _i;
399+
@$core.pragma('dart2js:noInline')
400+
static ZMQPublisherInfo create() => ZMQPublisherInfo._();
401+
ZMQPublisherInfo createEmptyInstance() => create();
402+
static $pb.PbList<ZMQPublisherInfo> createRepeated() => $pb.PbList<ZMQPublisherInfo>();
403+
@$core.pragma('dart2js:noInline')
404+
static ZMQPublisherInfo getDefault() => _defaultInstance ??= $pb.GeneratedMessage.$_defaultFor<ZMQPublisherInfo>(create);
405+
static ZMQPublisherInfo? _defaultInstance;
406+
407+
@$pb.TagNumber(1)
408+
$core.String get topic => $_getSZ(0);
409+
@$pb.TagNumber(1)
410+
set topic($core.String v) { $_setString(0, v); }
411+
@$pb.TagNumber(1)
412+
$core.bool hasTopic() => $_has(0);
413+
@$pb.TagNumber(1)
414+
void clearTopic() => clearField(1);
415+
416+
@$pb.TagNumber(2)
417+
$core.String get address => $_getSZ(1);
418+
@$pb.TagNumber(2)
419+
set address($core.String v) { $_setString(1, v); }
420+
@$pb.TagNumber(2)
421+
$core.bool hasAddress() => $_has(1);
422+
@$pb.TagNumber(2)
423+
void clearAddress() => clearField(2);
424+
425+
@$pb.TagNumber(3)
426+
$core.int get hwm => $_getIZ(2);
427+
@$pb.TagNumber(3)
428+
set hwm($core.int v) { $_setSignedInt32(2, v); }
429+
@$pb.TagNumber(3)
430+
$core.bool hasHwm() => $_has(2);
431+
@$pb.TagNumber(3)
432+
void clearHwm() => clearField(3);
350433
}
351434

352435
class PeerInfo extends $pb.GeneratedMessage {

www/grpc/gen/dart/network.pbjson.dart

+15-1
Original file line numberDiff line numberDiff line change
@@ -53,11 +53,24 @@ const GetNodeInfoResponse$json = const {
5353
const {'1': 'protocols', '3': 9, '4': 3, '5': 9, '10': 'protocols'},
5454
const {'1': 'clock_offset', '3': 13, '4': 1, '5': 1, '10': 'clockOffset'},
5555
const {'1': 'connection_info', '3': 14, '4': 1, '5': 11, '6': '.pactus.ConnectionInfo', '10': 'connectionInfo'},
56+
const {'1': 'zmq_publishers', '3': 15, '4': 3, '5': 11, '6': '.pactus.ZMQPublisherInfo', '10': 'zmqPublishers'},
5657
],
5758
};
5859

5960
/// Descriptor for `GetNodeInfoResponse`. Decode as a `google.protobuf.DescriptorProto`.
60-
final $typed_data.Uint8List getNodeInfoResponseDescriptor = $convert.base64Decode('ChNHZXROb2RlSW5mb1Jlc3BvbnNlEhgKB21vbmlrZXIYASABKAlSB21vbmlrZXISFAoFYWdlbnQYAiABKAlSBWFnZW50EhcKB3BlZXJfaWQYAyABKAlSBnBlZXJJZBIdCgpzdGFydGVkX2F0GAQgASgEUglzdGFydGVkQXQSIgoMcmVhY2hhYmlsaXR5GAUgASgJUgxyZWFjaGFiaWxpdHkSGgoIc2VydmljZXMYBiABKAVSCHNlcnZpY2VzEiUKDnNlcnZpY2VzX25hbWVzGAcgASgJUg1zZXJ2aWNlc05hbWVzEh8KC2xvY2FsX2FkZHJzGAggAygJUgpsb2NhbEFkZHJzEhwKCXByb3RvY29scxgJIAMoCVIJcHJvdG9jb2xzEiEKDGNsb2NrX29mZnNldBgNIAEoAVILY2xvY2tPZmZzZXQSPwoPY29ubmVjdGlvbl9pbmZvGA4gASgLMhYucGFjdHVzLkNvbm5lY3Rpb25JbmZvUg5jb25uZWN0aW9uSW5mbw==');
61+
final $typed_data.Uint8List getNodeInfoResponseDescriptor = $convert.base64Decode('ChNHZXROb2RlSW5mb1Jlc3BvbnNlEhgKB21vbmlrZXIYASABKAlSB21vbmlrZXISFAoFYWdlbnQYAiABKAlSBWFnZW50EhcKB3BlZXJfaWQYAyABKAlSBnBlZXJJZBIdCgpzdGFydGVkX2F0GAQgASgEUglzdGFydGVkQXQSIgoMcmVhY2hhYmlsaXR5GAUgASgJUgxyZWFjaGFiaWxpdHkSGgoIc2VydmljZXMYBiABKAVSCHNlcnZpY2VzEiUKDnNlcnZpY2VzX25hbWVzGAcgASgJUg1zZXJ2aWNlc05hbWVzEh8KC2xvY2FsX2FkZHJzGAggAygJUgpsb2NhbEFkZHJzEhwKCXByb3RvY29scxgJIAMoCVIJcHJvdG9jb2xzEiEKDGNsb2NrX29mZnNldBgNIAEoAVILY2xvY2tPZmZzZXQSPwoPY29ubmVjdGlvbl9pbmZvGA4gASgLMhYucGFjdHVzLkNvbm5lY3Rpb25JbmZvUg5jb25uZWN0aW9uSW5mbxI/Cg56bXFfcHVibGlzaGVycxgPIAMoCzIYLnBhY3R1cy5aTVFQdWJsaXNoZXJJbmZvUg16bXFQdWJsaXNoZXJz');
62+
@$core.Deprecated('Use zMQPublisherInfoDescriptor instead')
63+
const ZMQPublisherInfo$json = const {
64+
'1': 'ZMQPublisherInfo',
65+
'2': const [
66+
const {'1': 'topic', '3': 1, '4': 1, '5': 9, '10': 'topic'},
67+
const {'1': 'address', '3': 2, '4': 1, '5': 9, '10': 'address'},
68+
const {'1': 'hwm', '3': 3, '4': 1, '5': 5, '10': 'hwm'},
69+
],
70+
};
71+
72+
/// Descriptor for `ZMQPublisherInfo`. Decode as a `google.protobuf.DescriptorProto`.
73+
final $typed_data.Uint8List zMQPublisherInfoDescriptor = $convert.base64Decode('ChBaTVFQdWJsaXNoZXJJbmZvEhQKBXRvcGljGAEgASgJUgV0b3BpYxIYCgdhZGRyZXNzGAIgASgJUgdhZGRyZXNzEhAKA2h3bRgDIAEoBVIDaHdt');
6174
@$core.Deprecated('Use peerInfoDescriptor instead')
6275
const PeerInfo$json = const {
6376
'1': 'PeerInfo',
@@ -162,6 +175,7 @@ const $core.Map<$core.String, $core.Map<$core.String, $core.dynamic>> NetworkSer
162175
'.pactus.GetNodeInfoRequest': GetNodeInfoRequest$json,
163176
'.pactus.GetNodeInfoResponse': GetNodeInfoResponse$json,
164177
'.pactus.ConnectionInfo': ConnectionInfo$json,
178+
'.pactus.ZMQPublisherInfo': ZMQPublisherInfo$json,
165179
};
166180

167181
/// Descriptor for `Network`. Decode as a `google.protobuf.ServiceDescriptorProto`.

www/grpc/gen/docs/grpc.md

+29
Original file line numberDiff line numberDiff line change
@@ -2631,6 +2631,35 @@ Message has no fields.
26312631
<td>
26322632
Number of outbound connections.
26332633
</td>
2634+
</tr>
2635+
<tr>
2636+
<td class="fw-bold">zmq_publishers</td>
2637+
<td>repeated ZMQPublisherInfo</td>
2638+
<td>
2639+
List of active ZeroMQ publishers.
2640+
</td>
2641+
</tr>
2642+
<tr>
2643+
<td class="fw-bold">zmq_publishers[].topic</td>
2644+
<td> string</td>
2645+
<td>
2646+
The topic associated with the publisher.
2647+
</td>
2648+
</tr>
2649+
<tr>
2650+
<td class="fw-bold">zmq_publishers[].address</td>
2651+
<td> string</td>
2652+
<td>
2653+
The address of the publisher.
2654+
</td>
2655+
</tr>
2656+
<tr>
2657+
<td class="fw-bold">zmq_publishers[].hwm</td>
2658+
<td> int32</td>
2659+
<td>
2660+
The high-water mark (HWM) for the publisher, indicating the
2661+
maximum number of messages to queue before dropping older ones.
2662+
</td>
26342663
</tr>
26352664
</tbody>
26362665
</table>

www/grpc/gen/docs/json-rpc.md

+29
Original file line numberDiff line numberDiff line change
@@ -2682,6 +2682,35 @@ Parameters has no fields.
26822682
<td>
26832683
Number of outbound connections.
26842684
</td>
2685+
</tr>
2686+
<tr>
2687+
<td class="fw-bold">zmq_publishers</td>
2688+
<td>repeated object</td>
2689+
<td>
2690+
List of active ZeroMQ publishers.
2691+
</td>
2692+
</tr>
2693+
<tr>
2694+
<td class="fw-bold">zmq_publishers[].topic</td>
2695+
<td> string</td>
2696+
<td>
2697+
The topic associated with the publisher.
2698+
</td>
2699+
</tr>
2700+
<tr>
2701+
<td class="fw-bold">zmq_publishers[].address</td>
2702+
<td> string</td>
2703+
<td>
2704+
The address of the publisher.
2705+
</td>
2706+
</tr>
2707+
<tr>
2708+
<td class="fw-bold">zmq_publishers[].hwm</td>
2709+
<td> numeric</td>
2710+
<td>
2711+
The high-water mark (HWM) for the publisher, indicating the
2712+
maximum number of messages to queue before dropping older ones.
2713+
</td>
26852714
</tr>
26862715
</tbody>
26872716
</table>

0 commit comments

Comments
 (0)