@dronedeploy/rocos-js-sdk 2.6.1 → 3.0.0-alpha.20
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/IRocosSDK.d.ts +3 -26
- package/IRocosSDK.js +1 -5
- package/README.md +18 -0
- package/RocosSDK.d.ts +6 -1
- package/RocosSDK.js +103 -95
- package/api/StreamRegister.d.ts +1 -1
- package/api/StreamRegister.js +23 -12
- package/api/atoms/StreamHeartbeat.js +3 -7
- package/api/streams/caller/CallerStream.d.ts +6 -6
- package/api/streams/caller/CallerStream.js +41 -49
- package/api/streams/caller/CallerStreamAbstract.d.ts +6 -11
- package/api/streams/caller/CallerStreamAbstract.js +55 -67
- package/api/streams/caller/CallerStreamNode.d.ts +6 -6
- package/api/streams/caller/CallerStreamNode.js +48 -61
- package/api/streams/command/CommandStream.d.ts +2 -4
- package/api/streams/command/CommandStream.js +28 -30
- package/api/streams/command/CommandStreamAbstract.d.ts +4 -8
- package/api/streams/command/CommandStreamAbstract.js +33 -42
- package/api/streams/command/CommandStreamNode.d.ts +2 -4
- package/api/streams/command/CommandStreamNode.js +16 -40
- package/api/streams/control/ControlStream.d.ts +4 -6
- package/api/streams/control/ControlStream.js +30 -36
- package/api/streams/control/ControlStreamAbstract.d.ts +6 -9
- package/api/streams/control/ControlStreamAbstract.js +57 -54
- package/api/streams/control/ControlStreamNode.d.ts +3 -5
- package/api/streams/control/ControlStreamNode.js +19 -44
- package/api/streams/fileAccessor/FileAccessorStream.d.ts +2 -4
- package/api/streams/fileAccessor/FileAccessorStream.js +42 -57
- package/api/streams/fileAccessor/FileAccessorStreamAbstract.d.ts +4 -9
- package/api/streams/fileAccessor/FileAccessorStreamAbstract.js +28 -48
- package/api/streams/fileAccessor/FileAccessorStreamNode.d.ts +1 -3
- package/api/streams/fileAccessor/FileAccessorStreamNode.js +23 -53
- package/api/streams/search/SearchStream.d.ts +2 -5
- package/api/streams/search/SearchStream.js +50 -74
- package/api/streams/search/SearchStreamAbstract.d.ts +4 -9
- package/api/streams/search/SearchStreamAbstract.js +33 -35
- package/api/streams/search/SearchStreamNode.d.ts +2 -5
- package/api/streams/search/SearchStreamNode.js +23 -48
- package/api/streams/telemetry/TelemetryStream.d.ts +4 -4
- package/api/streams/telemetry/TelemetryStream.js +49 -78
- package/api/streams/telemetry/TelemetryStreamAbstract.d.ts +8 -11
- package/api/streams/telemetry/TelemetryStreamAbstract.js +126 -145
- package/api/streams/telemetry/TelemetryStreamNode.d.ts +5 -5
- package/api/streams/telemetry/TelemetryStreamNode.js +44 -64
- package/api/streams/webRTCSignalling/WebRTCSignallingStream.d.ts +5 -10
- package/api/streams/webRTCSignalling/WebRTCSignallingStream.js +37 -20
- package/api/streams/webRTCSignalling/WebRTCSignallingStreamAbstract.d.ts +10 -13
- package/api/streams/webRTCSignalling/WebRTCSignallingStreamAbstract.js +37 -37
- package/constants/api.d.ts +14 -5
- package/constants/api.js +130 -126
- package/constants/auth.d.ts +2 -0
- package/constants/auth.js +2 -0
- package/constants/grpc.js +5 -8
- package/constants/identifier.js +6 -9
- package/constants/timezones.d.ts +1 -1
- package/constants/timezones.js +1 -4
- package/grpc/conker_pb.client.d.ts +78 -0
- package/grpc/conker_pb.client.js +55 -0
- package/grpc/conker_pb.d.ts +141 -0
- package/grpc/conker_pb.grpc-client.d.ts +81 -0
- package/grpc/conker_pb.grpc-client.js +58 -0
- package/grpc/conker_pb.js +104 -0
- package/grpc/filagree_pb.client.d.ts +68 -0
- package/grpc/filagree_pb.client.js +48 -0
- package/grpc/filagree_pb.d.ts +404 -0
- package/grpc/filagree_pb.grpc-client.d.ts +69 -0
- package/grpc/filagree_pb.grpc-client.js +51 -0
- package/grpc/filagree_pb.js +329 -0
- package/grpc/google/protobuf/descriptor_pb.d.ts +1798 -0
- package/grpc/google/protobuf/descriptor_pb.js +2378 -0
- package/grpc/google/protobuf/empty_pb.d.ts +23 -0
- package/grpc/google/protobuf/empty_pb.js +47 -0
- package/grpc/pigeon_pb.client.d.ts +96 -0
- package/grpc/pigeon_pb.client.js +72 -0
- package/grpc/pigeon_pb.d.ts +207 -0
- package/grpc/pigeon_pb.grpc-client.d.ts +98 -0
- package/grpc/pigeon_pb.grpc-client.js +68 -0
- package/grpc/pigeon_pb.js +144 -0
- package/grpc/rambo.uri.v1_pb.d.ts +73 -0
- package/grpc/rambo.uri.v1_pb.js +48 -0
- package/grpc/rambo.v1_pb.client.d.ts +66 -0
- package/grpc/rambo.v1_pb.client.js +48 -0
- package/grpc/rambo.v1_pb.d.ts +392 -0
- package/grpc/rambo.v1_pb.grpc-client.d.ts +56 -0
- package/grpc/rambo.v1_pb.grpc-client.js +44 -0
- package/grpc/rambo.v1_pb.js +272 -0
- package/grpc/serviette.uri.v1_pb.d.ts +89 -0
- package/grpc/serviette.uri.v1_pb.js +62 -0
- package/grpc/serviette.v1_pb.client.d.ts +225 -0
- package/grpc/serviette.v1_pb.client.js +174 -0
- package/grpc/serviette.v1_pb.d.ts +827 -0
- package/grpc/serviette.v1_pb.grpc-client.d.ts +215 -0
- package/grpc/serviette.v1_pb.grpc-client.js +162 -0
- package/grpc/serviette.v1_pb.js +553 -0
- package/grpc/slowlane_pb.client.d.ts +61 -0
- package/grpc/slowlane_pb.client.js +41 -0
- package/grpc/slowlane_pb.d.ts +303 -0
- package/grpc/slowlane_pb.grpc-client.d.ts +64 -0
- package/grpc/slowlane_pb.grpc-client.js +44 -0
- package/grpc/slowlane_pb.js +185 -0
- package/grpc/teletubby_pb.client.d.ts +145 -0
- package/grpc/teletubby_pb.client.js +104 -0
- package/grpc/teletubby_pb.d.ts +634 -0
- package/grpc/teletubby_pb.grpc-client.d.ts +152 -0
- package/grpc/teletubby_pb.grpc-client.js +100 -0
- package/grpc/teletubby_pb.js +1264 -0
- package/helpers/arrayRemove.js +2 -6
- package/helpers/arrayUnique.js +2 -6
- package/helpers/average.js +2 -7
- package/helpers/callerMessageHelpers.d.ts +14 -0
- package/helpers/callerMessageHelpers.js +86 -0
- package/helpers/cleanObject.js +17 -19
- package/helpers/cleanObject.spec.d.ts +1 -0
- package/helpers/cleanObject.spec.js +53 -0
- package/helpers/enviroment.js +4 -11
- package/helpers/flattenCallsignsLookup.d.ts +1 -1
- package/helpers/flattenCallsignsLookup.js +1 -5
- package/helpers/flattenObject.js +1 -5
- package/helpers/flattenObject.spec.d.ts +1 -0
- package/helpers/flattenObject.spec.js +29 -0
- package/helpers/flattenOneOf.d.ts +67 -0
- package/helpers/flattenOneOf.js +29 -0
- package/helpers/flattenOneOf.spec.d.ts +1 -0
- package/helpers/flattenOneOf.spec.js +157 -0
- package/helpers/formatServiceUrl.js +1 -5
- package/helpers/formatServiceUrl.spec.d.ts +1 -0
- package/helpers/formatServiceUrl.spec.js +16 -0
- package/helpers/generateUUID.js +3 -7
- package/helpers/getSubscriptionsDifference.d.ts +3 -3
- package/helpers/getSubscriptionsDifference.js +6 -10
- package/helpers/getURLSearchParams.d.ts +2 -0
- package/helpers/getURLSearchParams.js +9 -0
- package/helpers/getURLSearchParams.spec.d.ts +1 -0
- package/helpers/getURLSearchParams.spec.js +19 -0
- package/helpers/getUniqueConfigKey.js +1 -6
- package/helpers/getUniqueId.js +3 -7
- package/helpers/getUnixTimeMs.js +1 -5
- package/helpers/index.d.ts +3 -1
- package/helpers/index.js +5 -15
- package/helpers/nanosecondToMillisecond.d.ts +1 -1
- package/helpers/nanosecondToMillisecond.js +11 -6
- package/helpers/nanosecondToMillisecond.spec.d.ts +1 -0
- package/helpers/nanosecondToMillisecond.spec.js +20 -0
- package/helpers/randomString.js +1 -5
- package/helpers/standardDeviation.js +4 -8
- package/helpers/standardDeviation.spec.d.ts +1 -0
- package/helpers/standardDeviation.spec.js +11 -0
- package/helpers/stringToUint8Array.js +3 -7
- package/helpers/uint8ArrayToString.js +3 -8
- package/helpers/websandbox/connection.d.ts +67 -0
- package/helpers/websandbox/connection.js +133 -0
- package/helpers/websandbox/frame/frame.d.ts +12 -0
- package/helpers/websandbox/frame/frame.js +22 -0
- package/helpers/websandbox/frame/frame.source.d.ts +2 -0
- package/helpers/websandbox/frame/frame.source.js +5 -0
- package/helpers/websandbox/frame/index.d.ts +2 -0
- package/helpers/websandbox/frame/index.js +2 -0
- package/helpers/websandbox/frame/worker/index.d.ts +2 -0
- package/helpers/websandbox/frame/worker/index.js +2 -0
- package/helpers/websandbox/frame/worker/manager.d.ts +11 -0
- package/helpers/websandbox/frame/worker/manager.js +67 -0
- package/helpers/websandbox/frame/worker/manager.spec.d.ts +4 -0
- package/helpers/websandbox/frame/worker/manager.spec.js +127 -0
- package/helpers/websandbox/frame/worker/types.d.ts +11 -0
- package/helpers/websandbox/frame/worker/types.js +1 -0
- package/helpers/websandbox/frame/worker/worker.d.ts +1 -0
- package/helpers/websandbox/frame/worker/worker.js +74 -0
- package/helpers/websandbox/frame/worker/worker.source.d.ts +2 -0
- package/helpers/websandbox/frame/worker/worker.source.js +4 -0
- package/helpers/websandbox/index.d.ts +2 -0
- package/helpers/websandbox/index.js +2 -0
- package/helpers/websandbox/sandbox.d.ts +57 -0
- package/helpers/websandbox/sandbox.js +175 -0
- package/helpers/websandbox/types.d.ts +13 -0
- package/helpers/websandbox/types.js +1 -0
- package/index.js +7 -19
- package/logger/RocosLogger.js +18 -44
- package/models/CallsignStatus.d.ts +6 -0
- package/models/CallsignStatus.js +7 -0
- package/models/ExportDataQuery.js +1 -5
- package/models/ExternalProject.js +1 -5
- package/models/IBaseService.d.ts +1 -0
- package/models/IBaseService.js +1 -2
- package/models/IConfigGroup.js +1 -2
- package/models/IDebugLevel.d.ts +1 -1
- package/models/IDebugLevel.js +1 -2
- package/models/IExportDataQuery.js +1 -2
- package/models/IFunctionConfig.js +1 -2
- package/models/IInvitation.d.ts +1 -1
- package/models/IInvitation.js +1 -2
- package/models/IInvitationExists.js +1 -2
- package/models/IOperation.js +1 -2
- package/models/IPersonalAccessToken.js +1 -2
- package/models/IProject.js +1 -2
- package/models/IProjectApplication.js +1 -2
- package/models/IRobot.d.ts +1 -0
- package/models/IRobot.js +1 -2
- package/models/IRobotConfig.js +1 -2
- package/models/IRobotPlugin.js +1 -2
- package/models/IRobotSettings.d.ts +28 -0
- package/models/IRobotSettings.js +1 -0
- package/models/IRobotTemplate.js +1 -2
- package/models/IRocosSDKConfig.d.ts +3 -9
- package/models/IRocosSDKConfig.js +1 -2
- package/models/ISource.js +1 -2
- package/models/IStream.js +1 -2
- package/models/IStreamConfig.js +1 -2
- package/models/IStreamOptions.js +1 -2
- package/models/IStreamSource.js +1 -2
- package/models/ISubscriberStatus.js +1 -2
- package/models/ITelemetryStreamConfig.js +1 -2
- package/models/IToken.d.ts +7 -3
- package/models/IToken.js +1 -2
- package/models/IWidget.js +1 -2
- package/models/IWidgetLineGroup.js +1 -2
- package/models/ResponseLevelEnum.d.ts +4 -0
- package/models/ResponseLevelEnum.js +6 -5
- package/models/Robot.d.ts +1 -0
- package/models/Robot.js +1 -5
- package/models/RobotConfig.js +1 -5
- package/models/RobotPlugin.js +1 -5
- package/models/RobotTemplate.js +9 -14
- package/models/RocosError.d.ts +1 -0
- package/models/RocosError.js +3 -6
- package/models/ServiceEnum.d.ts +2 -1
- package/models/ServiceEnum.js +3 -5
- package/models/Stream.js +4 -8
- package/models/StreamOptions.js +1 -5
- package/models/StreamSource.js +3 -7
- package/models/SubscriberStatusEnum.js +2 -5
- package/models/Token.d.ts +36 -4
- package/models/Token.js +74 -11
- package/models/Token.spec.d.ts +1 -0
- package/models/Token.spec.js +108 -0
- package/models/Widget.js +4 -8
- package/models/WidgetLineGroup.js +1 -5
- package/models/asset-storage/AssetModelItem.d.ts +3 -0
- package/models/asset-storage/AssetModelItem.js +1 -2
- package/models/caller/IRocosCallerMessageChunk.d.ts +8 -2
- package/models/caller/IRocosCallerMessageChunk.js +1 -2
- package/models/caller/IRocosCallerMessageChunks.d.ts +2 -3
- package/models/caller/IRocosCallerMessageChunks.js +1 -2
- package/models/caller/IRocosCallerMessageHeartbeat.d.ts +3 -2
- package/models/caller/IRocosCallerMessageHeartbeat.js +1 -2
- package/models/caller/IRocosCallerMessageResponse.d.ts +3 -2
- package/models/caller/IRocosCallerMessageResponse.js +1 -2
- package/models/caller/IRocosCallerMessageResponseAck.d.ts +16 -2
- package/models/caller/IRocosCallerMessageResponseAck.js +13 -2
- package/models/caller/IRocosCallerMessageResponseResult.d.ts +15 -2
- package/models/caller/IRocosCallerMessageResponseResult.js +12 -2
- package/models/caller/IRocosCallerMessageResponseReturn.d.ts +8 -0
- package/models/caller/IRocosCallerMessageResponseReturn.js +1 -0
- package/models/caller/IRocosCallerMessageResponseUid.d.ts +10 -2
- package/models/caller/IRocosCallerMessageResponseUid.js +7 -2
- package/models/caller/IRocosCallerMessageResponses.d.ts +2 -3
- package/models/caller/IRocosCallerMessageResponses.js +1 -2
- package/models/caller/RocosCallerResultStatus.d.ts +11 -1
- package/models/caller/RocosCallerResultStatus.js +12 -5
- package/models/caller/RocosResponseLevel.d.ts +6 -0
- package/models/caller/RocosResponseLevel.js +7 -0
- package/models/caller/index.d.ts +11 -0
- package/models/caller/index.js +11 -0
- package/models/callsigns/CallsignsEnums.d.ts +3 -3
- package/models/callsigns/CallsignsEnums.js +11 -14
- package/models/callsigns/CallsignsLookup.js +10 -15
- package/models/callsigns/CallsignsQuery.js +1 -5
- package/models/callsigns/CallsignsQueryPredicate.js +1 -5
- package/models/command/IRocosCommandMessageHeartbeat.d.ts +1 -2
- package/models/command/IRocosCommandMessageHeartbeat.js +1 -2
- package/models/command/IRocosCommandMessageResponse.d.ts +55 -2
- package/models/command/IRocosCommandMessageResponse.js +29 -2
- package/models/command/RocosCommandResultStatus.d.ts +11 -1
- package/models/command/RocosCommandResultStatus.js +12 -5
- package/models/command/index.d.ts +4 -0
- package/models/command/index.js +4 -0
- package/models/file/FileEnums.d.ts +4 -4
- package/models/file/FileEnums.js +9 -12
- package/models/index.d.ts +6 -31
- package/models/index.js +76 -113
- package/models/integrations/Overlay.js +1 -2
- package/models/integrations/Plan.js +1 -2
- package/models/maps/Map.d.ts +2 -3
- package/models/maps/Map.js +1 -2
- package/models/maps/Panorama.d.ts +36 -0
- package/models/maps/Panorama.js +1 -0
- package/models/message/IRocosCallerMessage.js +1 -2
- package/models/message/IRocosChangeMessage.js +1 -2
- package/models/message/IRocosCommandMessage.js +1 -2
- package/models/message/IRocosControlMessage.js +1 -2
- package/models/message/IRocosOpResultMessage.d.ts +2 -2
- package/models/message/IRocosOpResultMessage.js +1 -2
- package/models/message/IRocosSearchMessage.js +1 -2
- package/models/message/IRocosSearchRowMessage.js +1 -2
- package/models/message/IRocosSearchStatusMessage.js +1 -2
- package/models/message/IRocosTelemetryMessage.d.ts +12 -7
- package/models/message/IRocosTelemetryMessage.js +1 -2
- package/models/message/IStreamStatusMessage.js +1 -2
- package/models/message/RocosCallerMessage.d.ts +2 -4
- package/models/message/RocosCallerMessage.js +24 -15
- package/models/message/RocosCommandMessage.d.ts +2 -3
- package/models/message/RocosCommandMessage.js +5 -8
- package/models/message/RocosControlMessage.d.ts +1 -1
- package/models/message/RocosControlMessage.js +6 -10
- package/models/message/RocosOpResultMessage.d.ts +3 -2
- package/models/message/RocosOpResultMessage.js +6 -10
- package/models/message/RocosSearchMessage.d.ts +1 -1
- package/models/message/RocosSearchMessage.js +5 -9
- package/models/message/RocosSearchRowMessage.d.ts +1 -1
- package/models/message/RocosSearchRowMessage.js +8 -12
- package/models/message/RocosTelemetryMessage.d.ts +9 -23
- package/models/message/RocosTelemetryMessage.js +51 -93
- package/models/message/index.d.ts +17 -0
- package/models/message/index.js +17 -0
- package/models/params/ICallerParams.d.ts +12 -1
- package/models/params/ICallerParams.js +1 -2
- package/models/params/ICommandParams.js +1 -2
- package/models/params/IControlParams.d.ts +1 -1
- package/models/params/IControlParams.js +1 -2
- package/models/params/IFileAccessorParams.js +1 -2
- package/models/params/ISearchParams.js +1 -2
- package/models/params/ITelemetryParams.d.ts +1 -1
- package/models/params/ITelemetryParams.js +1 -2
- package/models/params/IWebRTCSignallingParams.js +1 -2
- package/models/projects/ProjectUser.js +1 -2
- package/models/schedule/IScheduleAction.d.ts +1 -1
- package/models/schedule/IScheduleAction.js +2 -5
- package/models/schedule/IScheduleInfo.js +1 -2
- package/models/schedule/IScheduleJob.js +1 -2
- package/models/search/SearchQueryFilter.js +1 -5
- package/models/search/SearchStreamQuery.js +1 -5
- package/models/stream/IBaseStream.js +1 -2
- package/models/stream/ICallerStream.js +1 -2
- package/models/stream/ICommandStream.js +1 -2
- package/models/stream/IControlStream.js +1 -2
- package/models/stream/IFileAccessorStream.d.ts +1 -2
- package/models/stream/IFileAccessorStream.js +1 -2
- package/models/stream/ISearchStream.js +1 -2
- package/models/stream/ITelemetryStream.js +1 -2
- package/models/stream/IWebRTCSignallingStream.d.ts +51 -16
- package/models/stream/IWebRTCSignallingStream.js +1 -7
- package/models/types.d.ts +5 -5
- package/models/types.js +1 -2
- package/models/workflow/Workflow.d.ts +36 -0
- package/models/workflow/Workflow.js +1 -0
- package/node/RocosSDKNode.d.ts +6 -1
- package/node/RocosSDKNode.js +82 -80
- package/node/index.js +7 -19
- package/package.json +10 -11
- package/services/AssetStorageService.d.ts +23 -1
- package/services/AssetStorageService.js +53 -24
- package/services/AuthService.d.ts +59 -27
- package/services/AuthService.js +167 -86
- package/services/AuthService.spec.d.ts +1 -0
- package/services/AuthService.spec.js +163 -0
- package/services/BaseServiceAbstract.d.ts +11 -13
- package/services/BaseServiceAbstract.js +18 -24
- package/services/BaseStreamService.d.ts +18 -0
- package/services/BaseStreamService.js +47 -0
- package/services/CallerService.d.ts +37 -17
- package/services/CallerService.js +86 -65
- package/services/CallerService.spec.d.ts +1 -0
- package/services/CallerService.spec.js +227 -0
- package/services/CallerServiceNode.js +4 -8
- package/services/CommandService.d.ts +5 -17
- package/services/CommandService.js +19 -62
- package/services/CommandServiceNode.js +4 -8
- package/services/ConfigGroupService.js +17 -21
- package/services/ControlService.d.ts +5 -17
- package/services/ControlService.js +22 -65
- package/services/ControlServiceNode.js +4 -8
- package/services/DashboardService.js +20 -24
- package/services/EvaluatorService.d.ts +11 -0
- package/services/EvaluatorService.js +28 -0
- package/services/EventService.js +13 -17
- package/services/FileAccessorService.d.ts +4 -18
- package/services/FileAccessorService.js +14 -62
- package/services/FileAccessorServiceNode.js +4 -8
- package/services/FunctionService.js +17 -21
- package/services/IntegrationService.js +14 -19
- package/services/MapService.d.ts +71 -25
- package/services/MapService.js +113 -40
- package/services/PlatformTimeService.js +8 -12
- package/services/PlatformTimeService.spec.d.ts +1 -0
- package/services/PlatformTimeService.spec.js +180 -0
- package/services/ProfileService.js +36 -40
- package/services/ProjectService.js +23 -27
- package/services/RobotService.d.ts +2 -6
- package/services/RobotService.js +48 -55
- package/services/ScheduleService.js +10 -14
- package/services/SearchService.d.ts +4 -17
- package/services/SearchService.js +24 -59
- package/services/SearchServiceNode.js +4 -8
- package/services/SpotProvisioningService.d.ts +1 -1
- package/services/SpotProvisioningService.js +16 -16
- package/services/SpotProvisioningServiceNode.d.ts +1 -1
- package/services/SpotProvisioningServiceNode.js +16 -16
- package/services/StreamService.js +26 -30
- package/services/TelemetryService.d.ts +15 -17
- package/services/TelemetryService.js +103 -93
- package/services/TelemetryService.spec.d.ts +1 -0
- package/services/TelemetryService.spec.js +37 -0
- package/services/TelemetryServiceNode.js +4 -8
- package/services/TimeSyncerService.js +9 -13
- package/services/UserService.js +37 -41
- package/services/WebRTCSignallingService.d.ts +4 -4
- package/services/WebRTCSignallingService.js +24 -27
- package/services/WorkflowService.d.ts +25 -29
- package/services/WorkflowService.js +39 -75
- package/services/index.d.ts +1 -0
- package/services/index.js +27 -38
- package/store/RocosStore.js +9 -15
- package/demo/angular/.editorconfig +0 -16
- package/demo/angular/.eslintignore +0 -4
- package/demo/angular/.eslintrc.json +0 -50
- package/demo/angular/README.md +0 -36
- package/demo/angular/angular.json +0 -132
- package/demo/angular/karma.conf.js +0 -44
- package/demo/angular/package.json +0 -41
- package/demo/angular/src/app/app.component.css +0 -0
- package/demo/angular/src/app/app.component.html +0 -9
- package/demo/angular/src/app/app.component.ts +0 -10
- package/demo/angular/src/app/app.module.ts +0 -38
- package/demo/angular/src/app/components/assets/assets.component.css +0 -0
- package/demo/angular/src/app/components/assets/assets.component.html +0 -29
- package/demo/angular/src/app/components/assets/assets.component.ts +0 -107
- package/demo/angular/src/app/components/auth/auth.component.css +0 -0
- package/demo/angular/src/app/components/auth/auth.component.html +0 -27
- package/demo/angular/src/app/components/auth/auth.component.ts +0 -33
- package/demo/angular/src/app/components/caller/caller.component.css +0 -0
- package/demo/angular/src/app/components/caller/caller.component.html +0 -22
- package/demo/angular/src/app/components/caller/caller.component.ts +0 -61
- package/demo/angular/src/app/components/command/command.component.css +0 -0
- package/demo/angular/src/app/components/command/command.component.html +0 -22
- package/demo/angular/src/app/components/command/command.component.ts +0 -60
- package/demo/angular/src/app/components/integrations/integrations.component.ts +0 -43
- package/demo/angular/src/app/components/robots/robots.component.css +0 -0
- package/demo/angular/src/app/components/robots/robots.component.html +0 -13
- package/demo/angular/src/app/components/robots/robots.component.ts +0 -26
- package/demo/angular/src/app/components/sdk/sdk.component.css +0 -0
- package/demo/angular/src/app/components/sdk/sdk.component.html +0 -43
- package/demo/angular/src/app/components/sdk/sdk.component.ts +0 -50
- package/demo/angular/src/app/components/subscription/subscription.component.css +0 -0
- package/demo/angular/src/app/components/subscription/subscription.component.html +0 -6
- package/demo/angular/src/app/components/subscription/subscription.component.ts +0 -40
- package/demo/angular/src/app/components/telemetry/telemetry.component.css +0 -0
- package/demo/angular/src/app/components/telemetry/telemetry.component.html +0 -19
- package/demo/angular/src/app/components/telemetry/telemetry.component.ts +0 -61
- package/demo/angular/src/app/components/token/token.component.css +0 -0
- package/demo/angular/src/app/components/token/token.component.html +0 -10
- package/demo/angular/src/app/components/token/token.component.ts +0 -18
- package/demo/angular/src/app/components/video/p2pvideo/index.ts +0 -646
- package/demo/angular/src/app/components/video/video-source.ts +0 -315
- package/demo/angular/src/app/components/video/video.component.css +0 -6
- package/demo/angular/src/app/components/video/video.component.html +0 -54
- package/demo/angular/src/app/components/video/video.component.ts +0 -151
- package/demo/angular/src/app/services/sdk.service.ts +0 -193
- package/demo/angular/src/assets/.gitkeep +0 -0
- package/demo/angular/src/assets/HKGrotesk-Bold.otf +0 -0
- package/demo/angular/src/assets/HKGrotesk-Regular.otf +0 -0
- package/demo/angular/src/assets/logo.svg +0 -16
- package/demo/angular/src/environments/environment.prod.ts +0 -3
- package/demo/angular/src/environments/environment.ts +0 -16
- package/demo/angular/src/favicon.ico +0 -0
- package/demo/angular/src/index.html +0 -15
- package/demo/angular/src/main.ts +0 -7
- package/demo/angular/src/polyfills.ts +0 -53
- package/demo/angular/src/styles.css +0 -198
- package/demo/angular/tsconfig.app.json +0 -15
- package/demo/angular/tsconfig.json +0 -39
- package/demo/html/README.md +0 -8
- package/demo/html/assets/HKGrotesk-Bold.otf +0 -0
- package/demo/html/assets/HKGrotesk-Regular.otf +0 -0
- package/demo/html/assets/logo.svg +0 -16
- package/demo/html/favicon.ico +0 -0
- package/demo/html/index.html +0 -416
- package/demo/html/rocos-js-sdk.js +0 -3
- package/demo/html/rocos-js-sdk.js.LICENSE.txt +0 -8
- package/demo/html/rocos-js-sdk.js.map +0 -1
- package/demo/html/styles.css +0 -190
- package/demo/node/README.md +0 -17
- package/demo/node/index.js +0 -134
- package/demo/node/package.json +0 -8
- package/demo/react/.env +0 -1
- package/demo/react/.env.dist +0 -1
- package/demo/react/.eslintrc.json +0 -46
- package/demo/react/README.md +0 -65
- package/demo/react/package.json +0 -60
- package/demo/react/public/favicon.ico +0 -0
- package/demo/react/public/index.html +0 -43
- package/demo/react/public/logo192.png +0 -0
- package/demo/react/public/logo512.png +0 -0
- package/demo/react/public/manifest.json +0 -25
- package/demo/react/public/robots.txt +0 -3
- package/demo/react/src/App.css +0 -190
- package/demo/react/src/App.tsx +0 -31
- package/demo/react/src/actions/index.ts +0 -8
- package/demo/react/src/actions/sdkActions.ts +0 -62
- package/demo/react/src/assets/HKGrotesk-Bold.otf +0 -0
- package/demo/react/src/assets/HKGrotesk-Regular.otf +0 -0
- package/demo/react/src/assets/logo.svg +0 -16
- package/demo/react/src/components/AuthForm.tsx +0 -76
- package/demo/react/src/components/CallerBox.tsx +0 -53
- package/demo/react/src/components/CallerForm.tsx +0 -98
- package/demo/react/src/components/CommandBox.tsx +0 -47
- package/demo/react/src/components/CommandForm.tsx +0 -98
- package/demo/react/src/components/RobotsForm.tsx +0 -51
- package/demo/react/src/components/SubscriptionBox.tsx +0 -55
- package/demo/react/src/components/TelemetryForm.tsx +0 -98
- package/demo/react/src/components/TokenForm.tsx +0 -39
- package/demo/react/src/config.json +0 -14
- package/demo/react/src/controllers/RocosSDKController.ts +0 -48
- package/demo/react/src/helpers/deepEqual.ts +0 -27
- package/demo/react/src/hooks/useInput.ts +0 -29
- package/demo/react/src/index.css +0 -11
- package/demo/react/src/index.tsx +0 -26
- package/demo/react/src/react-app-env.d.ts +0 -1
- package/demo/react/src/reducers/sdkReducer.ts +0 -133
- package/demo/react/src/reportWebVitals.ts +0 -15
- package/demo/react/src/selectors/sdkSelector.ts +0 -11
- package/demo/react/src/setupTests.ts +0 -5
- package/demo/react/src/store.ts +0 -14
- package/demo/react/tsconfig.json +0 -26
- package/demo/sdk-sizer/dist/sdk-sizer/3rdpartylicenses.txt +0 -975
- package/demo/sdk-sizer/dist/sdk-sizer/favicon.ico +0 -0
- package/demo/sdk-sizer/dist/sdk-sizer/index.html +0 -12
- package/demo/sdk-sizer/dist/sdk-sizer/main.c9183649ce1856ef.js +0 -2
- package/demo/sdk-sizer/dist/sdk-sizer/main.c9183649ce1856ef.js.map +0 -1
- package/demo/sdk-sizer/dist/sdk-sizer/polyfills.701c8e5d007909aa.js +0 -2
- package/demo/sdk-sizer/dist/sdk-sizer/polyfills.701c8e5d007909aa.js.map +0 -1
- package/demo/sdk-sizer/dist/sdk-sizer/runtime.00e20e689f5284a8.js +0 -2
- package/demo/sdk-sizer/dist/sdk-sizer/runtime.00e20e689f5284a8.js.map +0 -1
- package/demo/sdk-sizer/dist/sdk-sizer/stats.json +0 -1
- package/demo/sdk-sizer/dist/sdk-sizer/styles.b45f7e627ac8cbce.css +0 -2
- package/demo/sdk-sizer/dist/sdk-sizer/styles.b45f7e627ac8cbce.css.map +0 -1
- package/grpc/file-accessor/filagree_grpc_pb.d.ts +0 -41
- package/grpc/file-accessor/filagree_grpc_pb.js +0 -121
- package/grpc/file-accessor/filagree_pb.d.ts +0 -339
- package/grpc/file-accessor/filagree_pb.js +0 -2261
- package/grpc/file-accessor/filagree_pb_service.d.ts +0 -115
- package/grpc/file-accessor/filagree_pb_service.js +0 -257
- package/grpc/rambo/rambo.v1_grpc_pb.d.ts +0 -39
- package/grpc/rambo/rambo.v1_grpc_pb.js +0 -73
- package/grpc/rambo/rambo.v1_pb.d.ts +0 -365
- package/grpc/rambo/rambo.v1_pb.js +0 -2469
- package/grpc/rambo/rambo.v1_pb_service.d.ts +0 -76
- package/grpc/rambo/rambo.v1_pb_service.js +0 -138
- package/grpc/rambo/uri.v1_grpc_pb.d.ts +0 -1
- package/grpc/rambo/uri.v1_grpc_pb.js +0 -1
- package/grpc/rambo/uri.v1_pb.d.ts +0 -80
- package/grpc/rambo/uri.v1_pb.js +0 -563
- package/grpc/rambo/uri.v1_pb_service.d.ts +0 -3
- package/grpc/rambo/uri.v1_pb_service.js +0 -3
- package/grpc/robot-control/conker_grpc_pb.d.ts +0 -46
- package/grpc/robot-control/conker_grpc_pb.js +0 -143
- package/grpc/robot-control/conker_pb.d.ts +0 -168
- package/grpc/robot-control/conker_pb.js +0 -1287
- package/grpc/robot-control/conker_pb_service.d.ts +0 -126
- package/grpc/robot-control/conker_pb_service.js +0 -301
- package/grpc/serviette/common.v1_grpc_pb.d.ts +0 -1
- package/grpc/serviette/common.v1_grpc_pb.js +0 -1
- package/grpc/serviette/common.v1_pb.d.ts +0 -8
- package/grpc/serviette/common.v1_pb.js +0 -45
- package/grpc/serviette/common.v1_pb_service.d.ts +0 -3
- package/grpc/serviette/common.v1_pb_service.js +0 -3
- package/grpc/serviette/serviette.v1_grpc_pb.d.ts +0 -137
- package/grpc/serviette/serviette.v1_grpc_pb.js +0 -331
- package/grpc/serviette/serviette.v1_pb.d.ts +0 -884
- package/grpc/serviette/serviette.v1_pb.js +0 -6363
- package/grpc/serviette/serviette.v1_pb_service.d.ts +0 -278
- package/grpc/serviette/serviette.v1_pb_service.js +0 -699
- package/grpc/serviette/uri.v1_grpc_pb.d.ts +0 -1
- package/grpc/serviette/uri.v1_grpc_pb.js +0 -1
- package/grpc/serviette/uri.v1_pb.d.ts +0 -102
- package/grpc/serviette/uri.v1_pb.js +0 -741
- package/grpc/serviette/uri.v1_pb_service.d.ts +0 -3
- package/grpc/serviette/uri.v1_pb_service.js +0 -3
- package/grpc/slowlane/slowlane_grpc_pb.d.ts +0 -38
- package/grpc/slowlane/slowlane_grpc_pb.js +0 -132
- package/grpc/slowlane/slowlane_pb.d.ts +0 -373
- package/grpc/slowlane/slowlane_pb.js +0 -2908
- package/grpc/slowlane/slowlane_pb_service.d.ts +0 -112
- package/grpc/slowlane/slowlane_pb_service.js +0 -189
- package/grpc/teletubby/teletubby_grpc_pb.d.ts +0 -73
- package/grpc/teletubby/teletubby_grpc_pb.js +0 -231
- package/grpc/teletubby/teletubby_pb.d.ts +0 -647
- package/grpc/teletubby/teletubby_pb.js +0 -4786
- package/grpc/teletubby/teletubby_pb_service.d.ts +0 -193
- package/grpc/teletubby/teletubby_pb_service.js +0 -436
- package/grpc/video/pigeon_grpc_pb.d.ts +0 -59
- package/grpc/video/pigeon_grpc_pb.js +0 -180
- package/grpc/video/pigeon_pb.d.ts +0 -237
- package/grpc/video/pigeon_pb.js +0 -1775
- package/grpc/video/pigeon_pb_service.d.ts +0 -152
- package/grpc/video/pigeon_pb_service.js +0 -292
- package/models/ISignupParams.d.ts +0 -8
- package/models/ISignupParams.js +0 -2
- package/utils/axisangle.d.ts +0 -18
- package/utils/axisangle.js +0 -48
- package/utils/eulerangles.d.ts +0 -22
- package/utils/eulerangles.js +0 -133
- package/utils/helperfunctions.d.ts +0 -5
- package/utils/helperfunctions.js +0 -50
- package/utils/localtransform.d.ts +0 -17
- package/utils/localtransform.js +0 -50
- package/utils/localtransformtree.d.ts +0 -17
- package/utils/localtransformtree.js +0 -88
- package/utils/misc.d.ts +0 -17
- package/utils/misc.js +0 -23
- package/utils/positionvector.d.ts +0 -13
- package/utils/positionvector.js +0 -79
- package/utils/quaternion.d.ts +0 -20
- package/utils/quaternion.js +0 -62
- package/utils/rotationmatrix.d.ts +0 -23
- package/utils/rotationmatrix.js +0 -262
- package/utils/transformationmatrix.d.ts +0 -12
- package/utils/transformationmatrix.js +0 -123
- package/utils/vector3.d.ts +0 -11
- package/utils/vector3.js +0 -61
|
@@ -1,12 +1,8 @@
|
|
|
1
1
|
import { BehaviorSubject, Subject } from 'rxjs';
|
|
2
|
-
import { ITelemetryParams } from '../../../models
|
|
3
|
-
import {
|
|
4
|
-
import { IRocosTelemetryMessage } from '../../../models/message/IRocosTelemetryMessage';
|
|
5
|
-
import { ITelemetryStream } from '../../../models/stream/ITelemetryStream';
|
|
6
|
-
import { ITelemetryStreamConfig } from '../../../models/ITelemetryStreamConfig';
|
|
2
|
+
import { IRocosTelemetryMessage, ITelemetryParams, ITelemetryStream, ITelemetryStreamConfig, SubscriberStatusEnum } from '../../../models';
|
|
3
|
+
import { TelemetryAckStatus, TelemetryMessage, TelemetryQueryRequest, TelemetryRequest, TelemetryStreamMessage } from '../../../grpc/teletubby_pb';
|
|
7
4
|
import { Logger } from 'loglevel';
|
|
8
5
|
import { StreamHeartbeat } from '../../atoms/StreamHeartbeat';
|
|
9
|
-
import { SubscriberStatusEnum } from '../../../models/SubscriberStatusEnum';
|
|
10
6
|
export declare abstract class TelemetryStreamAbstract implements ITelemetryStream {
|
|
11
7
|
messageStream$: Subject<IRocosTelemetryMessage>;
|
|
12
8
|
identifier: string;
|
|
@@ -22,7 +18,7 @@ export declare abstract class TelemetryStreamAbstract implements ITelemetryStrea
|
|
|
22
18
|
protected subscriberStatus: SubscriberStatusEnum;
|
|
23
19
|
private checkerStartedAt?;
|
|
24
20
|
private lastRobotMessageReceived?;
|
|
25
|
-
private messagesTimer
|
|
21
|
+
private messagesTimer?;
|
|
26
22
|
private lastMessageReceived?;
|
|
27
23
|
private retryTimes;
|
|
28
24
|
private options;
|
|
@@ -37,16 +33,17 @@ export declare abstract class TelemetryStreamAbstract implements ITelemetryStrea
|
|
|
37
33
|
protected abstract registerReceiver(): () => void;
|
|
38
34
|
protected abstract requestTelemetryQuery(req: TelemetryQueryRequest): Promise<void>;
|
|
39
35
|
protected abstract requestTelemetry(req: TelemetryRequest): Promise<void>;
|
|
40
|
-
protected abstract sendAcknowledgmentInternal(uid: string, status:
|
|
36
|
+
protected abstract sendAcknowledgmentInternal(uid: string, status: TelemetryAckStatus, noRetry: boolean): boolean;
|
|
41
37
|
protected abstract sendHeartbeat(): void;
|
|
42
38
|
setToken(token: string): void;
|
|
43
39
|
init(): void;
|
|
44
40
|
stopStream(): void;
|
|
45
41
|
addSubscription(params: ITelemetryParams): void;
|
|
46
42
|
removeSubscription(params: ITelemetryParams, terminateReceiverGroup?: boolean): Promise<void>;
|
|
47
|
-
sendAcknowledgment(uid: string, status:
|
|
43
|
+
sendAcknowledgment(uid: string, status: TelemetryAckStatus, noRetry: boolean): boolean;
|
|
48
44
|
private getSubscriptions;
|
|
49
|
-
protected onData(message:
|
|
45
|
+
protected onData(message: TelemetryStreamMessage, isStream: true): void;
|
|
46
|
+
protected onData(message: TelemetryMessage, isStream: false): void;
|
|
50
47
|
private takeTelemetryAction;
|
|
51
48
|
protected listenMessagesAndRenew(): void;
|
|
52
49
|
private addTerminateToAction;
|
|
@@ -58,5 +55,5 @@ export declare abstract class TelemetryStreamAbstract implements ITelemetryStrea
|
|
|
58
55
|
private isFoundCallsign;
|
|
59
56
|
private isFoundSource;
|
|
60
57
|
private isRegisteredMessage;
|
|
61
|
-
private
|
|
58
|
+
private updateReceivedDataStatsWithMessage;
|
|
62
59
|
}
|
|
@@ -1,64 +1,40 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
const StreamOptions_1 = require("../../../models/StreamOptions");
|
|
14
|
-
const StreamRegister_1 = require("../../StreamRegister");
|
|
15
|
-
const SubscriberStatusEnum_1 = require("../../../models/SubscriberStatusEnum");
|
|
16
|
-
const arrayUnique_1 = require("../../../helpers/arrayUnique");
|
|
17
|
-
const operators_1 = require("rxjs/operators");
|
|
18
|
-
const getSubscriptionsDifference_1 = require("../../../helpers/getSubscriptionsDifference");
|
|
19
|
-
class TelemetryStreamAbstract {
|
|
1
|
+
import { BehaviorSubject, Subject } from 'rxjs';
|
|
2
|
+
import { CallsignsLookup, CallsignsLookupType, RocosTelemetryMessage, StreamOptions, SubscriberStatusEnum, } from '../../../models';
|
|
3
|
+
import { GRPC_SOURCE_NOOP, GRPC_SOURCE_SUBSCRIBED } from '../../../constants/grpc';
|
|
4
|
+
import { QueryOrPredicate, TelemetryAckStatus, TelemetryQueryRequest, TelemetryRequest, UnsubscribeOperation, } from '../../../grpc/teletubby_pb';
|
|
5
|
+
import { IDENTIFIER_NAME_TELEMETRY } from '../../../constants/identifier';
|
|
6
|
+
import { RocosStore } from '../../../store/RocosStore';
|
|
7
|
+
import { StreamHeartbeat } from '../../atoms/StreamHeartbeat';
|
|
8
|
+
import { StreamRegister } from '../../StreamRegister';
|
|
9
|
+
import { arrayUnique } from '../../../helpers/arrayUnique';
|
|
10
|
+
import { filter } from 'rxjs/operators';
|
|
11
|
+
import { getSubscriptionsDifference } from '../../../helpers/getSubscriptionsDifference';
|
|
12
|
+
export class TelemetryStreamAbstract {
|
|
20
13
|
constructor(config) {
|
|
21
14
|
// /////////////////
|
|
22
15
|
// Subscriber Check
|
|
23
16
|
this.timerIntervalInSec = 1;
|
|
24
|
-
this.subscriberStatus =
|
|
17
|
+
this.subscriberStatus = SubscriberStatusEnum.STOPPED;
|
|
25
18
|
this.retryTimes = 0;
|
|
26
19
|
this.receivedMessagesCount = 0;
|
|
27
20
|
// send heartbeat timeout is set to 5 seconds 5000
|
|
28
21
|
this.sendHeartbeatTime = 5000;
|
|
29
22
|
this.receivedDataStats = {};
|
|
30
23
|
this.subscriptions = new Map();
|
|
31
|
-
this.identifier =
|
|
24
|
+
this.identifier = StreamRegister.getIdentifier(IDENTIFIER_NAME_TELEMETRY, config.scope);
|
|
32
25
|
this.projectId = config.projectId;
|
|
33
26
|
this.callsignsLookup = config.callsignsLookup;
|
|
34
27
|
this.token = config.token;
|
|
35
28
|
this.scope = config.scope;
|
|
36
29
|
this.url = config.url;
|
|
37
30
|
// make sure sources are unique for later comparison
|
|
38
|
-
this.sources =
|
|
39
|
-
this.options =
|
|
40
|
-
this.messageStream$ = new
|
|
41
|
-
this.statusStream$ = new
|
|
42
|
-
this.heartbeat = new
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
// autoResubscribeMessageLimit = 100
|
|
46
|
-
// // In seconds
|
|
47
|
-
// autoResubscribeMinimumTime = 10
|
|
48
|
-
// messageTimeoutInSec = 10
|
|
49
|
-
// TODO: implement receive heartbeat handler
|
|
50
|
-
// this.heartbeat
|
|
51
|
-
// .setHealthTimeout(6000)
|
|
52
|
-
// .setHealthMaxTimeout(10)
|
|
53
|
-
// .setHealthMaxMisses(5)
|
|
54
|
-
// .setHealthCheckStatusCallback(async (status) => {
|
|
55
|
-
// console.log('heartbeat status', status)
|
|
56
|
-
// })
|
|
57
|
-
// .setHealthCheckErrorCallback(async () => {
|
|
58
|
-
// console.log('heartbeat error')
|
|
59
|
-
// })
|
|
60
|
-
RocosStore_1.RocosStore.getChangeSubject()
|
|
61
|
-
.pipe(operators_1.filter((message) => {
|
|
31
|
+
this.sources = arrayUnique(config.sources);
|
|
32
|
+
this.options = StreamOptions.fromModel(config.options);
|
|
33
|
+
this.messageStream$ = new Subject();
|
|
34
|
+
this.statusStream$ = new BehaviorSubject(SubscriberStatusEnum.STOPPED);
|
|
35
|
+
this.heartbeat = new StreamHeartbeat(this.identifier);
|
|
36
|
+
RocosStore.getChangeSubject()
|
|
37
|
+
.pipe(filter((message) => {
|
|
62
38
|
return message.type === 'token' && message.url === this.url;
|
|
63
39
|
}))
|
|
64
40
|
.subscribe((msg) => {
|
|
@@ -74,13 +50,12 @@ class TelemetryStreamAbstract {
|
|
|
74
50
|
this.registerReceiver();
|
|
75
51
|
}
|
|
76
52
|
stopStream() {
|
|
77
|
-
|
|
78
|
-
(_a = this.heartbeat) === null || _a === void 0 ? void 0 : _a.stop();
|
|
53
|
+
this.heartbeat?.stop();
|
|
79
54
|
this.stopInternal();
|
|
80
55
|
if (this.messagesTimer) {
|
|
81
56
|
clearInterval(this.messagesTimer);
|
|
82
57
|
}
|
|
83
|
-
this.subscriberStatus =
|
|
58
|
+
this.subscriberStatus = SubscriberStatusEnum.STOPPED;
|
|
84
59
|
this.statusStream$.next(this.subscriberStatus);
|
|
85
60
|
}
|
|
86
61
|
addSubscription(params) {
|
|
@@ -88,18 +63,21 @@ class TelemetryStreamAbstract {
|
|
|
88
63
|
if (!this.subscriptions.has(params.uniqueId)) {
|
|
89
64
|
// get subscriptions before change
|
|
90
65
|
const before = this.getSubscriptions();
|
|
91
|
-
this.subscriptions.set(params.uniqueId,
|
|
66
|
+
this.subscriptions.set(params.uniqueId, {
|
|
67
|
+
...params,
|
|
68
|
+
count: 1, // set the count to one just in case it's set in param
|
|
69
|
+
});
|
|
92
70
|
// get subscriptions after change
|
|
93
71
|
const after = this.getSubscriptions();
|
|
94
72
|
// assign the current values from state after change
|
|
95
|
-
this.callsignsLookup = new
|
|
96
|
-
this.sources =
|
|
73
|
+
this.callsignsLookup = new CallsignsLookup(Object.keys(after));
|
|
74
|
+
this.sources = arrayUnique(Object.values(after).reduce((a, v) => a.concat(v), []));
|
|
97
75
|
// compare before and after subscriptions and only add the difference
|
|
98
|
-
const { toAdd } =
|
|
76
|
+
const { toAdd } = getSubscriptionsDifference(before, after);
|
|
99
77
|
// only subscribe if the subscriberId exists, otherwise the messages will be subscribed on lazy load
|
|
100
78
|
if (toAdd.callsigns.length && toAdd.sources.length) {
|
|
101
79
|
this.logger.debug('New subscriptions added, we need to refresh sources', { toAdd });
|
|
102
|
-
void this.takeTelemetryAction('subscribe', new
|
|
80
|
+
void this.takeTelemetryAction('subscribe', new CallsignsLookup(toAdd.callsigns), toAdd.sources);
|
|
103
81
|
}
|
|
104
82
|
}
|
|
105
83
|
else {
|
|
@@ -108,7 +86,7 @@ class TelemetryStreamAbstract {
|
|
|
108
86
|
this.subscriptions.set(params.uniqueId, subs);
|
|
109
87
|
this.logger.info('Stream subscriptions already exists, increasing count', params.uniqueId, subs.count);
|
|
110
88
|
}
|
|
111
|
-
|
|
89
|
+
RocosStore.getChangeSubject().next({ type: 'telemetry-subscription', url: this.url, data: this.subscriptions });
|
|
112
90
|
}
|
|
113
91
|
async removeSubscription(params, terminateReceiverGroup = false) {
|
|
114
92
|
this.logger.info('Removing subscriptions from stream', params.uniqueId);
|
|
@@ -123,13 +101,13 @@ class TelemetryStreamAbstract {
|
|
|
123
101
|
this.subscriptions.delete(params.uniqueId);
|
|
124
102
|
const after = this.getSubscriptions();
|
|
125
103
|
// assign the current values from state after change
|
|
126
|
-
this.callsignsLookup = new
|
|
127
|
-
this.sources =
|
|
128
|
-
const { toRemove } =
|
|
104
|
+
this.callsignsLookup = new CallsignsLookup(Object.keys(after));
|
|
105
|
+
this.sources = arrayUnique(Object.values(after).reduce((a, v) => a.concat(v), []));
|
|
106
|
+
const { toRemove } = getSubscriptionsDifference(before, after);
|
|
129
107
|
if (toRemove.callsigns.length && toRemove.sources.length) {
|
|
130
108
|
this.logger.debug('Subscriptions removed, we need to refresh sources', { toRemove });
|
|
131
109
|
try {
|
|
132
|
-
await this.takeTelemetryAction('unsubscribe', new
|
|
110
|
+
await this.takeTelemetryAction('unsubscribe', new CallsignsLookup(toRemove.callsigns), toRemove.sources, terminateReceiverGroup);
|
|
133
111
|
}
|
|
134
112
|
catch (err) {
|
|
135
113
|
this.logger.error(`Failed to unsubscribe: ${err}`);
|
|
@@ -139,7 +117,7 @@ class TelemetryStreamAbstract {
|
|
|
139
117
|
this.logger.info('No subscriptions remaining closing stream', params.uniqueId);
|
|
140
118
|
this.stopStream();
|
|
141
119
|
// self remove when no subscriptions a re left
|
|
142
|
-
void
|
|
120
|
+
void StreamRegister.getInstance().removeStream(this);
|
|
143
121
|
this.logger.info('Stream closed');
|
|
144
122
|
}
|
|
145
123
|
}
|
|
@@ -152,79 +130,73 @@ class TelemetryStreamAbstract {
|
|
|
152
130
|
if (data.callsigns) {
|
|
153
131
|
data.callsigns.forEach((item) => {
|
|
154
132
|
if (!subs[item]) {
|
|
155
|
-
subs[item] =
|
|
133
|
+
subs[item] = arrayUnique([...data.sources]);
|
|
156
134
|
}
|
|
157
135
|
else {
|
|
158
|
-
subs[item] =
|
|
136
|
+
subs[item] = arrayUnique([...subs[item], ...data.sources]);
|
|
159
137
|
}
|
|
160
138
|
});
|
|
161
139
|
}
|
|
162
140
|
});
|
|
163
141
|
return subs;
|
|
164
142
|
}
|
|
165
|
-
onData(message) {
|
|
166
|
-
// Increase the counter
|
|
143
|
+
onData(message, isStream) {
|
|
167
144
|
this.receivedMessagesCount++;
|
|
168
|
-
|
|
169
|
-
const
|
|
145
|
+
let rocosMessage;
|
|
146
|
+
const data = {
|
|
147
|
+
subscriberId: this.subscriberId,
|
|
148
|
+
subId: this.scope,
|
|
149
|
+
projectId: this.projectId,
|
|
150
|
+
};
|
|
151
|
+
if (isStream) {
|
|
152
|
+
rocosMessage = RocosTelemetryMessage.fromTelemetryStreamMessage(message, data, 'json');
|
|
153
|
+
}
|
|
154
|
+
else {
|
|
155
|
+
rocosMessage = RocosTelemetryMessage.fromTelemetryMessage(message, data, 'json');
|
|
156
|
+
}
|
|
157
|
+
const { source, callsign } = rocosMessage;
|
|
170
158
|
let isRobotMessage = true;
|
|
171
159
|
const now = new Date();
|
|
172
160
|
// Update last message received time
|
|
173
161
|
this.lastMessageReceived = now;
|
|
174
|
-
// Update the message's project id
|
|
175
|
-
message.projectId = this.projectId;
|
|
176
|
-
message.type = 'json';
|
|
177
|
-
message.subId = this.scope;
|
|
178
|
-
message.subscriberId = this.subscriberId;
|
|
179
|
-
message.receivedAt = new Date();
|
|
180
162
|
switch (source) {
|
|
181
163
|
// Subscribe message
|
|
182
|
-
case
|
|
183
|
-
|
|
184
|
-
const json = RocosTelemetryMessage_1.RocosTelemetryMessage.getPayloadAsJSON(message);
|
|
185
|
-
// eslint-disable-next-line no-case-declarations
|
|
186
|
-
const { subscriberId } = json;
|
|
164
|
+
case GRPC_SOURCE_SUBSCRIBED: {
|
|
165
|
+
const { subscriberId } = rocosMessage.payload;
|
|
187
166
|
if (this.subscriberId && subscriberId) {
|
|
188
167
|
this.logger.warn(`Replacing old subscriberId (${this.subscriberId}) with a new one (${subscriberId})`);
|
|
189
168
|
}
|
|
190
169
|
// Update the subscriberId
|
|
191
170
|
this.subscriberId = subscriberId;
|
|
192
|
-
|
|
171
|
+
rocosMessage.subscriberId = this.subscriberId;
|
|
193
172
|
this.logger.info('onData', `subscriberId has been updated - ${subscriberId}`, { subscriberId });
|
|
194
173
|
void this.takeTelemetryAction('subscribe');
|
|
195
174
|
this.heartbeat.start(this.sendHeartbeat, this.sendHeartbeatTime);
|
|
196
175
|
isRobotMessage = false;
|
|
197
176
|
break;
|
|
177
|
+
}
|
|
198
178
|
// Server heartbeat message
|
|
199
|
-
case
|
|
200
|
-
// this.logger.debug('onData', 'received noop message');
|
|
179
|
+
case GRPC_SOURCE_NOOP:
|
|
201
180
|
isRobotMessage = false;
|
|
202
181
|
break;
|
|
203
|
-
default:
|
|
204
|
-
isRobotMessage = true;
|
|
205
|
-
break;
|
|
206
|
-
}
|
|
207
|
-
if (!source) {
|
|
208
|
-
isRobotMessage = false;
|
|
209
182
|
}
|
|
210
183
|
// Update robot last message timestamp
|
|
211
184
|
if (isRobotMessage) {
|
|
212
185
|
this.lastRobotMessageReceived = now;
|
|
213
186
|
}
|
|
214
|
-
message.payload = RocosTelemetryMessage_1.RocosTelemetryMessage.getPayloadByType(message);
|
|
215
187
|
// Update stats
|
|
216
|
-
this.
|
|
188
|
+
this.updateReceivedDataStatsWithMessage(rocosMessage);
|
|
217
189
|
// Send message to subscribers
|
|
218
190
|
if (this.isRegisteredMessage(callsign, source) && this.messageStream$) {
|
|
219
|
-
this.messageStream$.next(
|
|
220
|
-
if (
|
|
221
|
-
this.sendAcknowledgment(
|
|
191
|
+
this.messageStream$.next(rocosMessage);
|
|
192
|
+
if (rocosMessage.isackable && this.options.autoAcknowledgmentEnabled) {
|
|
193
|
+
this.sendAcknowledgment(rocosMessage.uid, TelemetryAckStatus.OK, false);
|
|
222
194
|
}
|
|
223
195
|
}
|
|
224
196
|
else if (isRobotMessage) {
|
|
225
197
|
// acknowledge any way, as the user never receives this message
|
|
226
|
-
if (
|
|
227
|
-
this.sendAcknowledgment(
|
|
198
|
+
if (rocosMessage.isackable) {
|
|
199
|
+
this.sendAcknowledgment(rocosMessage.uid, TelemetryAckStatus.REJECT, true);
|
|
228
200
|
}
|
|
229
201
|
// All messages received should be subscribed.
|
|
230
202
|
this.logger.debug('onData', 'received unsubscribed message', {
|
|
@@ -244,50 +216,55 @@ class TelemetryStreamAbstract {
|
|
|
244
216
|
});
|
|
245
217
|
return Promise.resolve();
|
|
246
218
|
}
|
|
247
|
-
const actionSources = sources
|
|
248
|
-
const actionCallsigns = callsignsLookup
|
|
249
|
-
if (this.callsignsLookup.lookupType ===
|
|
219
|
+
const actionSources = sources ?? this.sources;
|
|
220
|
+
const actionCallsigns = callsignsLookup ?? this.callsignsLookup;
|
|
221
|
+
if (this.callsignsLookup.lookupType === CallsignsLookupType.List) {
|
|
250
222
|
// Compose the request message
|
|
251
|
-
const req =
|
|
252
|
-
|
|
253
|
-
|
|
254
|
-
|
|
255
|
-
|
|
256
|
-
|
|
223
|
+
const req = TelemetryRequest.create({
|
|
224
|
+
subscriberId: this.subscriberId,
|
|
225
|
+
requestedActions: [
|
|
226
|
+
{
|
|
227
|
+
operation: actionType,
|
|
228
|
+
callsigns: actionCallsigns.lookupValue,
|
|
229
|
+
sources: actionSources,
|
|
230
|
+
},
|
|
231
|
+
],
|
|
232
|
+
});
|
|
257
233
|
if (actionType === 'unsubscribe' && terminate) {
|
|
258
|
-
this.addTerminateToAction(
|
|
234
|
+
this.addTerminateToAction(req.requestedActions[0]);
|
|
259
235
|
}
|
|
260
|
-
actions.push(action);
|
|
261
|
-
req.setRequestedactionsList(actions);
|
|
262
|
-
req.setSubscriberid(this.subscriberId);
|
|
263
236
|
this.logger.debug('takeTelemetryAction', actionType, 'client.requestTelemetry', this.subscriberId);
|
|
264
237
|
// Send the message to back-end.
|
|
265
238
|
return this.requestTelemetry(req);
|
|
266
239
|
}
|
|
267
|
-
else if (actionCallsigns.lookupType ===
|
|
240
|
+
else if (actionCallsigns.lookupType === CallsignsLookupType.Query) {
|
|
268
241
|
const lookupValue = actionCallsigns.lookupValue;
|
|
269
|
-
// Compose the request message
|
|
270
|
-
const req = new teletubby_pb_1.TelemetryQueryRequest();
|
|
271
|
-
req.setSubscriberid(this.subscriberId);
|
|
272
|
-
req.setSourcesList(actionSources);
|
|
273
|
-
req.setOperation(actionType);
|
|
274
|
-
const telemetryQuery = new teletubby_pb_1.Query();
|
|
275
|
-
telemetryQuery.setOperation(lookupValue.operation);
|
|
276
242
|
// We don't support nested query at the moment
|
|
277
243
|
const queryOrPredicatesList = [];
|
|
278
244
|
// Loop through user provided predicates to construct a telemetry query request
|
|
279
245
|
lookupValue.predicates.forEach((callsignsPredicate) => {
|
|
280
|
-
const queryOrPredicate =
|
|
281
|
-
|
|
282
|
-
|
|
283
|
-
|
|
284
|
-
|
|
285
|
-
|
|
286
|
-
|
|
246
|
+
const queryOrPredicate = QueryOrPredicate.create({
|
|
247
|
+
content: {
|
|
248
|
+
oneofKind: 'predicate',
|
|
249
|
+
predicate: {
|
|
250
|
+
attribute: callsignsPredicate.attribute.valueOf(),
|
|
251
|
+
operation: callsignsPredicate.operation.valueOf(),
|
|
252
|
+
value: callsignsPredicate.value,
|
|
253
|
+
},
|
|
254
|
+
},
|
|
255
|
+
});
|
|
287
256
|
queryOrPredicatesList.push(queryOrPredicate);
|
|
288
257
|
});
|
|
289
|
-
|
|
290
|
-
req.
|
|
258
|
+
// Compose the request message
|
|
259
|
+
const req = TelemetryQueryRequest.create({
|
|
260
|
+
subscriberId: this.subscriberId,
|
|
261
|
+
sources: actionSources,
|
|
262
|
+
operation: actionType,
|
|
263
|
+
callsignQuery: {
|
|
264
|
+
operation: lookupValue.operation.valueOf(),
|
|
265
|
+
queryOrPredicates: queryOrPredicatesList,
|
|
266
|
+
},
|
|
267
|
+
});
|
|
291
268
|
this.logger.debug('takeTelemetryAction', actionType, 'client.requestTelemetry', this.subscriberId);
|
|
292
269
|
// Send the telemetry query request to back-end.
|
|
293
270
|
return this.requestTelemetryQuery(req);
|
|
@@ -302,45 +279,41 @@ class TelemetryStreamAbstract {
|
|
|
302
279
|
clearInterval(timer);
|
|
303
280
|
}
|
|
304
281
|
this.messagesTimer = setInterval(() => {
|
|
305
|
-
var _a;
|
|
306
282
|
const now = new Date();
|
|
307
283
|
const latest = this.lastMessageReceived;
|
|
308
284
|
const latestRobot = this.lastRobotMessageReceived;
|
|
309
|
-
const startedAt =
|
|
285
|
+
const startedAt = this.checkerStartedAt ?? new Date();
|
|
310
286
|
const timeout = this.options.messageTimeoutInSec;
|
|
311
287
|
let shouldRetry = false;
|
|
312
288
|
let shouldAutoResubscribe = false;
|
|
313
|
-
|
|
314
|
-
|
|
315
|
-
|
|
316
|
-
}
|
|
317
|
-
else if (!latest && startedAt && (now.getTime() - startedAt.getTime()) / 1000 > timeout) {
|
|
318
|
-
// If we have not received message before, we should also retry after timeout.
|
|
289
|
+
const hasExceededTimeoutSinceLastMessage = latest && (now.getTime() - latest.getTime()) / 1000 > timeout;
|
|
290
|
+
const hasExceededTimeoutBeforeMessages = !latest && startedAt && (now.getTime() - startedAt.getTime()) / 1000 > timeout;
|
|
291
|
+
if (hasExceededTimeoutSinceLastMessage || hasExceededTimeoutBeforeMessages) {
|
|
319
292
|
shouldRetry = true;
|
|
320
293
|
}
|
|
321
294
|
if (latestRobot) {
|
|
322
295
|
// If we get robot messages at least once.
|
|
323
296
|
if ((now.getTime() - latestRobot.getTime()) / 1000 > timeout) {
|
|
324
297
|
// Offline
|
|
325
|
-
this.subscriberStatus =
|
|
298
|
+
this.subscriberStatus = SubscriberStatusEnum.DEAD;
|
|
326
299
|
}
|
|
327
300
|
else {
|
|
328
301
|
// Online
|
|
329
|
-
this.subscriberStatus =
|
|
302
|
+
this.subscriberStatus = SubscriberStatusEnum.ALIVE;
|
|
330
303
|
}
|
|
331
304
|
}
|
|
332
305
|
else if ((now.getTime() - startedAt.getTime()) / 1000 > timeout) {
|
|
333
306
|
// If there is no robot messages received, then we compare with startedAt time.
|
|
334
307
|
// Timeout
|
|
335
|
-
this.subscriberStatus =
|
|
308
|
+
this.subscriberStatus = SubscriberStatusEnum.DEAD;
|
|
336
309
|
}
|
|
337
310
|
else if (this.retryTimes <= 0) {
|
|
338
311
|
// Still trying, status unknown.
|
|
339
|
-
this.subscriberStatus =
|
|
312
|
+
this.subscriberStatus = SubscriberStatusEnum.STOPPED;
|
|
340
313
|
}
|
|
341
314
|
else {
|
|
342
315
|
// Tried multiple times. dead already.
|
|
343
|
-
this.subscriberStatus =
|
|
316
|
+
this.subscriberStatus = SubscriberStatusEnum.DEAD;
|
|
344
317
|
}
|
|
345
318
|
if (this.options.autoResubscribeEnabled &&
|
|
346
319
|
this.receivedMessagesCount > this.options.autoResubscribeMessageLimit &&
|
|
@@ -367,13 +340,22 @@ class TelemetryStreamAbstract {
|
|
|
367
340
|
}, this.timerIntervalInSec * 1000);
|
|
368
341
|
}
|
|
369
342
|
addTerminateToAction(telemetryAction) {
|
|
370
|
-
const unsubscribeOperation =
|
|
371
|
-
|
|
372
|
-
|
|
373
|
-
|
|
374
|
-
|
|
375
|
-
|
|
376
|
-
|
|
343
|
+
const unsubscribeOperation = UnsubscribeOperation.create({
|
|
344
|
+
options: [
|
|
345
|
+
{
|
|
346
|
+
content: {
|
|
347
|
+
receivergroupUnsubscribeOption: {
|
|
348
|
+
terminate: true,
|
|
349
|
+
},
|
|
350
|
+
oneofKind: 'receivergroupUnsubscribeOption',
|
|
351
|
+
},
|
|
352
|
+
},
|
|
353
|
+
],
|
|
354
|
+
});
|
|
355
|
+
telemetryAction.content = {
|
|
356
|
+
oneofKind: 'unsubscribeOperation',
|
|
357
|
+
unsubscribeOperation,
|
|
358
|
+
};
|
|
377
359
|
}
|
|
378
360
|
messageTimeoutTryAgain() {
|
|
379
361
|
// Increase retry times.
|
|
@@ -397,7 +379,7 @@ class TelemetryStreamAbstract {
|
|
|
397
379
|
this.registerReceiver();
|
|
398
380
|
}
|
|
399
381
|
isFoundCallsign(callsign) {
|
|
400
|
-
return this.callsignsLookup.lookupType ===
|
|
382
|
+
return this.callsignsLookup.lookupType === CallsignsLookupType.List
|
|
401
383
|
? this.callsignsLookup.lookupValue.indexOf(callsign) !== -1
|
|
402
384
|
: true; // If callsigns lookup option is query, we always return true
|
|
403
385
|
}
|
|
@@ -407,7 +389,7 @@ class TelemetryStreamAbstract {
|
|
|
407
389
|
isRegisteredMessage(callsign, source) {
|
|
408
390
|
return this.isFoundCallsign(callsign) && this.isFoundSource(source);
|
|
409
391
|
}
|
|
410
|
-
|
|
392
|
+
updateReceivedDataStatsWithMessage(msg) {
|
|
411
393
|
const { source } = msg;
|
|
412
394
|
const { callsign } = msg;
|
|
413
395
|
const id = `${callsign}-${source}`;
|
|
@@ -418,4 +400,3 @@ class TelemetryStreamAbstract {
|
|
|
418
400
|
this.receivedDataStats[id] = count + 1;
|
|
419
401
|
}
|
|
420
402
|
}
|
|
421
|
-
exports.TelemetryStreamAbstract = TelemetryStreamAbstract;
|
|
@@ -1,11 +1,11 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import {
|
|
1
|
+
import { ITelemetryStreamConfig } from '../../../models';
|
|
2
|
+
import { TelemetryAckStatus, TelemetryQueryRequest, TelemetryRequest } from '../../../grpc/teletubby_pb';
|
|
3
3
|
import { TelemetryStreamAbstract } from './TelemetryStreamAbstract';
|
|
4
4
|
export declare class TelemetryStreamNode extends TelemetryStreamAbstract {
|
|
5
5
|
private client?;
|
|
6
6
|
private stream?;
|
|
7
|
-
private port;
|
|
8
|
-
private credentials;
|
|
7
|
+
private readonly port;
|
|
8
|
+
private readonly credentials;
|
|
9
9
|
constructor(config: ITelemetryStreamConfig);
|
|
10
10
|
protected stopInternal(): void;
|
|
11
11
|
protected registerReceiver(): () => void;
|
|
@@ -16,6 +16,6 @@ export declare class TelemetryStreamNode extends TelemetryStreamAbstract {
|
|
|
16
16
|
private getMetaData;
|
|
17
17
|
protected requestTelemetry(req: TelemetryRequest): Promise<void>;
|
|
18
18
|
protected requestTelemetryQuery(req: TelemetryQueryRequest): Promise<void>;
|
|
19
|
-
protected sendAcknowledgmentInternal(uid: string, status:
|
|
19
|
+
protected sendAcknowledgmentInternal(uid: string, status: TelemetryAckStatus, noRetry: boolean): boolean;
|
|
20
20
|
protected sendHeartbeat(): void;
|
|
21
21
|
}
|