Skip to content
Open
Show file tree
Hide file tree
Changes from 32 commits
Commits
Show all changes
46 commits
Select commit Hold shift + click to select a range
7e242f7
feat(drive-abci): preliminary support for event subscriptions in Plat…
lklimek Oct 2, 2025
187fd80
fix: Dockerfile
lklimek Oct 2, 2025
c3b1c1a
chore: cargo fmt
lklimek Oct 2, 2025
e3e5715
feat: rs-sdk add subscriptions feature
lklimek Oct 2, 2025
aa44c32
rs-dash-event-bus edition 2024
lklimek Oct 2, 2025
2c68c4c
chore: cargo.lock
lklimek Oct 2, 2025
953664c
dash-event-bus fixes
lklimek Oct 8, 2025
15664fb
fmt
lklimek Oct 8, 2025
bcc8a07
cargo clippy + cargo machete
lklimek Oct 8, 2025
8dcd14a
Merge remote-tracking branch 'origin/v2.1-dev' into feat/drive-event-bus
lklimek Oct 21, 2025
b8ae8cb
chore: fix build
lklimek Oct 21, 2025
9b8bc40
refactor: rewrite subscriptions to not use bi-directional streams
lklimek Oct 21, 2025
1b82c1b
chore: fix build
lklimek Oct 21, 2025
c1b30bd
chore: fmt
lklimek Oct 21, 2025
7771e32
Merge remote-tracking branch 'origin/v2.1-dev' into feat/drive-event-bus
lklimek Oct 21, 2025
1d7ca2e
chore: fix sdk
lklimek Oct 21, 2025
1bc5fb7
Merge remote-tracking branch 'origin/v2.1-dev' into feat/drive-event-bus
lklimek Oct 23, 2025
2d66a4c
chore: rabbit review and other small stuff
lklimek Oct 23, 2025
9122a58
chore: update grpc clients
lklimek Oct 23, 2025
a326b8a
chore: improve platform_events example
lklimek Oct 23, 2025
3e25658
fix(dashmate): dashmate restart --platform should restart rs-dapi and…
lklimek Oct 23, 2025
66a756d
feat(rs-dapi): keepalives for event stream
lklimek Oct 24, 2025
7c81629
chore(dapi-grpc): update protobuf clients
lklimek Oct 24, 2025
fe39bb9
Merge branch 'v2.2-dev' into feat/drive-event-bus
lklimek Oct 27, 2025
cb04779
test: exclude SubscribePlatformEvents from coverage checks
lklimek Oct 29, 2025
068dcd7
Merge remote-tracking branch 'origin/v2.2-dev' into feat/drive-event-bus
lklimek Oct 29, 2025
0f2d368
build: bump version to 2.2.0-dev.1 to make migrations run
lklimek Oct 30, 2025
ee86a19
feat(dapi): configurable timeouts
lklimek Oct 31, 2025
0c436ac
chore: apply rabbit's feedback and linter
lklimek Nov 3, 2025
5ccbd08
test: fix platform events test
lklimek Nov 3, 2025
c55eb12
chore: rebuild dapi clients
lklimek Nov 3, 2025
51fb24e
Merge remote-tracking branch 'origin/v2.2-dev' into feat/drive-event-bus
lklimek Nov 3, 2025
241b30b
chore: saturating sub the keepalive
lklimek Nov 3, 2025
d7d8f83
chore: recreate grpc clients
lklimek Nov 3, 2025
5ff52de
chore(drive-abci): lint and machete
lklimek Nov 3, 2025
7895cb6
fix failing migratons
lklimek Nov 3, 2025
d6f52ea
chore: typo
lklimek Nov 3, 2025
2c8d6be
chore: subscription id as int
lklimek Nov 3, 2025
fa042cc
refactor(rs-dapi): simplify timeout handling
lklimek Nov 3, 2025
1742c74
chore: docs typo
lklimek Nov 3, 2025
3148d08
chore: clippy
lklimek Nov 3, 2025
2293471
fix: envoy config broken
lklimek Nov 3, 2025
2b7e09f
chore: streaming grace period 5s in envoy
lklimek Nov 3, 2025
5d129f9
feat: stream idle timeout normalized to 300s
lklimek Nov 3, 2025
97b1b7e
chore: cleanup after rabbit feedback
lklimek Nov 3, 2025
ddb66d7
chore: rabbit feedback
lklimek Nov 3, 2025
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions .github/scripts/check-grpc-coverage.py
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,7 @@
# Queries that should be excluded from the check
EXCLUDED_QUERIES = {
'broadcastStateTransition', # Explicitly excluded as per requirement
'subscribePlatformEvents', # Streaming RPC, excluded
}

