@@ -25,18 +25,18 @@ enum MessageType<T extends Message> {
2525 fileSystemFlush <FileSystemFlushRequest >(),
2626 connect <ConnectRequest >(),
2727 startFileSystemServer <StartFileSystemServer >(),
28- updateRequest <UpdateStreamRequest >(),
29- rollbackRequest <RollbackStreamRequest >(),
30- commitRequest <CommitStreamRequest >(),
28+ updateRequest <StreamRequest >(),
29+ rollbackRequest <StreamRequest >(),
30+ commitRequest <StreamRequest >(),
3131 simpleSuccessResponse <SimpleSuccessResponse >(),
3232 rowsResponse <RowsResponse >(),
3333 errorResponse <ErrorResponse >(),
3434 endpointResponse <EndpointResponse >(),
3535 closeDatabase <CloseDatabase >(),
3636 openAdditionalConnection <OpenAdditonalConnection >(),
3737 notifyUpdate <UpdateNotification >(),
38- notifyRollback <RollbackNotification >(),
39- notifyCommit <CommitNotification >(),
38+ notifyRollback <EmptyNotification >(),
39+ notifyCommit <EmptyNotification >(),
4040 ;
4141
4242 static final Map <String , MessageType > byName = values.asNameMap ();
@@ -97,17 +97,19 @@ sealed class Message {
9797 MessageType .closeDatabase => CloseDatabase .deserialize (object),
9898 MessageType .openAdditionalConnection =>
9999 OpenAdditonalConnection .deserialize (object),
100- MessageType .updateRequest => UpdateStreamRequest .deserialize (object),
101- MessageType .rollbackRequest => RollbackStreamRequest .deserialize (object),
102- MessageType .commitRequest => CommitStreamRequest .deserialize (object),
100+ MessageType .updateRequest ||
101+ MessageType .rollbackRequest ||
102+ MessageType .commitRequest =>
103+ StreamRequest .deserialize (type, object),
103104 MessageType .simpleSuccessResponse =>
104105 SimpleSuccessResponse .deserialize (object),
105106 MessageType .endpointResponse => EndpointResponse .deserialize (object),
106107 MessageType .rowsResponse => RowsResponse .deserialize (object),
107108 MessageType .errorResponse => ErrorResponse .deserialize (object),
108109 MessageType .notifyUpdate => UpdateNotification .deserialize (object),
109- MessageType .notifyRollback => RollbackNotification .deserialize (object),
110- MessageType .notifyCommit => CommitNotification .deserialize (object),
110+ MessageType .notifyRollback ||
111+ MessageType .notifyCommit =>
112+ EmptyNotification .deserialize (type, object),
111113 };
112114 }
113115
@@ -637,92 +639,33 @@ final class ErrorResponse extends Response {
637639 }
638640}
639641
640- final class UpdateStreamRequest extends Request {
642+ final class StreamRequest extends Request {
641643 /// When true, the client is requesting to be informed about updates happening
642644 /// on the database identified by this request.
643645 ///
644646 /// When false, the client is requesting to no longer be informed about these
645647 /// updates.
646648 final bool action;
647649
648- UpdateStreamRequest (
649- {required this .action,
650- required super .requestId,
651- required super .databaseId});
650+ final MessageType <Message > type;
652651
653- factory UpdateStreamRequest .deserialize (JSObject object) {
654- return UpdateStreamRequest (
655- action: (object[_UniqueFieldNames .action] as JSBoolean ).toDart,
656- requestId: object.requestId,
657- databaseId: object.databaseId,
658- );
659- }
660-
661- @override
662- MessageType <Message > get type => MessageType .updateRequest;
663-
664- @override
665- void serialize (JSObject object, List <JSObject > transferred) {
666- super .serialize (object, transferred);
667- object[_UniqueFieldNames .action] = action.toJS;
668- }
669- }
670-
671- final class RollbackStreamRequest extends Request {
672- /// When true, the client is requesting to be informed about rollbacks
673- /// happening on the database identified by this request.
674- ///
675- /// When false, the client is requesting to no longer be informed about these
676- /// updates.
677- final bool action;
678-
679- RollbackStreamRequest (
680- {required this .action,
681- required super .requestId,
682- required super .databaseId});
683-
684- factory RollbackStreamRequest .deserialize (JSObject object) {
685- return RollbackStreamRequest (
686- action: (object[_UniqueFieldNames .action] as JSBoolean ).toDart,
687- requestId: object.requestId,
688- databaseId: object.databaseId,
689- );
690- }
691-
692- @override
693- MessageType <Message > get type => MessageType .rollbackRequest;
694-
695- @override
696- void serialize (JSObject object, List <JSObject > transferred) {
697- super .serialize (object, transferred);
698- object[_UniqueFieldNames .action] = action.toJS;
699- }
700- }
701-
702- final class CommitStreamRequest extends Request {
703- /// When true, the client is requesting to be informed about rollbacks
704- /// happening on the database identified by this request.
705- ///
706- /// When false, the client is requesting to no longer be informed about these
707- /// updates.
708- final bool action;
709-
710- CommitStreamRequest (
711- {required this .action,
712- required super .requestId,
713- required super .databaseId});
652+ StreamRequest ({
653+ required this .type,
654+ required this .action,
655+ required super .requestId,
656+ required super .databaseId,
657+ });
714658
715- factory CommitStreamRequest .deserialize (JSObject object) {
716- return CommitStreamRequest (
659+ factory StreamRequest .deserialize (
660+ MessageType <Message > type, JSObject object) {
661+ return StreamRequest (
662+ type: type,
717663 action: (object[_UniqueFieldNames .action] as JSBoolean ).toDart,
718664 requestId: object.requestId,
719665 databaseId: object.databaseId,
720666 );
721667 }
722668
723- @override
724- MessageType <Message > get type => MessageType .rollbackRequest;
725-
726669 @override
727670 void serialize (JSObject object, List <JSObject > transferred) {
728671 super .serialize (object, transferred);
@@ -886,41 +829,23 @@ final class UpdateNotification extends Notification {
886829 }
887830}
888831
889- final class RollbackNotification extends Notification {
832+ /// Used as a notification without a payload, e.g. for commit or rollback
833+ /// events.
834+ final class EmptyNotification extends Notification {
890835 final int databaseId;
891-
892- RollbackNotification ({required this .databaseId});
893-
894- factory RollbackNotification .deserialize (JSObject object) {
895- return RollbackNotification (
896- databaseId: object.databaseId,
897- );
898- }
899-
900- @override
901- MessageType <Message > get type => MessageType .notifyUpdate;
902-
903836 @override
904- void serialize (JSObject object, List <JSObject > transferred) {
905- super .serialize (object, transferred);
906- object[_UniqueFieldNames .databaseId] = databaseId.toJS;
907- }
908- }
909-
910- final class CommitNotification extends Notification {
911- final int databaseId;
837+ final MessageType <Message > type;
912838
913- CommitNotification ({ required this .databaseId});
839+ EmptyNotification ({ required this .type, required this .databaseId});
914840
915- factory CommitNotification .deserialize (JSObject object) {
916- return CommitNotification (
841+ factory EmptyNotification .deserialize (
842+ MessageType <Message > type, JSObject object) {
843+ return EmptyNotification (
844+ type: type,
917845 databaseId: object.databaseId,
918846 );
919847 }
920848
921- @override
922- MessageType <Message > get type => MessageType .notifyCommit;
923-
924849 @override
925850 void serialize (JSObject object, List <JSObject > transferred) {
926851 super .serialize (object, transferred);
0 commit comments