# Mapping of proto query names to their expected SDK implementations
Expand Down
13 changes: 8 additions & 5 deletions Cargo.lock

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2,495 changes: 2,495 additions & 0 deletions packages/dapi-grpc/clients/drive/v0/nodejs/drive_pbjs.js

Large diffs are not rendered by default.

Original file line number Diff line number Diff line change
Expand Up @@ -1472,6 +1472,37 @@ org.dash.platform.dapi.v0.PlatformOuterClass.GetGroupActionSignersResponse> getG
return getGetGroupActionSignersMethod;
}

private static volatile io.grpc.MethodDescriptor<org.dash.platform.dapi.v0.PlatformOuterClass.PlatformSubscriptionRequest,
org.dash.platform.dapi.v0.PlatformOuterClass.PlatformSubscriptionResponse> getSubscribePlatformEventsMethod;

@io.grpc.stub.annotations.RpcMethod(
fullMethodName = SERVICE_NAME + '/' + "subscribePlatformEvents",
requestType = org.dash.platform.dapi.v0.PlatformOuterClass.PlatformSubscriptionRequest.class,
responseType = org.dash.platform.dapi.v0.PlatformOuterClass.PlatformSubscriptionResponse.class,
methodType = io.grpc.MethodDescriptor.MethodType.SERVER_STREAMING)
public static io.grpc.MethodDescriptor<org.dash.platform.dapi.v0.PlatformOuterClass.PlatformSubscriptionRequest,
org.dash.platform.dapi.v0.PlatformOuterClass.PlatformSubscriptionResponse> getSubscribePlatformEventsMethod() {
io.grpc.MethodDescriptor<org.dash.platform.dapi.v0.PlatformOuterClass.PlatformSubscriptionRequest, org.dash.platform.dapi.v0.PlatformOuterClass.PlatformSubscriptionResponse> getSubscribePlatformEventsMethod;
if ((getSubscribePlatformEventsMethod = PlatformGrpc.getSubscribePlatformEventsMethod) == null) {
synchronized (PlatformGrpc.class) {
if ((getSubscribePlatformEventsMethod = PlatformGrpc.getSubscribePlatformEventsMethod) == null) {
PlatformGrpc.getSubscribePlatformEventsMethod = getSubscribePlatformEventsMethod =
io.grpc.MethodDescriptor.<org.dash.platform.dapi.v0.PlatformOuterClass.PlatformSubscriptionRequest, org.dash.platform.dapi.v0.PlatformOuterClass.PlatformSubscriptionResponse>newBuilder()
.setType(io.grpc.MethodDescriptor.MethodType.SERVER_STREAMING)
.setFullMethodName(generateFullMethodName(SERVICE_NAME, "subscribePlatformEvents"))
.setSampledToLocalTracing(true)
.setRequestMarshaller(io.grpc.protobuf.ProtoUtils.marshaller(
org.dash.platform.dapi.v0.PlatformOuterClass.PlatformSubscriptionRequest.getDefaultInstance()))
.setResponseMarshaller(io.grpc.protobuf.ProtoUtils.marshaller(
org.dash.platform.dapi.v0.PlatformOuterClass.PlatformSubscriptionResponse.getDefaultInstance()))
.setSchemaDescriptor(new PlatformMethodDescriptorSupplier("subscribePlatformEvents"))
.build();
}
}
}
return getSubscribePlatformEventsMethod;
}

/**
* Creates a new async stub that supports all call types for the service
*/
Expand Down Expand Up @@ -1864,6 +1895,19 @@ public void getGroupActionSigners(org.dash.platform.dapi.v0.PlatformOuterClass.G
io.grpc.stub.ServerCalls.asyncUnimplementedUnaryCall(getGetGroupActionSignersMethod(), responseObserver);
}

/**
* <pre>
* Server-streaming subscription for platform events.
* Allows subscribint to various Platform events.
*
* Once connected, it sends handshake response with empty event.
* </pre>
*/
public void subscribePlatformEvents(org.dash.platform.dapi.v0.PlatformOuterClass.PlatformSubscriptionRequest request,
io.grpc.stub.StreamObserver<org.dash.platform.dapi.v0.PlatformOuterClass.PlatformSubscriptionResponse> responseObserver) {
io.grpc.stub.ServerCalls.asyncUnimplementedUnaryCall(getSubscribePlatformEventsMethod(), responseObserver);
}

@java.lang.Override public final io.grpc.ServerServiceDefinition bindService() {
return io.grpc.ServerServiceDefinition.builder(getServiceDescriptor())
.addMethod(
Expand Down Expand Up @@ -2195,6 +2239,13 @@ public void getGroupActionSigners(org.dash.platform.dapi.v0.PlatformOuterClass.G
org.dash.platform.dapi.v0.PlatformOuterClass.GetGroupActionSignersRequest,
org.dash.platform.dapi.v0.PlatformOuterClass.GetGroupActionSignersResponse>(
this, METHODID_GET_GROUP_ACTION_SIGNERS)))
.addMethod(
getSubscribePlatformEventsMethod(),
io.grpc.stub.ServerCalls.asyncServerStreamingCall(
new MethodHandlers<
org.dash.platform.dapi.v0.PlatformOuterClass.PlatformSubscriptionRequest,
org.dash.platform.dapi.v0.PlatformOuterClass.PlatformSubscriptionResponse>(
this, METHODID_SUBSCRIBE_PLATFORM_EVENTS)))
.build();
}
}
Expand Down Expand Up @@ -2603,6 +2654,20 @@ public void getGroupActionSigners(org.dash.platform.dapi.v0.PlatformOuterClass.G
io.grpc.stub.ClientCalls.asyncUnaryCall(
getChannel().newCall(getGetGroupActionSignersMethod(), getCallOptions()), request, responseObserver);
}

/**
* <pre>
* Server-streaming subscription for platform events.
* Allows subscribint to various Platform events.
*
* Once connected, it sends handshake response with empty event.
* </pre>
*/
public void subscribePlatformEvents(org.dash.platform.dapi.v0.PlatformOuterClass.PlatformSubscriptionRequest request,
io.grpc.stub.StreamObserver<org.dash.platform.dapi.v0.PlatformOuterClass.PlatformSubscriptionResponse> responseObserver) {
io.grpc.stub.ClientCalls.asyncServerStreamingCall(
getChannel().newCall(getSubscribePlatformEventsMethod(), getCallOptions()), request, responseObserver);
}
}

/**
Expand Down Expand Up @@ -2962,6 +3027,20 @@ public org.dash.platform.dapi.v0.PlatformOuterClass.GetGroupActionSignersRespons
return io.grpc.stub.ClientCalls.blockingUnaryCall(
getChannel(), getGetGroupActionSignersMethod(), getCallOptions(), request);
}

/**
* <pre>
* Server-streaming subscription for platform events.
* Allows subscribint to various Platform events.
*
* Once connected, it sends handshake response with empty event.
* </pre>
*/
public java.util.Iterator<org.dash.platform.dapi.v0.PlatformOuterClass.PlatformSubscriptionResponse> subscribePlatformEvents(
org.dash.platform.dapi.v0.PlatformOuterClass.PlatformSubscriptionRequest request) {
return io.grpc.stub.ClientCalls.blockingServerStreamingCall(
getChannel(), getSubscribePlatformEventsMethod(), getCallOptions(), request);
}
}

/**
Expand Down Expand Up @@ -3417,6 +3496,7 @@ public com.google.common.util.concurrent.ListenableFuture<org.dash.platform.dapi
private static final int METHODID_GET_GROUP_INFOS = 44;
private static final int METHODID_GET_GROUP_ACTIONS = 45;
private static final int METHODID_GET_GROUP_ACTION_SIGNERS = 46;
private static final int METHODID_SUBSCRIBE_PLATFORM_EVENTS = 47;

private static final class MethodHandlers<Req, Resp> implements
io.grpc.stub.ServerCalls.UnaryMethod<Req, Resp>,
Expand Down Expand Up @@ -3623,6 +3703,10 @@ public void invoke(Req request, io.grpc.stub.StreamObserver<Resp> responseObserv
serviceImpl.getGroupActionSigners((org.dash.platform.dapi.v0.PlatformOuterClass.GetGroupActionSignersRequest) request,
(io.grpc.stub.StreamObserver<org.dash.platform.dapi.v0.PlatformOuterClass.GetGroupActionSignersResponse>) responseObserver);
break;
case METHODID_SUBSCRIBE_PLATFORM_EVENTS:
serviceImpl.subscribePlatformEvents((org.dash.platform.dapi.v0.PlatformOuterClass.PlatformSubscriptionRequest) request,
(io.grpc.stub.StreamObserver<org.dash.platform.dapi.v0.PlatformOuterClass.PlatformSubscriptionResponse>) responseObserver);
break;
default:
throw new AssertionError();
}
Expand Down Expand Up @@ -3731,6 +3815,7 @@ public static io.grpc.ServiceDescriptor getServiceDescriptor() {
.addMethod(getGetGroupInfosMethod())
.addMethod(getGetGroupActionsMethod())
.addMethod(getGetGroupActionSignersMethod())
.addMethod(getSubscribePlatformEventsMethod())
.build();
}
}
Expand Down
Loading
Loading