Repository: symphonyoss/plexus-interop Branch: master Commit: 66ba7daa0781 Files: 1633 Total size: 6.1 MB Directory structure: gitextract_vkfrubuv/ ├── .github/ │ └── CONTRIBUTING.md ├── .gitignore ├── .whitesource ├── FILE_HEADER ├── LICENSE ├── NOTICE ├── README.md ├── add-file-headers.bat ├── build.bat ├── build.gradle ├── desktop/ │ ├── .gitignore │ ├── .nuget-local-packages/ │ │ └── README.txt │ ├── NuGet.Config │ ├── README.txt │ ├── build.cmd │ ├── build.gradle │ ├── coverage-broker.cmd │ ├── coverage-client.cmd │ ├── coverage.cmd │ ├── dotnet.cmd │ ├── global.json │ ├── push.cmd │ ├── src/ │ │ ├── Common.csproj │ │ ├── Plexus.Channels/ │ │ │ ├── ChannelExtensions.cs │ │ │ └── Plexus.Channels.csproj │ │ ├── Plexus.Common.Contracts/ │ │ │ ├── AppConnectionDescriptor.cs │ │ │ ├── BrokerFeatures.cs │ │ │ ├── Channels/ │ │ │ │ ├── ChannelWriteTimeoutException.cs │ │ │ │ ├── IChannel.cs │ │ │ │ ├── IReadableChannel.cs │ │ │ │ ├── ITerminatableWritableChannel.cs │ │ │ │ └── IWritableChannel.cs │ │ │ ├── EnvironmentHelper.cs │ │ │ ├── Maybe.cs │ │ │ ├── Nothing.cs │ │ │ ├── Plexus.Common.Contracts.csproj │ │ │ ├── Pools/ │ │ │ │ ├── IPooledBuffer.cs │ │ │ │ └── IPooledObject.cs │ │ │ ├── TransportType.cs │ │ │ └── UniqueId.cs │ │ ├── Plexus.Host/ │ │ │ ├── Generate.cmd │ │ │ ├── Internal/ │ │ │ │ ├── BrokerCliOptions.cs │ │ │ │ ├── BrokerProgram.cs │ │ │ │ ├── Generated/ │ │ │ │ │ └── interop/ │ │ │ │ │ ├── AppConnectionDescriptor.msg.g.cs │ │ │ │ │ ├── AppLaunchMode.msg.g.cs │ │ │ │ │ ├── AppLifecycleService.msg.g.cs │ │ │ │ │ ├── AppLifecycleService.svc.g.cs │ │ │ │ │ ├── CommandLineTool.app.g.cs │ │ │ │ │ ├── InvocationDescriptor.msg.g.cs │ │ │ │ │ ├── Options.msg.g.cs │ │ │ │ │ └── UniqueId.msg.g.cs │ │ │ │ ├── IProgram.cs │ │ │ │ ├── InstanceAwareness.cs │ │ │ │ ├── InteropCliProgram.cs │ │ │ │ ├── LaunchCliOptions.cs │ │ │ │ ├── LockFile.cs │ │ │ │ ├── ProgramLoader.cs │ │ │ │ ├── StopCliOptions.cs │ │ │ │ ├── StudioCliOptions.cs │ │ │ │ └── VerbOptions.cs │ │ │ ├── Plexus.Host.csproj │ │ │ ├── Plexus.Interop.Broker.Redist.nuspec │ │ │ ├── Plexus.Interop.Broker.Redist.targets │ │ │ ├── Program.cs │ │ │ ├── Properties/ │ │ │ │ └── launchSettings.json │ │ │ └── nlog.config │ │ ├── Plexus.Interop.Apps.Manager/ │ │ │ ├── Generate.cmd │ │ │ ├── IAppLaunchedEventConsumer.cs │ │ │ ├── Internal/ │ │ │ │ ├── AppConnection.cs │ │ │ │ ├── AppDto.cs │ │ │ │ ├── AppInfo.cs │ │ │ │ ├── AppLaunchedEventProvider.cs │ │ │ │ ├── AppLaunchedEventSubscriber.cs │ │ │ │ ├── AppLifecycleManager.cs │ │ │ │ ├── AppLifecycleManagerClientClientRepository.cs │ │ │ │ ├── AppRegistry.cs │ │ │ │ ├── AppsDto.cs │ │ │ │ ├── Generated/ │ │ │ │ │ └── interop/ │ │ │ │ │ ├── AppConnectionDescriptor.msg.g.cs │ │ │ │ │ ├── AppLaunchMode.msg.g.cs │ │ │ │ │ ├── AppLauncherService.msg.g.cs │ │ │ │ │ ├── AppLauncherService.svc.g.cs │ │ │ │ │ ├── AppLifecycleManager.app.g.cs │ │ │ │ │ ├── AppLifecycleService.msg.g.cs │ │ │ │ │ ├── AppLifecycleService.svc.g.cs │ │ │ │ │ ├── AppMetadataService.msg.g.cs │ │ │ │ │ ├── AppMetadataService.svc.g.cs │ │ │ │ │ ├── AppRegistrationService.msg.g.cs │ │ │ │ │ ├── AppRegistrationService.svc.g.cs │ │ │ │ │ ├── ContextLinkage.msg.g.cs │ │ │ │ │ ├── ContextLinkage.svc.g.cs │ │ │ │ │ ├── InvocationDescriptor.msg.g.cs │ │ │ │ │ ├── NativeAppLauncher.app.g.cs │ │ │ │ │ ├── Options.msg.g.cs │ │ │ │ │ └── UniqueId.msg.g.cs │ │ │ │ ├── IAppLaunchedEventProvider.cs │ │ │ │ ├── IAppLifecycleManagerClientClientRepository.cs │ │ │ │ ├── IAppRegistryProvider.cs │ │ │ │ ├── InteropContext.cs │ │ │ │ ├── InteropContextFactory.cs │ │ │ │ ├── JsonFileAppRegistryProvider.cs │ │ │ │ ├── NativeAppLauncherClient.cs │ │ │ │ ├── NativeAppLauncherParamsDto.cs │ │ │ │ ├── ObservableExtensions.cs │ │ │ │ ├── ProtobufHelper.cs │ │ │ │ ├── Services/ │ │ │ │ │ ├── AppLifecycleServiceImpl.cs │ │ │ │ │ ├── AppMetadataServiceImpl.cs │ │ │ │ │ ├── AppRegistrationServiceImpl.cs │ │ │ │ │ ├── ContextLinkage/ │ │ │ │ │ │ ├── AppConnectionsSet.cs │ │ │ │ │ │ ├── AppContextBindingEvent.cs │ │ │ │ │ │ ├── Context.cs │ │ │ │ │ │ └── ContextsSet.cs │ │ │ │ │ ├── ContextLinkageServiceImpl.cs │ │ │ │ │ ├── IAppLifecycleService.cs │ │ │ │ │ └── IAppMetadataService.cs │ │ │ │ └── SubProcessLauncher.cs │ │ │ └── Plexus.Interop.Apps.Manager.csproj │ │ ├── Plexus.Interop.Apps.Manager.Contracts/ │ │ │ ├── AppConnectionEvent.cs │ │ │ ├── ConnectionEventType.cs │ │ │ ├── IAppConnectedEventProvider.cs │ │ │ ├── IAppConnection.cs │ │ │ ├── IAppLifecycleManager.cs │ │ │ ├── IContextLinkageManager.cs │ │ │ ├── IInteropContext.cs │ │ │ ├── IInvocationEventProvider.cs │ │ │ ├── InvocationDescriptor.cs │ │ │ ├── InvocationFinishedEventDescriptor.cs │ │ │ ├── InvocationResult.cs │ │ │ ├── InvocationStartedEventDescriptor.cs │ │ │ ├── Plexus.Interop.Apps.Manager.Contracts.csproj │ │ │ ├── ResolveMode.cs │ │ │ └── ResolvedConnection.cs │ │ ├── Plexus.Interop.Broker/ │ │ │ ├── BrokerFactory.cs │ │ │ ├── BrokerIsAlreadyRunningException.cs │ │ │ ├── BrokerOptions.cs │ │ │ ├── IBroker.cs │ │ │ ├── Internal/ │ │ │ │ ├── Broker.cs │ │ │ │ └── ServerConnectionListener.cs │ │ │ └── Plexus.Interop.Broker.csproj │ │ ├── Plexus.Interop.Broker.Core/ │ │ │ ├── BrokerException.cs │ │ │ ├── BrokerProcessorFactory.cs │ │ │ ├── Generate.cmd │ │ │ ├── IBrokerProcessor.cs │ │ │ ├── Internal/ │ │ │ │ ├── AppConnectionProcessor.cs │ │ │ │ ├── AuthenticationHandler.cs │ │ │ │ ├── BrokerProcessor.cs │ │ │ │ ├── BrokerRegistryProvider.cs │ │ │ │ ├── ClientRequestHandler.cs │ │ │ │ ├── DiscoveryRequestHandler.cs │ │ │ │ ├── IAppConnectionProcessor.cs │ │ │ │ ├── IAuthenticationHandler.cs │ │ │ │ ├── IClientRequestHandler.cs │ │ │ │ ├── IDiscoveryRequestHandler.cs │ │ │ │ ├── IInvocationRequestHandler.cs │ │ │ │ ├── IRegistryService.cs │ │ │ │ ├── InvocationRequestHandler.cs │ │ │ │ ├── RegistryService.cs │ │ │ │ └── interop.json │ │ │ ├── Plexus.Interop.Broker.Core.csproj │ │ │ └── Properties/ │ │ │ └── AsseblyInfo.cs │ │ ├── Plexus.Interop.Broker.Core.Tests/ │ │ │ ├── Plexus.Interop.Broker.Core.Tests.csproj │ │ │ ├── RegistryServiceTests.cs │ │ │ └── RegistryServiceTests.interop.json │ │ ├── Plexus.Interop.Client/ │ │ │ ├── ClientBase.cs │ │ │ ├── ClientOptionsBuilderExtensions.cs │ │ │ └── Plexus.Interop.Client.csproj │ │ ├── Plexus.Interop.Client.Core/ │ │ │ ├── ClientDiscoveryInvokerExtensions.cs │ │ │ ├── ClientFactory.cs │ │ │ ├── ClientOptions.cs │ │ │ ├── ClientOptionsBuilder.cs │ │ │ ├── ContextLinkageOptions.cs │ │ │ ├── DiscoveredMethod.cs │ │ │ ├── DiscoveredService.cs │ │ │ ├── IClient.cs │ │ │ ├── IClientCallInvoker.cs │ │ │ ├── IClientDiscoveryInvoker.cs │ │ │ ├── IClientFactory.cs │ │ │ ├── IClientStreamingMethodCall.cs │ │ │ ├── IDuplexStreamingMethodCall.cs │ │ │ ├── IMethod.cs │ │ │ ├── IMethodCall.cs │ │ │ ├── IServerStreamingMethodCall.cs │ │ │ ├── IUnaryMethodCall.cs │ │ │ ├── IUnaryMethodCall~1.cs │ │ │ ├── Internal/ │ │ │ │ ├── Calls/ │ │ │ │ │ ├── ClientStreamingMethodCall.cs │ │ │ │ │ ├── ClientStreamingMethodCallHandler.cs │ │ │ │ │ ├── DuplexStreamingMethodCall.cs │ │ │ │ │ ├── DuplexStreamingMethodCallHandler.cs │ │ │ │ │ ├── MethodCallHandlerBase.cs │ │ │ │ │ ├── ServerStreamingMethodCall.cs │ │ │ │ │ ├── ServerStreamingMethodCallHandler.cs │ │ │ │ │ ├── UnaryMethodCall.cs │ │ │ │ │ └── UnaryMethodCallHandler.cs │ │ │ │ ├── Client.cs │ │ │ │ ├── ClientConnection.cs │ │ │ │ ├── ClientConnectionFactory.cs │ │ │ │ ├── ClientProtocol/ │ │ │ │ │ ├── Discovery/ │ │ │ │ │ │ ├── DiscoveryService.cs │ │ │ │ │ │ └── IDiscoveryService.cs │ │ │ │ │ └── Invocations/ │ │ │ │ │ ├── IIncomingInvocation.cs │ │ │ │ │ ├── IIncomingInvocationFactory.cs │ │ │ │ │ ├── IInvocation.cs │ │ │ │ │ ├── IOutcomingInvocation.cs │ │ │ │ │ ├── IOutcomingInvocationFactory.cs │ │ │ │ │ ├── IncomingInvocation.cs │ │ │ │ │ ├── IncomingInvocationDescriptor.cs │ │ │ │ │ ├── IncomingInvocationFactory.cs │ │ │ │ │ ├── IncomingStreamState.cs │ │ │ │ │ ├── Invocation.cs │ │ │ │ │ ├── InvocationMethodDescriptor.cs │ │ │ │ │ ├── InvocationReceiveProcessor.cs │ │ │ │ │ ├── InvocationSendProcessor.cs │ │ │ │ │ ├── InvocationState.cs │ │ │ │ │ ├── InvocationTargetDescriptor.cs │ │ │ │ │ ├── OutcomingInvocation.cs │ │ │ │ │ ├── OutcomingInvocationDescriptor.cs │ │ │ │ │ └── OutcomingInvocationFactory.cs │ │ │ │ ├── DiscoveredMethodInfo.cs │ │ │ │ ├── IClientConnection.cs │ │ │ │ ├── IMethodCallHandler.cs │ │ │ │ └── MethodCallHandlers.cs │ │ │ ├── Method.cs │ │ │ ├── MethodCallContext.cs │ │ │ ├── MethodCallDescriptor.cs │ │ │ ├── MethodCallExtensions.cs │ │ │ ├── MethodDelegates.cs │ │ │ ├── MethodDiscoveryQuery.cs │ │ │ ├── MethodReference.cs │ │ │ ├── MethodType.cs │ │ │ ├── Option.cs │ │ │ ├── Plexus.Interop.Client.Core.csproj │ │ │ ├── ProvidedMethodReference.cs │ │ │ ├── ProvidedServiceDefinition.cs │ │ │ ├── ProvidedServiceReference.cs │ │ │ ├── ServiceDiscoveryQuery.cs │ │ │ └── ServiceReference.cs │ │ ├── Plexus.Interop.Client.Marshalling.Contracts/ │ │ │ ├── IMarshaller.cs │ │ │ ├── IMarshallerProvider.cs │ │ │ ├── Marshaller.cs │ │ │ ├── NothingMarshaller.cs │ │ │ └── Plexus.Interop.Client.Marshalling.Contracts.csproj │ │ ├── Plexus.Interop.Client.Marshalling.Protobuf/ │ │ │ ├── Plexus.Interop.Client.Marshalling.Protobuf.csproj │ │ │ └── ProtobufMarshallerProvider.cs │ │ ├── Plexus.Interop.Client.Marshalling.Protobuf.Tests/ │ │ │ ├── Plexus.Interop.Client.Marshalling.Protobuf.Tests.csproj │ │ │ └── ProtobufMarshallerProviderTests.cs │ │ ├── Plexus.Interop.Metamodel/ │ │ │ ├── AnyMatchPattern.cs │ │ │ ├── Application.cs │ │ │ ├── CompositeMatchPattern.cs │ │ │ ├── ConsumedMethod.cs │ │ │ ├── ConsumedService.cs │ │ │ ├── MatchPattern.cs │ │ │ ├── Message.cs │ │ │ ├── Method.cs │ │ │ ├── Option.cs │ │ │ ├── Plexus.Interop.Metamodel.csproj │ │ │ ├── ProvidedMethod.cs │ │ │ ├── ProvidedService.cs │ │ │ ├── Registry.cs │ │ │ └── Service.cs │ │ ├── Plexus.Interop.Metamodel.Contracts/ │ │ │ ├── IApplication.cs │ │ │ ├── IConsumedMethod.cs │ │ │ ├── IConsumedService.cs │ │ │ ├── IMatchPattern.cs │ │ │ ├── IMessage.cs │ │ │ ├── IMethod.cs │ │ │ ├── IOption.cs │ │ │ ├── IProvidedMethod.cs │ │ │ ├── IProvidedService.cs │ │ │ ├── IRegistry.cs │ │ │ ├── IRegistryProvider.cs │ │ │ ├── IService.cs │ │ │ ├── LaunchMode.cs │ │ │ ├── MatchType.cs │ │ │ ├── MethodType.cs │ │ │ └── Plexus.Interop.Metamodel.Contracts.csproj │ │ ├── Plexus.Interop.Metamodel.Json/ │ │ │ ├── Internal/ │ │ │ │ ├── ApplicationDto.cs │ │ │ │ ├── ConsumedMethodDto.cs │ │ │ │ ├── ConsumedServiceDto.cs │ │ │ │ ├── MethodDto.cs │ │ │ │ ├── MethodTypeDto.cs │ │ │ │ ├── OptionDto.cs │ │ │ │ ├── OptionListExtensions.cs │ │ │ │ ├── ProvidedMethodDto.cs │ │ │ │ ├── ProvidedServiceDto.cs │ │ │ │ ├── RegistryDto.cs │ │ │ │ └── ServiceDto.cs │ │ │ ├── JsonFileRegistryProvider.cs │ │ │ ├── JsonRegistry.cs │ │ │ └── Plexus.Interop.Metamodel.Json.csproj │ │ ├── Plexus.Interop.Metamodel.Json.Tests/ │ │ │ ├── JsonRegistryProviderTests.cs │ │ │ ├── Plexus.Interop.Metamodel.Json.Tests.csproj │ │ │ └── interop.json │ │ ├── Plexus.Interop.Protobuf/ │ │ │ ├── Plexus.Interop.Protobuf.csproj │ │ │ ├── ProtobufConverter.cs │ │ │ └── ProtobufExtensions.cs │ │ ├── Plexus.Interop.Protocol/ │ │ │ ├── Internal/ │ │ │ │ ├── Connect/ │ │ │ │ │ ├── ConnectRequest.cs │ │ │ │ │ └── ConnectResponse.cs │ │ │ │ ├── ConsumedMethodReference.cs │ │ │ │ ├── ConsumedServiceReference.cs │ │ │ │ ├── Discovery/ │ │ │ │ │ ├── ContextLinkageOptions.cs │ │ │ │ │ ├── DiscoveredMethod.cs │ │ │ │ │ ├── DiscoveredService.cs │ │ │ │ │ ├── DiscoveredServiceMethod.cs │ │ │ │ │ ├── MethodDiscoveryRequest.cs │ │ │ │ │ ├── MethodDiscoveryResponse.cs │ │ │ │ │ ├── ServiceDiscoveryRequest.cs │ │ │ │ │ └── ServiceDiscoveryResponse.cs │ │ │ │ ├── Invocation/ │ │ │ │ │ ├── InvocationMessageHeader.cs │ │ │ │ │ ├── InvocationMessageReceived.cs │ │ │ │ │ ├── InvocationSendCompleted.cs │ │ │ │ │ ├── InvocationStart.cs │ │ │ │ │ ├── InvocationStartRequested.cs │ │ │ │ │ ├── InvocationStarted.cs │ │ │ │ │ └── InvocationStarting.cs │ │ │ │ ├── Option.cs │ │ │ │ ├── ProvidedMethodReference.cs │ │ │ │ └── ProvidedServiceReference.cs │ │ │ ├── Plexus.Interop.Protocol.csproj │ │ │ └── ProtocolMessagePool.cs │ │ ├── Plexus.Interop.Protocol.Common.Contracts/ │ │ │ ├── CompletionHeader.cs │ │ │ ├── CompletionStatusHeader.cs │ │ │ ├── ErrorHeader.cs │ │ │ └── Plexus.Interop.Protocol.Common.Contracts.csproj │ │ ├── Plexus.Interop.Protocol.Contracts/ │ │ │ ├── BrokerToClientRequestHandler.cs │ │ │ ├── ClientToBrokerRequestHandler.cs │ │ │ ├── Connect/ │ │ │ │ ├── IConnectProtocolMessageFactory.cs │ │ │ │ ├── IConnectProtocolSerializer.cs │ │ │ │ ├── IConnectRequest.cs │ │ │ │ └── IConnectResponse.cs │ │ │ ├── ContextLinkageDiscoveryMode.cs │ │ │ ├── Discovery/ │ │ │ │ ├── DiscoveryMode.cs │ │ │ │ ├── IDiscoveredMethod.cs │ │ │ │ ├── IDiscoveredService.cs │ │ │ │ ├── IDiscoveredServiceMethod.cs │ │ │ │ ├── IDiscoveryProtocolMessageFactory.cs │ │ │ │ ├── IDiscoveryProtocolSerializer.cs │ │ │ │ ├── IMethodDiscoveryRequest.cs │ │ │ │ ├── IMethodDiscoveryResponse.cs │ │ │ │ ├── IServiceDiscoveryRequest.cs │ │ │ │ ├── IServiceDiscoveryResponse.cs │ │ │ │ └── MethodType.cs │ │ │ ├── IBrokerToClientRequest.cs │ │ │ ├── IClientToBrokerRequest.cs │ │ │ ├── IConsumedMethodReference.cs │ │ │ ├── IConsumedServiceReference.cs │ │ │ ├── IContextLinkageOptions.cs │ │ │ ├── IOption.cs │ │ │ ├── IProtocolImplementation.cs │ │ │ ├── IProtocolMessage.cs │ │ │ ├── IProtocolMessageFactory.cs │ │ │ ├── IProtocolSerializer.cs │ │ │ ├── IProtocolSerializerFactory.cs │ │ │ ├── IProvidedMethodReference.cs │ │ │ ├── IProvidedServiceReference.cs │ │ │ ├── Invocation/ │ │ │ │ ├── IInvocationMessage.cs │ │ │ │ ├── IInvocationMessageHeader.cs │ │ │ │ ├── IInvocationMessageReceived.cs │ │ │ │ ├── IInvocationProtocolMessageFactory.cs │ │ │ │ ├── IInvocationProtocolSerializer.cs │ │ │ │ ├── IInvocationSendCompleted.cs │ │ │ │ ├── IInvocationStart.cs │ │ │ │ ├── IInvocationStartRequested.cs │ │ │ │ ├── IInvocationStarted.cs │ │ │ │ ├── IInvocationStarting.cs │ │ │ │ ├── IInvocationTarget.cs │ │ │ │ ├── InvocationMessageHandler.cs │ │ │ │ └── InvocationTargetHandler.cs │ │ │ ├── Plexus.Interop.Protocol.Contracts.csproj │ │ │ ├── ProtocolImplementation.cs │ │ │ └── ProtocolMessageFactoryExtensions.cs │ │ ├── Plexus.Interop.Protocol.Protobuf/ │ │ │ ├── Internal/ │ │ │ │ ├── BrokerToClientRequestEnvelope.cs │ │ │ │ ├── ClientToBrokerRequestEnvelope.cs │ │ │ │ ├── ConnectRequest.cs │ │ │ │ ├── ConnectResponse.cs │ │ │ │ ├── ConsumedMethodReference.cs │ │ │ │ ├── ConsumedServiceReference.cs │ │ │ │ ├── ContextLinkageDiscoveryOptions.cs │ │ │ │ ├── DiscoveredMethod.cs │ │ │ │ ├── DiscoveredService.cs │ │ │ │ ├── DiscoveredServiceMethod.cs │ │ │ │ ├── Empty.cs │ │ │ │ ├── InvocationMessageEnvelope.cs │ │ │ │ ├── InvocationMessageHeader.cs │ │ │ │ ├── InvocationMessageReceived.cs │ │ │ │ ├── InvocationSendCompleted.cs │ │ │ │ ├── InvocationStartRequest.cs │ │ │ │ ├── InvocationStartRequested.cs │ │ │ │ ├── InvocationStarted.cs │ │ │ │ ├── InvocationStarting.cs │ │ │ │ ├── MethodDiscoveryRequest.cs │ │ │ │ ├── MethodDiscoveryResponse.cs │ │ │ │ ├── Option.cs │ │ │ │ ├── ProvidedMethodReference.cs │ │ │ │ ├── ProvidedServiceReference.cs │ │ │ │ ├── ServiceDiscoveryRequest.cs │ │ │ │ └── ServiceDiscoveryResponse.cs │ │ │ ├── Plexus.Interop.Protocol.Protobuf.csproj │ │ │ ├── ProtobufProtocolSerializer.cs │ │ │ └── ProtobufProtocolSerializerFactory.cs │ │ ├── Plexus.Interop.Protocol.Protobuf.Tests/ │ │ │ ├── Plexus.Interop.Protocol.Protobuf.Tests.csproj │ │ │ ├── ProtobufSerializerTests.cs │ │ │ └── xunit.runner.json │ │ ├── Plexus.Interop.Samples.CcyPairRateProvider/ │ │ │ ├── CcyPairRateProvider.cmd │ │ │ ├── Generate.cmd │ │ │ ├── Generated/ │ │ │ │ ├── fx/ │ │ │ │ │ ├── CcyPairRateService.msg.g.cs │ │ │ │ │ └── CcyPairRateService.svc.g.cs │ │ │ │ ├── interop/ │ │ │ │ │ └── Options.msg.g.cs │ │ │ │ └── vendor_a/ │ │ │ │ └── fx/ │ │ │ │ └── CcyPairRateProvider.app.g.cs │ │ │ ├── Plexus.Interop.Samples.CcyPairRateProvider.csproj │ │ │ ├── Program.cs │ │ │ └── Properties/ │ │ │ └── launchSettings.json │ │ ├── Plexus.Interop.Samples.CcyPairRateViewer/ │ │ │ ├── CcyPairRateViewer.cmd │ │ │ ├── Generate.cmd │ │ │ ├── Generated/ │ │ │ │ ├── fx/ │ │ │ │ │ ├── CcyPairRateService.msg.g.cs │ │ │ │ │ └── CcyPairRateService.svc.g.cs │ │ │ │ ├── interop/ │ │ │ │ │ └── Options.msg.g.cs │ │ │ │ └── vendor_b/ │ │ │ │ └── fx/ │ │ │ │ └── CcyPairRateViewer.app.g.cs │ │ │ ├── Plexus.Interop.Samples.CcyPairRateViewer.csproj │ │ │ ├── Program.cs │ │ │ └── Properties/ │ │ │ └── launchSettings.json │ │ ├── Plexus.Interop.Samples.GreetingClient/ │ │ │ ├── Generate.cmd │ │ │ ├── Generated/ │ │ │ │ └── interop/ │ │ │ │ ├── Options.msg.g.cs │ │ │ │ └── samples/ │ │ │ │ ├── GreetingClient.app.g.cs │ │ │ │ ├── GreetingService.msg.g.cs │ │ │ │ └── GreetingService.svc.g.cs │ │ │ ├── LaunchGreetingClient.cmd │ │ │ ├── Plexus.Interop.Samples.GreetingClient.csproj │ │ │ ├── Program.cs │ │ │ ├── Properties/ │ │ │ │ └── launchSettings.json │ │ │ └── nlog.config │ │ ├── Plexus.Interop.Samples.GreetingServer/ │ │ │ ├── Generate.cmd │ │ │ ├── Generated/ │ │ │ │ └── interop/ │ │ │ │ ├── Options.msg.g.cs │ │ │ │ └── samples/ │ │ │ │ ├── GreetingServer.app.g.cs │ │ │ │ ├── GreetingService.msg.g.cs │ │ │ │ └── GreetingService.svc.g.cs │ │ │ ├── LaunchGreetingServer.cmd │ │ │ ├── Plexus.Interop.Samples.GreetingServer.csproj │ │ │ ├── Program.cs │ │ │ ├── Properties/ │ │ │ │ └── launchSettings.json │ │ │ └── nlog.config │ │ ├── Plexus.Interop.Samples.Metadata/ │ │ │ └── Plexus.Interop.Samples.Metadata.csproj │ │ ├── Plexus.Interop.Testing/ │ │ │ ├── Generate.cmd │ │ │ ├── Generated/ │ │ │ │ └── interop/ │ │ │ │ ├── AppConnectionDescriptor.msg.g.cs │ │ │ │ ├── AppLaunchMode.msg.g.cs │ │ │ │ ├── AppLauncherService.msg.g.cs │ │ │ │ ├── AppLauncherService.svc.g.cs │ │ │ │ ├── AppLifecycleService.msg.g.cs │ │ │ │ ├── AppLifecycleService.svc.g.cs │ │ │ │ ├── AppMetadataService.msg.g.cs │ │ │ │ ├── AppMetadataService.svc.g.cs │ │ │ │ ├── AppRegistrationService.msg.g.cs │ │ │ │ ├── AppRegistrationService.svc.g.cs │ │ │ │ ├── ContextLinkage.msg.g.cs │ │ │ │ ├── ContextLinkage.svc.g.cs │ │ │ │ ├── InvocationDescriptor.msg.g.cs │ │ │ │ ├── Options.msg.g.cs │ │ │ │ ├── UniqueId.msg.g.cs │ │ │ │ └── testing/ │ │ │ │ ├── EchoClient.app.g.cs │ │ │ │ ├── EchoServer.app.g.cs │ │ │ │ ├── EchoService.msg.g.cs │ │ │ │ ├── EchoService.svc.g.cs │ │ │ │ ├── GreetingService.msg.g.cs │ │ │ │ ├── GreetingService.svc.g.cs │ │ │ │ └── TestAppLauncher.app.g.cs │ │ │ ├── ITestBroker.cs │ │ │ ├── NLog.config │ │ │ ├── ObservableExtensions.cs │ │ │ ├── Plexus.Interop.Testing.csproj │ │ │ ├── Properties/ │ │ │ │ └── AssemblyInfo.cs │ │ │ ├── TestAppLauncher.cs │ │ │ ├── TestBroker.cs │ │ │ ├── TestBrokerConfig/ │ │ │ │ ├── NLog.config │ │ │ │ └── metadata/ │ │ │ │ ├── apps.json │ │ │ │ └── interop.json │ │ │ ├── TestBrokerFixture.cs │ │ │ ├── TestClientFactory.cs │ │ │ └── UniqueId.Extensions.cs │ │ ├── Plexus.Interop.Tests/ │ │ │ ├── AppLifecycleServiceIntegrationTests.cs │ │ │ ├── BaseClientBrokerTestsSuite.cs │ │ │ ├── ClientBrokerIntegrationTests.cs │ │ │ ├── ContextLinkageIntegrationTests.cs │ │ │ ├── Plexus.Interop.Tests.csproj │ │ │ ├── SpecificAppInstanceCallIntegrationTests.cs │ │ │ └── xunit.runner.json │ │ ├── Plexus.Interop.Tests.sln │ │ ├── Plexus.Interop.Transport/ │ │ │ ├── Internal/ │ │ │ │ ├── ChannelMessage.cs │ │ │ │ ├── FrameMessage.cs │ │ │ │ ├── ITransportReceiveProcessor.cs │ │ │ │ ├── ITransportSendProcessor.cs │ │ │ │ ├── TransportChannel.cs │ │ │ │ ├── TransportChannelSendProcessor.cs │ │ │ │ ├── TransportClient.cs │ │ │ │ ├── TransportConnection.cs │ │ │ │ ├── TransportConnectionFactory.cs │ │ │ │ ├── TransportConnectionStateValidator.cs │ │ │ │ ├── TransportReceiveProcessor.cs │ │ │ │ ├── TransportSendProcessor.cs │ │ │ │ ├── TransportServer.cs │ │ │ │ └── TransportUtils.cs │ │ │ ├── Plexus.Interop.Transport.csproj │ │ │ ├── TransportChannelUtils.cs │ │ │ ├── TransportClientFactory.cs │ │ │ └── TransportServerFactory.cs │ │ ├── Plexus.Interop.Transport.Contracts/ │ │ │ ├── ITransportChannel.cs │ │ │ ├── ITransportClient.cs │ │ │ ├── ITransportConnection.cs │ │ │ ├── ITransportServer.cs │ │ │ ├── Plexus.Interop.Transport.Contracts.csproj │ │ │ ├── TransportExtensions.cs │ │ │ └── TransportMessageFrame.cs │ │ ├── Plexus.Interop.Transport.Pipes.Tests/ │ │ │ ├── PipeTransportTests.cs │ │ │ ├── Plexus.Interop.Transport.Pipes.Tests.csproj │ │ │ └── xunit.runner.json │ │ ├── Plexus.Interop.Transport.Protocol/ │ │ │ ├── Internal/ │ │ │ │ ├── GetBodyLengthHandler.cs │ │ │ │ ├── TransportChannelCloseHeader.cs │ │ │ │ ├── TransportChannelOpenHeader.cs │ │ │ │ ├── TransportConnectionCloseHeader.cs │ │ │ │ ├── TransportConnectionOpenHeader.cs │ │ │ │ └── TransportFrameHeader.cs │ │ │ ├── MessagingReceiveProcessor.cs │ │ │ ├── MessagingSendProcessor.cs │ │ │ ├── Plexus.Interop.Transport.Protocol.csproj │ │ │ └── TransportHeaderPool.cs │ │ ├── Plexus.Interop.Transport.Protocol.Contracts/ │ │ │ ├── IChannelHeaderFactory.cs │ │ │ ├── IChannelOpenHeader.cs │ │ │ ├── IConnectionHeaderFactory.cs │ │ │ ├── IMessagingReceiveProcessor.cs │ │ │ ├── IMessagingSendProcessor.cs │ │ │ ├── ITransportChannelCloseHeader.cs │ │ │ ├── ITransportChannelHeader.cs │ │ │ ├── ITransportChannelHeaderHandler.cs │ │ │ ├── ITransportChannelOpenHeader.cs │ │ │ ├── ITransportConnectionCloseHeader.cs │ │ │ ├── ITransportConnectionHeader.cs │ │ │ ├── ITransportConnectionHeaderHandler.cs │ │ │ ├── ITransportConnectionOpenHeader.cs │ │ │ ├── ITransportFrameHeader.cs │ │ │ ├── ITransportHeader.cs │ │ │ ├── ITransportHeaderFactory.cs │ │ │ ├── ITransportHeaderHandler.cs │ │ │ ├── MetadataViolationException.cs │ │ │ ├── Plexus.Interop.Transport.Protocol.Contracts.csproj │ │ │ ├── ProtocolException.cs │ │ │ ├── RemoteErrorException.cs │ │ │ ├── RemoteException.cs │ │ │ ├── Serialization/ │ │ │ │ ├── ITransportProtocolDeserializer.cs │ │ │ │ ├── ITransportProtocolSerializationProvider.cs │ │ │ │ └── ITransportProtocolSerializer.cs │ │ │ ├── TransportChannelHeaderHandler.cs │ │ │ ├── TransportConnectionHeaderHandler.cs │ │ │ ├── TransportHeaderHandler.cs │ │ │ └── TransportMessage.cs │ │ ├── Plexus.Interop.Transport.Protocol.Protobuf/ │ │ │ ├── Internal/ │ │ │ │ ├── ChannelCloseHeader.cs │ │ │ │ ├── ChannelOpenHeader.cs │ │ │ │ ├── ConnectionCloseHeader.cs │ │ │ │ ├── ConnectionOpenHeader.cs │ │ │ │ ├── Header.cs │ │ │ │ ├── MessageFrameHeader.cs │ │ │ │ ├── ProtobufTransportProtocolDeserializer.cs │ │ │ │ └── ProtobufTransportProtocolSerializer.cs │ │ │ ├── Plexus.Interop.Transport.Protocol.Protobuf.csproj │ │ │ └── ProtobufTransportSerialization.cs │ │ ├── Plexus.Interop.Transport.Protocol.Tests/ │ │ │ ├── MessagingTests.cs │ │ │ └── Plexus.Interop.Transport.Protocol.Tests.csproj │ │ ├── Plexus.Interop.Transport.Testing/ │ │ │ ├── Plexus.Interop.Transport.Testing.csproj │ │ │ └── TransportTestsSuite.cs │ │ ├── Plexus.Interop.Transport.Transmission.Contracts/ │ │ │ ├── ITransmissionClient.cs │ │ │ ├── ITransmissionConnection.cs │ │ │ ├── ITransmissionServer.cs │ │ │ └── Plexus.Interop.Transport.Transmission.Contracts.csproj │ │ ├── Plexus.Interop.Transport.Transmission.Pipes/ │ │ │ ├── Internal/ │ │ │ │ ├── PipeTransmissionClient.cs │ │ │ │ └── PipeTransmissionServer.cs │ │ │ ├── PipeTranmissionServerFactory.cs │ │ │ ├── PipeTransmissionClientFactory.cs │ │ │ └── Plexus.Interop.Transport.Transmission.Pipes.csproj │ │ ├── Plexus.Interop.Transport.Transmission.Pipes.Tests/ │ │ │ ├── PipeTransmissionTests.cs │ │ │ ├── Plexus.Interop.Transport.Transmission.Pipes.Tests.csproj │ │ │ └── xunit.runner.json │ │ ├── Plexus.Interop.Transport.Transmission.Streams/ │ │ │ ├── Internal/ │ │ │ │ ├── StreamTransmissionReader.cs │ │ │ │ └── StreamTransmissionWriter.cs │ │ │ ├── Plexus.Interop.Transport.Transmission.Streams.csproj │ │ │ └── StreamTransmissionConnection.cs │ │ ├── Plexus.Interop.Transport.Transmission.Testing/ │ │ │ ├── Plexus.Interop.Transport.Transmission.Testing.csproj │ │ │ └── TransmissionTestsSuite.cs │ │ ├── Plexus.Interop.Transport.Transmission.WebSockets.Client/ │ │ │ ├── Internal/ │ │ │ │ ├── WebSocketClientTransmissionConnection.cs │ │ │ │ ├── WebSocketClientTransmissionReader.cs │ │ │ │ └── WebSocketClientTransmissionWriter.cs │ │ │ ├── Plexus.Interop.Transport.Transmission.WebSockets.Client.csproj │ │ │ └── WebSocketTransmissionClient.cs │ │ ├── Plexus.Interop.Transport.Transmission.WebSockets.Server/ │ │ │ ├── Internal/ │ │ │ │ ├── WebSocketServerTransmissionConnection.cs │ │ │ │ ├── WebSocketServerTransmissionReader.cs │ │ │ │ ├── WebSocketServerTransmissionWriter.cs │ │ │ │ └── WebSocketTransmissionServer.cs │ │ │ ├── Plexus.Interop.Transport.Transmission.WebSockets.Server.csproj │ │ │ ├── WebSocketTransmissionServerFactory.cs │ │ │ └── WebSocketTransmissionServerOptions.cs │ │ ├── Plexus.Interop.Transport.Transmission.WebSockets.Server.Fleck/ │ │ │ ├── Internal/ │ │ │ │ ├── WebSocketServerTransmissionConnection.cs │ │ │ │ ├── WebSocketServerTransmissionReader.cs │ │ │ │ ├── WebSocketServerTransmissionWriter.cs │ │ │ │ └── WebSocketTransmissionServer.cs │ │ │ ├── Plexus.Interop.Transport.Transmission.WebSockets.Server.Fleck.csproj │ │ │ ├── WebSocketTransmissionServerFactory.cs │ │ │ └── WebSocketTransmissionServerOptions.cs │ │ ├── Plexus.Interop.Transport.Transmission.WebSockets.Tests/ │ │ │ ├── Plexus.Interop.Transport.Transmission.WebSockets.Tests.csproj │ │ │ ├── WebSocketSecureTransmissionTests.cs │ │ │ ├── WebSocketTransmissionTests.cs │ │ │ └── xunit.runner.json │ │ ├── Plexus.Interop.Transport.Utils/ │ │ │ ├── IServerStateReader.cs │ │ │ ├── IServerStateWriter.cs │ │ │ ├── Plexus.Interop.Transport.Utils.csproj │ │ │ ├── ServerStateReader.cs │ │ │ ├── ServerStateUtils.cs │ │ │ └── ServerStateWriter.cs │ │ ├── Plexus.Interop.Transport.WebSockets.Tests/ │ │ │ ├── Plexus.Interop.Transport.WebSockets.Tests.csproj │ │ │ ├── WebSocketSecureTransportTests.cs │ │ │ ├── WebSocketTransportTests.cs │ │ │ └── xunit.runner.json │ │ ├── Plexus.Interop.sln │ │ ├── Plexus.Interop.sln.DotSettings │ │ ├── Plexus.Logging/ │ │ │ ├── ILogger.cs │ │ │ ├── ILoggerFactory.cs │ │ │ ├── LogConfig.cs │ │ │ ├── LogLevel.cs │ │ │ ├── LogManager.cs │ │ │ ├── LoggerExtensions.Any.cs │ │ │ ├── LoggerExtensions.Debug.cs │ │ │ ├── LoggerExtensions.Error.cs │ │ │ ├── LoggerExtensions.Fatal.cs │ │ │ ├── LoggerExtensions.Info.cs │ │ │ ├── LoggerExtensions.Trace.cs │ │ │ ├── LoggerExtensions.Warn.cs │ │ │ ├── NoopLogger.cs │ │ │ ├── NoopLoggerFactory.cs │ │ │ ├── Plexus.Logging.csproj │ │ │ └── TypeExtensions.cs │ │ ├── Plexus.Logging.CommonLogging/ │ │ │ ├── Logger.cs │ │ │ ├── LoggerFactory.cs │ │ │ ├── LoggingInitializer.cs │ │ │ └── Plexus.Logging.CommonLogging.csproj │ │ ├── Plexus.Logging.NLog/ │ │ │ ├── AsyncExceptionLayoutRenderer.cs │ │ │ ├── Logger.cs │ │ │ ├── LoggerFactory.cs │ │ │ ├── LoggingInitializer.cs │ │ │ ├── Plexus.Logging.NLog.csproj │ │ │ └── WorkDirLayoutRenderer.cs │ │ ├── Plexus.Utils/ │ │ │ ├── ArrayConstants.cs │ │ │ ├── AsyncHelper.cs │ │ │ ├── AwaitableCancellationToken.cs │ │ │ ├── BaseJsonFileRegistryProvider.cs │ │ │ ├── Channels/ │ │ │ │ ├── BufferedChannel.cs │ │ │ │ └── ChannelUtils.cs │ │ │ ├── EqualityHelper.cs │ │ │ ├── ExceptionHelper.cs │ │ │ ├── FileSystemUtils.cs │ │ │ ├── FormattingUtils.cs │ │ │ ├── JsonConvert.cs │ │ │ ├── Latch.cs │ │ │ ├── Plexus.Utils.csproj │ │ │ ├── Pools/ │ │ │ │ ├── ObjectPool.cs │ │ │ │ ├── PooledBuffer.cs │ │ │ │ ├── PooledBufferExtensions.cs │ │ │ │ └── PooledObject.cs │ │ │ ├── Processes/ │ │ │ │ └── ProcessBase.cs │ │ │ ├── Promise.cs │ │ │ ├── Promise`1.cs │ │ │ ├── Properties/ │ │ │ │ └── AssemblyInfo.cs │ │ │ ├── StreamExtensions.cs │ │ │ ├── TaskConstants.cs │ │ │ ├── TaskConstants`1.cs │ │ │ ├── TaskExtensions.cs │ │ │ ├── TaskHelper.cs │ │ │ ├── TaskLoggingExtensions.cs │ │ │ ├── TaskRunner.cs │ │ │ ├── TimeoutConstants.cs │ │ │ └── ValueTask.cs │ │ ├── Plexus.Utils.Testing/ │ │ │ ├── DisplayTestMethodNameAttribute.cs │ │ │ ├── Plexus.Utils.Testing.csproj │ │ │ ├── RandomExtensions.cs │ │ │ ├── ShoudlyExtensions.cs │ │ │ ├── TestingInitializer.cs │ │ │ └── TestsSuite.cs │ │ ├── Plexus.Utils.Testing.Shared/ │ │ │ ├── DefaultTestCollection.cs │ │ │ ├── NLog.config │ │ │ ├── Plexus.Utils.Testing.Shared.projitems │ │ │ └── Plexus.Utils.Testing.Shared.shproj │ │ └── Plexus.Utils.Tests/ │ │ ├── Channels/ │ │ │ └── BufferedChannelTests.cs │ │ ├── Plexus.Utils.Tests.csproj │ │ ├── PromiseTests.cs │ │ └── UniqueIdTests.cs │ └── tests.cmd ├── docs/ │ ├── build.gradle │ └── src/ │ └── main/ │ ├── asciidoc/ │ │ ├── app-registry-schema.json │ │ ├── clone-and-build.adoc │ │ ├── concepts-components.adoc │ │ ├── concepts-definitions.adoc │ │ ├── concepts-features.adoc │ │ ├── concepts-overview.adoc │ │ ├── getting-started-how-to-build.adoc │ │ ├── getting-started-how-to-run-samples.adoc │ │ ├── getting-started-repository-structure.adoc │ │ ├── guides-how-to-write-custom-app-launcher.adoc │ │ ├── guides-interop-integration-workflow.adoc │ │ ├── guides-interop-invocation-workflow.adoc │ │ ├── guides-quick-start-dotnet.adoc │ │ ├── guides-quick-start-invocation-workflow.adoc │ │ ├── guides-quick-start-launch-app.adoc │ │ ├── guides-quick-start-launch-broker-step.adoc │ │ ├── guides-quick-start-web.adoc │ │ ├── guides-quick-start.adoc │ │ ├── guides-system-requirements.adoc │ │ ├── guides-tools.adoc │ │ ├── images/ │ │ │ ├── high-level-architecture.graphml │ │ │ ├── interop-integration.graphml │ │ │ └── star-schema.graphml │ │ ├── index.adoc │ │ ├── spec-app-registry.adoc │ │ ├── spec-interop-registry.adoc │ │ └── spec-typescript-client-api.adoc │ └── typescript/ │ └── interface.ts ├── dsl/ │ ├── .gitignore │ ├── build.gradle │ ├── gen/ │ │ ├── build.gradle │ │ ├── cli/ │ │ │ ├── build.gradle │ │ │ └── src/ │ │ │ ├── main/ │ │ │ │ ├── java/ │ │ │ │ │ └── com/ │ │ │ │ │ └── db/ │ │ │ │ │ └── plexus/ │ │ │ │ │ └── interop/ │ │ │ │ │ └── dsl/ │ │ │ │ │ └── gen/ │ │ │ │ │ └── cli/ │ │ │ │ │ ├── CLISetup.xtend │ │ │ │ │ ├── CLIStandaloneSetup.xtend │ │ │ │ │ ├── Main.java │ │ │ │ │ └── ParametersParser.java │ │ │ │ └── resources/ │ │ │ │ └── plugin.properties │ │ │ └── test/ │ │ │ └── java/ │ │ │ └── com/ │ │ │ └── db/ │ │ │ └── plexus/ │ │ │ └── interop/ │ │ │ └── dsl/ │ │ │ └── gen/ │ │ │ └── cli/ │ │ │ └── ParametersParserTest.java │ │ ├── common/ │ │ │ ├── build.gradle │ │ │ └── src/ │ │ │ ├── main/ │ │ │ │ └── java/ │ │ │ │ └── com/ │ │ │ │ └── db/ │ │ │ │ └── plexus/ │ │ │ │ └── interop/ │ │ │ │ └── dsl/ │ │ │ │ └── gen/ │ │ │ │ ├── ApplicationCodeGenerator.java │ │ │ │ ├── BaseGenTask.java │ │ │ │ ├── BasePlexusIDLGenerator.xtend │ │ │ │ ├── CodeOutputGenerator.java │ │ │ │ ├── Entry.java │ │ │ │ ├── EntryPoint.java │ │ │ │ ├── GenTask.java │ │ │ │ ├── GenUtils.xtend │ │ │ │ ├── PlexusGenConfig.java │ │ │ │ ├── PlexusGeneratorModule.xtend │ │ │ │ ├── ResourceSetValidator.xtend │ │ │ │ ├── errors/ │ │ │ │ │ └── CodeGenerationException.java │ │ │ │ └── util/ │ │ │ │ ├── CombinedFilePathMatcher.java │ │ │ │ ├── FileUtils.java │ │ │ │ ├── ProcessResult.java │ │ │ │ ├── ProcessUtils.java │ │ │ │ └── SimplePathMatcher.java │ │ │ └── test/ │ │ │ └── java/ │ │ │ └── com/ │ │ │ └── db/ │ │ │ └── plexus/ │ │ │ └── interop/ │ │ │ └── dsl/ │ │ │ └── gen/ │ │ │ ├── BaseCodeGenTest.java │ │ │ └── util/ │ │ │ ├── CombinedFilePathMatcherTest.java │ │ │ └── FileUtilsTest.java │ │ ├── csharp/ │ │ │ ├── build.gradle │ │ │ └── src/ │ │ │ └── main/ │ │ │ └── java/ │ │ │ └── com/ │ │ │ └── db/ │ │ │ └── plexus/ │ │ │ └── interop/ │ │ │ └── dsl/ │ │ │ └── gen/ │ │ │ └── csharp/ │ │ │ ├── CsharpCodeGenerator.xtend │ │ │ └── CsharpGenTask.xtend │ │ ├── js/ │ │ │ ├── build.gradle │ │ │ └── src/ │ │ │ ├── main/ │ │ │ │ └── java/ │ │ │ │ └── com/ │ │ │ │ └── db/ │ │ │ │ └── plexus/ │ │ │ │ └── interop/ │ │ │ │ └── dsl/ │ │ │ │ └── gen/ │ │ │ │ └── js/ │ │ │ │ ├── JsComponentApiGenerator.xtend │ │ │ │ └── JsGenTask.java │ │ │ └── test/ │ │ │ ├── java/ │ │ │ │ └── com/ │ │ │ │ └── db/ │ │ │ │ └── plexus/ │ │ │ │ └── interop/ │ │ │ │ └── dsl/ │ │ │ │ └── gen/ │ │ │ │ └── js/ │ │ │ │ └── tests/ │ │ │ │ └── JsComponentApiGeneratorTest.xtend │ │ │ └── resources/ │ │ │ └── com/ │ │ │ └── db/ │ │ │ └── plexus/ │ │ │ └── interop/ │ │ │ └── dsl/ │ │ │ └── gen/ │ │ │ └── js/ │ │ │ └── tests/ │ │ │ └── expected.data │ │ ├── meta/ │ │ │ ├── build.gradle │ │ │ └── src/ │ │ │ ├── main/ │ │ │ │ └── java/ │ │ │ │ └── com/ │ │ │ │ └── db/ │ │ │ │ └── plexus/ │ │ │ │ └── interop/ │ │ │ │ └── dsl/ │ │ │ │ ├── gen/ │ │ │ │ │ └── meta/ │ │ │ │ │ ├── ListMetadataFilesTask.xtend │ │ │ │ │ ├── MetaJsonGenTask.xtend │ │ │ │ │ ├── MetaJsonGenerator.xtend │ │ │ │ │ ├── MetaPatchValidatorTask.xtend │ │ │ │ │ └── MetaValidatorTask.xtend │ │ │ │ └── validation/ │ │ │ │ ├── Issues.xtend │ │ │ │ ├── MetadataPatchValidator.xtend │ │ │ │ └── rules/ │ │ │ │ ├── NoAppsDeletedRule.xtend │ │ │ │ ├── NoFieldsChangedRule.xtend │ │ │ │ ├── NoFieldsDeletedRule.xtend │ │ │ │ ├── NoMessagesDeletedRule.xtend │ │ │ │ ├── NoMethodTypesChangedRule.xtend │ │ │ │ ├── NoMethodsDeletedRule.xtend │ │ │ │ ├── NoServiceDeletedRule.xtend │ │ │ │ ├── RulesModule.xtend │ │ │ │ └── UpdateRule.java │ │ │ └── test/ │ │ │ ├── java/ │ │ │ │ └── com/ │ │ │ │ └── db/ │ │ │ │ └── plexus/ │ │ │ │ └── interop/ │ │ │ │ └── dsl/ │ │ │ │ ├── gen/ │ │ │ │ │ └── metadata/ │ │ │ │ │ └── tests/ │ │ │ │ │ ├── MetaJsonGeneratorTest.xtend │ │ │ │ │ └── MetaValidatorTaskTest.xtend │ │ │ │ └── validation/ │ │ │ │ └── rules/ │ │ │ │ ├── BaseRuleTest.xtend │ │ │ │ ├── NoAppsDeletedRuleTest.xtend │ │ │ │ ├── NoFieldsChangedRuleTest.xtend │ │ │ │ ├── NoFieldsDeletedRuleTest.xtend │ │ │ │ ├── NoMessagesDeletedRuleTest.xtend │ │ │ │ ├── NoMethodTypesChangedRuleTest.xtend │ │ │ │ ├── NoMethodsDeletedRuleTest.xtend │ │ │ │ └── NoServiceDeletedRuleTest.xtend │ │ │ └── resources/ │ │ │ └── com/ │ │ │ └── db/ │ │ │ └── plexus/ │ │ │ └── interop/ │ │ │ └── dsl/ │ │ │ └── gen/ │ │ │ └── metadata/ │ │ │ └── tests/ │ │ │ └── expected.json │ │ ├── proto/ │ │ │ ├── build.gradle │ │ │ └── src/ │ │ │ └── main/ │ │ │ └── java/ │ │ │ └── com/ │ │ │ └── db/ │ │ │ └── plexus/ │ │ │ └── interop/ │ │ │ └── dsl/ │ │ │ └── gen/ │ │ │ └── proto/ │ │ │ ├── ProtoGenTask.xtend │ │ │ └── ProtoOption.xtend │ │ ├── test/ │ │ │ ├── build.gradle │ │ │ └── src/ │ │ │ └── main/ │ │ │ ├── java/ │ │ │ │ └── com/ │ │ │ │ └── db/ │ │ │ │ └── plexus/ │ │ │ │ └── interop/ │ │ │ │ └── dsl/ │ │ │ │ └── gen/ │ │ │ │ └── test/ │ │ │ │ ├── InteropLangInjectionProvider.java │ │ │ │ └── ResourceUtils.xtend │ │ │ └── resources/ │ │ │ └── com/ │ │ │ └── db/ │ │ │ └── plexus/ │ │ │ └── interop/ │ │ │ └── dsl/ │ │ │ └── gen/ │ │ │ └── test/ │ │ │ ├── components/ │ │ │ │ ├── component_a.interop │ │ │ │ ├── component_a_invalid.interop │ │ │ │ └── component_c.interop │ │ │ ├── model/ │ │ │ │ ├── messages.proto │ │ │ │ ├── missed_message.proto │ │ │ │ ├── missed_message_field.proto │ │ │ │ ├── options.proto │ │ │ │ └── updated_message_fields.proto │ │ │ └── services/ │ │ │ ├── deleted_service.proto │ │ │ ├── deleted_service_method.proto │ │ │ ├── services.proto │ │ │ └── updated_service_methods.proto │ │ └── ts/ │ │ ├── build.gradle │ │ └── src/ │ │ ├── main/ │ │ │ └── java/ │ │ │ └── com/ │ │ │ └── db/ │ │ │ └── plexus/ │ │ │ └── interop/ │ │ │ └── dsl/ │ │ │ └── gen/ │ │ │ └── ts/ │ │ │ ├── TsGenTask.java │ │ │ └── TypescriptApplicationApiGenerator.xtend │ │ └── test/ │ │ ├── java/ │ │ │ └── com/ │ │ │ └── db/ │ │ │ └── plexus/ │ │ │ └── interop/ │ │ │ └── dsl/ │ │ │ └── gen/ │ │ │ └── ts/ │ │ │ └── tests/ │ │ │ └── TypescriptComponentApiGeneratorTest.xtend │ │ └── resources/ │ │ └── com/ │ │ └── db/ │ │ └── plexus/ │ │ └── interop/ │ │ └── dsl/ │ │ └── gen/ │ │ └── ts/ │ │ └── tests/ │ │ └── expected.data │ ├── gradle.properties │ ├── ide-common/ │ │ ├── build.gradle │ │ └── src/ │ │ └── main/ │ │ └── java/ │ │ └── com/ │ │ └── db/ │ │ └── plexus/ │ │ └── interop/ │ │ └── ide/ │ │ ├── assist/ │ │ │ └── ImportContentProvider.java │ │ └── server/ │ │ └── DebugServerLauncher.java │ ├── interop-lang/ │ │ ├── build.gradle │ │ └── src/ │ │ ├── main/ │ │ │ ├── java/ │ │ │ │ └── com/ │ │ │ │ └── db/ │ │ │ │ └── plexus/ │ │ │ │ └── interop/ │ │ │ │ └── dsl/ │ │ │ │ ├── GenerateInteropLang.mwe2 │ │ │ │ ├── GlobalLangConfigHolder.java │ │ │ │ ├── InteropLang.xtext │ │ │ │ ├── InteropLangRuntimeModule.xtend │ │ │ │ ├── InteropLangStandaloneSetup.xtend │ │ │ │ ├── InteropLangUtils.xtend │ │ │ │ ├── formatting2/ │ │ │ │ │ └── InteropLangFormatter.xtend │ │ │ │ ├── generator/ │ │ │ │ │ └── InteropLangGenerator.xtend │ │ │ │ ├── scoping/ │ │ │ │ │ ├── InteropLangQualifiedNameProvider.xtend │ │ │ │ │ └── InteropLangScopeProvider.xtend │ │ │ │ └── validation/ │ │ │ │ └── InteropLangValidator.xtend │ │ │ └── resources/ │ │ │ └── interop/ │ │ │ ├── app_connection_descriptor.proto │ │ │ ├── app_launch_mode.proto │ │ │ ├── app_launcher_service.proto │ │ │ ├── app_lifecycle_manager.interop │ │ │ ├── app_lifecycle_service.proto │ │ │ ├── app_metadata_service.proto │ │ │ ├── app_registration_service.proto │ │ │ ├── command_line_tool.interop │ │ │ ├── context_linkage.proto │ │ │ ├── descriptor.proto │ │ │ ├── invocation_descriptor.proto │ │ │ ├── native_app_launcher.interop │ │ │ ├── options.proto │ │ │ ├── testing/ │ │ │ │ ├── echo_client.interop │ │ │ │ ├── echo_server.interop │ │ │ │ ├── echo_service.proto │ │ │ │ ├── echo_service_options.proto │ │ │ │ ├── greeting_service.proto │ │ │ │ └── test_app_launcher.interop │ │ │ └── unique_id.proto │ │ └── test/ │ │ ├── java/ │ │ │ └── com/ │ │ │ └── db/ │ │ │ └── plexus/ │ │ │ └── interop/ │ │ │ └── dsl/ │ │ │ └── tests/ │ │ │ ├── InteropLangInjectionProvider.java │ │ │ └── InteropLangParsingTest.xtend │ │ └── resources/ │ │ └── com/ │ │ └── db/ │ │ └── plexus/ │ │ └── interop/ │ │ └── dsl/ │ │ └── tests/ │ │ ├── example1.interop │ │ ├── example1.proto │ │ ├── example2.interop │ │ ├── example3.interop │ │ ├── provide_as_alias.interop │ │ ├── provide_duplicate.interop │ │ ├── provide_duplicate_option.interop │ │ ├── subfolder/ │ │ │ └── example2.proto │ │ └── wrong.interop │ ├── interop-lang-vscode/ │ │ ├── .gitignore │ │ ├── .vscode/ │ │ │ ├── launch.json │ │ │ └── tasks.json │ │ ├── .vscodeignore │ │ ├── README.md │ │ ├── build.gradle │ │ ├── interop.configuration.json │ │ ├── package.json │ │ ├── src/ │ │ │ └── extension.ts │ │ ├── syntaxes/ │ │ │ ├── interop.tmLanguage │ │ │ └── proto.tmLanguage │ │ └── tsconfig.json │ ├── interop-lang.ide/ │ │ ├── build.gradle │ │ └── src/ │ │ └── main/ │ │ └── java/ │ │ └── com/ │ │ └── db/ │ │ └── plexus/ │ │ └── interop/ │ │ └── dsl/ │ │ └── ide/ │ │ ├── InteropLangIdeModule.xtend │ │ ├── InteropLangIdeSetup.xtend │ │ ├── assist/ │ │ │ ├── InteropContentProposalProvider.java │ │ │ └── InteropCrossRefProposalProvider.java │ │ └── server/ │ │ ├── InteropDebugServerLauncher.java │ │ ├── InteropLangServerModule.java │ │ ├── InteropLanguageServer.java │ │ └── StdIOServerLauncher.java │ ├── model/ │ │ ├── META-INF/ │ │ │ └── MANIFEST.MF │ │ ├── build.gradle │ │ ├── build.properties │ │ ├── plugin.properties │ │ ├── plugin.xml │ │ └── src/ │ │ └── main/ │ │ └── java/ │ │ ├── interop.xcore │ │ └── proto.xcore │ ├── proto-lang/ │ │ ├── build.gradle │ │ └── src/ │ │ ├── main/ │ │ │ ├── java/ │ │ │ │ └── com/ │ │ │ │ └── db/ │ │ │ │ └── plexus/ │ │ │ │ └── interop/ │ │ │ │ └── dsl/ │ │ │ │ └── protobuf/ │ │ │ │ ├── GenerateProtoLang.mwe2 │ │ │ │ ├── ProtoLang.xtext │ │ │ │ ├── ProtoLangConfig.xtend │ │ │ │ ├── ProtoLangImportResolver.xtend │ │ │ │ ├── ProtoLangRuntimeModule.xtend │ │ │ │ ├── ProtoLangStandaloneSetup.xtend │ │ │ │ ├── ProtoLangUtils.xtend │ │ │ │ ├── StaticConfigHolder.java │ │ │ │ ├── formatting2/ │ │ │ │ │ └── ProtoLangFormatter.xtend │ │ │ │ ├── generator/ │ │ │ │ │ └── ProtoLangGenerator.xtend │ │ │ │ ├── scoping/ │ │ │ │ │ ├── ProtoLangGlobalScopeProvider.xtend │ │ │ │ │ ├── ProtoLangLocalScopeProvider.xtend │ │ │ │ │ ├── ProtoLangQualifiedNameProvider.xtend │ │ │ │ │ └── ProtoLangScopeProvider.xtend │ │ │ │ └── validation/ │ │ │ │ └── ProtoLangValidator.xtend │ │ │ └── resources/ │ │ │ └── google/ │ │ │ └── protobuf/ │ │ │ ├── any.proto │ │ │ ├── api.proto │ │ │ ├── descriptor.proto │ │ │ ├── duration.proto │ │ │ ├── empty.proto │ │ │ ├── field_mask.proto │ │ │ ├── source_context.proto │ │ │ ├── struct.proto │ │ │ ├── timestamp.proto │ │ │ ├── type.proto │ │ │ └── wrappers.proto │ │ └── test/ │ │ ├── java/ │ │ │ └── com/ │ │ │ └── db/ │ │ │ └── plexus/ │ │ │ └── interop/ │ │ │ └── dsl/ │ │ │ └── protobuf/ │ │ │ └── tests/ │ │ │ ├── ProtoLangImportResolverTest.xtend │ │ │ └── ProtoLangParsingTest.xtend │ │ └── resources/ │ │ └── com/ │ │ └── db/ │ │ └── plexus/ │ │ └── interop/ │ │ └── dsl/ │ │ └── protobuf/ │ │ └── tests/ │ │ ├── enum_values_naming.proto │ │ ├── example1.proto │ │ ├── example2.proto │ │ ├── field_label.proto │ │ ├── option_declare.proto │ │ ├── option_usage.proto │ │ ├── scoping/ │ │ │ ├── scoping/ │ │ │ │ └── test3.proto │ │ │ ├── test1.proto │ │ │ └── test2.proto │ │ └── subfolder/ │ │ └── example3.proto │ └── proto-lang.ide/ │ ├── build.gradle │ └── src/ │ └── main/ │ └── java/ │ └── com/ │ └── db/ │ └── plexus/ │ └── interop/ │ └── dsl/ │ └── protobuf/ │ ├── ide/ │ │ ├── ProtoLangIdeModule.xtend │ │ └── ProtoLangIdeSetup.xtend │ └── server/ │ ├── ProtoDebugServerLauncher.java │ ├── ProtoLangServerModule.java │ ├── ProtoLanguageServer.java │ └── StdIOServerLauncher.java ├── gradle/ │ ├── maven-deployment.gradle │ ├── source-layout.gradle │ └── wrapper/ │ ├── gradle-wrapper.jar │ └── gradle-wrapper.properties ├── gradlew ├── gradlew.bat ├── greeting-details.md ├── nodejs-broker-roadmap.md ├── protocol/ │ ├── plexus.interop.proto │ ├── plexus.interop.transport.proto │ └── plexus.proto ├── samples/ │ ├── broadcast/ │ │ └── registry/ │ │ └── interop/ │ │ └── samples/ │ │ ├── ip_telephony_app.interop │ │ ├── ip_telephony_broadcast_service.proto │ │ └── sales_app.interop │ ├── build.gradle │ ├── greeting/ │ │ ├── GenBrokerMetadata.cmd │ │ ├── metadata/ │ │ │ ├── apps.json │ │ │ └── interop.json │ │ └── registry/ │ │ └── interop/ │ │ ├── electron_app_launcher.interop │ │ └── samples/ │ │ ├── greeting_client.interop │ │ ├── greeting_server.interop │ │ ├── greeting_service.proto │ │ └── web_greeting_server.interop │ └── quick-start/ │ ├── GenBrokerMetadata.cmd │ ├── metadata/ │ │ ├── apps.json │ │ └── interop.json │ └── registry/ │ ├── fx/ │ │ └── ccy_pair_rate_service.proto │ ├── interop/ │ │ └── electron_app_launcher.interop │ ├── vendor_a/ │ │ └── fx/ │ │ ├── ccy_pair_rate_provider.interop │ │ └── web_ccy_pair_rate_provider.interop │ └── vendor_b/ │ └── fx/ │ ├── ccy_pair_rate_viewer.interop │ └── web_ccy_pair_rate_viewer.interop ├── settings.gradle └── web/ ├── .ci-npmrc-tpl ├── .ci-publish-npmrc-tpl ├── .gitignore ├── .yarnrc ├── README.md ├── build.gradle ├── configs/ │ └── tslint.json ├── lerna.json ├── package.json ├── packages/ │ ├── broker/ │ │ ├── .npmignore │ │ ├── package.json │ │ ├── preprocessor.js │ │ ├── setup-jasmine.js │ │ ├── src/ │ │ │ ├── AsyncHandler.ts │ │ │ ├── api/ │ │ │ │ ├── AppLifeCycleConfig.ts │ │ │ │ ├── CrossDomainEventBusProvider.ts │ │ │ │ ├── CrossDomainHostBuilder.ts │ │ │ │ ├── CrossDomainHostEntryPoint.ts │ │ │ │ ├── WebBrokerConnectionBuilder.ts │ │ │ │ └── index.ts │ │ │ ├── broker/ │ │ │ │ ├── AuthenticationHandler.ts │ │ │ │ ├── Broker.ts │ │ │ │ ├── ClientConnectionProcessor.ts │ │ │ │ ├── ClientRequestProcessor.ts │ │ │ │ ├── DiscoveryRequestHandler.ts │ │ │ │ ├── InvocationRequestHandler.ts │ │ │ │ └── TasksTracker.ts │ │ │ ├── bus/ │ │ │ │ ├── Event.ts │ │ │ │ ├── EventBus.ts │ │ │ │ ├── FallbackEventBus.ts │ │ │ │ ├── cross/ │ │ │ │ │ ├── CrossDomainBusConfig.ts │ │ │ │ │ ├── CrossDomainEventBus.ts │ │ │ │ │ ├── host/ │ │ │ │ │ │ ├── CrossDomainHost.ts │ │ │ │ │ │ ├── CrossDomainHostConfig.ts │ │ │ │ │ │ ├── HostMessageEvent.ts │ │ │ │ │ │ └── HostState.ts │ │ │ │ │ ├── index.ts │ │ │ │ │ └── model/ │ │ │ │ │ ├── IFrameHostMessage.ts │ │ │ │ │ ├── MessageType.ts │ │ │ │ │ ├── PublishRequest.ts │ │ │ │ │ ├── ResponseType.ts │ │ │ │ │ └── SubscribeRequest.ts │ │ │ │ ├── index.ts │ │ │ │ └── same/ │ │ │ │ ├── BroadCastChannelEventBus.ts │ │ │ │ └── JStorageEventBus.ts │ │ │ ├── index.ts │ │ │ ├── launcher/ │ │ │ │ ├── AppLaunchRequest.ts │ │ │ │ ├── AppLaunchResponse.ts │ │ │ │ ├── AppLauncher.ts │ │ │ │ ├── AppLauncherRegistry.ts │ │ │ │ ├── LaunchInvocationContext.ts │ │ │ │ ├── UrlWebAppLauncher.ts │ │ │ │ └── index.ts │ │ │ ├── lifecycle/ │ │ │ │ ├── AppLifeCycleManager.ts │ │ │ │ ├── ApplicationConnection.ts │ │ │ │ ├── ApplicationConnectionDescriptor.ts │ │ │ │ └── ApplicationDescriptor.ts │ │ │ ├── peers/ │ │ │ │ ├── ActionType.ts │ │ │ │ ├── PeerAppLifeCycleManager.ts │ │ │ │ ├── PeerConnectionsService.ts │ │ │ │ ├── PeerProxyConnection.ts │ │ │ │ ├── PeerProxyTransportChannel.ts │ │ │ │ ├── PeerServerConnectionFactory.ts │ │ │ │ ├── ProxyAuthenticationHandler.ts │ │ │ │ ├── StreamingInvocationClient.ts │ │ │ │ ├── actions/ │ │ │ │ │ ├── ChannelRequest.ts │ │ │ │ │ ├── CloseChannelRequest.ts │ │ │ │ │ ├── CloseChannelResponse.ts │ │ │ │ │ ├── CreateChannelResponse.ts │ │ │ │ │ ├── RemoteActions.ts │ │ │ │ │ └── SendMessageRequest.ts │ │ │ │ ├── events/ │ │ │ │ │ ├── AppConnectionHeartBit.ts │ │ │ │ │ └── EventType.ts │ │ │ │ ├── host/ │ │ │ │ │ ├── HostConnectionFactory.ts │ │ │ │ │ └── HostTransportConnection.ts │ │ │ │ └── remote/ │ │ │ │ ├── EventBasedRequest.ts │ │ │ │ ├── EventBusRemoteBrokerService.ts │ │ │ │ ├── RemoteActionResult.ts │ │ │ │ ├── RemoteActionStatus.ts │ │ │ │ └── RemoteBrokerService.ts │ │ │ ├── storage/ │ │ │ │ └── Storage.ts │ │ │ ├── transport/ │ │ │ │ └── MultiSourcesServerConnectionFactory.ts │ │ │ └── util/ │ │ │ └── Types.ts │ │ ├── tsconfig.json │ │ └── tslint.json │ ├── ccy-pair-rate-provider/ │ │ ├── gen-client.cmd │ │ ├── package.json │ │ ├── src/ │ │ │ ├── RateService.ts │ │ │ ├── gen/ │ │ │ │ ├── WebCcyPairRateProviderGeneratedClient.ts │ │ │ │ ├── plexus-messages.d.ts │ │ │ │ └── plexus-messages.js │ │ │ ├── index.ts │ │ │ └── views/ │ │ │ └── index.html │ │ └── tsconfig.json │ ├── ccy-pair-rate-viewer/ │ │ ├── gen-client.cmd │ │ ├── package.json │ │ ├── src/ │ │ │ ├── gen/ │ │ │ │ ├── WebCcyPairRateViewerGeneratedClient.ts │ │ │ │ ├── plexus-messages.d.ts │ │ │ │ └── plexus-messages.js │ │ │ ├── index.ts │ │ │ └── views/ │ │ │ └── index.html │ │ └── tsconfig.json │ ├── cli/ │ │ ├── .gitignore │ │ ├── .npmignore │ │ ├── .vscode/ │ │ │ ├── launch.json │ │ │ └── tasks.json │ │ ├── dev-examples.md │ │ ├── install.js │ │ ├── package.json │ │ ├── plexus.js │ │ ├── src/ │ │ │ ├── commands/ │ │ │ │ ├── BaseCommand.ts │ │ │ │ ├── BaseJavaGenCommand.ts │ │ │ │ ├── Command.ts │ │ │ │ ├── DefaultOptions.ts │ │ │ │ ├── GenCSharpCommand.ts │ │ │ │ ├── GenJsonCommand.ts │ │ │ │ ├── GenProtoCommand.ts │ │ │ │ ├── GenTsCommand.ts │ │ │ │ ├── ListMetaFilesCommand.ts │ │ │ │ ├── Option.ts │ │ │ │ ├── ValidateMetadataCommand.ts │ │ │ │ ├── ValidateMetadataPatchCommand.ts │ │ │ │ ├── commands.ts │ │ │ │ └── index.ts │ │ │ ├── common/ │ │ │ │ ├── download.ts │ │ │ │ ├── files.ts │ │ │ │ ├── java.ts │ │ │ │ ├── process.ts │ │ │ │ ├── progress.ts │ │ │ │ ├── protoJs.ts │ │ │ │ └── protoc.ts │ │ │ ├── index.ts │ │ │ ├── install.ts │ │ │ └── typings.d.ts │ │ ├── tests/ │ │ │ ├── approved/ │ │ │ │ ├── generated-cs-client.approved.txt │ │ │ │ ├── generated-cs-messages.approved.txt │ │ │ │ ├── generated-cs-options.approved.txt │ │ │ │ ├── generated-cs-service.approved.txt │ │ │ │ ├── generated-json.approved.txt │ │ │ │ ├── generated-ts-client.approved.txt │ │ │ │ ├── generated-ts-definitions.approved.txt │ │ │ │ └── generated-ts-messages.approved.txt │ │ │ ├── commands/ │ │ │ │ ├── BaseCommand.spec.ts │ │ │ │ ├── GenCSharpCommand.spec.ts │ │ │ │ ├── GenJsonCommand.spec.ts │ │ │ │ ├── GetTsCommand.spec.ts │ │ │ │ ├── ListMetaFilesCommand.spec.ts │ │ │ │ ├── ValidateMetadataCommand.spec.ts │ │ │ │ ├── ValidateMetatadaPatchCommand.spec.ts │ │ │ │ └── setup.ts │ │ │ ├── files.spec.ts │ │ │ └── protoJs.spec.ts │ │ ├── tsconfig.json │ │ └── tslint.json │ ├── client/ │ │ ├── .npmignore │ │ ├── package.json │ │ ├── setup-jasmine.js │ │ ├── src/ │ │ │ ├── client/ │ │ │ │ ├── ClientDtoUtils.ts │ │ │ │ ├── api/ │ │ │ │ │ ├── AnonymousSubscription.ts │ │ │ │ │ ├── BaseInvocationClientImpl.ts │ │ │ │ │ ├── DelegateInvocationObserver.ts │ │ │ │ │ ├── InvocationClient.ts │ │ │ │ │ ├── LoggingInvocationObserver.ts │ │ │ │ │ ├── ValueHandler.ts │ │ │ │ │ ├── container/ │ │ │ │ │ │ ├── ConnectionDetails.ts │ │ │ │ │ │ ├── ConnectionDetailsService.ts │ │ │ │ │ │ ├── ContainerAwareClientAPIBuilder.ts │ │ │ │ │ │ ├── DefaultConnectionDetailsService.ts │ │ │ │ │ │ ├── WsConnectionDetails.ts │ │ │ │ │ │ └── index.ts │ │ │ │ │ ├── generic/ │ │ │ │ │ │ ├── ClientApiBuilder.ts │ │ │ │ │ │ ├── GenericClientApi.ts │ │ │ │ │ │ ├── GenericClientApiBase.ts │ │ │ │ │ │ ├── GenericClientApiBuilder.ts │ │ │ │ │ │ ├── GenericClientApiImpl.ts │ │ │ │ │ │ ├── GenericInvocationsHost.ts │ │ │ │ │ │ ├── InvocationExecutor.ts │ │ │ │ │ │ ├── handlers/ │ │ │ │ │ │ │ ├── InvocationHandlerConverter.ts │ │ │ │ │ │ │ ├── InvocationHandlersRegistry.ts │ │ │ │ │ │ │ ├── index.ts │ │ │ │ │ │ │ ├── streaming/ │ │ │ │ │ │ │ │ ├── BidiStreamingInvocationHandler.ts │ │ │ │ │ │ │ │ ├── ServerStreamingInvocationHandler.ts │ │ │ │ │ │ │ │ ├── StreamingInvocationClient.ts │ │ │ │ │ │ │ │ ├── StreamingInvocationClientImpl.ts │ │ │ │ │ │ │ │ ├── StreamingInvocationClientInternal.ts │ │ │ │ │ │ │ │ ├── StreamingInvocationHost.ts │ │ │ │ │ │ │ │ ├── converters.ts │ │ │ │ │ │ │ │ └── index.ts │ │ │ │ │ │ │ └── unary/ │ │ │ │ │ │ │ ├── UnaryInvocationHandler.ts │ │ │ │ │ │ │ ├── converters.ts │ │ │ │ │ │ │ └── index.ts │ │ │ │ │ │ ├── index.ts │ │ │ │ │ │ └── internal/ │ │ │ │ │ │ ├── InternalActionInvoker.ts │ │ │ │ │ │ ├── InternalGenericClientApi.ts │ │ │ │ │ │ └── index.ts │ │ │ │ │ └── index.ts │ │ │ │ ├── generic/ │ │ │ │ │ ├── AcceptedInvocation.ts │ │ │ │ │ ├── BaseInvocation.ts │ │ │ │ │ ├── GenericClient.ts │ │ │ │ │ ├── GenericClientFactory.ts │ │ │ │ │ ├── GenericClientImpl.ts │ │ │ │ │ ├── GenericInvocation.ts │ │ │ │ │ ├── Invocation.ts │ │ │ │ │ ├── InvocationChannelObserver.ts │ │ │ │ │ ├── InvocationObserver.ts │ │ │ │ │ ├── InvocationObserverConverter.ts │ │ │ │ │ ├── InvocationState.ts │ │ │ │ │ ├── RequestedDiscoveredInvocation.ts │ │ │ │ │ ├── RequestedInvocation.ts │ │ │ │ │ ├── SingleMessageRequst.ts │ │ │ │ │ └── index.ts │ │ │ │ └── index.ts │ │ │ └── index.ts │ │ ├── tests/ │ │ │ ├── BufferedInvocationObserver.ts │ │ │ ├── LogInvocationObserver.ts │ │ │ ├── client/ │ │ │ │ ├── DefaultConnectionDetailsService.spec.ts │ │ │ │ ├── GenericClient.spec.ts │ │ │ │ ├── GenericClientApi.spec.ts │ │ │ │ ├── GenericInvocationHost.spec.ts │ │ │ │ ├── Invocation.spec.ts │ │ │ │ ├── WsConnectionDetails.spec.ts │ │ │ │ └── client-mocks.ts │ │ │ └── utils.ts │ │ ├── tsconfig.json │ │ └── tslint.json │ ├── client-api/ │ │ ├── package.json │ │ ├── src/ │ │ │ ├── MethodInvocationContext.ts │ │ │ ├── dto/ │ │ │ │ ├── ActionReference.ts │ │ │ │ ├── BasicInvocationInfo.ts │ │ │ │ ├── ClientConnectRequest.ts │ │ │ │ ├── Completion.ts │ │ │ │ ├── ConsumedService.ts │ │ │ │ ├── DiscoveredMethod.ts │ │ │ │ ├── DiscoveredService.ts │ │ │ │ ├── DiscoveredServiceMethod.ts │ │ │ │ ├── DiscoveryMode.ts │ │ │ │ ├── GenericRequest.ts │ │ │ │ ├── HostInvocationInfo.ts │ │ │ │ ├── MethodDiscoveryRequest.ts │ │ │ │ ├── MethodDiscoveryResponse.ts │ │ │ │ ├── MethodType.ts │ │ │ │ ├── Option.ts │ │ │ │ ├── ProvidedMethodReference.ts │ │ │ │ ├── ProvidedServiceReference.ts │ │ │ │ ├── RemoteInvocationInfo.ts │ │ │ │ ├── ServiceDiscoveryRequest.ts │ │ │ │ ├── ServiceDiscoveryResponse.ts │ │ │ │ ├── ServiceInfo.ts │ │ │ │ └── index.ts │ │ │ └── index.ts │ │ ├── tsconfig.json │ │ └── tslint.json │ ├── common/ │ │ ├── package.json │ │ ├── setup-jasmine.js │ │ ├── src/ │ │ │ ├── PlexusFeatures.ts │ │ │ ├── RetryConfig.ts │ │ │ ├── cache/ │ │ │ │ ├── Cache.ts │ │ │ │ ├── CacheEntry.ts │ │ │ │ ├── CacheEntryDescriptor.ts │ │ │ │ ├── InMemoryCache.ts │ │ │ │ └── index.ts │ │ │ ├── index.ts │ │ │ ├── logger/ │ │ │ │ ├── DelegatingLogger.ts │ │ │ │ ├── Logger.ts │ │ │ │ ├── LoggerBase.ts │ │ │ │ ├── LoggerFactory.ts │ │ │ │ ├── PrefixedLogger.ts │ │ │ │ └── index.ts │ │ │ ├── rx/ │ │ │ │ ├── AnonymousSubscription.ts │ │ │ │ ├── BufferedObserver.ts │ │ │ │ ├── ConversionObserver.ts │ │ │ │ ├── Observer.ts │ │ │ │ ├── Subscription.ts │ │ │ │ └── index.ts │ │ │ ├── util/ │ │ │ │ ├── Arrays.ts │ │ │ │ ├── ExtendedArray.ts │ │ │ │ ├── GUID.ts │ │ │ │ ├── async/ │ │ │ │ │ ├── AsyncHelper.ts │ │ │ │ │ ├── CancellationToken.ts │ │ │ │ │ ├── ReadOnlyCancellationToken.ts │ │ │ │ │ ├── ReadWriteCancellationToken.ts │ │ │ │ │ ├── SequencedExecutor.ts │ │ │ │ │ ├── index.ts │ │ │ │ │ └── promises.ts │ │ │ │ ├── collections/ │ │ │ │ │ ├── BlockingQueue.ts │ │ │ │ │ ├── ExtendedMap.ts │ │ │ │ │ ├── LimitedBufferQueue.ts │ │ │ │ │ ├── index.ts │ │ │ │ │ └── map.ts │ │ │ │ ├── dom/ │ │ │ │ │ └── DomUtils.ts │ │ │ │ ├── index.ts │ │ │ │ ├── js/ │ │ │ │ │ └── ObjectUtils.ts │ │ │ │ ├── once.ts │ │ │ │ ├── state/ │ │ │ │ │ ├── StateMaschine.ts │ │ │ │ │ ├── StateMaschineBase.ts │ │ │ │ │ └── index.ts │ │ │ │ ├── time/ │ │ │ │ │ └── TimeUtils.ts │ │ │ │ ├── types.ts │ │ │ │ ├── unique.ts │ │ │ │ └── url/ │ │ │ │ └── UrlParamsProvider.ts │ │ │ └── ws/ │ │ │ └── detect.ts │ │ ├── tests/ │ │ │ ├── cache/ │ │ │ │ └── InMemoryCache.spec.ts │ │ │ ├── logger/ │ │ │ │ └── LoggerFactory.spec.ts │ │ │ └── util/ │ │ │ ├── Arrays.spec.ts │ │ │ ├── AsyncHelper.spec.ts │ │ │ ├── BlockingQueue.spec.ts │ │ │ ├── ExtendedArray.spec.ts │ │ │ ├── LimitedBufferQueue.spec.ts │ │ │ ├── SequencedExecutor.spec.ts │ │ │ ├── StateMaschineBase.spec.ts │ │ │ ├── map.spec.ts │ │ │ └── promises.spec.ts │ │ ├── tsconfig.json │ │ └── tslint.json │ ├── common-api-impl/ │ │ ├── .npmignore │ │ ├── README.md │ │ ├── package.json │ │ ├── setup-jasmine.js │ │ ├── src/ │ │ │ ├── PartialPeerDescriptor.ts │ │ │ ├── PlexusInteropPeer.ts │ │ │ ├── PlexusInteropPlatform.ts │ │ │ ├── actions/ │ │ │ │ ├── DiscoverMethodHandler.ts │ │ │ │ ├── DiscoverMethodsHandler.ts │ │ │ │ ├── InvokeHandler.ts │ │ │ │ └── SubscribeHandler.ts │ │ │ ├── api/ │ │ │ │ ├── InteropPlatformFactory.ts │ │ │ │ ├── client-api.ts │ │ │ │ └── index.ts │ │ │ ├── index.ts │ │ │ ├── listeners.ts │ │ │ ├── metadata.ts │ │ │ ├── registration.ts │ │ │ └── types.ts │ │ ├── tsconfig.json │ │ └── tslint.json │ ├── e2e/ │ │ ├── gen-metadata.cmd │ │ ├── karma.conf.js │ │ ├── metadata/ │ │ │ ├── apps.json │ │ │ ├── interop/ │ │ │ │ └── plexus/ │ │ │ │ └── interop/ │ │ │ │ └── testing/ │ │ │ │ ├── echo_client.interop │ │ │ │ ├── echo_server.interop │ │ │ │ ├── echo_service.proto │ │ │ │ └── test_app_launcher.interop │ │ │ └── interop.json │ │ ├── package.json │ │ ├── scripts/ │ │ │ ├── browserify-all.js │ │ │ ├── coverage.js │ │ │ ├── file-utils.js │ │ │ ├── karma-preprocessor.js │ │ │ ├── native-broker-launcher.js │ │ │ ├── native-e2e-tests-launcher.js │ │ │ └── web-e2e-tests-launcher.js │ │ ├── setup-jasmine.js │ │ ├── src/ │ │ │ ├── echo/ │ │ │ │ ├── client/ │ │ │ │ │ ├── EchoClientGeneratedClient.ts │ │ │ │ │ ├── plexus-messages.d.ts │ │ │ │ │ └── plexus-messages.js │ │ │ │ └── server/ │ │ │ │ ├── EchoServerGeneratedClient.ts │ │ │ │ ├── plexus-messages.d.ts │ │ │ │ └── plexus-messages.js │ │ │ ├── polyfills.ts │ │ │ └── views/ │ │ │ └── proxyHost.html │ │ ├── tests/ │ │ │ ├── common/ │ │ │ │ ├── BenchmarkResult.ts │ │ │ │ ├── ClientsSetup.ts │ │ │ │ ├── ConnectionProvider.ts │ │ │ │ ├── ConnectionSetup.ts │ │ │ │ ├── RawMetadata.ts │ │ │ │ ├── TestCrossDomainHost.ts │ │ │ │ ├── TransportsSetup.ts │ │ │ │ └── utils.ts │ │ │ ├── echo/ │ │ │ │ ├── BaseEchoTest.ts │ │ │ │ ├── BidiStreamingTests.ts │ │ │ │ ├── ClientConnectivityTests.ts │ │ │ │ ├── ClientStreamingHandler.ts │ │ │ │ ├── ClientStreamingTests.ts │ │ │ │ ├── DiscoveryTests.ts │ │ │ │ ├── DynamicInvocationTests.ts │ │ │ │ ├── EchoClientBenchmark.ts │ │ │ │ ├── NopServiceHandler.ts │ │ │ │ ├── PointToPointInvocationTests.ts │ │ │ │ ├── ServerStreamingHandler.ts │ │ │ │ ├── ServerStreamingInvocationTests.ts │ │ │ │ └── UnaryServiceHandler.ts │ │ │ ├── native/ │ │ │ │ ├── WebSocketClientConnectivity.spec.ts │ │ │ │ ├── WebSocketCommonApi.spec.ts │ │ │ │ ├── WebSocketDiscovery.spec.ts │ │ │ │ ├── WebSocketDynamicInvocationTests.spec.ts │ │ │ │ ├── WebSocketMetadataLoader.spec.ts │ │ │ │ ├── WebSocketPlainDtoTests.spec.ts │ │ │ │ ├── WebSocketPointToPoint.spec.ts │ │ │ │ ├── WebSocketStreaming.spec.ts │ │ │ │ └── benchmarks/ │ │ │ │ └── WebSocketTransportBenchmark.spec.ts │ │ │ └── web/ │ │ │ ├── WebBrokerClientConnectivity.spec.ts │ │ │ ├── WebBrokerDiscovery.spec.ts │ │ │ ├── WebBrokerPointToPoint.spec.ts │ │ │ ├── WebBrokerStreaming.spec.ts │ │ │ └── benchmarks/ │ │ │ └── WebBrokerTransportBenchmark.spec.ts │ │ ├── tsconfig.json │ │ └── tslint.json │ ├── electron-launcher/ │ │ ├── ElectronAppLauncher.cmd │ │ ├── package.json │ │ ├── setup-jasmine.js │ │ ├── src/ │ │ │ ├── index.ts │ │ │ └── launcher/ │ │ │ ├── ElectronAppLauncher.ts │ │ │ ├── Main.ts │ │ │ ├── client/ │ │ │ │ └── ElectronAppLauncherGeneratedClient.ts │ │ │ ├── gen/ │ │ │ │ ├── plexus-messages.d.ts │ │ │ │ └── plexus-messages.js │ │ │ └── logger/ │ │ │ └── FileLogger.ts │ │ ├── tsconfig.json │ │ └── tslint.json │ ├── io/ │ │ ├── .npmignore │ │ ├── package.json │ │ ├── preprocessor.js │ │ ├── setup-jasmine.js │ │ ├── src/ │ │ │ ├── api/ │ │ │ │ ├── BinaryMarshaller.ts │ │ │ │ ├── BinaryMarshallerProvider.ts │ │ │ │ ├── ExtendedMarshaller.ts │ │ │ │ ├── Marshaller.ts │ │ │ │ └── index.ts │ │ │ ├── dynamic/ │ │ │ │ ├── DynamicBinaryMarshallerProvider.ts │ │ │ │ ├── DynamicBinaryProtoMarshaller.ts │ │ │ │ ├── DynamicProtoMarshaller.ts │ │ │ │ ├── DynamicProtoMarshallerFactory.ts │ │ │ │ └── index.ts │ │ │ ├── index.ts │ │ │ └── static/ │ │ │ ├── ProtoMarshallerProvider.ts │ │ │ └── index.ts │ │ ├── tests/ │ │ │ ├── dynamic/ │ │ │ │ └── DynamicMarshallerFactory.spec.ts │ │ │ └── static/ │ │ │ └── ProtoMarshallerProvider.spec.ts │ │ ├── tsconfig.json │ │ └── tslint.json │ ├── metadata/ │ │ ├── .npmignore │ │ ├── package.json │ │ ├── preprocessor.js │ │ ├── setup-jasmine.js │ │ ├── src/ │ │ │ ├── apps/ │ │ │ │ ├── AppRegistryProvider.ts │ │ │ │ ├── AppRegistryService.ts │ │ │ │ ├── json/ │ │ │ │ │ ├── JsonAppRegistryProvider.ts │ │ │ │ │ └── UrlAppRegistryProvider.ts │ │ │ │ └── model/ │ │ │ │ ├── AppRegistry.ts │ │ │ │ ├── Application.ts │ │ │ │ └── index.ts │ │ │ ├── index.ts │ │ │ └── interop/ │ │ │ ├── InteropRegistryProvider.ts │ │ │ ├── InteropRegistryService.ts │ │ │ ├── apps/ │ │ │ │ └── Application.ts │ │ │ ├── json/ │ │ │ │ ├── ApplicationDto.ts │ │ │ │ ├── ConsumedMethodDto.ts │ │ │ │ ├── ConsumedServiceDto.ts │ │ │ │ ├── EnumDto.ts │ │ │ │ ├── Field.ts │ │ │ │ ├── Fields.ts │ │ │ │ ├── JsonInteropRegistryProvider.ts │ │ │ │ ├── MessageDto.ts │ │ │ │ ├── MessagesNamespace.ts │ │ │ │ ├── MethodDto.ts │ │ │ │ ├── MethodTypeDto.ts │ │ │ │ ├── OptionDto.ts │ │ │ │ ├── Options.ts │ │ │ │ ├── ProvidedMethodDto.ts │ │ │ │ ├── ProvidedServiceDto.ts │ │ │ │ ├── RegistryDto.ts │ │ │ │ ├── ServiceDto.ts │ │ │ │ ├── UrlInteropRegistryProvider.ts │ │ │ │ └── Values.ts │ │ │ └── model/ │ │ │ ├── Application.ts │ │ │ ├── ConsumedMethod.ts │ │ │ ├── ConsumedMethodReference.ts │ │ │ ├── ConsumedService.ts │ │ │ ├── ConsumedServiceReference.ts │ │ │ ├── Enum.ts │ │ │ ├── Field.ts │ │ │ ├── InteropRegistry.ts │ │ │ ├── MatchPattern.ts │ │ │ ├── MatchPatternFactory.ts │ │ │ ├── Message.ts │ │ │ ├── Method.ts │ │ │ ├── MethodType.ts │ │ │ ├── Option.ts │ │ │ ├── ProvidedMethod.ts │ │ │ ├── ProvidedMethodReference.ts │ │ │ ├── ProvidedService.ts │ │ │ ├── ProvidedServiceReference.ts │ │ │ ├── Service.ts │ │ │ └── index.ts │ │ ├── tests/ │ │ │ └── json/ │ │ │ ├── InteropRegistryService.spec.ts │ │ │ ├── JsonAppRegistryProvider.spec.ts │ │ │ ├── JsonRegistryProvider.spec.ts │ │ │ ├── test-apps.json │ │ │ └── test-interop.json │ │ ├── tsconfig.json │ │ └── tslint.json │ ├── protocol/ │ │ ├── gen-protocol.cmd │ │ ├── package.json │ │ ├── src/ │ │ │ ├── dto/ │ │ │ │ ├── CancelledCompletion.ts │ │ │ │ ├── ClientError.ts │ │ │ │ ├── ClientProtocolUtils.ts │ │ │ │ ├── Completion.ts │ │ │ │ ├── ErrorCompletion.ts │ │ │ │ ├── InvocationMetaInfo.ts │ │ │ │ ├── SuccessCompletion.ts │ │ │ │ ├── UniqueId.ts │ │ │ │ └── index.ts │ │ │ ├── gen/ │ │ │ │ └── .gitignore │ │ │ ├── index.ts │ │ │ └── util/ │ │ │ └── ClientProtocolHelper.ts │ │ ├── tests/ │ │ │ └── dto/ │ │ │ └── UniqueId.spec.ts │ │ └── tsconfig.json │ ├── remote/ │ │ ├── .npmignore │ │ ├── package.json │ │ ├── preprocessor.js │ │ ├── setup-jasmine.js │ │ ├── src/ │ │ │ ├── http/ │ │ │ │ ├── HttpDataLoader.ts │ │ │ │ └── index.ts │ │ │ ├── index.ts │ │ │ └── ws/ │ │ │ ├── WebSocketDataProvider.ts │ │ │ └── index.ts │ │ ├── tsconfig.json │ │ └── tslint.json │ ├── studio/ │ │ ├── .angular-cli.json │ │ ├── .bootstraprc │ │ ├── .editorconfig │ │ ├── .gitignore │ │ ├── .vscode/ │ │ │ └── launch.json │ │ ├── README.md │ │ ├── karma.conf.js │ │ ├── package.json │ │ ├── protractor.conf.js │ │ ├── src/ │ │ │ ├── app/ │ │ │ │ ├── app-list/ │ │ │ │ │ ├── app-list.component.css │ │ │ │ │ ├── app-list.component.html │ │ │ │ │ └── app-list.component.ts │ │ │ │ ├── app-services/ │ │ │ │ │ ├── app-services.component.css │ │ │ │ │ ├── app-services.component.html │ │ │ │ │ └── app-services.component.ts │ │ │ │ ├── app.component.css │ │ │ │ ├── app.component.html │ │ │ │ ├── app.component.ts │ │ │ │ ├── app.module.ts │ │ │ │ ├── app.routing.ts │ │ │ │ ├── consumed-service/ │ │ │ │ │ ├── consumed-service.component.css │ │ │ │ │ ├── consumed-service.component.html │ │ │ │ │ └── consumed-service.component.ts │ │ │ │ ├── header/ │ │ │ │ │ ├── header.component.css │ │ │ │ │ ├── header.component.html │ │ │ │ │ └── header.component.ts │ │ │ │ ├── metadata-loader/ │ │ │ │ │ ├── metadata-loader.component.css │ │ │ │ │ ├── metadata-loader.component.html │ │ │ │ │ └── metadata-loader.component.ts │ │ │ │ ├── provided-service/ │ │ │ │ │ ├── provided-service.component.css │ │ │ │ │ ├── provided-service.component.html │ │ │ │ │ └── provided-service.component.ts │ │ │ │ └── services/ │ │ │ │ ├── AppUtils.ts │ │ │ │ ├── core/ │ │ │ │ │ ├── DefaultMessageGenerator.spec.ts │ │ │ │ │ ├── DefaultMessageGenerator.ts │ │ │ │ │ ├── FieldNamesValidator.spec.ts │ │ │ │ │ ├── FieldNamesValidator.ts │ │ │ │ │ ├── GenericClientWrapper.ts │ │ │ │ │ ├── InteropClient.ts │ │ │ │ │ ├── InteropClientFactory.ts │ │ │ │ │ ├── InteropServiceFactory.ts │ │ │ │ │ ├── StringHandlers.ts │ │ │ │ │ ├── TransportConnectionFactory.ts │ │ │ │ │ ├── TransportConnectionProvider.ts │ │ │ │ │ └── invocation-utils.ts │ │ │ │ ├── effects/ │ │ │ │ │ └── ConnectionEffects.ts │ │ │ │ ├── extensions/ │ │ │ │ │ └── StudioExtensions.ts │ │ │ │ ├── reducers/ │ │ │ │ │ ├── AlertsHandler.ts │ │ │ │ │ ├── ConnectionDetailsReducer.ts │ │ │ │ │ ├── PlexusReducers.ts │ │ │ │ │ └── TypedAction.ts │ │ │ │ ├── transport/ │ │ │ │ │ ├── TransportConnectionFactory.ts │ │ │ │ │ └── TransportConnectionProvider.ts │ │ │ │ └── ui/ │ │ │ │ ├── AppActions.ts │ │ │ │ ├── AppEffects.ts │ │ │ │ ├── AppModel.ts │ │ │ │ ├── ConnectionRequestParams.ts │ │ │ │ ├── RootReducers.ts │ │ │ │ ├── SubscriptionsRegistry.ts │ │ │ │ ├── filters.ts │ │ │ │ └── validators.ts │ │ │ ├── environments/ │ │ │ │ ├── environment.prod.ts │ │ │ │ └── environment.ts │ │ │ ├── index.html │ │ │ ├── main.ts │ │ │ ├── polyfills.ts │ │ │ ├── setup-jest.ts │ │ │ ├── styles.css │ │ │ ├── test.ts │ │ │ ├── tsconfig.app.json │ │ │ ├── tsconfig.spec.json │ │ │ └── typings.d.ts │ │ ├── tsconfig.json │ │ └── tslint.json │ ├── transport-common/ │ │ ├── .npmignore │ │ ├── package.json │ │ ├── setup-jasmine.js │ │ ├── src/ │ │ │ ├── common/ │ │ │ │ ├── BaseChannel.ts │ │ │ │ ├── BufferedObserver.ts │ │ │ │ ├── Channel.ts │ │ │ │ ├── ChannelObserver.ts │ │ │ │ ├── Defaults.ts │ │ │ │ ├── DelegateChannelObserver.ts │ │ │ │ ├── PlexusObserver.ts │ │ │ │ └── index.ts │ │ │ ├── index.ts │ │ │ └── transport/ │ │ │ ├── ClientConnectionFactory.ts │ │ │ ├── ConnectionDetails.ts │ │ │ ├── DuplexConnectionFactory.ts │ │ │ ├── InMemoryConnectionFactory.ts │ │ │ ├── InMemoryFramedTransport.ts │ │ │ ├── ServerConnectionFactory.ts │ │ │ ├── TransportChannel.ts │ │ │ ├── TransportConnection.ts │ │ │ ├── frame/ │ │ │ │ ├── BufferedReadFramedTransport.ts │ │ │ │ ├── BufferedTransportProxy.ts │ │ │ │ ├── ConnectableFramedTransport.ts │ │ │ │ ├── FrameHeader.ts │ │ │ │ ├── FramedTransport.ts │ │ │ │ ├── FramedTransportChannel.ts │ │ │ │ ├── FramedTransportConnection.ts │ │ │ │ ├── SafeMessageBuffer.ts │ │ │ │ ├── TransportFrameHandler.ts │ │ │ │ ├── TransportFrameListener.ts │ │ │ │ ├── index.ts │ │ │ │ └── model/ │ │ │ │ ├── ChannelCloseFrame.ts │ │ │ │ ├── ChannelOpenFrame.ts │ │ │ │ ├── ConnectionCloseFrame.ts │ │ │ │ ├── ConnectionOpenFrame.ts │ │ │ │ ├── DataFrame.ts │ │ │ │ ├── Frame.ts │ │ │ │ ├── InternalMessagesConverter.ts │ │ │ │ ├── MessageFrame.ts │ │ │ │ ├── ServiceFrame.ts │ │ │ │ ├── index.ts │ │ │ │ └── util.ts │ │ │ └── index.ts │ │ ├── tests/ │ │ │ ├── BufferedObserver.ts │ │ │ ├── LogObserver.ts │ │ │ ├── transport/ │ │ │ │ ├── TestBufferedInMemoryFramedTransport.ts │ │ │ │ ├── TestInMemoryConnectionFactory.ts │ │ │ │ ├── UniqueId.spec.ts │ │ │ │ ├── frame/ │ │ │ │ │ ├── ClientToServer.spec.ts │ │ │ │ │ ├── FramedTransportChannel.spec.ts │ │ │ │ │ ├── FramedTransportConnection.spec.ts │ │ │ │ │ ├── InternalMessagesConverter.spec.ts │ │ │ │ │ ├── SafeMessageBuffer.spec.ts │ │ │ │ │ └── util.ts │ │ │ │ ├── mocks/ │ │ │ │ │ └── BufferedChannel.ts │ │ │ │ └── transport-mocks.ts │ │ │ └── utils.ts │ │ ├── tsconfig.json │ │ └── tslint.json │ ├── web-example/ │ │ ├── package.json │ │ ├── src/ │ │ │ ├── common/ │ │ │ │ └── DomLogger.ts │ │ │ └── greeting/ │ │ │ ├── server/ │ │ │ │ ├── Main.ts │ │ │ │ ├── WebGreetingServerGeneratedClient.ts │ │ │ │ └── gen/ │ │ │ │ ├── plexus-messages.d.ts │ │ │ │ └── plexus-messages.js │ │ │ └── views/ │ │ │ └── greetingServer.html │ │ ├── tsconfig.json │ │ └── tslint.json │ └── websocket-transport/ │ ├── .npmignore │ ├── package.json │ ├── setup-jasmine.js │ ├── src/ │ │ ├── index.ts │ │ └── transport/ │ │ ├── WebSocketConnectionFactory.ts │ │ ├── WebSocketFramedTransport.ts │ │ └── index.ts │ ├── tests/ │ │ └── transports/ │ │ └── WebSocketFramedTransport.spec.ts │ ├── tsconfig.json │ └── tslint.json └── scripts/ ├── replace-auth-vars.js └── replace-lock-registry.js ================================================ FILE CONTENTS ================================================ ================================================ FILE: .github/CONTRIBUTING.md ================================================ # Contributing to Plexus Interop Thanks for your interest in the project! Here is some basic information about how to contribute. # Contributor License Agreement (CLA) A CLA is a document that specifies how a project is allowed to use your contribution; they are commonly used in many open source projects. All contributions to [Fintech Open Source Foundation](https://www.finos.org/) projects must be made under a [Contributor License Agreement](https://finosfoundation.atlassian.net/wiki/spaces/FINOS/pages/75530375/Legal+Requirements) that must also be met. _NOTE:_ Commits and pull requests to FINOS repositories will only be accepted from those contributors with an active, executed Individual Contributor License Agreement (ICLA) with FINOS OR who are covered under an existing and active Corporate Contribution License Agreement (CCLA) executed with FINOS. Commits from individuals not covered under an ICLA or CCLA will be flagged and blocked by the FINOS Clabot tool. Please note that some CCLAs require individuals/employees to be explicitly named on the CCLA. Pull requests (PRs) submitted to the project cannot be accepted until you have a CLA in place with the Foundation. *Need an ICLA? Unsure if you are covered under an existing CCLA? Email [help@finos.org](mailto:help@finos.org)* # Contributing Issues ## Prerequisites * [ ] Have you [searched for duplicates](https://github.com/finos-plexus/plexus-interop/issues?utf8=%E2%9C%93&q=)? A simple search for exception error messages or a summary of the unexpected behaviour should suffice. * [ ] Are you running the latest version? * [ ] Are you sure this is a bug or missing capability? ## Raising an Issue * Please raise issues to the project mailing list ([Web Archive](https://groups.google.com/a/finos.org/forum/#!forum/plx)). Some people from project teams currently can't access build-in github issue tracker from corporate network. * Please also tag the new issue with either "Bug" or "Enhancement". # Contributing Pull Requests (Code & Docs) To make review of PRs easier, please: * For major enhancements before working on any PR, please review the proposal with the project group via mailing list to align it with roadmap. * Please make sure your PRs will merge cleanly - PRs that don't are unlikely to be accepted. * For code contributions, follow the general structure of the existing code. * For documentation contributions, follow the general structure, language, and tone of the existing docs. * Keep PRs small and cohesive - if you have multiple contributions, please submit them as independent PRs. * Minimize non-functional changes (e.g. whitespace). * Ensure all new files include a header comment block containing the [Apache License v2.0 and your copyright information](http://www.apache.org/licenses/LICENSE-2.0#apply). * If necessary (e.g. due to 3rd party dependency licensing requirements), update the NOTICE file with any required attribution or other notices * If your contribution includes source code for any Category B-licensed dependencies, please get a pre-approval from project leads via mailing list and then add an appropriate notice to this CONTRIBUTING file ## Commit and PR Messages * **Reference issues, wiki pages, and pull requests liberally!** * Use the present tense ("Add feature" not "Added feature") * Use the imperative mood ("Move button left..." not "Moves button left...") * Limit the first line to 72 characters or less ================================================ FILE: .gitignore ================================================ ### Gradle ### build node_modules .gradle/ ### Maven ### target/ !.mvn/wrapper/maven-wrapper.jar .idea *.iml **/src-gen/ **/emf-gen **/xtend-gen **/xtext-gen logs ### Eclipse ### .classpath .project .settings/ .metadata/ bin/ ### JS ### .nyc_output npm-debug.log lerna-debug.log npm-debug.log.* yarn-error.log coverage **/dist **/target/ ### VS Code ### **/*/symbols.json **/.vscode/settings.json ### Asciidoc ### **/.asciidoctor/* ### NPM ### **/*/.npmrc ### IntelliJ *.iml *.ipr *.iws .idea/ out/ .DS_Store ### Local configuration file (sdk path, etc) local.properties ================================================ FILE: .whitesource ================================================ { "scanSettings": { "configMode": "AUTO" }, "checkRunSettings": { "vulnerableCheckRunConclusionLevel": "failure" }, "issueSettings": { "minSeverityLevel": "LOW" } } ================================================ FILE: FILE_HEADER ================================================ Copyright 2017-2021 Plexus Interop Deutsche Bank AG SPDX-License-Identifier: Apache-2.0 Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0 Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. ================================================ FILE: LICENSE ================================================ Apache License Version 2.0, January 2004 http://www.apache.org/licenses/ TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION 1. Definitions. "License" shall mean the terms and conditions for use, reproduction, and distribution as defined by Sections 1 through 9 of this document. "Licensor" shall mean the copyright owner or entity authorized by the copyright owner that is granting the License. "Legal Entity" shall mean the union of the acting entity and all other entities that control, are controlled by, or are under common control with that entity. For the purposes of this definition, "control" means (i) the power, direct or indirect, to cause the direction or management of such entity, whether by contract or otherwise, or (ii) ownership of fifty percent (50%) or more of the outstanding shares, or (iii) beneficial ownership of such entity. "You" (or "Your") shall mean an individual or Legal Entity exercising permissions granted by this License. "Source" form shall mean the preferred form for making modifications, including but not limited to software source code, documentation source, and configuration files. "Object" form shall mean any form resulting from mechanical transformation or translation of a Source form, including but not limited to compiled object code, generated documentation, and conversions to other media types. "Work" shall mean the work of authorship, whether in Source or Object form, made available under the License, as indicated by a copyright notice that is included in or attached to the work (an example is provided in the Appendix below). "Derivative Works" shall mean any work, whether in Source or Object form, that is based on (or derived from) the Work and for which the editorial revisions, annotations, elaborations, or other modifications represent, as a whole, an original work of authorship. For the purposes of this License, Derivative Works shall not include works that remain separable from, or merely link (or bind by name) to the interfaces of, the Work and Derivative Works thereof. "Contribution" shall mean any work of authorship, including the original version of the Work and any modifications or additions to that Work or Derivative Works thereof, that is intentionally submitted to Licensor for inclusion in the Work by the copyright owner or by an individual or Legal Entity authorized to submit on behalf of the copyright owner. For the purposes of this definition, "submitted" means any form of electronic, verbal, or written communication sent to the Licensor or its representatives, including but not limited to communication on electronic mailing lists, source code control systems, and issue tracking systems that are managed by, or on behalf of, the Licensor for the purpose of discussing and improving the Work, but excluding communication that is conspicuously marked or otherwise designated in writing by the copyright owner as "Not a Contribution." "Contributor" shall mean Licensor and any individual or Legal Entity on behalf of whom a Contribution has been received by Licensor and subsequently incorporated within the Work. 2. Grant of Copyright License. Subject to the terms and conditions of this License, each Contributor hereby grants to You a perpetual, worldwide, non-exclusive, no-charge, royalty-free, irrevocable copyright license to reproduce, prepare Derivative Works of, publicly display, publicly perform, sublicense, and distribute the Work and such Derivative Works in Source or Object form. 3. Grant of Patent License. Subject to the terms and conditions of this License, each Contributor hereby grants to You a perpetual, worldwide, non-exclusive, no-charge, royalty-free, irrevocable (except as stated in this section) patent license to make, have made, use, offer to sell, sell, import, and otherwise transfer the Work, where such license applies only to those patent claims licensable by such Contributor that are necessarily infringed by their Contribution(s) alone or by combination of their Contribution(s) with the Work to which such Contribution(s) was submitted. If You institute patent litigation against any entity (including a cross-claim or counterclaim in a lawsuit) alleging that the Work or a Contribution incorporated within the Work constitutes direct or contributory patent infringement, then any patent licenses granted to You under this License for that Work shall terminate as of the date such litigation is filed. 4. Redistribution. You may reproduce and distribute copies of the Work or Derivative Works thereof in any medium, with or without modifications, and in Source or Object form, provided that You meet the following conditions: (a) You must give any other recipients of the Work or Derivative Works a copy of this License; and (b) You must cause any modified files to carry prominent notices stating that You changed the files; and (c) You must retain, in the Source form of any Derivative Works that You distribute, all copyright, patent, trademark, and attribution notices from the Source form of the Work, excluding those notices that do not pertain to any part of the Derivative Works; and (d) If the Work includes a "NOTICE" text file as part of its distribution, then any Derivative Works that You distribute must include a readable copy of the attribution notices contained within such NOTICE file, excluding those notices that do not pertain to any part of the Derivative Works, in at least one of the following places: within a NOTICE text file distributed as part of the Derivative Works; within the Source form or documentation, if provided along with the Derivative Works; or, within a display generated by the Derivative Works, if and wherever such third-party notices normally appear. The contents of the NOTICE file are for informational purposes only and do not modify the License. You may add Your own attribution notices within Derivative Works that You distribute, alongside or as an addendum to the NOTICE text from the Work, provided that such additional attribution notices cannot be construed as modifying the License. You may add Your own copyright statement to Your modifications and may provide additional or different license terms and conditions for use, reproduction, or distribution of Your modifications, or for any such Derivative Works as a whole, provided Your use, reproduction, and distribution of the Work otherwise complies with the conditions stated in this License. 5. Submission of Contributions. Unless You explicitly state otherwise, any Contribution intentionally submitted for inclusion in the Work by You to the Licensor shall be under the terms and conditions of this License, without any additional terms or conditions. Notwithstanding the above, nothing herein shall supersede or modify the terms of any separate license agreement you may have executed with Licensor regarding such Contributions. 6. Trademarks. This License does not grant permission to use the trade names, trademarks, service marks, or product names of the Licensor, except as required for reasonable and customary use in describing the origin of the Work and reproducing the content of the NOTICE file. 7. Disclaimer of Warranty. Unless required by applicable law or agreed to in writing, Licensor provides the Work (and each Contributor provides its Contributions) on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied, including, without limitation, any warranties or conditions of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A PARTICULAR PURPOSE. You are solely responsible for determining the appropriateness of using or redistributing the Work and assume any risks associated with Your exercise of permissions under this License. 8. Limitation of Liability. In no event and under no legal theory, whether in tort (including negligence), contract, or otherwise, unless required by applicable law (such as deliberate and grossly negligent acts) or agreed to in writing, shall any Contributor be liable to You for damages, including any direct, indirect, special, incidental, or consequential damages of any character arising as a result of this License or out of the use or inability to use the Work (including but not limited to damages for loss of goodwill, work stoppage, computer failure or malfunction, or any and all other commercial damages or losses), even if such Contributor has been advised of the possibility of such damages. 9. Accepting Warranty or Additional Liability. While redistributing the Work or Derivative Works thereof, You may choose to offer, and charge a fee for, acceptance of support, warranty, indemnity, or other liability obligations and/or rights consistent with this License. However, in accepting such obligations, You may act only on Your own behalf and on Your sole responsibility, not on behalf of any other Contributor, and only if You agree to indemnify, defend, and hold each Contributor harmless for any liability incurred by, or claims asserted against, such Contributor by reason of your accepting any such warranty or additional liability. END OF TERMS AND CONDITIONS APPENDIX: How to apply the Apache License to your work. To apply the Apache License to your work, attach the following boilerplate notice, with the fields enclosed by brackets "[]" replaced with your own identifying information. (Don't include the brackets!) The text should be enclosed in the appropriate comment syntax for the file format. We also recommend that a file or class name and description of purpose be included on the same "printed page" as the copyright notice for easier identification within third-party archives. Copyright 2017-2021 Plexus Interop Deutsche Bank AG Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0 Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. ================================================ FILE: NOTICE ================================================ Copyright 2017-2019 Plexus Interop Deutsche Bank AG SPDX-License-Identifier: Apache-2.0 This product includes software developed at the Fintech Open Source Foundation (https://www.finos.org). Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0 Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. ======================================================================== ======================================================================== Plexus Interop DevTools information ======================================================================== ======================================================================== Plexus Interop DevTools is a part of a project which designed for developers to simplify their experience with Plexus Interop framework. Following licenses are used as dependencies which incorporated into the DevTools ("dsl" and "samples") and are not components of the production software. ======================================================================== Common Development and Distribution License 1.0 ======================================================================== The following components are provided under the Common Development and Distribution License 1.0. See project link for details. (CDDL 1.0) (GPL2 w/ CPE) javax.annotation API (javax.annotation.*) (CDDL 1.0) (GPL2 w/ CPE) javax.servlet-api API (javax.servlet.*) ======================================================================== Eclipse Public License 1.0 ======================================================================== The following components are provided under the Eclipse Public License 1.0. See project link for details. (Eclipse Public License 1.0) Xtext (org.eclipse.xtext.xbase-2.12.0) - https://www.eclipse.org/Xtext/ (Eclipse Public License 1.0) Xtext (org.eclipse.xtext.util-2.12.0) - https://www.eclipse.org/Xtext/ (Eclipse Public License 1.0) Xtext (org.eclipse.xtext.xbase.ide-2.12.0) - https://www.eclipse.org/Xtext/ (Eclipse Public License 1.0) Xtext (org.eclipse.lsp4j-0.2.1) - https://github.com/eclipse/lsp4j (Eclipse Public License 1.0) Xtext (org.eclipse.xtext.common.types-2.12.0) - https://www.eclipse.org/Xtext/ (Eclipse Public License 1.0) Xtext (org.eclipse.xtext.xbase.lib-2.12.0) - https://www.eclipse.org/Xtext/ (Eclipse Public License 1.0) Xtext (org.eclipse.xtend.lib-2.12.0) - https://www.eclipse.org/Xtext/ (Eclipse Public License 1.0) Xtext (org.eclipse.xtend.lib.macro-2.12.0) - https://www.eclipse.org/Xtext/ (Eclipse Public License 1.0) Xtext (org.eclipse.xtext-2.12.0) - https://www.eclipse.org/Xtext/ (Eclipse Public License 1.0) Xtext (org.eclipse.lsp4j.jsonrpc-0.2.1) - https://github.com/eclipse/lsp4j (Eclipse Public License 1.0) Xtext (org.eclipse.xtext.ide-2.12.0) - https://www.eclipse.org/Xtext/ (Eclipse Public License 1.0) Xtext (org.eclipse.xtext.web.servlet-2.12.0) - https://www.eclipse.org/Xtext/ (Eclipse Public License 1.0) Xtext (org.eclipse.xtext.xbase.web-2.12.0) - https://www.eclipse.org/Xtext/ (Eclipse Public License 1.0) Xtext (org.eclipse.lsp4j.generator-0.2.1) - https://github.com/eclipse/lsp4j (Eclipse Public License 1.0) Xtext (org.eclipse.xtext.ecore-2.12.0) - https://www.eclipse.org/Xtext/ (Eclipse Public License 1.0) Xtext (org.eclipse.xtext.web-2.12.0) - https://www.eclipse.org/Xtext/ (Eclipse Public License 1.0) Junit (junit.junit:4.12) - http://junit.org/junit4 (Eclipse Public License 1.0) EMF (org.eclipse.emf.ecore.xcore.lib-1.1.100) - https://github.com/eclipse/emf (Eclipse Public License 1.0) EMF (org.eclipse.emf.ecore.xmi-2.12.0) - https://github.com/eclipse/emf (Eclipse Public License 1.0) EMF (org.eclipse.emf.ecore-2.12.0) - https://github.com/eclipse/emf (Eclipse Public License 1.0) EMF (org.eclipse.emf.common-2.12.0) - https://github.com/eclipse/emf (Eclipse Public License 1.0) emfjson (emfjson-jackson-0.14.0) - https://github.com/emfjson/emfjson-jackson (Eclipse Public License 1.0) Equinox (org.eclipse.equinox.common-3.8.0) - http://www.eclipse.org/equinox/ (Eclipse Public License 1.0) Eclipse OSGI (org.eclipse.osgi-3.11.2) - http://www.eclipse.org/equinox/ (Eclipse Public License 1.0) Eclipse Jetty (jetty-xml-9.3.8.v20160314) - https://www.eclipse.org/jetty/ (Eclipse Public License 1.0) Eclipse Jetty (jetty-annotations-9.3.8.v20160314) - https://www.eclipse.org/jetty/ (Eclipse Public License 1.0) Eclipse Jetty (jetty-util-9.3.8.v20160314) - https://www.eclipse.org/jetty/ (Eclipse Public License 1.0) Eclipse Jetty (jetty-server-9.3.8.v20160314) - https://www.eclipse.org/jetty/ (Eclipse Public License 1.0) Eclipse Jetty (jetty-webapp-9.3.8.v20160314) - https://www.eclipse.org/jetty/ (Eclipse Public License 1.0) Eclipse Jetty (jetty-security-9.3.8.v20160314) - https://www.eclipse.org/jetty/ (Eclipse Public License 1.0) Eclipse Jetty (jetty-plus-9.3.8.v20160314) - https://www.eclipse.org/jetty/ (Eclipse Public License 1.0) Eclipse Jetty (jetty-jndi-9.3.8.v20160314) - https://www.eclipse.org/jetty/ (Eclipse Public License 1.0) Eclipse Jetty (jetty-http-9.3.8.v20160314) - https://www.eclipse.org/jetty/ (Eclipse Public License 1.0) Eclipse Jetty (jetty-servlet-9.3.8.v20160314) - https://www.eclipse.org/jetty/ (Eclipse Public License 1.0) Eclipse Jetty (jetty-io-9.3.8.v20160314) - https://www.eclipse.org/jetty/ ======================================================================== Protocol Buffers ======================================================================== Protocol Buffers framework is used in accordance to following license: Protocol Buffers - Google's data interchange format Copyright 2008 Google Inc. All rights reserved. https://developers.google.com/protocol-buffers/ Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. * Neither the name of Google Inc. nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ================================================ FILE: README.md ================================================ [![FINOS - Archived](https://cdn.jsdelivr.net/gh/finos/contrib-toolbox@master/images/badge-archived.svg)](https://community.finos.org/docs/governance/Software-Projects/stages/archived) _This project is archived, which means that it's in read-only state; you can download and use this code, but please be aware that it may be buggy and may also contain security vulnerabilities. If you're interested in restoring development activities on this project, please email help@finos.org_ # Plexus Interop ## Overview The **Plexus Interop** project aims to define an open standard for desktop application interoperability and provides reference implementation of this standard. It formalizes connections between applications within a single user session on client desktop through a central broker. The main goal is to enable development of extensible workflows connecting independent apps developed by different organizations in different technologies (.NET, Web, Java, Python, etc.) by passing relevant context (structured data objects) between those apps. Although the industry is moving towards containerized desktop applications, Plexus Interop recognizes that much of the application landscape is not yet tied to containers and is architecturally agnostic of container implementation. Separating interoperability from the container provides notable advantages: different containers can be leveraged in the same workflow, and launched applications residing outside of containers can participate in interop activities. Technically speaking, Plexus Interop is a metadata-centric language-agnostic desktop app-to-app interoperability framework with an extensible model for launching new instances of desktop applications on demand. Its extensibility is based on open standards which are essential parts of the project. The architecture is based around central broker providing hub-and-spoke connectivity between apps and brokering strongly-typed RPC-style calls between them. The broker has a connection to an Application Lifecycle Manager (or Launcher) which is capable of creating new instances of apps based on the their runtime-metadata (e.g. container type, launch command, command line parameters) defined in a registry. ![Key components and high level architecture](./docs/src/main/asciidoc/images/architecture.png "Key components and high level architecture") ## Raising an Issue * Please raise issues to the project mailing list ([Web Archive](https://groups.google.com/a/finos.org/forum/#!forum/plx)). Some people from project teams currently can't access build-in github issue tracker from corporate network. * Please also tag the new issue with either "Bug" or "Enhancement". ## Repository Overview Plexus Interop repository consist of the following main sections: * *desktop* - Interop Broker, .NET Interop Client and sample apps implemented in C# using [.NET Core 2.0](https://www.microsoft.com/net/download/core). * *web* - Web Interop Client and sample apps implemented in [TypeScript](https://www.typescriptlang.org/). * *dsl* - [Protobuf](https://developers.google.com/protocol-buffers/) and Plexus Interop grammar parsers, validators and code-generators implemented using [Xtext framework](https://eclipse.org/Xtext/). * *docs* - documentation implemented in [AsciiDoc](http://asciidoc.org/) format using [Asciidoctor](http://asciidoctor.org/) processor. * *protocol* - definitions of Plexus Interop protocol messages in [Protobuf](https://developers.google.com/protocol-buffers/) format. * *samples* - sample interop metadata. Build and samples are currently tested on Windows environments; building and running on Linux/OSX environments is still experimental (see below). ## Build/Install ### General Make sure that Java SDK is installed and [JAVA_HOME variable is set](https://www.mkyong.com/java/how-to-set-java_home-on-windows-10/). All Plexus Interop components can be built using [Gradle](https://gradle.org/) tool using the following single command: `./gradlew build --console plain` Build produces artifacts into folder "bin"; the first run can take 10 minutes or more, depending on your Internet connection speed. ### Build in restricted environment Build configuration should work fine on standard setup, with access to Internet. However it is quite often to have Dev setup behind corporate proxy. To run build successfully you'll need to adjust few configuration items shown below: #### Gradle Proxy Settings To adjust Gradle Proxy settings please update following lines in ```%USERPROFILE%\.gradle\gradle.properties```, using your Corporate Proxy's host and port instead of example values: ``` systemProp.proxySet="true" systemProp.http.proxyHost=proxy.host.acme.com systemProp.http.proxyPort=8080 systemProp.https.proxyHost=proxy.host.acme.com systemProp.https.proxyPort=8080 systemProp.http.nonProxyHosts=*.acme.com|localhost ``` #### Environment variables Please adjust following Environment variables: Name | Value/Example | Description --- | --- | --- `HTTP_PROXY` | `http://userproxy.acme.com:8080` | Your corporate proxy host:port. `HTTPS_PROXY` | `http://userproxy.acme.com:8080` | Your corporate proxy host:port. `NO_PROXY` | `127.0.0.1,localhost,.acme.com` | List of Intranet hosts to exclude from accessing through proxy. `ELECTRON_MIRROR` | `https://github.com/electron/electron/releases/` | Host to download Electron binaries from, if different from default Github releases site. `SASS_BINARY_SITE` | `https://github.com/sass/node-sass/releases/` | Host to download Saas binaries from, if different from default Github releases site. There are also few recommended/optional variables to improve your build/development experience: Name | Value/Example | Description --- | --- | --- `PLEXUS_BUILD_SKIP_DOTNET_TESTS` | `true` | Disable integration tests for .Net components to decrease build time. `PLEXUS_BUILD_SKIP_WEB_TESTS` | `true` | Disable integration tests for Javascript components to decrease build time. `GRADLE_USER_HOME` | `C:\Home\Gradle` | Gradle stores cached packages in `%USERPROFILE%\.gradle` by default, often pointing to Roaming Profile. So it worth to use some local folder instead. Please also copy existing Gradle settings to new folder. `NUGET_PACKAGES` | `C:\Home\NuGetGlobalPackages` | Nuget stores cached binaries in `%USERPROFILE%\.nuget` by default, often pointing to Roaming Profile. So it worth to use some local folder instead. `NPM_REGISTRY_INSTALL` | `https://npm.registry.acme.com` | Can be used to replace default `https://registry.npmjs.org` with another registry/mirror to download NPM dependencies from. ### Using OSX If running on OSX, please update `desktop/src/Plexus.Interop.sln` file and remove any code block that starts with `ProjectSection(ProjectDependencies)` and ends with `EndSection`; if you have already executed the `gradlew` build once, you must cleanup your local checkout using `git clean -d -f -X` (add `-n` for a dry run). ## Running Samples After successful build samples binaries will be located in `bin` directory. Run .Net to Web interop example on Windows: - Go to `bin/win-x86/samples/greeting` (or `bin/osx-x64/samples/greeting` for OSX/Linux) - Launch Broker – `LaunchBroker.cmd` (or `LaunchBroker.sh` for OSX/Linux) - Launch (from a different terminal) Greeting Client – LaunchGreetingClient.cmd - Choose “Discovery” option (5) and “Greeting from Electron Web app” from discovery response ![Sample-1](./docs/src/main/asciidoc/images/sample-1.png "Sample-1") - Enter name, e.g. “John” and hit enter – Web Greeting Server app will be launched by Broker, print Greeting Request: ![Sample-2](./docs/src/main/asciidoc/images/sample-2.png "Sample-2") - And send response back to .Net Greeting Client ![Sample-3](./docs/src/main/asciidoc/images/sample-3.png "Sample-3") - Then choose Discovery (5) and “Greeting from .Net app” from discovery response - Enter another name, e.g. “Mike” and hit enter - .Net Greeting Server app will be launched and print greeting request: ![Sample-4](./docs/src/main/asciidoc/images/sample-4.png "Sample-4") ## Documentation To check out docs, visit [https://plexus.finos.org](https://plexus.finos.org). Documentation project is located in folder 'docs'. We build documentation using [AsciiDoc](http://asciidoc.org/). To render diagrams during the build you need to have [graphviz](http://www.graphviz.org) installed on the machine. Invoke the following command to run the documentation build: `gradlew -p docs --console plain` After successful build documentation is available via: `bin/docs/html5/index.html` ## Contributing 1. Fork it () 2. Create your feature branch (`git checkout -b feature/fooBar`) 3. Read our [contribution guidelines](.github/CONTRIBUTING.md) and [Community Code of Conduct](https://www.finos.org/code-of-conduct) 4. Commit your changes (`git commit -am 'Add some fooBar'`) 5. Push to the branch (`git push origin feature/fooBar`) 6. Create a new Pull Request _NOTE:_ Commits and pull requests to FINOS repositories will only be accepted from those contributors with an active, executed Individual Contributor License Agreement (ICLA) with FINOS OR who are covered under an existing and active Corporate Contribution License Agreement (CCLA) executed with FINOS. Commits from individuals not covered under an ICLA or CCLA will be flagged and blocked by the FINOS Clabot tool. Please note that some CCLAs require individuals/employees to be explicitly named on the CCLA. *Need an ICLA? Unsure if you are covered under an existing CCLA? Email [help@finos.org](mailto:help@finos.org)* ## Troubleshooting Problem: Gradle fails to download dependencies, how to setup proxy configuration? Solution: Pass proxy settings into Gradle via command-line parameters - e.g. `gradlew.bat -Dhttp.proxyHost=myproxy.com -Dhttp.proxyPort=8888 -Dhttps.proxyHost=myproxy.com -D https.proxyPort=4444 ...` ## Updating public documentation As described above, public documentation is served using [GitHub Pages](https://help.github.com/articles/what-is-github-pages) and stored in `gh-pages` branch. So to update it, you simply need to push updated documentation to this branch. `gh-pages` branch structure is different from `master`, so manual update requires few steps: * Clone (if haven't cloned it yet) repository to `plexus-interop` folder * Clone another copy of repository to separate `plexus-interop-docs` folder, checkout `gh-pages` branch there * Create branch for documentation update, e.g. `git checkout -b feature/gh-pages-update` * Return back to folder with main line branch, build documentation `gradlew build -p docs --console plain` * Copy documentation sources - `plexus-interop/docs` to `plexus-interop-docs/docs` * Copy generated documentation - `plexus-interop/bin/html5` to `plexus-interop-docs` (project root) * Go to `plexus-interop-docs`, push the changes and raise PR against `gh-pages` branch ## License The code in this repository is distributed under the Apache License, Version 2.0. Copyright 2017-2019 Plexus Interop Deutsche Bank AG ================================================ FILE: add-file-headers.bat ================================================ call gradlew.bat license --console plain --no-daemon ================================================ FILE: build.bat ================================================ call gradlew.bat build --console plain --no-daemon ================================================ FILE: build.gradle ================================================ buildscript { repositories { mavenCentral() } } allprojects { repositories { mavenCentral() } } subprojects { repositories { mavenCentral() } } ================================================ FILE: desktop/.gitignore ================================================ ## Ignore Visual Studio temporary files, build results, and ## files generated by popular Visual Studio add-ons. ## ## Get latest from https://github.com/github/gitignore/blob/master/VisualStudio.gitignore # User-specific files *.suo *.user *.userosscache *.sln.docstates # User-specific files (MonoDevelop/Xamarin Studio) *.userprefs # Build results [Dd]ebug/ [Dd]ebugPublic/ [Rr]elease/ [Rr]eleases/ x64/ x86/ bld/ [Bb]in/ [Oo]bj/ [Ll]og/ # Proto generated files *.proto.cs # Visual Studio 2015 cache/options directory .vs/ # Uncomment if you have tasks that create the project's static files in wwwroot #wwwroot/ # MSTest test Results [Tt]est[Rr]esult*/ [Bb]uild[Ll]og.* # NUNIT *.VisualState.xml TestResult.xml # Build Results of an ATL Project [Dd]ebugPS/ [Rr]eleasePS/ dlldata.c # .NET Core project.lock.json project.fragment.lock.json artifacts/ packages/ *_i.c *_p.c *_i.h *.ilk *.meta *.obj *.pch *.pdb *.pgc *.pgd *.rsp *.sbr *.tlb *.tli *.tlh *.tmp *.tmp_proj *.log *.vspscc *.vssscc .builds *.pidb *.svclog *.scc # Chutzpah Test files _Chutzpah* # Visual C++ cache files ipch/ *.aps *.ncb *.opendb *.opensdf *.sdf *.cachefile *.VC.db *.VC.VC.opendb # Visual Studio profiler *.psess *.vsp *.vspx *.sap # TFS 2012 Local Workspace $tf/ # Guidance Automation Toolkit *.gpState # ReSharper is a .NET coding add-in _ReSharper*/ *.[Rr]e[Ss]harper *.DotSettings.user # JustCode is a .NET coding add-in .JustCode # TeamCity is a build add-in _TeamCity* # DotCover is a Code Coverage Tool *.dotCover # Visual Studio code coverage results *.coverage *.coveragexml # NCrunch _NCrunch_* .*crunch*.local.xml nCrunchTemp_* # MightyMoose *.mm.* AutoTest.Net/ # Web workbench (sass) .sass-cache/ # Installshield output folder [Ee]xpress/ # DocProject is a documentation generator add-in DocProject/buildhelp/ DocProject/Help/*.HxT DocProject/Help/*.HxC DocProject/Help/*.hhc DocProject/Help/*.hhk DocProject/Help/*.hhp DocProject/Help/Html2 DocProject/Help/html # Click-Once directory publish/ # Publish Web Output *.[Pp]ublish.xml *.azurePubxml # TODO: Comment the next line if you want to checkin your web deploy settings # but database connection strings (with potential passwords) will be unencrypted *.pubxml *.publishproj # Microsoft Azure Web App publish settings. Comment the next line if you want to # checkin your Azure Web App publish settings, but sensitive information contained # in these scripts will be unencrypted PublishScripts/ # NuGet Packages *.nupkg # The packages folder can be ignored because of Package Restore **/packages/* **/nuget-packages/* **/.nuget-restored-packages/* # except build/, which is used as an MSBuild target. !**/packages/build/ # Uncomment if necessary however generally it will be regenerated when needed #!**/packages/repositories.config # NuGet v3's project.json files produces more ignorable files *.nuget.props *.nuget.targets # Microsoft Azure Build Output csx/ *.build.csdef # Microsoft Azure Emulator ecf/ rcf/ # Windows Store app package directories and files AppPackages/ BundleArtifacts/ Package.StoreAssociation.xml _pkginfo.txt # Visual Studio cache files # files ending in .cache can be ignored *.[Cc]ache # but keep track of directories ending in .cache !*.[Cc]ache/ # Others ClientBin/ ~$* *~ *.dbmdl *.dbproj.schemaview *.jfm *.pfx *.publishsettings orleans.codegen.cs # Since there are multiple workflows, uncomment next line to ignore bower_components # (https://github.com/github/gitignore/pull/1529#issuecomment-104372622) #bower_components/ # RIA/Silverlight projects Generated_Code/ # Backup & report files from converting an old project file # to a newer Visual Studio version. Backup files are not needed, # because we have git ;-) _UpgradeReport_Files/ Backup*/ UpgradeLog*.XML UpgradeLog*.htm # SQL Server files *.mdf *.ldf # Business Intelligence projects *.rdl.data *.bim.layout *.bim_*.settings # Microsoft Fakes FakesAssemblies/ # GhostDoc plugin setting file *.GhostDoc.xml # Node.js Tools for Visual Studio .ntvs_analysis.dat node_modules/ # Typescript v1 declaration files typings/ # Visual Studio 6 build log *.plg # Visual Studio 6 workspace options file *.opt # Visual Studio 6 auto-generated workspace file (contains which files were open etc.) *.vbw # Visual Studio LightSwitch build output **/*.HTMLClient/GeneratedArtifacts **/*.DesktopClient/GeneratedArtifacts **/*.DesktopClient/ModelManifest.xml **/*.Server/GeneratedArtifacts **/*.Server/ModelManifest.xml _Pvt_Extensions # Paket dependency manager .paket/paket.exe paket-files/ # FAKE - F# Make .fake/ # JetBrains Rider .idea/ *.sln.iml # CodeRush .cr/ # Python Tools for Visual Studio (PTVS) __pycache__/ *.pyc # Cake - Uncomment if you are using it # tools/** # !tools/packages.config # BenchmarkDotNet BenchmarkDotNet.Artifacts/ # Covers JetBrains IDEs: IntelliJ, RubyMine, PhpStorm, AppCode, PyCharm, CLion, Android Studio and Webstorm # Reference: https://intellij-support.jetbrains.com/hc/en-us/articles/206544839 # User-specific stuff: .idea/**/workspace.xml .idea/**/tasks.xml .idea/dictionaries # Sensitive or high-churn files: .idea/**/dataSources/ .idea/**/dataSources.ids .idea/**/dataSources.xml .idea/**/dataSources.local.xml .idea/**/sqlDataSources.xml .idea/**/dynamic.xml .idea/**/uiDesigner.xml # Gradle: .idea/**/gradle.xml .idea/**/libraries # CMake cmake-build-debug/ # Mongo Explorer plugin: .idea/**/mongoSettings.xml ## File-based project format: *.iws ## Plugin-specific files: # IntelliJ /out/ # mpeltonen/sbt-idea plugin .idea_modules/ # JIRA plugin atlassian-ide-plugin.xml # Cursive Clojure plugin .idea/replstate.xml # Crashlytics plugin (for Android Studio and IntelliJ) com_crashlytics_export_strings.xml crashlytics.properties crashlytics-build.properties fabric.properties ================================================ FILE: desktop/.nuget-local-packages/README.txt ================================================ This folder is added to nuget.config as additional nuget feed. Put packages here if you want to test them without publishing to remote nuget. ================================================ FILE: desktop/NuGet.Config ================================================  ================================================ FILE: desktop/README.txt ================================================ Prerequisites for development: - Windows 7+ - Visual Studio 2017 15.7+ with enabled ".NET Core development" feature OR Visual Studio Code 1.15+ with C# plugin 1.8+. - .NET Core SDK - any version in [2.1.300..2.1.399] for Windows x64 https://www.microsoft.com/net/download/core#/sdk - .NET Framework 4.6+ https://www.microsoft.com/net/download/framework - .NET Framework 4.5 Targeting Pack https://www.microsoft.com/net/targeting - .NET Framework 4.6 Targeting Pack https://www.microsoft.com/net/targeting Run "build.cmd" to build Run "tests.cmd" to run tests ================================================ FILE: desktop/build.cmd ================================================ REM work around for https://github.com/dotnet/cli/issues/3995 set tmp= set temp= if not defined PLEXUS_BUILD_DOTNET_PARAMS ( set PLEXUS_BUILD_DOTNET_PARAMS=/p:CORE_ONLY=true ) CD %~dp0 dotnet.cmd build -c release src\Plexus.Interop.sln %PLEXUS_BUILD_DOTNET_PARAMS% && dotnet.cmd pack -c release -o ..\bin\nuget src\Plexus.Interop.sln %PLEXUS_BUILD_DOTNET_PARAMS% ================================================ FILE: desktop/build.gradle ================================================ import org.apache.tools.ant.taskdefs.condition.Os plugins { id "com.github.hierynomus.license" version"0.14.0" id "de.undercouch.download" version "3.2.0" } repositories { mavenCentral() } def dotnetSdkVersion = "5.0" def buildCache = System.getenv("PLEXUS_BUILD_CACHE_DIR") ?: new File("${rootDir}/build").absolutePath def coreOnly = System.env['PLEXUS_BUILD_CORE_ONLY'] == 'true' def net4Only = System.env['PLEXUS_BUILD_NET4_ONLY'] == 'true' def nugetPublish = System.env['PLEXUS_BUILD_NUGET_PUBLISH'] == 'true' def testsEnabled = Os.isFamily(Os.FAMILY_WINDOWS) && System.env['BuildRunner'] != "MyGet" && System.env['PLEXUS_BUILD_SKIP_DOTNET_TESTS'] != 'true' def nugetVersion = System.getenv("PLEXUS_BUILD_NUGET_VERSION") ?: System.getenv("APPVEYOR_REPO_TAG_NAME") def dotnetParams = nugetVersion == null ? " " : "/p:Version=$nugetVersion" if (net4Only) { dotnetParams += " /p:NET4_ONLY=true" } else if (coreOnly) { dotnetParams += " /p:CORE_ONLY=true" } license { header file("${rootDir}/FILE_HEADER") mapping { cs='JAVADOC_STYLE' proto='DOUBLESLASH_STYLE' interop='DOUBLESLASH_STYLE' } strictCheck true } task licenseFormatCS(type: com.hierynomus.gradle.license.tasks.LicenseFormat) { source = fileTree(dir: 'src').exclude("**/bin/*").exclude("**/obj/*") .exclude("**/google/protobuf/*.proto") .include("**/*.cs").include("**/*.proto").include("**/*.interop") } tasks["license"].dependsOn licenseFormatCS licenseFormat.dependsOn licenseFormatCS task prepareDotnet { doLast { println "Only netcore: $coreOnly" println "Only net4: $net4Only" println "Tests enabled: $testsEnabled" def dotnetVersion = new ByteArrayOutputStream() exec { ignoreExitValue true commandLine 'cmd', '/c', "$projectDir/dotnet.cmd", "--version" standardOutput = dotnetVersion; } dotnetVersion = "$dotnetVersion".trim() if (dotnetVersion.startsWith(dotnetSdkVersion)) { println "Dotnet SDK $dotnetSdkVersion is already installed, skipping downloading" } else { println "Dotnet SDK $dotnetSdkVersion is not installed on the current machine. 'dotnet --version' command output: '$dotnetVersion'. Downloading Dotnet SDK $dotnetSdkVersion to $buildCache." download { onlyIfNewer true src 'https://download.visualstudio.microsoft.com/download/pr/57776397-c87d-4eb8-9080-d58d180ccbe6/920afd9e178bdcd10fcfe696c1fdb88c/dotnet-sdk-5.0.408-win-x64.zip' dest "$buildCache/win/sdk/dotnet.zip" } copy { from zipTree("$buildCache/win/sdk/dotnet.zip") into "$buildCache/win/sdk/dotnet" } tasks.withType(Exec) { environment "PATH", "$buildCache/win/sdk/dotnet/" environment "PLEXUS_BUILD_DOTNET_DIR", "$buildCache/win/sdk/dotnet/" } } } } task compile(type:Exec) { dependsOn 'license' dependsOn prepareDotnet workingDir projectDir environment "PLEXUS_BUILD_DOTNET_PARAMS", dotnetParams commandLine "$projectDir/build.cmd" } if (testsEnabled) { task test(dependsOn: compile, type:Exec) { dependsOn prepareDotnet workingDir projectDir ignoreExitValue false environment "PLEXUS_BUILD_DOTNET_PARAMS", dotnetParams commandLine "$projectDir/tests.cmd" } } else { task test(dependsOn: compile) { doLast { println "Skipping tests because current platform is not Windows or running in MyGet" } } } if (nugetVersion != null && nugetPublish) { task push(dependsOn: test, type:Exec) { dependsOn prepareDotnet workingDir projectDir commandLine "$projectDir/push.cmd" } } else { task push(dependsOn: test) { doLast { println "Skipping push because nuget version is not specified, or publish disabled" } } } task clean { delete fileTree(dir: 'src').include("**/bin/*").include("**/obj/*") } task build (dependsOn: [compile, test, push]) {} ================================================ FILE: desktop/coverage-broker.cmd ================================================ REM work around for https://github.com/dotnet/cli/issues/3995 set tmp= set temp= CD %~dp0 if defined APPVEYOR ( SET LOGGER=Appveyor ) else ( SET LOGGER=xunit ) if not defined NUGET_PACKAGES ( SET NUGET_PACKAGES=%USERPROFILE%\.nuget\packages ) if not exist ..\bin\test-reports mkdir ..\bin\test-reports CALL dotnet restore src\Plexus.Interop.sln && dotnet build src\Plexus.Interop.sln -c debug /p:DebugType=Full && SET PLEXUS_TIMEOUT_MULTIPLIER=10 ^ && %NUGET_PACKAGES%\OpenCover\4.7.922\tools\OpenCover.Console.exe -oldStyle -returntargetcode -register:user -output:..\bin\test-reports\dotnet-coverage.xml ^ -filter:"+[Plexus.*]* -[*.Tests]* -[*.IntegrationTests]* -[*.Testing]* -[Plexus.Interop.Samples.*]* -[Plexus.*]*.Generated.* -[Plexus.Interop.Client*]* -[*.Client]*" -excludebyfile:*.proto.cs;*.g.cs -skipautoprops ^ -targetdir:src -target:dotnet.exe -searchdirs:..\bin\win-x86\broker -targetargs:"test Plexus.Interop.Tests.sln /p:DebugType=Full --test-adapter-path:. --logger:%LOGGER% --verbosity quiet" ^ && %NUGET_PACKAGES%\ReportGenerator\4.0.14\tools\net47\ReportGenerator.exe -reports:..\bin\test-reports\dotnet-coverage.xml -targetdir:..\bin\test-reports\dotnet-coverage -sourcedirs:src reporttypes:Html ================================================ FILE: desktop/coverage-client.cmd ================================================ REM work around for https://github.com/dotnet/cli/issues/3995 set tmp= set temp= CD %~dp0 if defined APPVEYOR ( SET LOGGER=Appveyor ) else ( SET LOGGER=xunit ) if not defined NUGET_PACKAGES ( SET NUGET_PACKAGES=%USERPROFILE%\.nuget\packages ) if not exist ..\bin\test-reports mkdir ..\bin\test-reports CALL dotnet restore src\Plexus.Interop.sln && dotnet build src\Plexus.Interop.sln -c debug /p:DebugType=Full && SET PLEXUS_TIMEOUT_MULTIPLIER=10 ^ && %NUGET_PACKAGES%\OpenCover\4.7.922\tools\OpenCover.Console.exe -oldStyle -returntargetcode -register:user -output:..\bin\test-reports\dotnet-coverage.xml ^ -filter:"+[Plexus.*]* -[*.Tests]* -[*.IntegrationTests]* -[*.Testing]* -[Plexus.Interop.Samples.*]* -[Plexus.*]*.Generated.* -[Plexus.Interop.Broker*]* -[Plexus.Interop.Apps.Manager*]* -[Plexus.Interop.Metamodel*]* -[*.Server]*" -excludebyfile:*.proto.cs;*.g.cs -skipautoprops ^ -targetdir:src -target:dotnet.exe -searchdirs:..\bin\win-x86\broker -targetargs:"test Plexus.Interop.Tests.sln /p:DebugType=Full --test-adapter-path:. --logger:%LOGGER% --verbosity quiet" ^ && %NUGET_PACKAGES%\ReportGenerator\4.0.14\tools\net47\ReportGenerator.exe -reports:..\bin\test-reports\dotnet-coverage.xml -targetdir:..\bin\test-reports\dotnet-coverage -sourcedirs:src reporttypes:Html ================================================ FILE: desktop/coverage.cmd ================================================ REM work around for https://github.com/dotnet/cli/issues/3995 set tmp= set temp= CD %~dp0 if defined APPVEYOR ( SET LOGGER=Appveyor ) else ( SET LOGGER=xunit ) if not defined NUGET_PACKAGES ( SET NUGET_PACKAGES=%USERPROFILE%\.nuget\packages ) if not exist ..\bin\test-reports mkdir ..\bin\test-reports CALL dotnet restore src\Plexus.Interop.sln && dotnet build src\Plexus.Interop.sln -c debug /p:DebugType=Full && SET PLEXUS_TIMEOUT_MULTIPLIER=10 ^ && %NUGET_PACKAGES%\OpenCover\4.7.922\tools\OpenCover.Console.exe -oldStyle -returntargetcode -register:user -output:..\bin\test-reports\dotnet-coverage.xml ^ -filter:"+[Plexus.*]* -[*.Tests]* -[*.IntegrationTests]* -[*.Testing]* -[Plexus.Interop.Samples.*]* -[Plexus.*]*.Generated.*" -excludebyfile:*.proto.cs;*.g.cs -skipautoprops ^ -targetdir:src -target:dotnet.exe -searchdirs:..\bin\win-x86\broker -targetargs:"test Plexus.Interop.Tests.sln /p:DebugType=Full --test-adapter-path:. --logger:%LOGGER% --verbosity quiet" ^ && %NUGET_PACKAGES%\ReportGenerator\4.0.14\tools\net47\ReportGenerator.exe -reports:..\bin\test-reports\dotnet-coverage.xml -targetdir:..\bin\test-reports\dotnet-coverage -sourcedirs:src reporttypes:Html ================================================ FILE: desktop/dotnet.cmd ================================================ @ECHO OFF "%PLEXUS_BUILD_DOTNET_DIR%dotnet.exe" %* ================================================ FILE: desktop/global.json ================================================ { "projects": [ "src" ], "sdk": { "version": "5.0.100", "allowPrerelease": false, "rollForward": "minor" } } ================================================ FILE: desktop/push.cmd ================================================ @ECHO OFF REM work around for https://github.com/dotnet/cli/issues/3995 set tmp= set temp= CD %~dp0 if not defined PLEXUS_BUILD_NUGET_PUSH_TIMEOUT ( SET PLEXUS_BUILD_NUGET_PUSH_TIMEOUT=3600 ) dotnet nuget push ..\bin\nuget\*.nupkg -s %PLEXUS_BUILD_NUGET_SOURCE% -k %PLEXUS_BUILD_NUGET_API_KEY% -t %PLEXUS_BUILD_NUGET_PUSH_TIMEOUT% -n true ================================================ FILE: desktop/src/Common.csproj ================================================ latest 0.1.0 Plexus Interop Deutsche Bank AG Deutsche Bank AG Plexus Interop Copyright © Plexus Interop Deutsche Bank AG 2017-2018 https://github.com/finos-plexus/plexus-interop/blob/master/LICENSE http://plexus.finos.org https://github.com/finos-plexus/plexus-interop plexus interop finos Plexus Interop is metadata-centric language-agnostic desktop app-to-app interoperability framework with extensible model for launching new instances of desktop Apps on demand. true ================================================ FILE: desktop/src/Plexus.Channels/ChannelExtensions.cs ================================================ /** * Copyright 2017-2021 Plexus Interop Deutsche Bank AG * SPDX-License-Identifier: Apache-2.0 * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ namespace Plexus.Channels { using System; using System.Runtime.CompilerServices; using System.Threading; using System.Threading.Tasks; public static class ChannelExtensions { private static readonly Task CompletedTask; static ChannelExtensions() { var tcs = new TaskCompletionSource(); tcs.SetResult(Nothing.Instance); CompletedTask = tcs.Task; } public static async Task CompleteAsync(this ITerminatableWritableChannel channel) { channel.TryComplete(); await channel.Completion.ConfigureAwait(false); } public static async Task TerminateAsync(this ITerminatableWritableChannel channel, Exception error = null) { channel.TryTerminate(error); await channel.Completion.ConfigureAwait(false); } [MethodImpl(MethodImplOptions.AggressiveInlining)] public static async Task WriteAsync(this IWritableChannel channel, T item, CancellationToken cancellationToken = default) { var result = await channel.TryWriteAsync(item, cancellationToken).ConfigureAwait(false); if (!result) { throw new OperationCanceledException(); } } [MethodImpl(MethodImplOptions.AggressiveInlining)] public static async Task WriteOrDisposeAsync(this IWritableChannel channel, T item, CancellationToken cancellationToken = default) where T : IDisposable { try { await channel.WriteAsync(item, cancellationToken).ConfigureAwait(false); } catch { item.Dispose(); throw; } } [MethodImpl(MethodImplOptions.AggressiveInlining)] public static async Task TryWriteAsync(this IWritableChannel channel, T item, CancellationToken cancellationToken = default) { do { if (channel.TryWrite(item)) { return true; } } while (await channel.WaitWriteAvailableAsync(cancellationToken).ConfigureAwait(false)); return false; } [MethodImpl(MethodImplOptions.AggressiveInlining)] public static async ValueTask ReadAsync(this IReadableChannel channel, CancellationToken cancellationToken = default) { var result = await channel.TryReadAsync(cancellationToken).ConfigureAwait(false); if (!result.HasValue) { throw new OperationCanceledException(); } return result.Value; } [MethodImpl(MethodImplOptions.AggressiveInlining)] public static async ValueTask> TryReadAsync(this IReadableChannel channel, CancellationToken cancellationToken = default) { do { if (channel.TryRead(out var item)) { return item; } } while (await channel.WaitReadAvailableAsync(cancellationToken).ConfigureAwait(false)); return Maybe.Nothing; } public static void Terminate( this ITerminatableWritableChannel channel, Exception error = null) { if (!channel.TryTerminate(error)) { throw new OperationCanceledException(); } } public static void Complete(this ITerminatableWritableChannel channel) { if (!channel.TryComplete()) { throw new OperationCanceledException(); } } public static bool IsCompleted(this IReadableChannel channel) { return channel.Completion.IsCompleted; } public static bool IsCompleted(this ITerminatableWritableChannel channel) { return channel.Completion.IsCompleted; } [MethodImpl(MethodImplOptions.AggressiveInlining)] public static Task DisposeRemainingItemsAsync( this IReadableChannel channel) where T : IDisposable { return channel.ConsumeAsync(x => x.Dispose()); } [MethodImpl(MethodImplOptions.AggressiveInlining)] public static void DisposeBufferedItems( this IReadableChannel channel) where T : IDisposable { channel.ConsumeBufferedItems(x => x.Dispose()); } [MethodImpl(MethodImplOptions.AggressiveInlining)] public static void ConsumeBufferedItems( this IReadableChannel channel, Action handle) { while (channel.TryRead(out var item)) { handle(item); } } [MethodImpl(MethodImplOptions.AggressiveInlining)] public static Task ConsumeAsync( this IReadableChannel channel, Action handle, CancellationToken cancellationToken = default, Func onCompletedAsync = null, Func onTerminatedAsync = null) { return channel.ConsumeAsync( x => { handle(x); return CompletedTask; }, cancellationToken, onCompletedAsync, onTerminatedAsync); } [MethodImpl(MethodImplOptions.AggressiveInlining)] public static async Task ConsumeAsync( this IReadableChannel channel, Func handleAsync, CancellationToken cancellationToken = default, Func onCompletedAsync = null, Func onTerminatedAsync = null) { try { do { while (channel.TryRead(out var item)) { await handleAsync(item).ConfigureAwait(false); } } while (await channel.WaitReadAvailableAsync(cancellationToken).ConfigureAwait(false)); if (onCompletedAsync != null) { await onCompletedAsync().ConfigureAwait(false); } } catch (Exception ex) { if (onTerminatedAsync != null) { await onTerminatedAsync(ex).ConfigureAwait(false); } else { throw; } } } [MethodImpl(MethodImplOptions.AggressiveInlining)] public static async ValueTask FirstAsync( this IReadableChannel channel, Func predicate, CancellationToken cancellationToken = default) { while (!cancellationToken.IsCancellationRequested) { var item = await channel.TryReadAsync(cancellationToken); cancellationToken.ThrowIfCancellationRequested(); if (item.HasValue && predicate(item.Value)) { return item.Value; } } throw new Exception("There is no first element in sequence"); } [MethodImpl(MethodImplOptions.AggressiveInlining)] public static async ValueTask FirstAsync( this IReadableChannel channel, CancellationToken cancellationToken = default) { while (!cancellationToken.IsCancellationRequested) { var item = await channel.TryReadAsync(cancellationToken); cancellationToken.ThrowIfCancellationRequested(); if (item.HasValue) { return item.Value; } } throw new Exception("There is no first element in sequence"); } } } ================================================ FILE: desktop/src/Plexus.Channels/Plexus.Channels.csproj ================================================ netstandard2.0;net45 net45 netstandard2.0 ================================================ FILE: desktop/src/Plexus.Common.Contracts/AppConnectionDescriptor.cs ================================================ /** * Copyright 2017-2021 Plexus Interop Deutsche Bank AG * SPDX-License-Identifier: Apache-2.0 * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ namespace Plexus { public sealed class AppConnectionDescriptor { public UniqueId ConnectionId { get; } public string ApplicationId { get; } public UniqueId ApplicationInstanceId { get; } public TransportType TransportType { get; } public AppConnectionDescriptor( UniqueId connectionId, string applicationId, UniqueId applicationInstanceId, TransportType transportType) { ConnectionId = connectionId; ApplicationId = applicationId; ApplicationInstanceId = applicationInstanceId; TransportType = transportType; } public override bool Equals(object obj) => obj is AppConnectionDescriptor other && ConnectionId == other.ConnectionId && ApplicationId == other.ApplicationId && ApplicationInstanceId == other.ApplicationInstanceId && TransportType == other.TransportType; public override int GetHashCode() => ConnectionId.GetHashCode() ^ ApplicationId.GetHashCode() ^ ApplicationInstanceId.GetHashCode() ^ TransportType.GetHashCode(); public override string ToString() => $"{ApplicationId}, " + $"{nameof(ConnectionId)}: {ConnectionId}, " + $"{nameof(ApplicationInstanceId)}: {ApplicationInstanceId}, " + $"{nameof(TransportType)}: {TransportType}"; } } ================================================ FILE: desktop/src/Plexus.Common.Contracts/BrokerFeatures.cs ================================================ /** * Copyright 2017-2021 Plexus Interop Deutsche Bank AG * SPDX-License-Identifier: Apache-2.0 * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ namespace Plexus { using System; [Flags] public enum BrokerFeatures : long { None = 0, CheckAppInstanceId = 1, UseWSS = 2, } } ================================================ FILE: desktop/src/Plexus.Common.Contracts/Channels/ChannelWriteTimeoutException.cs ================================================ /** * Copyright 2017-2021 Plexus Interop Deutsche Bank AG * SPDX-License-Identifier: Apache-2.0 * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ namespace Plexus.Channels { using System; public sealed class ChannelWriteTimeoutException : Exception { public ChannelWriteTimeoutException(TimeSpan timeout) : base( $"Timeout {timeout.TotalSeconds}sec on writing to channel") { } } } ================================================ FILE: desktop/src/Plexus.Common.Contracts/Channels/IChannel.cs ================================================ /** * Copyright 2017-2021 Plexus Interop Deutsche Bank AG * SPDX-License-Identifier: Apache-2.0 * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ namespace Plexus.Channels { public interface IChannel { ITerminatableWritableChannel Out { get; } IReadableChannel In { get; } } } ================================================ FILE: desktop/src/Plexus.Common.Contracts/Channels/IReadableChannel.cs ================================================ /** * Copyright 2017-2021 Plexus Interop Deutsche Bank AG * SPDX-License-Identifier: Apache-2.0 * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ namespace Plexus.Channels { using System.Threading; using System.Threading.Tasks; public interface IReadableChannel { Task Completion { get; } bool TryRead(out T item); Task WaitReadAvailableAsync(CancellationToken cancellationToken = default); } } ================================================ FILE: desktop/src/Plexus.Common.Contracts/Channels/ITerminatableWritableChannel.cs ================================================ /** * Copyright 2017-2021 Plexus Interop Deutsche Bank AG * SPDX-License-Identifier: Apache-2.0 * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ namespace Plexus.Channels { using System; public interface ITerminatableWritableChannel : IWritableChannel { bool TryComplete(); bool TryTerminate(Exception error = null); } } ================================================ FILE: desktop/src/Plexus.Common.Contracts/Channels/IWritableChannel.cs ================================================ /** * Copyright 2017-2021 Plexus Interop Deutsche Bank AG * SPDX-License-Identifier: Apache-2.0 * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ namespace Plexus.Channels { using System.Threading; using System.Threading.Tasks; public interface IWritableChannel { Task Completion { get; } bool TryWrite(T item); Task WaitWriteAvailableAsync(CancellationToken cancellationToken = default); } } ================================================ FILE: desktop/src/Plexus.Common.Contracts/EnvironmentHelper.cs ================================================ /** * Copyright 2017-2021 Plexus Interop Deutsche Bank AG * SPDX-License-Identifier: Apache-2.0 * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ namespace Plexus { using System; using System.Security.Authentication; using System.Security.Cryptography.X509Certificates; public static class EnvironmentHelper { public const string BrokerWorkingDirVarName = "PLEXUS_BROKER_WORKING_DIR"; public const string AppInstanceIdVarName = "PLEXUS_APP_INSTANCE_ID"; public const string ParentProcessIdVarName = "PLEXUS_PARENT_PROCESS_ID"; public const string PlexusTimeoutMultiplier = "PLEXUS_TIMEOUT_MULTIPLIER"; public const string PlexusBrokerWebSocketAddress = "PLEXUS_BROKER_WEBSOCKET_ADDRESS"; public const string PlexusBrokerWebSocketSecureAddress = "PLEXUS_BROKER_WEBSOCKETSECURE_ADDRESS"; public const string PlexusBrokerPipeAddress = "PLEXUS_BROKER_PIPE_ADDRESS"; public const string BrokerFeatures = "PLEXUS_BROKER_FEATURES"; public const string LauncherId = "PLEXUS_TRUSTED_LAUNCHER_ID"; public const string CertificatePath = "PLEXUS_CERTIFICATE_PATH"; public const string CertificatePassword = "PLEXUS_CERTIFICATE_PASSWORD"; public const string CertificateKeyStorageFlags = "PLEXUS_CERTIFICATE_KEY_STORAGE_FLAGS"; public const string SslProtocols = "PLEXUS_SSL_PROTOCOLS"; public static string GetBrokerWorkingDir() { return Environment.GetEnvironmentVariable(BrokerWorkingDirVarName); } public static string GetBrokerWorkingDirOrThrow() { return GetBrokerWorkingDir() ?? throw new InvalidOperationException( $"Expected environment variable {BrokerWorkingDirVarName} not set"); } public static string GetAppInstanceId() { return Environment.GetEnvironmentVariable(AppInstanceIdVarName); } public static string GetParentProcessId() { return Environment.GetEnvironmentVariable(ParentProcessIdVarName); } public static double GetPlexusTimeoutMultiplier() { return double.TryParse(Environment.GetEnvironmentVariable(PlexusTimeoutMultiplier), out var multiplier) ? multiplier : 1; } public static string GetWebSocketAddress() { return Environment.GetEnvironmentVariable(PlexusBrokerWebSocketAddress); } public static string GetWebSocketSecureAddress() { return Environment.GetEnvironmentVariable(PlexusBrokerWebSocketSecureAddress); } public static string GetPipeAddress() { return Environment.GetEnvironmentVariable(PlexusBrokerPipeAddress); } public static BrokerFeatures GetBrokerFeatures() { var rawValue = Environment.GetEnvironmentVariable(BrokerFeatures); if (string.IsNullOrEmpty(rawValue)) return Plexus.BrokerFeatures.None; return (BrokerFeatures)Enum.Parse(typeof(BrokerFeatures), rawValue); } public static UniqueId? GetLauncherAppInstanceId() { var rawValue = Environment.GetEnvironmentVariable(LauncherId); if (string.IsNullOrEmpty(rawValue)) return null; return UniqueId.FromString(rawValue); } public static string GetCertificatePath() { return Environment.GetEnvironmentVariable(CertificatePath); } public static string GetCertificatePassword() { return Environment.GetEnvironmentVariable(CertificatePassword); } public static X509KeyStorageFlags GetCertificateKeyStorageFlags() { var rawValue = Environment.GetEnvironmentVariable(CertificateKeyStorageFlags); if (string.IsNullOrEmpty(rawValue)) return X509KeyStorageFlags.DefaultKeySet; return (X509KeyStorageFlags)Enum.Parse(typeof(X509KeyStorageFlags), rawValue); } public static SslProtocols GetSslProtocols() { var rawValue = Environment.GetEnvironmentVariable(SslProtocols); if (string.IsNullOrEmpty(rawValue)) return System.Security.Authentication.SslProtocols.None; return (SslProtocols)Enum.Parse(typeof(SslProtocols), rawValue); } } } ================================================ FILE: desktop/src/Plexus.Common.Contracts/Maybe.cs ================================================ /** * Copyright 2017-2021 Plexus Interop Deutsche Bank AG * SPDX-License-Identifier: Apache-2.0 * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ using System; using System.Collections.Generic; namespace Plexus { public struct Maybe : IEquatable> { public static readonly Maybe Nothing = new Maybe(); private readonly T _value; public Maybe(T value) { HasValue = true; _value = value; } public bool HasValue { get; } public T Value { get { if (!HasValue) { throw new InvalidOperationException("Value not set"); } return _value; } } public static implicit operator Maybe(T value) { return new Maybe(value); } public static implicit operator Maybe(Nothing value) { return Nothing; } public T GetValueOrDefault() { return HasValue ? Value : default; } public T GetValueOrDefault(T defaultValue) { return HasValue ? Value : defaultValue; } public T GetValueOrThrowException(TException exception) where TException : Exception { if (!HasValue) { throw exception; } return Value; } public T GetValueOrThrowException() where TException : Exception, new() { if (!HasValue) { throw new TException(); } return Value; } public override string ToString() { return HasValue ? Value?.ToString() : Plexus.Nothing.Instance.ToString(); } public override bool Equals(object obj) { return obj is Maybe maybe && Equals(maybe); } public bool Equals(Maybe other) { return EqualityComparer.Default.Equals(_value, other._value) && HasValue == other.HasValue; } public static bool operator ==(Maybe left, Maybe right) { return left.Equals(right); } public static bool operator !=(Maybe left, Maybe right) { return !left.Equals(right); } public override int GetHashCode() { var hashCode = 1814622215; hashCode = hashCode * -1521134295 + base.GetHashCode(); hashCode = hashCode * -1521134295 + EqualityComparer.Default.GetHashCode(_value); hashCode = hashCode * -1521134295 + HasValue.GetHashCode(); return hashCode; } } } ================================================ FILE: desktop/src/Plexus.Common.Contracts/Nothing.cs ================================================ /** * Copyright 2017-2021 Plexus Interop Deutsche Bank AG * SPDX-License-Identifier: Apache-2.0 * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ namespace Plexus { public struct Nothing { public static readonly Nothing Instance = new Nothing(); public override bool Equals(object obj) { return obj is Nothing; } public override int GetHashCode() { return 0; } public override string ToString() { return ""; } } } ================================================ FILE: desktop/src/Plexus.Common.Contracts/Plexus.Common.Contracts.csproj ================================================  netstandard2.0;net45 net45 netstandard2.0 Plexus ================================================ FILE: desktop/src/Plexus.Common.Contracts/Pools/IPooledBuffer.cs ================================================ /** * Copyright 2017-2021 Plexus Interop Deutsche Bank AG * SPDX-License-Identifier: Apache-2.0 * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ namespace Plexus.Pools { public interface IPooledBuffer : IPooledObject { byte[] Array { get; } int Offset { get; } int Count { get; } } } ================================================ FILE: desktop/src/Plexus.Common.Contracts/Pools/IPooledObject.cs ================================================ /** * Copyright 2017-2021 Plexus Interop Deutsche Bank AG * SPDX-License-Identifier: Apache-2.0 * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ namespace Plexus.Pools { using System; public interface IPooledObject : IDisposable { void Retain(); } } ================================================ FILE: desktop/src/Plexus.Common.Contracts/TransportType.cs ================================================ /** * Copyright 2017-2021 Plexus Interop Deutsche Bank AG * SPDX-License-Identifier: Apache-2.0 * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ namespace Plexus { public enum TransportType { Pipe, Ws, Wss } } ================================================ FILE: desktop/src/Plexus.Common.Contracts/UniqueId.cs ================================================ /** * Copyright 2017-2021 Plexus Interop Deutsche Bank AG * SPDX-License-Identifier: Apache-2.0 * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ namespace Plexus { using System; using System.Linq; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; // This class keeps UUID bytes in little-endian order [StructLayout(LayoutKind.Sequential)] public struct UniqueId : IEquatable { public static readonly UniqueId Empty = new UniqueId(0, 0); private readonly string _string; private UniqueId(ulong hi, ulong lo) { Hi = hi; Lo = lo; var hiPart = BitConverter.GetBytes(hi); var loPart = BitConverter.GetBytes(lo); if (BitConverter.IsLittleEndian) { Reverse(hiPart, 0, 8); Reverse(loPart, 0, 8); } var bytes = hiPart.Concat(loPart).ToArray(); _string = BitConverter.ToString(bytes).Replace("-", ""); } public ulong Hi { get; } public ulong Lo { get; } public string String => _string ?? Empty.String; public static UniqueId Generate() { var guid = Guid.NewGuid(); var bytes = guid.ToByteArray(); if (BitConverter.IsLittleEndian) { Convert(bytes); } Reverse(bytes, 0, 16); var hi = GetLong(bytes, 0); var lo = GetLong(bytes, 8); return new UniqueId(hi, lo); } public static UniqueId FromString(string value) { var bytes = HexStringToByteArray(value); return new UniqueId(GetLong(bytes, 0), GetLong(bytes, 8)); } public static UniqueId FromHiLo(ulong hi, ulong lo) { return new UniqueId(hi, lo); } public override string ToString() { return String; } [MethodImpl(MethodImplOptions.AggressiveInlining)] private static void Reverse(byte[] bytes, int from, int to) { for (var i = from; i < (to - from) / 2; i++) { var t = bytes[i]; bytes[i] = bytes[to - i - 1]; bytes[to - i - 1] = t; } } [MethodImpl(MethodImplOptions.AggressiveInlining)] private static void Convert(byte[] guidBytes) { // reverse first 4 bytes var t = guidBytes[0]; guidBytes[0] = guidBytes[3]; guidBytes[3] = t; guidBytes[3] = t; t = guidBytes[1]; guidBytes[1] = guidBytes[2]; guidBytes[2] = t; // reverse next 2 bytes t = guidBytes[4]; guidBytes[4] = guidBytes[5]; guidBytes[5] = t; // reverse next 2 bytes t = guidBytes[6]; guidBytes[6] = guidBytes[7]; guidBytes[7] = t; } [MethodImpl(MethodImplOptions.AggressiveInlining)] private static byte[] HexStringToByteArray(string hex) { if (hex.Length % 2 == 1) { throw new Exception("The binary key cannot have an odd number of digits"); } var arr = new byte[hex.Length >> 1]; for (var i = 0; i < hex.Length >> 1; ++i) { arr[i] = (byte)((GetHexVal(hex[i << 1]) << 4) + (GetHexVal(hex[(i << 1) + 1]))); } return arr; } [MethodImpl(MethodImplOptions.AggressiveInlining)] private static int GetHexVal(char hex) { var val = (int)hex; //For uppercase A-F letters: return val - (val < 58 ? 48 : 55); } private static ulong GetLong(byte[] bytes, int i) { ulong x = 0; for (var j = 0; j < 8; j++) { x = (x << 8) | bytes[i + j]; } return x; } public static bool operator ==(UniqueId left, UniqueId right) { return left.Equals(right); } public static bool operator !=(UniqueId left, UniqueId right) { return !left.Equals(right); } public bool Equals(UniqueId other) { return Hi == other.Hi && Lo == other.Lo; } public override bool Equals(object obj) { if (ReferenceEquals(null, obj)) return false; return obj is UniqueId && Equals((UniqueId) obj); } public override int GetHashCode() { unchecked { return (Hi.GetHashCode() * 397) ^ Lo.GetHashCode(); } } } } ================================================ FILE: desktop/src/Plexus.Host/Generate.cmd ================================================ set INTEROP_METADATA_PATH=..\..\..\dsl\interop-lang\src\main\resources set INTEROP_MANIFEST_PATH=command_line_tool.interop set CSHARP_NAMESPACE=internal_access:Plexus.Host.Internal.Generated set CSHARP_OUT=Internal\Generated plexus gen-csharp -b %INTEROP_METADATA_PATH% -i %INTEROP_MANIFEST_PATH% -o %CSHARP_OUT% -n %CSHARP_NAMESPACE% -v ================================================ FILE: desktop/src/Plexus.Host/Internal/BrokerCliOptions.cs ================================================ /** * Copyright 2017-2021 Plexus Interop Deutsche Bank AG * SPDX-License-Identifier: Apache-2.0 * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ namespace Plexus.Host.Internal { using CommandLine; using CommandLine.Text; #if !NET45 [Verb("start", HelpText = "Start interop broker.")] #endif internal class StartCliOptions { [Option('m', "metadata", Required = false, HelpText = "Directory to seek for metadata files: apps.json and interop.json.")] public string Metadata { get; set; } [Option('p', "port", Required = false, HelpText = "WS port number to listen. If omitted, free port is selected automatically.")] public uint Port { get; set; } [Option("wssport", Required = false, HelpText = "WSS port number to listen. If omitted, free port is selected automatically.")] public uint WssPort { get; set; } } #if !NET45 [Verb("broker", HelpText = "Start interop broker.")] #endif internal class BrokerCliOptions : StartCliOptions { } } ================================================ FILE: desktop/src/Plexus.Host/Internal/BrokerProgram.cs ================================================ /** * Copyright 2017-2021 Plexus Interop Deutsche Bank AG * SPDX-License-Identifier: Apache-2.0 * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ namespace Plexus.Host.Internal { using System.Threading; using System.Threading.Tasks; using Plexus.Interop; internal sealed class BrokerProgram : IProgram { private int _stopped; private IBroker _broker; private readonly BrokerOptions _options; public BrokerProgram(BrokerOptions options) { _options = options; } public string Name { get; } = "Interop Broker"; public string InstanceKey { get; } = "plexus-interop-broker"; public InstanceAwareness InstanceAwareness { get; } = InstanceAwareness.SingleInstancePerDirectory; public async Task StartAsync() { _broker = BrokerFactory.Instance.Create(_options); if (_stopped == 1) { return Task.FromResult(0); } await _broker.StartAsync().ConfigureAwait(false); return _broker.Completion; } public async Task ShutdownAsync() { if (Interlocked.Exchange(ref _stopped, 1) == 0 && _broker != null) { _broker.Stop(); await _broker.Completion.ConfigureAwait(false); } } } } ================================================ FILE: desktop/src/Plexus.Host/Internal/Generated/interop/AppConnectionDescriptor.msg.g.cs ================================================ /** * Copyright 2017-2021 Plexus Interop Deutsche Bank AG * SPDX-License-Identifier: Apache-2.0 * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ // // Generated by the protocol buffer compiler. DO NOT EDIT! // source: interop/app_connection_descriptor.proto // #pragma warning disable 1591, 0612, 3021 #region Designer generated code using pb = global::Google.Protobuf; using pbc = global::Google.Protobuf.Collections; using pbr = global::Google.Protobuf.Reflection; using scg = global::System.Collections.Generic; namespace Plexus.Host.Internal.Generated { /// Holder for reflection information generated from interop/app_connection_descriptor.proto internal static partial class AppConnectionDescriptorReflection { #region Descriptor /// File descriptor for interop/app_connection_descriptor.proto public static pbr::FileDescriptor Descriptor { get { return descriptor; } } private static pbr::FileDescriptor descriptor; static AppConnectionDescriptorReflection() { byte[] descriptorData = global::System.Convert.FromBase64String( string.Concat( "CidpbnRlcm9wL2FwcF9jb25uZWN0aW9uX2Rlc2NyaXB0b3IucHJvdG8SB2lu", "dGVyb3AaF2ludGVyb3AvdW5pcXVlX2lkLnByb3RvGhVpbnRlcm9wL29wdGlv", "bnMucHJvdG8i1AEKF0FwcENvbm5lY3Rpb25EZXNjcmlwdG9yEigKDWNvbm5l", "Y3Rpb25faWQYASABKAsyES5pbnRlcm9wLlVuaXF1ZUlkEg4KBmFwcF9pZBgC", "IAEoCRIqCg9hcHBfaW5zdGFuY2VfaWQYAyABKAsyES5pbnRlcm9wLlVuaXF1", "ZUlkEi4KDnRyYW5zcG9ydF90eXBlGAQgASgOMhYuaW50ZXJvcC5UcmFuc3Bv", "cnRUeXBlOiOS2wQfaW50ZXJvcC5BcHBDb25uZWN0aW9uRGVzY3JpcHRvcio3", "Cg1UcmFuc3BvcnRUeXBlEgsKB1Vua25vd24QABIICgRQaXBlEAESBgoCV3MQ", "AhIHCgNXc3MQA0IhqgIeUGxleHVzLkhvc3QuSW50ZXJuYWwuR2VuZXJhdGVk", "YgZwcm90bzM=")); descriptor = pbr::FileDescriptor.FromGeneratedCode(descriptorData, new pbr::FileDescriptor[] { global::Plexus.Host.Internal.Generated.UniqueIdReflection.Descriptor, global::Plexus.Host.Internal.Generated.OptionsReflection.Descriptor, }, new pbr::GeneratedClrTypeInfo(new[] {typeof(global::Plexus.Host.Internal.Generated.TransportType), }, null, new pbr::GeneratedClrTypeInfo[] { new pbr::GeneratedClrTypeInfo(typeof(global::Plexus.Host.Internal.Generated.AppConnectionDescriptor), global::Plexus.Host.Internal.Generated.AppConnectionDescriptor.Parser, new[]{ "ConnectionId", "AppId", "AppInstanceId", "TransportType" }, null, null, null, null) })); } #endregion } #region Enums internal enum TransportType { [pbr::OriginalName("Unknown")] Unknown = 0, [pbr::OriginalName("Pipe")] Pipe = 1, [pbr::OriginalName("Ws")] Ws = 2, [pbr::OriginalName("Wss")] Wss = 3, } #endregion #region Messages internal sealed partial class AppConnectionDescriptor : pb::IMessage #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE , pb::IBufferMessage #endif { private static readonly pb::MessageParser _parser = new pb::MessageParser(() => new AppConnectionDescriptor()); private pb::UnknownFieldSet _unknownFields; [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public static pb::MessageParser Parser { get { return _parser; } } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public static pbr::MessageDescriptor Descriptor { get { return global::Plexus.Host.Internal.Generated.AppConnectionDescriptorReflection.Descriptor.MessageTypes[0]; } } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] pbr::MessageDescriptor pb::IMessage.Descriptor { get { return Descriptor; } } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public AppConnectionDescriptor() { OnConstruction(); } partial void OnConstruction(); [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public AppConnectionDescriptor(AppConnectionDescriptor other) : this() { connectionId_ = other.connectionId_ != null ? other.connectionId_.Clone() : null; appId_ = other.appId_; appInstanceId_ = other.appInstanceId_ != null ? other.appInstanceId_.Clone() : null; transportType_ = other.transportType_; _unknownFields = pb::UnknownFieldSet.Clone(other._unknownFields); } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public AppConnectionDescriptor Clone() { return new AppConnectionDescriptor(this); } /// Field number for the "connection_id" field. public const int ConnectionIdFieldNumber = 1; private global::Plexus.Host.Internal.Generated.UniqueId connectionId_; [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public global::Plexus.Host.Internal.Generated.UniqueId ConnectionId { get { return connectionId_; } set { connectionId_ = value; } } /// Field number for the "app_id" field. public const int AppIdFieldNumber = 2; private string appId_ = ""; [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public string AppId { get { return appId_; } set { appId_ = pb::ProtoPreconditions.CheckNotNull(value, "value"); } } /// Field number for the "app_instance_id" field. public const int AppInstanceIdFieldNumber = 3; private global::Plexus.Host.Internal.Generated.UniqueId appInstanceId_; [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public global::Plexus.Host.Internal.Generated.UniqueId AppInstanceId { get { return appInstanceId_; } set { appInstanceId_ = value; } } /// Field number for the "transport_type" field. public const int TransportTypeFieldNumber = 4; private global::Plexus.Host.Internal.Generated.TransportType transportType_ = global::Plexus.Host.Internal.Generated.TransportType.Unknown; [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public global::Plexus.Host.Internal.Generated.TransportType TransportType { get { return transportType_; } set { transportType_ = value; } } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public override bool Equals(object other) { return Equals(other as AppConnectionDescriptor); } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public bool Equals(AppConnectionDescriptor other) { if (ReferenceEquals(other, null)) { return false; } if (ReferenceEquals(other, this)) { return true; } if (!object.Equals(ConnectionId, other.ConnectionId)) return false; if (AppId != other.AppId) return false; if (!object.Equals(AppInstanceId, other.AppInstanceId)) return false; if (TransportType != other.TransportType) return false; return Equals(_unknownFields, other._unknownFields); } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public override int GetHashCode() { int hash = 1; if (connectionId_ != null) hash ^= ConnectionId.GetHashCode(); if (AppId.Length != 0) hash ^= AppId.GetHashCode(); if (appInstanceId_ != null) hash ^= AppInstanceId.GetHashCode(); if (TransportType != global::Plexus.Host.Internal.Generated.TransportType.Unknown) hash ^= TransportType.GetHashCode(); if (_unknownFields != null) { hash ^= _unknownFields.GetHashCode(); } return hash; } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public override string ToString() { return pb::JsonFormatter.ToDiagnosticString(this); } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public void WriteTo(pb::CodedOutputStream output) { #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE output.WriteRawMessage(this); #else if (connectionId_ != null) { output.WriteRawTag(10); output.WriteMessage(ConnectionId); } if (AppId.Length != 0) { output.WriteRawTag(18); output.WriteString(AppId); } if (appInstanceId_ != null) { output.WriteRawTag(26); output.WriteMessage(AppInstanceId); } if (TransportType != global::Plexus.Host.Internal.Generated.TransportType.Unknown) { output.WriteRawTag(32); output.WriteEnum((int) TransportType); } if (_unknownFields != null) { _unknownFields.WriteTo(output); } #endif } #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] void pb::IBufferMessage.InternalWriteTo(ref pb::WriteContext output) { if (connectionId_ != null) { output.WriteRawTag(10); output.WriteMessage(ConnectionId); } if (AppId.Length != 0) { output.WriteRawTag(18); output.WriteString(AppId); } if (appInstanceId_ != null) { output.WriteRawTag(26); output.WriteMessage(AppInstanceId); } if (TransportType != global::Plexus.Host.Internal.Generated.TransportType.Unknown) { output.WriteRawTag(32); output.WriteEnum((int) TransportType); } if (_unknownFields != null) { _unknownFields.WriteTo(ref output); } } #endif [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public int CalculateSize() { int size = 0; if (connectionId_ != null) { size += 1 + pb::CodedOutputStream.ComputeMessageSize(ConnectionId); } if (AppId.Length != 0) { size += 1 + pb::CodedOutputStream.ComputeStringSize(AppId); } if (appInstanceId_ != null) { size += 1 + pb::CodedOutputStream.ComputeMessageSize(AppInstanceId); } if (TransportType != global::Plexus.Host.Internal.Generated.TransportType.Unknown) { size += 1 + pb::CodedOutputStream.ComputeEnumSize((int) TransportType); } if (_unknownFields != null) { size += _unknownFields.CalculateSize(); } return size; } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public void MergeFrom(AppConnectionDescriptor other) { if (other == null) { return; } if (other.connectionId_ != null) { if (connectionId_ == null) { ConnectionId = new global::Plexus.Host.Internal.Generated.UniqueId(); } ConnectionId.MergeFrom(other.ConnectionId); } if (other.AppId.Length != 0) { AppId = other.AppId; } if (other.appInstanceId_ != null) { if (appInstanceId_ == null) { AppInstanceId = new global::Plexus.Host.Internal.Generated.UniqueId(); } AppInstanceId.MergeFrom(other.AppInstanceId); } if (other.TransportType != global::Plexus.Host.Internal.Generated.TransportType.Unknown) { TransportType = other.TransportType; } _unknownFields = pb::UnknownFieldSet.MergeFrom(_unknownFields, other._unknownFields); } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public void MergeFrom(pb::CodedInputStream input) { #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE input.ReadRawMessage(this); #else uint tag; while ((tag = input.ReadTag()) != 0) { switch(tag) { default: _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input); break; case 10: { if (connectionId_ == null) { ConnectionId = new global::Plexus.Host.Internal.Generated.UniqueId(); } input.ReadMessage(ConnectionId); break; } case 18: { AppId = input.ReadString(); break; } case 26: { if (appInstanceId_ == null) { AppInstanceId = new global::Plexus.Host.Internal.Generated.UniqueId(); } input.ReadMessage(AppInstanceId); break; } case 32: { TransportType = (global::Plexus.Host.Internal.Generated.TransportType) input.ReadEnum(); break; } } } #endif } #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] void pb::IBufferMessage.InternalMergeFrom(ref pb::ParseContext input) { uint tag; while ((tag = input.ReadTag()) != 0) { switch(tag) { default: _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, ref input); break; case 10: { if (connectionId_ == null) { ConnectionId = new global::Plexus.Host.Internal.Generated.UniqueId(); } input.ReadMessage(ConnectionId); break; } case 18: { AppId = input.ReadString(); break; } case 26: { if (appInstanceId_ == null) { AppInstanceId = new global::Plexus.Host.Internal.Generated.UniqueId(); } input.ReadMessage(AppInstanceId); break; } case 32: { TransportType = (global::Plexus.Host.Internal.Generated.TransportType) input.ReadEnum(); break; } } } } #endif } #endregion } #endregion Designer generated code ================================================ FILE: desktop/src/Plexus.Host/Internal/Generated/interop/AppLaunchMode.msg.g.cs ================================================ /** * Copyright 2017-2021 Plexus Interop Deutsche Bank AG * SPDX-License-Identifier: Apache-2.0 * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ // // Generated by the protocol buffer compiler. DO NOT EDIT! // source: interop/app_launch_mode.proto // #pragma warning disable 1591, 0612, 3021 #region Designer generated code using pb = global::Google.Protobuf; using pbc = global::Google.Protobuf.Collections; using pbr = global::Google.Protobuf.Reflection; using scg = global::System.Collections.Generic; namespace Plexus.Host.Internal.Generated { /// Holder for reflection information generated from interop/app_launch_mode.proto internal static partial class AppLaunchModeReflection { #region Descriptor /// File descriptor for interop/app_launch_mode.proto public static pbr::FileDescriptor Descriptor { get { return descriptor; } } private static pbr::FileDescriptor descriptor; static AppLaunchModeReflection() { byte[] descriptorData = global::System.Convert.FromBase64String( string.Concat( "Ch1pbnRlcm9wL2FwcF9sYXVuY2hfbW9kZS5wcm90bxIHaW50ZXJvcBoVaW50", "ZXJvcC9vcHRpb25zLnByb3RvKjgKDUFwcExhdW5jaE1vZGUSEwoPU0lOR0xF", "X0lOU1RBTkNFEAASEgoOTVVMVElfSU5TVEFOQ0UQAUIhqgIeUGxleHVzLkhv", "c3QuSW50ZXJuYWwuR2VuZXJhdGVkYgZwcm90bzM=")); descriptor = pbr::FileDescriptor.FromGeneratedCode(descriptorData, new pbr::FileDescriptor[] { global::Plexus.Host.Internal.Generated.OptionsReflection.Descriptor, }, new pbr::GeneratedClrTypeInfo(new[] {typeof(global::Plexus.Host.Internal.Generated.AppLaunchMode), }, null, null)); } #endregion } #region Enums internal enum AppLaunchMode { [pbr::OriginalName("SINGLE_INSTANCE")] SingleInstance = 0, [pbr::OriginalName("MULTI_INSTANCE")] MultiInstance = 1, } #endregion } #endregion Designer generated code ================================================ FILE: desktop/src/Plexus.Host/Internal/Generated/interop/AppLifecycleService.msg.g.cs ================================================ /** * Copyright 2017-2021 Plexus Interop Deutsche Bank AG * SPDX-License-Identifier: Apache-2.0 * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ // // Generated by the protocol buffer compiler. DO NOT EDIT! // source: interop/app_lifecycle_service.proto // #pragma warning disable 1591, 0612, 3021 #region Designer generated code using pb = global::Google.Protobuf; using pbc = global::Google.Protobuf.Collections; using pbr = global::Google.Protobuf.Reflection; using scg = global::System.Collections.Generic; namespace Plexus.Host.Internal.Generated { /// Holder for reflection information generated from interop/app_lifecycle_service.proto internal static partial class AppLifecycleServiceReflection { #region Descriptor /// File descriptor for interop/app_lifecycle_service.proto public static pbr::FileDescriptor Descriptor { get { return descriptor; } } private static pbr::FileDescriptor descriptor; static AppLifecycleServiceReflection() { byte[] descriptorData = global::System.Convert.FromBase64String( string.Concat( "CiNpbnRlcm9wL2FwcF9saWZlY3ljbGVfc2VydmljZS5wcm90bxIHaW50ZXJv", "cBoXaW50ZXJvcC91bmlxdWVfaWQucHJvdG8aHWludGVyb3AvYXBwX2xhdW5j", "aF9tb2RlLnByb3RvGidpbnRlcm9wL2FwcF9jb25uZWN0aW9uX2Rlc2NyaXB0", "b3IucHJvdG8aI2ludGVyb3AvaW52b2NhdGlvbl9kZXNjcmlwdG9yLnByb3Rv", "Ghtnb29nbGUvcHJvdG9idWYvZW1wdHkucHJvdG8aFWludGVyb3Avb3B0aW9u", "cy5wcm90byJ0ChFSZXNvbHZlQXBwUmVxdWVzdBIOCgZhcHBfaWQYASABKAkS", "MAoQYXBwX3Jlc29sdmVfbW9kZRgCIAEoDjIWLmludGVyb3AuQXBwTGF1bmNo", "TW9kZTodktsEGWludGVyb3AuUmVzb2x2ZUFwcFJlcXVlc3QisAEKElJlc29s", "dmVBcHBSZXNwb25zZRIqCg9hcHBfaW5zdGFuY2VfaWQYASABKAsyES5pbnRl", "cm9wLlVuaXF1ZUlkEiwKEWFwcF9jb25uZWN0aW9uX2lkGAIgASgLMhEuaW50", "ZXJvcC5VbmlxdWVJZBIgChhpc19uZXdfaW5zdGFuY2VfbGF1bmNoZWQYAyAB", "KAg6HpLbBBppbnRlcm9wLlJlc29sdmVBcHBSZXNwb25zZSLWAQoRQXBwTGlm", "ZWN5Y2xlRXZlbnQSLwoJY29ubmVjdGVkGAEgASgLMhouaW50ZXJvcC5BcHBD", "b25uZWN0ZWRFdmVudEgAEjUKDGRpc2Nvbm5lY3RlZBgCIAEoCzIdLmludGVy", "b3AuQXBwRGlzY29ubmVjdGVkRXZlbnRIABIxCgVlcnJvchgDIAEoCzIgLmlu", "dGVyb3AuQXBwQ29ubmVjdGlvbkVycm9yRXZlbnRIADodktsEGWludGVyb3Au", "QXBwTGlmZWN5Y2xlRXZlbnRCBwoFZXZlbnQitwEKD0ludm9jYXRpb25FdmVu", "dBI9ChJpbnZvY2F0aW9uX3N0YXJ0ZWQYASABKAsyHy5pbnRlcm9wLkludm9j", "YXRpb25TdGFydGVkRXZlbnRIABI/ChNpbnZvY2F0aW9uX2ZpbmlzaGVkGAIg", "ASgLMiAuaW50ZXJvcC5JbnZvY2F0aW9uRmluaXNoZWRFdmVudEgAOhuS2wQX", "aW50ZXJvcC5JbnZvY2F0aW9uRXZlbnRCBwoFZXZlbnQicwoRQXBwQ29ubmVj", "dGVkRXZlbnQSPwoVY29ubmVjdGlvbl9kZXNjcmlwdG9yGAEgASgLMiAuaW50", "ZXJvcC5BcHBDb25uZWN0aW9uRGVzY3JpcHRvcjodktsEGWludGVyb3AuQXBw", "Q29ubmVjdGVkRXZlbnQieQoUQXBwRGlzY29ubmVjdGVkRXZlbnQSPwoVY29u", "bmVjdGlvbl9kZXNjcmlwdG9yGAEgASgLMiAuaW50ZXJvcC5BcHBDb25uZWN0", "aW9uRGVzY3JpcHRvcjogktsEHGludGVyb3AuQXBwRGlzY29ubmVjdGVkRXZl", "bnQifwoXQXBwQ29ubmVjdGlvbkVycm9yRXZlbnQSPwoVY29ubmVjdGlvbl9k", "ZXNjcmlwdG9yGAEgASgLMiAuaW50ZXJvcC5BcHBDb25uZWN0aW9uRGVzY3Jp", "cHRvcjojktsEH2ludGVyb3AuQXBwQ29ubmVjdGlvbkVycm9yRXZlbnQiegoW", "SW52b2NhdGlvblN0YXJ0ZWRFdmVudBI8ChVpbnZvY2F0aW9uX2Rlc2NyaXB0", "b3IYASABKAsyHS5pbnRlcm9wLkludm9jYXRpb25EZXNjcmlwdG9yOiKS2wQe", "aW50ZXJvcC5JbnZvY2F0aW9uU3RhcnRlZEV2ZW50IrwBChdJbnZvY2F0aW9u", "RmluaXNoZWRFdmVudBI8ChVpbnZvY2F0aW9uX2Rlc2NyaXB0b3IYASABKAsy", "HS5pbnRlcm9wLkludm9jYXRpb25EZXNjcmlwdG9yEikKBnJlc3VsdBgCIAEo", "DjIZLmludGVyb3AuSW52b2NhdGlvblJlc3VsdBITCgtkdXJhdGlvbl9tcxgD", "IAEoAzojktsEH2ludGVyb3AuSW52b2NhdGlvbkZpbmlzaGVkRXZlbnQiqAEK", "FUdldENvbm5lY3Rpb25zUmVxdWVzdBIWCg5hcHBsaWNhdGlvbl9pZBgBIAEo", "CRIqCg9hcHBfaW5zdGFuY2VfaWQYAiABKAsyES5pbnRlcm9wLlVuaXF1ZUlk", "EigKDWNvbm5lY3Rpb25faWQYAyABKAsyES5pbnRlcm9wLlVuaXF1ZUlkOiGS", "2wQdaW50ZXJvcC5HZXRDb25uZWN0aW9uc1JlcXVlc3QicwoWR2V0Q29ubmVj", "dGlvbnNSZXNwb25zZRI1Cgtjb25uZWN0aW9ucxgBIAMoCzIgLmludGVyb3Au", "QXBwQ29ubmVjdGlvbkRlc2NyaXB0b3I6IpLbBB5pbnRlcm9wLkdldENvbm5l", "Y3Rpb25zUmVzcG9uc2Ui8QEKE0dldENvbm5lY3Rpb25zRXZlbnQSNQoLY29u", "bmVjdGlvbnMYASADKAsyIC5pbnRlcm9wLkFwcENvbm5lY3Rpb25EZXNjcmlw", "dG9yEjoKDm5ld19jb25uZWN0aW9uGAIgASgLMiAuaW50ZXJvcC5BcHBDb25u", "ZWN0aW9uRGVzY3JpcHRvckgAEj0KEWNsb3NlZF9jb25uZWN0aW9uGAMgASgL", "MiAuaW50ZXJvcC5BcHBDb25uZWN0aW9uRGVzY3JpcHRvckgAOh+S2wQbaW50", "ZXJvcC5HZXRDb25uZWN0aW9uc0V2ZW50QgcKBWV2ZW50KjsKEEludm9jYXRp", "b25SZXN1bHQSDQoJU3VjY2VlZGVkEAASDAoIQ2FuY2VsZWQQARIKCgZGYWls", "ZWQQAjLJAwoTQXBwTGlmZWN5Y2xlU2VydmljZRJFCgpSZXNvbHZlQXBwEhou", "aW50ZXJvcC5SZXNvbHZlQXBwUmVxdWVzdBobLmludGVyb3AuUmVzb2x2ZUFw", "cFJlc3BvbnNlEk8KF0dldExpZmVjeWNsZUV2ZW50U3RyZWFtEhYuZ29vZ2xl", "LnByb3RvYnVmLkVtcHR5GhouaW50ZXJvcC5BcHBMaWZlY3ljbGVFdmVudDAB", "Ek4KGEdldEludm9jYXRpb25FdmVudFN0cmVhbRIWLmdvb2dsZS5wcm90b2J1", "Zi5FbXB0eRoYLmludGVyb3AuSW52b2NhdGlvbkV2ZW50MAESUQoOR2V0Q29u", "bmVjdGlvbnMSHi5pbnRlcm9wLkdldENvbm5lY3Rpb25zUmVxdWVzdBofLmlu", "dGVyb3AuR2V0Q29ubmVjdGlvbnNSZXNwb25zZRJWChRHZXRDb25uZWN0aW9u", "c1N0cmVhbRIeLmludGVyb3AuR2V0Q29ubmVjdGlvbnNSZXF1ZXN0GhwuaW50", "ZXJvcC5HZXRDb25uZWN0aW9uc0V2ZW50MAEaH5LbBBtpbnRlcm9wLkFwcExp", "ZmVjeWNsZVNlcnZpY2VCIaoCHlBsZXh1cy5Ib3N0LkludGVybmFsLkdlbmVy", "YXRlZGIGcHJvdG8z")); descriptor = pbr::FileDescriptor.FromGeneratedCode(descriptorData, new pbr::FileDescriptor[] { global::Plexus.Host.Internal.Generated.UniqueIdReflection.Descriptor, global::Plexus.Host.Internal.Generated.AppLaunchModeReflection.Descriptor, global::Plexus.Host.Internal.Generated.AppConnectionDescriptorReflection.Descriptor, global::Plexus.Host.Internal.Generated.InvocationDescriptorReflection.Descriptor, global::Google.Protobuf.WellKnownTypes.EmptyReflection.Descriptor, global::Plexus.Host.Internal.Generated.OptionsReflection.Descriptor, }, new pbr::GeneratedClrTypeInfo(new[] {typeof(global::Plexus.Host.Internal.Generated.InvocationResult), }, null, new pbr::GeneratedClrTypeInfo[] { new pbr::GeneratedClrTypeInfo(typeof(global::Plexus.Host.Internal.Generated.ResolveAppRequest), global::Plexus.Host.Internal.Generated.ResolveAppRequest.Parser, new[]{ "AppId", "AppResolveMode" }, null, null, null, null), new pbr::GeneratedClrTypeInfo(typeof(global::Plexus.Host.Internal.Generated.ResolveAppResponse), global::Plexus.Host.Internal.Generated.ResolveAppResponse.Parser, new[]{ "AppInstanceId", "AppConnectionId", "IsNewInstanceLaunched" }, null, null, null, null), new pbr::GeneratedClrTypeInfo(typeof(global::Plexus.Host.Internal.Generated.AppLifecycleEvent), global::Plexus.Host.Internal.Generated.AppLifecycleEvent.Parser, new[]{ "Connected", "Disconnected", "Error" }, new[]{ "Event" }, null, null, null), new pbr::GeneratedClrTypeInfo(typeof(global::Plexus.Host.Internal.Generated.InvocationEvent), global::Plexus.Host.Internal.Generated.InvocationEvent.Parser, new[]{ "InvocationStarted", "InvocationFinished" }, new[]{ "Event" }, null, null, null), new pbr::GeneratedClrTypeInfo(typeof(global::Plexus.Host.Internal.Generated.AppConnectedEvent), global::Plexus.Host.Internal.Generated.AppConnectedEvent.Parser, new[]{ "ConnectionDescriptor" }, null, null, null, null), new pbr::GeneratedClrTypeInfo(typeof(global::Plexus.Host.Internal.Generated.AppDisconnectedEvent), global::Plexus.Host.Internal.Generated.AppDisconnectedEvent.Parser, new[]{ "ConnectionDescriptor" }, null, null, null, null), new pbr::GeneratedClrTypeInfo(typeof(global::Plexus.Host.Internal.Generated.AppConnectionErrorEvent), global::Plexus.Host.Internal.Generated.AppConnectionErrorEvent.Parser, new[]{ "ConnectionDescriptor" }, null, null, null, null), new pbr::GeneratedClrTypeInfo(typeof(global::Plexus.Host.Internal.Generated.InvocationStartedEvent), global::Plexus.Host.Internal.Generated.InvocationStartedEvent.Parser, new[]{ "InvocationDescriptor" }, null, null, null, null), new pbr::GeneratedClrTypeInfo(typeof(global::Plexus.Host.Internal.Generated.InvocationFinishedEvent), global::Plexus.Host.Internal.Generated.InvocationFinishedEvent.Parser, new[]{ "InvocationDescriptor", "Result", "DurationMs" }, null, null, null, null), new pbr::GeneratedClrTypeInfo(typeof(global::Plexus.Host.Internal.Generated.GetConnectionsRequest), global::Plexus.Host.Internal.Generated.GetConnectionsRequest.Parser, new[]{ "ApplicationId", "AppInstanceId", "ConnectionId" }, null, null, null, null), new pbr::GeneratedClrTypeInfo(typeof(global::Plexus.Host.Internal.Generated.GetConnectionsResponse), global::Plexus.Host.Internal.Generated.GetConnectionsResponse.Parser, new[]{ "Connections" }, null, null, null, null), new pbr::GeneratedClrTypeInfo(typeof(global::Plexus.Host.Internal.Generated.GetConnectionsEvent), global::Plexus.Host.Internal.Generated.GetConnectionsEvent.Parser, new[]{ "Connections", "NewConnection", "ClosedConnection" }, new[]{ "Event" }, null, null, null) })); } #endregion } #region Enums internal enum InvocationResult { [pbr::OriginalName("Succeeded")] Succeeded = 0, [pbr::OriginalName("Canceled")] Canceled = 1, [pbr::OriginalName("Failed")] Failed = 2, } #endregion #region Messages internal sealed partial class ResolveAppRequest : pb::IMessage #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE , pb::IBufferMessage #endif { private static readonly pb::MessageParser _parser = new pb::MessageParser(() => new ResolveAppRequest()); private pb::UnknownFieldSet _unknownFields; [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public static pb::MessageParser Parser { get { return _parser; } } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public static pbr::MessageDescriptor Descriptor { get { return global::Plexus.Host.Internal.Generated.AppLifecycleServiceReflection.Descriptor.MessageTypes[0]; } } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] pbr::MessageDescriptor pb::IMessage.Descriptor { get { return Descriptor; } } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public ResolveAppRequest() { OnConstruction(); } partial void OnConstruction(); [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public ResolveAppRequest(ResolveAppRequest other) : this() { appId_ = other.appId_; appResolveMode_ = other.appResolveMode_; _unknownFields = pb::UnknownFieldSet.Clone(other._unknownFields); } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public ResolveAppRequest Clone() { return new ResolveAppRequest(this); } /// Field number for the "app_id" field. public const int AppIdFieldNumber = 1; private string appId_ = ""; [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public string AppId { get { return appId_; } set { appId_ = pb::ProtoPreconditions.CheckNotNull(value, "value"); } } /// Field number for the "app_resolve_mode" field. public const int AppResolveModeFieldNumber = 2; private global::Plexus.Host.Internal.Generated.AppLaunchMode appResolveMode_ = global::Plexus.Host.Internal.Generated.AppLaunchMode.SingleInstance; [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public global::Plexus.Host.Internal.Generated.AppLaunchMode AppResolveMode { get { return appResolveMode_; } set { appResolveMode_ = value; } } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public override bool Equals(object other) { return Equals(other as ResolveAppRequest); } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public bool Equals(ResolveAppRequest other) { if (ReferenceEquals(other, null)) { return false; } if (ReferenceEquals(other, this)) { return true; } if (AppId != other.AppId) return false; if (AppResolveMode != other.AppResolveMode) return false; return Equals(_unknownFields, other._unknownFields); } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public override int GetHashCode() { int hash = 1; if (AppId.Length != 0) hash ^= AppId.GetHashCode(); if (AppResolveMode != global::Plexus.Host.Internal.Generated.AppLaunchMode.SingleInstance) hash ^= AppResolveMode.GetHashCode(); if (_unknownFields != null) { hash ^= _unknownFields.GetHashCode(); } return hash; } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public override string ToString() { return pb::JsonFormatter.ToDiagnosticString(this); } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public void WriteTo(pb::CodedOutputStream output) { #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE output.WriteRawMessage(this); #else if (AppId.Length != 0) { output.WriteRawTag(10); output.WriteString(AppId); } if (AppResolveMode != global::Plexus.Host.Internal.Generated.AppLaunchMode.SingleInstance) { output.WriteRawTag(16); output.WriteEnum((int) AppResolveMode); } if (_unknownFields != null) { _unknownFields.WriteTo(output); } #endif } #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] void pb::IBufferMessage.InternalWriteTo(ref pb::WriteContext output) { if (AppId.Length != 0) { output.WriteRawTag(10); output.WriteString(AppId); } if (AppResolveMode != global::Plexus.Host.Internal.Generated.AppLaunchMode.SingleInstance) { output.WriteRawTag(16); output.WriteEnum((int) AppResolveMode); } if (_unknownFields != null) { _unknownFields.WriteTo(ref output); } } #endif [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public int CalculateSize() { int size = 0; if (AppId.Length != 0) { size += 1 + pb::CodedOutputStream.ComputeStringSize(AppId); } if (AppResolveMode != global::Plexus.Host.Internal.Generated.AppLaunchMode.SingleInstance) { size += 1 + pb::CodedOutputStream.ComputeEnumSize((int) AppResolveMode); } if (_unknownFields != null) { size += _unknownFields.CalculateSize(); } return size; } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public void MergeFrom(ResolveAppRequest other) { if (other == null) { return; } if (other.AppId.Length != 0) { AppId = other.AppId; } if (other.AppResolveMode != global::Plexus.Host.Internal.Generated.AppLaunchMode.SingleInstance) { AppResolveMode = other.AppResolveMode; } _unknownFields = pb::UnknownFieldSet.MergeFrom(_unknownFields, other._unknownFields); } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public void MergeFrom(pb::CodedInputStream input) { #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE input.ReadRawMessage(this); #else uint tag; while ((tag = input.ReadTag()) != 0) { switch(tag) { default: _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input); break; case 10: { AppId = input.ReadString(); break; } case 16: { AppResolveMode = (global::Plexus.Host.Internal.Generated.AppLaunchMode) input.ReadEnum(); break; } } } #endif } #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] void pb::IBufferMessage.InternalMergeFrom(ref pb::ParseContext input) { uint tag; while ((tag = input.ReadTag()) != 0) { switch(tag) { default: _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, ref input); break; case 10: { AppId = input.ReadString(); break; } case 16: { AppResolveMode = (global::Plexus.Host.Internal.Generated.AppLaunchMode) input.ReadEnum(); break; } } } } #endif } internal sealed partial class ResolveAppResponse : pb::IMessage #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE , pb::IBufferMessage #endif { private static readonly pb::MessageParser _parser = new pb::MessageParser(() => new ResolveAppResponse()); private pb::UnknownFieldSet _unknownFields; [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public static pb::MessageParser Parser { get { return _parser; } } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public static pbr::MessageDescriptor Descriptor { get { return global::Plexus.Host.Internal.Generated.AppLifecycleServiceReflection.Descriptor.MessageTypes[1]; } } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] pbr::MessageDescriptor pb::IMessage.Descriptor { get { return Descriptor; } } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public ResolveAppResponse() { OnConstruction(); } partial void OnConstruction(); [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public ResolveAppResponse(ResolveAppResponse other) : this() { appInstanceId_ = other.appInstanceId_ != null ? other.appInstanceId_.Clone() : null; appConnectionId_ = other.appConnectionId_ != null ? other.appConnectionId_.Clone() : null; isNewInstanceLaunched_ = other.isNewInstanceLaunched_; _unknownFields = pb::UnknownFieldSet.Clone(other._unknownFields); } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public ResolveAppResponse Clone() { return new ResolveAppResponse(this); } /// Field number for the "app_instance_id" field. public const int AppInstanceIdFieldNumber = 1; private global::Plexus.Host.Internal.Generated.UniqueId appInstanceId_; [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public global::Plexus.Host.Internal.Generated.UniqueId AppInstanceId { get { return appInstanceId_; } set { appInstanceId_ = value; } } /// Field number for the "app_connection_id" field. public const int AppConnectionIdFieldNumber = 2; private global::Plexus.Host.Internal.Generated.UniqueId appConnectionId_; [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public global::Plexus.Host.Internal.Generated.UniqueId AppConnectionId { get { return appConnectionId_; } set { appConnectionId_ = value; } } /// Field number for the "is_new_instance_launched" field. public const int IsNewInstanceLaunchedFieldNumber = 3; private bool isNewInstanceLaunched_; [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public bool IsNewInstanceLaunched { get { return isNewInstanceLaunched_; } set { isNewInstanceLaunched_ = value; } } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public override bool Equals(object other) { return Equals(other as ResolveAppResponse); } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public bool Equals(ResolveAppResponse other) { if (ReferenceEquals(other, null)) { return false; } if (ReferenceEquals(other, this)) { return true; } if (!object.Equals(AppInstanceId, other.AppInstanceId)) return false; if (!object.Equals(AppConnectionId, other.AppConnectionId)) return false; if (IsNewInstanceLaunched != other.IsNewInstanceLaunched) return false; return Equals(_unknownFields, other._unknownFields); } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public override int GetHashCode() { int hash = 1; if (appInstanceId_ != null) hash ^= AppInstanceId.GetHashCode(); if (appConnectionId_ != null) hash ^= AppConnectionId.GetHashCode(); if (IsNewInstanceLaunched != false) hash ^= IsNewInstanceLaunched.GetHashCode(); if (_unknownFields != null) { hash ^= _unknownFields.GetHashCode(); } return hash; } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public override string ToString() { return pb::JsonFormatter.ToDiagnosticString(this); } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public void WriteTo(pb::CodedOutputStream output) { #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE output.WriteRawMessage(this); #else if (appInstanceId_ != null) { output.WriteRawTag(10); output.WriteMessage(AppInstanceId); } if (appConnectionId_ != null) { output.WriteRawTag(18); output.WriteMessage(AppConnectionId); } if (IsNewInstanceLaunched != false) { output.WriteRawTag(24); output.WriteBool(IsNewInstanceLaunched); } if (_unknownFields != null) { _unknownFields.WriteTo(output); } #endif } #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] void pb::IBufferMessage.InternalWriteTo(ref pb::WriteContext output) { if (appInstanceId_ != null) { output.WriteRawTag(10); output.WriteMessage(AppInstanceId); } if (appConnectionId_ != null) { output.WriteRawTag(18); output.WriteMessage(AppConnectionId); } if (IsNewInstanceLaunched != false) { output.WriteRawTag(24); output.WriteBool(IsNewInstanceLaunched); } if (_unknownFields != null) { _unknownFields.WriteTo(ref output); } } #endif [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public int CalculateSize() { int size = 0; if (appInstanceId_ != null) { size += 1 + pb::CodedOutputStream.ComputeMessageSize(AppInstanceId); } if (appConnectionId_ != null) { size += 1 + pb::CodedOutputStream.ComputeMessageSize(AppConnectionId); } if (IsNewInstanceLaunched != false) { size += 1 + 1; } if (_unknownFields != null) { size += _unknownFields.CalculateSize(); } return size; } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public void MergeFrom(ResolveAppResponse other) { if (other == null) { return; } if (other.appInstanceId_ != null) { if (appInstanceId_ == null) { AppInstanceId = new global::Plexus.Host.Internal.Generated.UniqueId(); } AppInstanceId.MergeFrom(other.AppInstanceId); } if (other.appConnectionId_ != null) { if (appConnectionId_ == null) { AppConnectionId = new global::Plexus.Host.Internal.Generated.UniqueId(); } AppConnectionId.MergeFrom(other.AppConnectionId); } if (other.IsNewInstanceLaunched != false) { IsNewInstanceLaunched = other.IsNewInstanceLaunched; } _unknownFields = pb::UnknownFieldSet.MergeFrom(_unknownFields, other._unknownFields); } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public void MergeFrom(pb::CodedInputStream input) { #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE input.ReadRawMessage(this); #else uint tag; while ((tag = input.ReadTag()) != 0) { switch(tag) { default: _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input); break; case 10: { if (appInstanceId_ == null) { AppInstanceId = new global::Plexus.Host.Internal.Generated.UniqueId(); } input.ReadMessage(AppInstanceId); break; } case 18: { if (appConnectionId_ == null) { AppConnectionId = new global::Plexus.Host.Internal.Generated.UniqueId(); } input.ReadMessage(AppConnectionId); break; } case 24: { IsNewInstanceLaunched = input.ReadBool(); break; } } } #endif } #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] void pb::IBufferMessage.InternalMergeFrom(ref pb::ParseContext input) { uint tag; while ((tag = input.ReadTag()) != 0) { switch(tag) { default: _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, ref input); break; case 10: { if (appInstanceId_ == null) { AppInstanceId = new global::Plexus.Host.Internal.Generated.UniqueId(); } input.ReadMessage(AppInstanceId); break; } case 18: { if (appConnectionId_ == null) { AppConnectionId = new global::Plexus.Host.Internal.Generated.UniqueId(); } input.ReadMessage(AppConnectionId); break; } case 24: { IsNewInstanceLaunched = input.ReadBool(); break; } } } } #endif } internal sealed partial class AppLifecycleEvent : pb::IMessage #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE , pb::IBufferMessage #endif { private static readonly pb::MessageParser _parser = new pb::MessageParser(() => new AppLifecycleEvent()); private pb::UnknownFieldSet _unknownFields; [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public static pb::MessageParser Parser { get { return _parser; } } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public static pbr::MessageDescriptor Descriptor { get { return global::Plexus.Host.Internal.Generated.AppLifecycleServiceReflection.Descriptor.MessageTypes[2]; } } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] pbr::MessageDescriptor pb::IMessage.Descriptor { get { return Descriptor; } } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public AppLifecycleEvent() { OnConstruction(); } partial void OnConstruction(); [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public AppLifecycleEvent(AppLifecycleEvent other) : this() { switch (other.EventCase) { case EventOneofCase.Connected: Connected = other.Connected.Clone(); break; case EventOneofCase.Disconnected: Disconnected = other.Disconnected.Clone(); break; case EventOneofCase.Error: Error = other.Error.Clone(); break; } _unknownFields = pb::UnknownFieldSet.Clone(other._unknownFields); } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public AppLifecycleEvent Clone() { return new AppLifecycleEvent(this); } /// Field number for the "connected" field. public const int ConnectedFieldNumber = 1; [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public global::Plexus.Host.Internal.Generated.AppConnectedEvent Connected { get { return eventCase_ == EventOneofCase.Connected ? (global::Plexus.Host.Internal.Generated.AppConnectedEvent) event_ : null; } set { event_ = value; eventCase_ = value == null ? EventOneofCase.None : EventOneofCase.Connected; } } /// Field number for the "disconnected" field. public const int DisconnectedFieldNumber = 2; [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public global::Plexus.Host.Internal.Generated.AppDisconnectedEvent Disconnected { get { return eventCase_ == EventOneofCase.Disconnected ? (global::Plexus.Host.Internal.Generated.AppDisconnectedEvent) event_ : null; } set { event_ = value; eventCase_ = value == null ? EventOneofCase.None : EventOneofCase.Disconnected; } } /// Field number for the "error" field. public const int ErrorFieldNumber = 3; [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public global::Plexus.Host.Internal.Generated.AppConnectionErrorEvent Error { get { return eventCase_ == EventOneofCase.Error ? (global::Plexus.Host.Internal.Generated.AppConnectionErrorEvent) event_ : null; } set { event_ = value; eventCase_ = value == null ? EventOneofCase.None : EventOneofCase.Error; } } private object event_; /// Enum of possible cases for the "event" oneof. public enum EventOneofCase { None = 0, Connected = 1, Disconnected = 2, Error = 3, } private EventOneofCase eventCase_ = EventOneofCase.None; [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public EventOneofCase EventCase { get { return eventCase_; } } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public void ClearEvent() { eventCase_ = EventOneofCase.None; event_ = null; } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public override bool Equals(object other) { return Equals(other as AppLifecycleEvent); } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public bool Equals(AppLifecycleEvent other) { if (ReferenceEquals(other, null)) { return false; } if (ReferenceEquals(other, this)) { return true; } if (!object.Equals(Connected, other.Connected)) return false; if (!object.Equals(Disconnected, other.Disconnected)) return false; if (!object.Equals(Error, other.Error)) return false; if (EventCase != other.EventCase) return false; return Equals(_unknownFields, other._unknownFields); } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public override int GetHashCode() { int hash = 1; if (eventCase_ == EventOneofCase.Connected) hash ^= Connected.GetHashCode(); if (eventCase_ == EventOneofCase.Disconnected) hash ^= Disconnected.GetHashCode(); if (eventCase_ == EventOneofCase.Error) hash ^= Error.GetHashCode(); hash ^= (int) eventCase_; if (_unknownFields != null) { hash ^= _unknownFields.GetHashCode(); } return hash; } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public override string ToString() { return pb::JsonFormatter.ToDiagnosticString(this); } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public void WriteTo(pb::CodedOutputStream output) { #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE output.WriteRawMessage(this); #else if (eventCase_ == EventOneofCase.Connected) { output.WriteRawTag(10); output.WriteMessage(Connected); } if (eventCase_ == EventOneofCase.Disconnected) { output.WriteRawTag(18); output.WriteMessage(Disconnected); } if (eventCase_ == EventOneofCase.Error) { output.WriteRawTag(26); output.WriteMessage(Error); } if (_unknownFields != null) { _unknownFields.WriteTo(output); } #endif } #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] void pb::IBufferMessage.InternalWriteTo(ref pb::WriteContext output) { if (eventCase_ == EventOneofCase.Connected) { output.WriteRawTag(10); output.WriteMessage(Connected); } if (eventCase_ == EventOneofCase.Disconnected) { output.WriteRawTag(18); output.WriteMessage(Disconnected); } if (eventCase_ == EventOneofCase.Error) { output.WriteRawTag(26); output.WriteMessage(Error); } if (_unknownFields != null) { _unknownFields.WriteTo(ref output); } } #endif [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public int CalculateSize() { int size = 0; if (eventCase_ == EventOneofCase.Connected) { size += 1 + pb::CodedOutputStream.ComputeMessageSize(Connected); } if (eventCase_ == EventOneofCase.Disconnected) { size += 1 + pb::CodedOutputStream.ComputeMessageSize(Disconnected); } if (eventCase_ == EventOneofCase.Error) { size += 1 + pb::CodedOutputStream.ComputeMessageSize(Error); } if (_unknownFields != null) { size += _unknownFields.CalculateSize(); } return size; } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public void MergeFrom(AppLifecycleEvent other) { if (other == null) { return; } switch (other.EventCase) { case EventOneofCase.Connected: if (Connected == null) { Connected = new global::Plexus.Host.Internal.Generated.AppConnectedEvent(); } Connected.MergeFrom(other.Connected); break; case EventOneofCase.Disconnected: if (Disconnected == null) { Disconnected = new global::Plexus.Host.Internal.Generated.AppDisconnectedEvent(); } Disconnected.MergeFrom(other.Disconnected); break; case EventOneofCase.Error: if (Error == null) { Error = new global::Plexus.Host.Internal.Generated.AppConnectionErrorEvent(); } Error.MergeFrom(other.Error); break; } _unknownFields = pb::UnknownFieldSet.MergeFrom(_unknownFields, other._unknownFields); } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public void MergeFrom(pb::CodedInputStream input) { #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE input.ReadRawMessage(this); #else uint tag; while ((tag = input.ReadTag()) != 0) { switch(tag) { default: _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input); break; case 10: { global::Plexus.Host.Internal.Generated.AppConnectedEvent subBuilder = new global::Plexus.Host.Internal.Generated.AppConnectedEvent(); if (eventCase_ == EventOneofCase.Connected) { subBuilder.MergeFrom(Connected); } input.ReadMessage(subBuilder); Connected = subBuilder; break; } case 18: { global::Plexus.Host.Internal.Generated.AppDisconnectedEvent subBuilder = new global::Plexus.Host.Internal.Generated.AppDisconnectedEvent(); if (eventCase_ == EventOneofCase.Disconnected) { subBuilder.MergeFrom(Disconnected); } input.ReadMessage(subBuilder); Disconnected = subBuilder; break; } case 26: { global::Plexus.Host.Internal.Generated.AppConnectionErrorEvent subBuilder = new global::Plexus.Host.Internal.Generated.AppConnectionErrorEvent(); if (eventCase_ == EventOneofCase.Error) { subBuilder.MergeFrom(Error); } input.ReadMessage(subBuilder); Error = subBuilder; break; } } } #endif } #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] void pb::IBufferMessage.InternalMergeFrom(ref pb::ParseContext input) { uint tag; while ((tag = input.ReadTag()) != 0) { switch(tag) { default: _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, ref input); break; case 10: { global::Plexus.Host.Internal.Generated.AppConnectedEvent subBuilder = new global::Plexus.Host.Internal.Generated.AppConnectedEvent(); if (eventCase_ == EventOneofCase.Connected) { subBuilder.MergeFrom(Connected); } input.ReadMessage(subBuilder); Connected = subBuilder; break; } case 18: { global::Plexus.Host.Internal.Generated.AppDisconnectedEvent subBuilder = new global::Plexus.Host.Internal.Generated.AppDisconnectedEvent(); if (eventCase_ == EventOneofCase.Disconnected) { subBuilder.MergeFrom(Disconnected); } input.ReadMessage(subBuilder); Disconnected = subBuilder; break; } case 26: { global::Plexus.Host.Internal.Generated.AppConnectionErrorEvent subBuilder = new global::Plexus.Host.Internal.Generated.AppConnectionErrorEvent(); if (eventCase_ == EventOneofCase.Error) { subBuilder.MergeFrom(Error); } input.ReadMessage(subBuilder); Error = subBuilder; break; } } } } #endif } internal sealed partial class InvocationEvent : pb::IMessage #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE , pb::IBufferMessage #endif { private static readonly pb::MessageParser _parser = new pb::MessageParser(() => new InvocationEvent()); private pb::UnknownFieldSet _unknownFields; [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public static pb::MessageParser Parser { get { return _parser; } } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public static pbr::MessageDescriptor Descriptor { get { return global::Plexus.Host.Internal.Generated.AppLifecycleServiceReflection.Descriptor.MessageTypes[3]; } } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] pbr::MessageDescriptor pb::IMessage.Descriptor { get { return Descriptor; } } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public InvocationEvent() { OnConstruction(); } partial void OnConstruction(); [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public InvocationEvent(InvocationEvent other) : this() { switch (other.EventCase) { case EventOneofCase.InvocationStarted: InvocationStarted = other.InvocationStarted.Clone(); break; case EventOneofCase.InvocationFinished: InvocationFinished = other.InvocationFinished.Clone(); break; } _unknownFields = pb::UnknownFieldSet.Clone(other._unknownFields); } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public InvocationEvent Clone() { return new InvocationEvent(this); } /// Field number for the "invocation_started" field. public const int InvocationStartedFieldNumber = 1; [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public global::Plexus.Host.Internal.Generated.InvocationStartedEvent InvocationStarted { get { return eventCase_ == EventOneofCase.InvocationStarted ? (global::Plexus.Host.Internal.Generated.InvocationStartedEvent) event_ : null; } set { event_ = value; eventCase_ = value == null ? EventOneofCase.None : EventOneofCase.InvocationStarted; } } /// Field number for the "invocation_finished" field. public const int InvocationFinishedFieldNumber = 2; [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public global::Plexus.Host.Internal.Generated.InvocationFinishedEvent InvocationFinished { get { return eventCase_ == EventOneofCase.InvocationFinished ? (global::Plexus.Host.Internal.Generated.InvocationFinishedEvent) event_ : null; } set { event_ = value; eventCase_ = value == null ? EventOneofCase.None : EventOneofCase.InvocationFinished; } } private object event_; /// Enum of possible cases for the "event" oneof. public enum EventOneofCase { None = 0, InvocationStarted = 1, InvocationFinished = 2, } private EventOneofCase eventCase_ = EventOneofCase.None; [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public EventOneofCase EventCase { get { return eventCase_; } } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public void ClearEvent() { eventCase_ = EventOneofCase.None; event_ = null; } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public override bool Equals(object other) { return Equals(other as InvocationEvent); } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public bool Equals(InvocationEvent other) { if (ReferenceEquals(other, null)) { return false; } if (ReferenceEquals(other, this)) { return true; } if (!object.Equals(InvocationStarted, other.InvocationStarted)) return false; if (!object.Equals(InvocationFinished, other.InvocationFinished)) return false; if (EventCase != other.EventCase) return false; return Equals(_unknownFields, other._unknownFields); } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public override int GetHashCode() { int hash = 1; if (eventCase_ == EventOneofCase.InvocationStarted) hash ^= InvocationStarted.GetHashCode(); if (eventCase_ == EventOneofCase.InvocationFinished) hash ^= InvocationFinished.GetHashCode(); hash ^= (int) eventCase_; if (_unknownFields != null) { hash ^= _unknownFields.GetHashCode(); } return hash; } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public override string ToString() { return pb::JsonFormatter.ToDiagnosticString(this); } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public void WriteTo(pb::CodedOutputStream output) { #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE output.WriteRawMessage(this); #else if (eventCase_ == EventOneofCase.InvocationStarted) { output.WriteRawTag(10); output.WriteMessage(InvocationStarted); } if (eventCase_ == EventOneofCase.InvocationFinished) { output.WriteRawTag(18); output.WriteMessage(InvocationFinished); } if (_unknownFields != null) { _unknownFields.WriteTo(output); } #endif } #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] void pb::IBufferMessage.InternalWriteTo(ref pb::WriteContext output) { if (eventCase_ == EventOneofCase.InvocationStarted) { output.WriteRawTag(10); output.WriteMessage(InvocationStarted); } if (eventCase_ == EventOneofCase.InvocationFinished) { output.WriteRawTag(18); output.WriteMessage(InvocationFinished); } if (_unknownFields != null) { _unknownFields.WriteTo(ref output); } } #endif [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public int CalculateSize() { int size = 0; if (eventCase_ == EventOneofCase.InvocationStarted) { size += 1 + pb::CodedOutputStream.ComputeMessageSize(InvocationStarted); } if (eventCase_ == EventOneofCase.InvocationFinished) { size += 1 + pb::CodedOutputStream.ComputeMessageSize(InvocationFinished); } if (_unknownFields != null) { size += _unknownFields.CalculateSize(); } return size; } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public void MergeFrom(InvocationEvent other) { if (other == null) { return; } switch (other.EventCase) { case EventOneofCase.InvocationStarted: if (InvocationStarted == null) { InvocationStarted = new global::Plexus.Host.Internal.Generated.InvocationStartedEvent(); } InvocationStarted.MergeFrom(other.InvocationStarted); break; case EventOneofCase.InvocationFinished: if (InvocationFinished == null) { InvocationFinished = new global::Plexus.Host.Internal.Generated.InvocationFinishedEvent(); } InvocationFinished.MergeFrom(other.InvocationFinished); break; } _unknownFields = pb::UnknownFieldSet.MergeFrom(_unknownFields, other._unknownFields); } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public void MergeFrom(pb::CodedInputStream input) { #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE input.ReadRawMessage(this); #else uint tag; while ((tag = input.ReadTag()) != 0) { switch(tag) { default: _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input); break; case 10: { global::Plexus.Host.Internal.Generated.InvocationStartedEvent subBuilder = new global::Plexus.Host.Internal.Generated.InvocationStartedEvent(); if (eventCase_ == EventOneofCase.InvocationStarted) { subBuilder.MergeFrom(InvocationStarted); } input.ReadMessage(subBuilder); InvocationStarted = subBuilder; break; } case 18: { global::Plexus.Host.Internal.Generated.InvocationFinishedEvent subBuilder = new global::Plexus.Host.Internal.Generated.InvocationFinishedEvent(); if (eventCase_ == EventOneofCase.InvocationFinished) { subBuilder.MergeFrom(InvocationFinished); } input.ReadMessage(subBuilder); InvocationFinished = subBuilder; break; } } } #endif } #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] void pb::IBufferMessage.InternalMergeFrom(ref pb::ParseContext input) { uint tag; while ((tag = input.ReadTag()) != 0) { switch(tag) { default: _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, ref input); break; case 10: { global::Plexus.Host.Internal.Generated.InvocationStartedEvent subBuilder = new global::Plexus.Host.Internal.Generated.InvocationStartedEvent(); if (eventCase_ == EventOneofCase.InvocationStarted) { subBuilder.MergeFrom(InvocationStarted); } input.ReadMessage(subBuilder); InvocationStarted = subBuilder; break; } case 18: { global::Plexus.Host.Internal.Generated.InvocationFinishedEvent subBuilder = new global::Plexus.Host.Internal.Generated.InvocationFinishedEvent(); if (eventCase_ == EventOneofCase.InvocationFinished) { subBuilder.MergeFrom(InvocationFinished); } input.ReadMessage(subBuilder); InvocationFinished = subBuilder; break; } } } } #endif } internal sealed partial class AppConnectedEvent : pb::IMessage #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE , pb::IBufferMessage #endif { private static readonly pb::MessageParser _parser = new pb::MessageParser(() => new AppConnectedEvent()); private pb::UnknownFieldSet _unknownFields; [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public static pb::MessageParser Parser { get { return _parser; } } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public static pbr::MessageDescriptor Descriptor { get { return global::Plexus.Host.Internal.Generated.AppLifecycleServiceReflection.Descriptor.MessageTypes[4]; } } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] pbr::MessageDescriptor pb::IMessage.Descriptor { get { return Descriptor; } } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public AppConnectedEvent() { OnConstruction(); } partial void OnConstruction(); [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public AppConnectedEvent(AppConnectedEvent other) : this() { connectionDescriptor_ = other.connectionDescriptor_ != null ? other.connectionDescriptor_.Clone() : null; _unknownFields = pb::UnknownFieldSet.Clone(other._unknownFields); } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public AppConnectedEvent Clone() { return new AppConnectedEvent(this); } /// Field number for the "connection_descriptor" field. public const int ConnectionDescriptorFieldNumber = 1; private global::Plexus.Host.Internal.Generated.AppConnectionDescriptor connectionDescriptor_; [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public global::Plexus.Host.Internal.Generated.AppConnectionDescriptor ConnectionDescriptor { get { return connectionDescriptor_; } set { connectionDescriptor_ = value; } } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public override bool Equals(object other) { return Equals(other as AppConnectedEvent); } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public bool Equals(AppConnectedEvent other) { if (ReferenceEquals(other, null)) { return false; } if (ReferenceEquals(other, this)) { return true; } if (!object.Equals(ConnectionDescriptor, other.ConnectionDescriptor)) return false; return Equals(_unknownFields, other._unknownFields); } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public override int GetHashCode() { int hash = 1; if (connectionDescriptor_ != null) hash ^= ConnectionDescriptor.GetHashCode(); if (_unknownFields != null) { hash ^= _unknownFields.GetHashCode(); } return hash; } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public override string ToString() { return pb::JsonFormatter.ToDiagnosticString(this); } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public void WriteTo(pb::CodedOutputStream output) { #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE output.WriteRawMessage(this); #else if (connectionDescriptor_ != null) { output.WriteRawTag(10); output.WriteMessage(ConnectionDescriptor); } if (_unknownFields != null) { _unknownFields.WriteTo(output); } #endif } #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] void pb::IBufferMessage.InternalWriteTo(ref pb::WriteContext output) { if (connectionDescriptor_ != null) { output.WriteRawTag(10); output.WriteMessage(ConnectionDescriptor); } if (_unknownFields != null) { _unknownFields.WriteTo(ref output); } } #endif [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public int CalculateSize() { int size = 0; if (connectionDescriptor_ != null) { size += 1 + pb::CodedOutputStream.ComputeMessageSize(ConnectionDescriptor); } if (_unknownFields != null) { size += _unknownFields.CalculateSize(); } return size; } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public void MergeFrom(AppConnectedEvent other) { if (other == null) { return; } if (other.connectionDescriptor_ != null) { if (connectionDescriptor_ == null) { ConnectionDescriptor = new global::Plexus.Host.Internal.Generated.AppConnectionDescriptor(); } ConnectionDescriptor.MergeFrom(other.ConnectionDescriptor); } _unknownFields = pb::UnknownFieldSet.MergeFrom(_unknownFields, other._unknownFields); } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public void MergeFrom(pb::CodedInputStream input) { #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE input.ReadRawMessage(this); #else uint tag; while ((tag = input.ReadTag()) != 0) { switch(tag) { default: _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input); break; case 10: { if (connectionDescriptor_ == null) { ConnectionDescriptor = new global::Plexus.Host.Internal.Generated.AppConnectionDescriptor(); } input.ReadMessage(ConnectionDescriptor); break; } } } #endif } #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] void pb::IBufferMessage.InternalMergeFrom(ref pb::ParseContext input) { uint tag; while ((tag = input.ReadTag()) != 0) { switch(tag) { default: _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, ref input); break; case 10: { if (connectionDescriptor_ == null) { ConnectionDescriptor = new global::Plexus.Host.Internal.Generated.AppConnectionDescriptor(); } input.ReadMessage(ConnectionDescriptor); break; } } } } #endif } internal sealed partial class AppDisconnectedEvent : pb::IMessage #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE , pb::IBufferMessage #endif { private static readonly pb::MessageParser _parser = new pb::MessageParser(() => new AppDisconnectedEvent()); private pb::UnknownFieldSet _unknownFields; [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public static pb::MessageParser Parser { get { return _parser; } } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public static pbr::MessageDescriptor Descriptor { get { return global::Plexus.Host.Internal.Generated.AppLifecycleServiceReflection.Descriptor.MessageTypes[5]; } } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] pbr::MessageDescriptor pb::IMessage.Descriptor { get { return Descriptor; } } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public AppDisconnectedEvent() { OnConstruction(); } partial void OnConstruction(); [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public AppDisconnectedEvent(AppDisconnectedEvent other) : this() { connectionDescriptor_ = other.connectionDescriptor_ != null ? other.connectionDescriptor_.Clone() : null; _unknownFields = pb::UnknownFieldSet.Clone(other._unknownFields); } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public AppDisconnectedEvent Clone() { return new AppDisconnectedEvent(this); } /// Field number for the "connection_descriptor" field. public const int ConnectionDescriptorFieldNumber = 1; private global::Plexus.Host.Internal.Generated.AppConnectionDescriptor connectionDescriptor_; [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public global::Plexus.Host.Internal.Generated.AppConnectionDescriptor ConnectionDescriptor { get { return connectionDescriptor_; } set { connectionDescriptor_ = value; } } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public override bool Equals(object other) { return Equals(other as AppDisconnectedEvent); } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public bool Equals(AppDisconnectedEvent other) { if (ReferenceEquals(other, null)) { return false; } if (ReferenceEquals(other, this)) { return true; } if (!object.Equals(ConnectionDescriptor, other.ConnectionDescriptor)) return false; return Equals(_unknownFields, other._unknownFields); } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public override int GetHashCode() { int hash = 1; if (connectionDescriptor_ != null) hash ^= ConnectionDescriptor.GetHashCode(); if (_unknownFields != null) { hash ^= _unknownFields.GetHashCode(); } return hash; } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public override string ToString() { return pb::JsonFormatter.ToDiagnosticString(this); } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public void WriteTo(pb::CodedOutputStream output) { #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE output.WriteRawMessage(this); #else if (connectionDescriptor_ != null) { output.WriteRawTag(10); output.WriteMessage(ConnectionDescriptor); } if (_unknownFields != null) { _unknownFields.WriteTo(output); } #endif } #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] void pb::IBufferMessage.InternalWriteTo(ref pb::WriteContext output) { if (connectionDescriptor_ != null) { output.WriteRawTag(10); output.WriteMessage(ConnectionDescriptor); } if (_unknownFields != null) { _unknownFields.WriteTo(ref output); } } #endif [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public int CalculateSize() { int size = 0; if (connectionDescriptor_ != null) { size += 1 + pb::CodedOutputStream.ComputeMessageSize(ConnectionDescriptor); } if (_unknownFields != null) { size += _unknownFields.CalculateSize(); } return size; } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public void MergeFrom(AppDisconnectedEvent other) { if (other == null) { return; } if (other.connectionDescriptor_ != null) { if (connectionDescriptor_ == null) { ConnectionDescriptor = new global::Plexus.Host.Internal.Generated.AppConnectionDescriptor(); } ConnectionDescriptor.MergeFrom(other.ConnectionDescriptor); } _unknownFields = pb::UnknownFieldSet.MergeFrom(_unknownFields, other._unknownFields); } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public void MergeFrom(pb::CodedInputStream input) { #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE input.ReadRawMessage(this); #else uint tag; while ((tag = input.ReadTag()) != 0) { switch(tag) { default: _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input); break; case 10: { if (connectionDescriptor_ == null) { ConnectionDescriptor = new global::Plexus.Host.Internal.Generated.AppConnectionDescriptor(); } input.ReadMessage(ConnectionDescriptor); break; } } } #endif } #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] void pb::IBufferMessage.InternalMergeFrom(ref pb::ParseContext input) { uint tag; while ((tag = input.ReadTag()) != 0) { switch(tag) { default: _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, ref input); break; case 10: { if (connectionDescriptor_ == null) { ConnectionDescriptor = new global::Plexus.Host.Internal.Generated.AppConnectionDescriptor(); } input.ReadMessage(ConnectionDescriptor); break; } } } } #endif } internal sealed partial class AppConnectionErrorEvent : pb::IMessage #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE , pb::IBufferMessage #endif { private static readonly pb::MessageParser _parser = new pb::MessageParser(() => new AppConnectionErrorEvent()); private pb::UnknownFieldSet _unknownFields; [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public static pb::MessageParser Parser { get { return _parser; } } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public static pbr::MessageDescriptor Descriptor { get { return global::Plexus.Host.Internal.Generated.AppLifecycleServiceReflection.Descriptor.MessageTypes[6]; } } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] pbr::MessageDescriptor pb::IMessage.Descriptor { get { return Descriptor; } } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public AppConnectionErrorEvent() { OnConstruction(); } partial void OnConstruction(); [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public AppConnectionErrorEvent(AppConnectionErrorEvent other) : this() { connectionDescriptor_ = other.connectionDescriptor_ != null ? other.connectionDescriptor_.Clone() : null; _unknownFields = pb::UnknownFieldSet.Clone(other._unknownFields); } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public AppConnectionErrorEvent Clone() { return new AppConnectionErrorEvent(this); } /// Field number for the "connection_descriptor" field. public const int ConnectionDescriptorFieldNumber = 1; private global::Plexus.Host.Internal.Generated.AppConnectionDescriptor connectionDescriptor_; [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public global::Plexus.Host.Internal.Generated.AppConnectionDescriptor ConnectionDescriptor { get { return connectionDescriptor_; } set { connectionDescriptor_ = value; } } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public override bool Equals(object other) { return Equals(other as AppConnectionErrorEvent); } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public bool Equals(AppConnectionErrorEvent other) { if (ReferenceEquals(other, null)) { return false; } if (ReferenceEquals(other, this)) { return true; } if (!object.Equals(ConnectionDescriptor, other.ConnectionDescriptor)) return false; return Equals(_unknownFields, other._unknownFields); } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public override int GetHashCode() { int hash = 1; if (connectionDescriptor_ != null) hash ^= ConnectionDescriptor.GetHashCode(); if (_unknownFields != null) { hash ^= _unknownFields.GetHashCode(); } return hash; } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public override string ToString() { return pb::JsonFormatter.ToDiagnosticString(this); } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public void WriteTo(pb::CodedOutputStream output) { #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE output.WriteRawMessage(this); #else if (connectionDescriptor_ != null) { output.WriteRawTag(10); output.WriteMessage(ConnectionDescriptor); } if (_unknownFields != null) { _unknownFields.WriteTo(output); } #endif } #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] void pb::IBufferMessage.InternalWriteTo(ref pb::WriteContext output) { if (connectionDescriptor_ != null) { output.WriteRawTag(10); output.WriteMessage(ConnectionDescriptor); } if (_unknownFields != null) { _unknownFields.WriteTo(ref output); } } #endif [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public int CalculateSize() { int size = 0; if (connectionDescriptor_ != null) { size += 1 + pb::CodedOutputStream.ComputeMessageSize(ConnectionDescriptor); } if (_unknownFields != null) { size += _unknownFields.CalculateSize(); } return size; } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public void MergeFrom(AppConnectionErrorEvent other) { if (other == null) { return; } if (other.connectionDescriptor_ != null) { if (connectionDescriptor_ == null) { ConnectionDescriptor = new global::Plexus.Host.Internal.Generated.AppConnectionDescriptor(); } ConnectionDescriptor.MergeFrom(other.ConnectionDescriptor); } _unknownFields = pb::UnknownFieldSet.MergeFrom(_unknownFields, other._unknownFields); } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public void MergeFrom(pb::CodedInputStream input) { #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE input.ReadRawMessage(this); #else uint tag; while ((tag = input.ReadTag()) != 0) { switch(tag) { default: _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input); break; case 10: { if (connectionDescriptor_ == null) { ConnectionDescriptor = new global::Plexus.Host.Internal.Generated.AppConnectionDescriptor(); } input.ReadMessage(ConnectionDescriptor); break; } } } #endif } #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] void pb::IBufferMessage.InternalMergeFrom(ref pb::ParseContext input) { uint tag; while ((tag = input.ReadTag()) != 0) { switch(tag) { default: _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, ref input); break; case 10: { if (connectionDescriptor_ == null) { ConnectionDescriptor = new global::Plexus.Host.Internal.Generated.AppConnectionDescriptor(); } input.ReadMessage(ConnectionDescriptor); break; } } } } #endif } internal sealed partial class InvocationStartedEvent : pb::IMessage #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE , pb::IBufferMessage #endif { private static readonly pb::MessageParser _parser = new pb::MessageParser(() => new InvocationStartedEvent()); private pb::UnknownFieldSet _unknownFields; [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public static pb::MessageParser Parser { get { return _parser; } } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public static pbr::MessageDescriptor Descriptor { get { return global::Plexus.Host.Internal.Generated.AppLifecycleServiceReflection.Descriptor.MessageTypes[7]; } } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] pbr::MessageDescriptor pb::IMessage.Descriptor { get { return Descriptor; } } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public InvocationStartedEvent() { OnConstruction(); } partial void OnConstruction(); [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public InvocationStartedEvent(InvocationStartedEvent other) : this() { invocationDescriptor_ = other.invocationDescriptor_ != null ? other.invocationDescriptor_.Clone() : null; _unknownFields = pb::UnknownFieldSet.Clone(other._unknownFields); } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public InvocationStartedEvent Clone() { return new InvocationStartedEvent(this); } /// Field number for the "invocation_descriptor" field. public const int InvocationDescriptorFieldNumber = 1; private global::Plexus.Host.Internal.Generated.InvocationDescriptor invocationDescriptor_; [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public global::Plexus.Host.Internal.Generated.InvocationDescriptor InvocationDescriptor { get { return invocationDescriptor_; } set { invocationDescriptor_ = value; } } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public override bool Equals(object other) { return Equals(other as InvocationStartedEvent); } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public bool Equals(InvocationStartedEvent other) { if (ReferenceEquals(other, null)) { return false; } if (ReferenceEquals(other, this)) { return true; } if (!object.Equals(InvocationDescriptor, other.InvocationDescriptor)) return false; return Equals(_unknownFields, other._unknownFields); } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public override int GetHashCode() { int hash = 1; if (invocationDescriptor_ != null) hash ^= InvocationDescriptor.GetHashCode(); if (_unknownFields != null) { hash ^= _unknownFields.GetHashCode(); } return hash; } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public override string ToString() { return pb::JsonFormatter.ToDiagnosticString(this); } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public void WriteTo(pb::CodedOutputStream output) { #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE output.WriteRawMessage(this); #else if (invocationDescriptor_ != null) { output.WriteRawTag(10); output.WriteMessage(InvocationDescriptor); } if (_unknownFields != null) { _unknownFields.WriteTo(output); } #endif } #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] void pb::IBufferMessage.InternalWriteTo(ref pb::WriteContext output) { if (invocationDescriptor_ != null) { output.WriteRawTag(10); output.WriteMessage(InvocationDescriptor); } if (_unknownFields != null) { _unknownFields.WriteTo(ref output); } } #endif [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public int CalculateSize() { int size = 0; if (invocationDescriptor_ != null) { size += 1 + pb::CodedOutputStream.ComputeMessageSize(InvocationDescriptor); } if (_unknownFields != null) { size += _unknownFields.CalculateSize(); } return size; } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public void MergeFrom(InvocationStartedEvent other) { if (other == null) { return; } if (other.invocationDescriptor_ != null) { if (invocationDescriptor_ == null) { InvocationDescriptor = new global::Plexus.Host.Internal.Generated.InvocationDescriptor(); } InvocationDescriptor.MergeFrom(other.InvocationDescriptor); } _unknownFields = pb::UnknownFieldSet.MergeFrom(_unknownFields, other._unknownFields); } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public void MergeFrom(pb::CodedInputStream input) { #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE input.ReadRawMessage(this); #else uint tag; while ((tag = input.ReadTag()) != 0) { switch(tag) { default: _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input); break; case 10: { if (invocationDescriptor_ == null) { InvocationDescriptor = new global::Plexus.Host.Internal.Generated.InvocationDescriptor(); } input.ReadMessage(InvocationDescriptor); break; } } } #endif } #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] void pb::IBufferMessage.InternalMergeFrom(ref pb::ParseContext input) { uint tag; while ((tag = input.ReadTag()) != 0) { switch(tag) { default: _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, ref input); break; case 10: { if (invocationDescriptor_ == null) { InvocationDescriptor = new global::Plexus.Host.Internal.Generated.InvocationDescriptor(); } input.ReadMessage(InvocationDescriptor); break; } } } } #endif } internal sealed partial class InvocationFinishedEvent : pb::IMessage #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE , pb::IBufferMessage #endif { private static readonly pb::MessageParser _parser = new pb::MessageParser(() => new InvocationFinishedEvent()); private pb::UnknownFieldSet _unknownFields; [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public static pb::MessageParser Parser { get { return _parser; } } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public static pbr::MessageDescriptor Descriptor { get { return global::Plexus.Host.Internal.Generated.AppLifecycleServiceReflection.Descriptor.MessageTypes[8]; } } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] pbr::MessageDescriptor pb::IMessage.Descriptor { get { return Descriptor; } } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public InvocationFinishedEvent() { OnConstruction(); } partial void OnConstruction(); [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public InvocationFinishedEvent(InvocationFinishedEvent other) : this() { invocationDescriptor_ = other.invocationDescriptor_ != null ? other.invocationDescriptor_.Clone() : null; result_ = other.result_; durationMs_ = other.durationMs_; _unknownFields = pb::UnknownFieldSet.Clone(other._unknownFields); } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public InvocationFinishedEvent Clone() { return new InvocationFinishedEvent(this); } /// Field number for the "invocation_descriptor" field. public const int InvocationDescriptorFieldNumber = 1; private global::Plexus.Host.Internal.Generated.InvocationDescriptor invocationDescriptor_; [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public global::Plexus.Host.Internal.Generated.InvocationDescriptor InvocationDescriptor { get { return invocationDescriptor_; } set { invocationDescriptor_ = value; } } /// Field number for the "result" field. public const int ResultFieldNumber = 2; private global::Plexus.Host.Internal.Generated.InvocationResult result_ = global::Plexus.Host.Internal.Generated.InvocationResult.Succeeded; [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public global::Plexus.Host.Internal.Generated.InvocationResult Result { get { return result_; } set { result_ = value; } } /// Field number for the "duration_ms" field. public const int DurationMsFieldNumber = 3; private long durationMs_; [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public long DurationMs { get { return durationMs_; } set { durationMs_ = value; } } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public override bool Equals(object other) { return Equals(other as InvocationFinishedEvent); } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public bool Equals(InvocationFinishedEvent other) { if (ReferenceEquals(other, null)) { return false; } if (ReferenceEquals(other, this)) { return true; } if (!object.Equals(InvocationDescriptor, other.InvocationDescriptor)) return false; if (Result != other.Result) return false; if (DurationMs != other.DurationMs) return false; return Equals(_unknownFields, other._unknownFields); } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public override int GetHashCode() { int hash = 1; if (invocationDescriptor_ != null) hash ^= InvocationDescriptor.GetHashCode(); if (Result != global::Plexus.Host.Internal.Generated.InvocationResult.Succeeded) hash ^= Result.GetHashCode(); if (DurationMs != 0L) hash ^= DurationMs.GetHashCode(); if (_unknownFields != null) { hash ^= _unknownFields.GetHashCode(); } return hash; } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public override string ToString() { return pb::JsonFormatter.ToDiagnosticString(this); } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public void WriteTo(pb::CodedOutputStream output) { #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE output.WriteRawMessage(this); #else if (invocationDescriptor_ != null) { output.WriteRawTag(10); output.WriteMessage(InvocationDescriptor); } if (Result != global::Plexus.Host.Internal.Generated.InvocationResult.Succeeded) { output.WriteRawTag(16); output.WriteEnum((int) Result); } if (DurationMs != 0L) { output.WriteRawTag(24); output.WriteInt64(DurationMs); } if (_unknownFields != null) { _unknownFields.WriteTo(output); } #endif } #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] void pb::IBufferMessage.InternalWriteTo(ref pb::WriteContext output) { if (invocationDescriptor_ != null) { output.WriteRawTag(10); output.WriteMessage(InvocationDescriptor); } if (Result != global::Plexus.Host.Internal.Generated.InvocationResult.Succeeded) { output.WriteRawTag(16); output.WriteEnum((int) Result); } if (DurationMs != 0L) { output.WriteRawTag(24); output.WriteInt64(DurationMs); } if (_unknownFields != null) { _unknownFields.WriteTo(ref output); } } #endif [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public int CalculateSize() { int size = 0; if (invocationDescriptor_ != null) { size += 1 + pb::CodedOutputStream.ComputeMessageSize(InvocationDescriptor); } if (Result != global::Plexus.Host.Internal.Generated.InvocationResult.Succeeded) { size += 1 + pb::CodedOutputStream.ComputeEnumSize((int) Result); } if (DurationMs != 0L) { size += 1 + pb::CodedOutputStream.ComputeInt64Size(DurationMs); } if (_unknownFields != null) { size += _unknownFields.CalculateSize(); } return size; } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public void MergeFrom(InvocationFinishedEvent other) { if (other == null) { return; } if (other.invocationDescriptor_ != null) { if (invocationDescriptor_ == null) { InvocationDescriptor = new global::Plexus.Host.Internal.Generated.InvocationDescriptor(); } InvocationDescriptor.MergeFrom(other.InvocationDescriptor); } if (other.Result != global::Plexus.Host.Internal.Generated.InvocationResult.Succeeded) { Result = other.Result; } if (other.DurationMs != 0L) { DurationMs = other.DurationMs; } _unknownFields = pb::UnknownFieldSet.MergeFrom(_unknownFields, other._unknownFields); } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public void MergeFrom(pb::CodedInputStream input) { #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE input.ReadRawMessage(this); #else uint tag; while ((tag = input.ReadTag()) != 0) { switch(tag) { default: _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input); break; case 10: { if (invocationDescriptor_ == null) { InvocationDescriptor = new global::Plexus.Host.Internal.Generated.InvocationDescriptor(); } input.ReadMessage(InvocationDescriptor); break; } case 16: { Result = (global::Plexus.Host.Internal.Generated.InvocationResult) input.ReadEnum(); break; } case 24: { DurationMs = input.ReadInt64(); break; } } } #endif } #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] void pb::IBufferMessage.InternalMergeFrom(ref pb::ParseContext input) { uint tag; while ((tag = input.ReadTag()) != 0) { switch(tag) { default: _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, ref input); break; case 10: { if (invocationDescriptor_ == null) { InvocationDescriptor = new global::Plexus.Host.Internal.Generated.InvocationDescriptor(); } input.ReadMessage(InvocationDescriptor); break; } case 16: { Result = (global::Plexus.Host.Internal.Generated.InvocationResult) input.ReadEnum(); break; } case 24: { DurationMs = input.ReadInt64(); break; } } } } #endif } internal sealed partial class GetConnectionsRequest : pb::IMessage #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE , pb::IBufferMessage #endif { private static readonly pb::MessageParser _parser = new pb::MessageParser(() => new GetConnectionsRequest()); private pb::UnknownFieldSet _unknownFields; [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public static pb::MessageParser Parser { get { return _parser; } } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public static pbr::MessageDescriptor Descriptor { get { return global::Plexus.Host.Internal.Generated.AppLifecycleServiceReflection.Descriptor.MessageTypes[9]; } } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] pbr::MessageDescriptor pb::IMessage.Descriptor { get { return Descriptor; } } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public GetConnectionsRequest() { OnConstruction(); } partial void OnConstruction(); [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public GetConnectionsRequest(GetConnectionsRequest other) : this() { applicationId_ = other.applicationId_; appInstanceId_ = other.appInstanceId_ != null ? other.appInstanceId_.Clone() : null; connectionId_ = other.connectionId_ != null ? other.connectionId_.Clone() : null; _unknownFields = pb::UnknownFieldSet.Clone(other._unknownFields); } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public GetConnectionsRequest Clone() { return new GetConnectionsRequest(this); } /// Field number for the "application_id" field. public const int ApplicationIdFieldNumber = 1; private string applicationId_ = ""; [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public string ApplicationId { get { return applicationId_; } set { applicationId_ = pb::ProtoPreconditions.CheckNotNull(value, "value"); } } /// Field number for the "app_instance_id" field. public const int AppInstanceIdFieldNumber = 2; private global::Plexus.Host.Internal.Generated.UniqueId appInstanceId_; [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public global::Plexus.Host.Internal.Generated.UniqueId AppInstanceId { get { return appInstanceId_; } set { appInstanceId_ = value; } } /// Field number for the "connection_id" field. public const int ConnectionIdFieldNumber = 3; private global::Plexus.Host.Internal.Generated.UniqueId connectionId_; [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public global::Plexus.Host.Internal.Generated.UniqueId ConnectionId { get { return connectionId_; } set { connectionId_ = value; } } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public override bool Equals(object other) { return Equals(other as GetConnectionsRequest); } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public bool Equals(GetConnectionsRequest other) { if (ReferenceEquals(other, null)) { return false; } if (ReferenceEquals(other, this)) { return true; } if (ApplicationId != other.ApplicationId) return false; if (!object.Equals(AppInstanceId, other.AppInstanceId)) return false; if (!object.Equals(ConnectionId, other.ConnectionId)) return false; return Equals(_unknownFields, other._unknownFields); } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public override int GetHashCode() { int hash = 1; if (ApplicationId.Length != 0) hash ^= ApplicationId.GetHashCode(); if (appInstanceId_ != null) hash ^= AppInstanceId.GetHashCode(); if (connectionId_ != null) hash ^= ConnectionId.GetHashCode(); if (_unknownFields != null) { hash ^= _unknownFields.GetHashCode(); } return hash; } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public override string ToString() { return pb::JsonFormatter.ToDiagnosticString(this); } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public void WriteTo(pb::CodedOutputStream output) { #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE output.WriteRawMessage(this); #else if (ApplicationId.Length != 0) { output.WriteRawTag(10); output.WriteString(ApplicationId); } if (appInstanceId_ != null) { output.WriteRawTag(18); output.WriteMessage(AppInstanceId); } if (connectionId_ != null) { output.WriteRawTag(26); output.WriteMessage(ConnectionId); } if (_unknownFields != null) { _unknownFields.WriteTo(output); } #endif } #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] void pb::IBufferMessage.InternalWriteTo(ref pb::WriteContext output) { if (ApplicationId.Length != 0) { output.WriteRawTag(10); output.WriteString(ApplicationId); } if (appInstanceId_ != null) { output.WriteRawTag(18); output.WriteMessage(AppInstanceId); } if (connectionId_ != null) { output.WriteRawTag(26); output.WriteMessage(ConnectionId); } if (_unknownFields != null) { _unknownFields.WriteTo(ref output); } } #endif [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public int CalculateSize() { int size = 0; if (ApplicationId.Length != 0) { size += 1 + pb::CodedOutputStream.ComputeStringSize(ApplicationId); } if (appInstanceId_ != null) { size += 1 + pb::CodedOutputStream.ComputeMessageSize(AppInstanceId); } if (connectionId_ != null) { size += 1 + pb::CodedOutputStream.ComputeMessageSize(ConnectionId); } if (_unknownFields != null) { size += _unknownFields.CalculateSize(); } return size; } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public void MergeFrom(GetConnectionsRequest other) { if (other == null) { return; } if (other.ApplicationId.Length != 0) { ApplicationId = other.ApplicationId; } if (other.appInstanceId_ != null) { if (appInstanceId_ == null) { AppInstanceId = new global::Plexus.Host.Internal.Generated.UniqueId(); } AppInstanceId.MergeFrom(other.AppInstanceId); } if (other.connectionId_ != null) { if (connectionId_ == null) { ConnectionId = new global::Plexus.Host.Internal.Generated.UniqueId(); } ConnectionId.MergeFrom(other.ConnectionId); } _unknownFields = pb::UnknownFieldSet.MergeFrom(_unknownFields, other._unknownFields); } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public void MergeFrom(pb::CodedInputStream input) { #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE input.ReadRawMessage(this); #else uint tag; while ((tag = input.ReadTag()) != 0) { switch(tag) { default: _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input); break; case 10: { ApplicationId = input.ReadString(); break; } case 18: { if (appInstanceId_ == null) { AppInstanceId = new global::Plexus.Host.Internal.Generated.UniqueId(); } input.ReadMessage(AppInstanceId); break; } case 26: { if (connectionId_ == null) { ConnectionId = new global::Plexus.Host.Internal.Generated.UniqueId(); } input.ReadMessage(ConnectionId); break; } } } #endif } #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] void pb::IBufferMessage.InternalMergeFrom(ref pb::ParseContext input) { uint tag; while ((tag = input.ReadTag()) != 0) { switch(tag) { default: _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, ref input); break; case 10: { ApplicationId = input.ReadString(); break; } case 18: { if (appInstanceId_ == null) { AppInstanceId = new global::Plexus.Host.Internal.Generated.UniqueId(); } input.ReadMessage(AppInstanceId); break; } case 26: { if (connectionId_ == null) { ConnectionId = new global::Plexus.Host.Internal.Generated.UniqueId(); } input.ReadMessage(ConnectionId); break; } } } } #endif } internal sealed partial class GetConnectionsResponse : pb::IMessage #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE , pb::IBufferMessage #endif { private static readonly pb::MessageParser _parser = new pb::MessageParser(() => new GetConnectionsResponse()); private pb::UnknownFieldSet _unknownFields; [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public static pb::MessageParser Parser { get { return _parser; } } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public static pbr::MessageDescriptor Descriptor { get { return global::Plexus.Host.Internal.Generated.AppLifecycleServiceReflection.Descriptor.MessageTypes[10]; } } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] pbr::MessageDescriptor pb::IMessage.Descriptor { get { return Descriptor; } } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public GetConnectionsResponse() { OnConstruction(); } partial void OnConstruction(); [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public GetConnectionsResponse(GetConnectionsResponse other) : this() { connections_ = other.connections_.Clone(); _unknownFields = pb::UnknownFieldSet.Clone(other._unknownFields); } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public GetConnectionsResponse Clone() { return new GetConnectionsResponse(this); } /// Field number for the "connections" field. public const int ConnectionsFieldNumber = 1; private static readonly pb::FieldCodec _repeated_connections_codec = pb::FieldCodec.ForMessage(10, global::Plexus.Host.Internal.Generated.AppConnectionDescriptor.Parser); private readonly pbc::RepeatedField connections_ = new pbc::RepeatedField(); [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public pbc::RepeatedField Connections { get { return connections_; } } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public override bool Equals(object other) { return Equals(other as GetConnectionsResponse); } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public bool Equals(GetConnectionsResponse other) { if (ReferenceEquals(other, null)) { return false; } if (ReferenceEquals(other, this)) { return true; } if(!connections_.Equals(other.connections_)) return false; return Equals(_unknownFields, other._unknownFields); } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public override int GetHashCode() { int hash = 1; hash ^= connections_.GetHashCode(); if (_unknownFields != null) { hash ^= _unknownFields.GetHashCode(); } return hash; } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public override string ToString() { return pb::JsonFormatter.ToDiagnosticString(this); } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public void WriteTo(pb::CodedOutputStream output) { #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE output.WriteRawMessage(this); #else connections_.WriteTo(output, _repeated_connections_codec); if (_unknownFields != null) { _unknownFields.WriteTo(output); } #endif } #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] void pb::IBufferMessage.InternalWriteTo(ref pb::WriteContext output) { connections_.WriteTo(ref output, _repeated_connections_codec); if (_unknownFields != null) { _unknownFields.WriteTo(ref output); } } #endif [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public int CalculateSize() { int size = 0; size += connections_.CalculateSize(_repeated_connections_codec); if (_unknownFields != null) { size += _unknownFields.CalculateSize(); } return size; } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public void MergeFrom(GetConnectionsResponse other) { if (other == null) { return; } connections_.Add(other.connections_); _unknownFields = pb::UnknownFieldSet.MergeFrom(_unknownFields, other._unknownFields); } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public void MergeFrom(pb::CodedInputStream input) { #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE input.ReadRawMessage(this); #else uint tag; while ((tag = input.ReadTag()) != 0) { switch(tag) { default: _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input); break; case 10: { connections_.AddEntriesFrom(input, _repeated_connections_codec); break; } } } #endif } #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] void pb::IBufferMessage.InternalMergeFrom(ref pb::ParseContext input) { uint tag; while ((tag = input.ReadTag()) != 0) { switch(tag) { default: _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, ref input); break; case 10: { connections_.AddEntriesFrom(ref input, _repeated_connections_codec); break; } } } } #endif } internal sealed partial class GetConnectionsEvent : pb::IMessage #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE , pb::IBufferMessage #endif { private static readonly pb::MessageParser _parser = new pb::MessageParser(() => new GetConnectionsEvent()); private pb::UnknownFieldSet _unknownFields; [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public static pb::MessageParser Parser { get { return _parser; } } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public static pbr::MessageDescriptor Descriptor { get { return global::Plexus.Host.Internal.Generated.AppLifecycleServiceReflection.Descriptor.MessageTypes[11]; } } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] pbr::MessageDescriptor pb::IMessage.Descriptor { get { return Descriptor; } } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public GetConnectionsEvent() { OnConstruction(); } partial void OnConstruction(); [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public GetConnectionsEvent(GetConnectionsEvent other) : this() { connections_ = other.connections_.Clone(); switch (other.EventCase) { case EventOneofCase.NewConnection: NewConnection = other.NewConnection.Clone(); break; case EventOneofCase.ClosedConnection: ClosedConnection = other.ClosedConnection.Clone(); break; } _unknownFields = pb::UnknownFieldSet.Clone(other._unknownFields); } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public GetConnectionsEvent Clone() { return new GetConnectionsEvent(this); } /// Field number for the "connections" field. public const int ConnectionsFieldNumber = 1; private static readonly pb::FieldCodec _repeated_connections_codec = pb::FieldCodec.ForMessage(10, global::Plexus.Host.Internal.Generated.AppConnectionDescriptor.Parser); private readonly pbc::RepeatedField connections_ = new pbc::RepeatedField(); [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public pbc::RepeatedField Connections { get { return connections_; } } /// Field number for the "new_connection" field. public const int NewConnectionFieldNumber = 2; [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public global::Plexus.Host.Internal.Generated.AppConnectionDescriptor NewConnection { get { return eventCase_ == EventOneofCase.NewConnection ? (global::Plexus.Host.Internal.Generated.AppConnectionDescriptor) event_ : null; } set { event_ = value; eventCase_ = value == null ? EventOneofCase.None : EventOneofCase.NewConnection; } } /// Field number for the "closed_connection" field. public const int ClosedConnectionFieldNumber = 3; [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public global::Plexus.Host.Internal.Generated.AppConnectionDescriptor ClosedConnection { get { return eventCase_ == EventOneofCase.ClosedConnection ? (global::Plexus.Host.Internal.Generated.AppConnectionDescriptor) event_ : null; } set { event_ = value; eventCase_ = value == null ? EventOneofCase.None : EventOneofCase.ClosedConnection; } } private object event_; /// Enum of possible cases for the "event" oneof. public enum EventOneofCase { None = 0, NewConnection = 2, ClosedConnection = 3, } private EventOneofCase eventCase_ = EventOneofCase.None; [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public EventOneofCase EventCase { get { return eventCase_; } } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public void ClearEvent() { eventCase_ = EventOneofCase.None; event_ = null; } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public override bool Equals(object other) { return Equals(other as GetConnectionsEvent); } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public bool Equals(GetConnectionsEvent other) { if (ReferenceEquals(other, null)) { return false; } if (ReferenceEquals(other, this)) { return true; } if(!connections_.Equals(other.connections_)) return false; if (!object.Equals(NewConnection, other.NewConnection)) return false; if (!object.Equals(ClosedConnection, other.ClosedConnection)) return false; if (EventCase != other.EventCase) return false; return Equals(_unknownFields, other._unknownFields); } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public override int GetHashCode() { int hash = 1; hash ^= connections_.GetHashCode(); if (eventCase_ == EventOneofCase.NewConnection) hash ^= NewConnection.GetHashCode(); if (eventCase_ == EventOneofCase.ClosedConnection) hash ^= ClosedConnection.GetHashCode(); hash ^= (int) eventCase_; if (_unknownFields != null) { hash ^= _unknownFields.GetHashCode(); } return hash; } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public override string ToString() { return pb::JsonFormatter.ToDiagnosticString(this); } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public void WriteTo(pb::CodedOutputStream output) { #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE output.WriteRawMessage(this); #else connections_.WriteTo(output, _repeated_connections_codec); if (eventCase_ == EventOneofCase.NewConnection) { output.WriteRawTag(18); output.WriteMessage(NewConnection); } if (eventCase_ == EventOneofCase.ClosedConnection) { output.WriteRawTag(26); output.WriteMessage(ClosedConnection); } if (_unknownFields != null) { _unknownFields.WriteTo(output); } #endif } #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] void pb::IBufferMessage.InternalWriteTo(ref pb::WriteContext output) { connections_.WriteTo(ref output, _repeated_connections_codec); if (eventCase_ == EventOneofCase.NewConnection) { output.WriteRawTag(18); output.WriteMessage(NewConnection); } if (eventCase_ == EventOneofCase.ClosedConnection) { output.WriteRawTag(26); output.WriteMessage(ClosedConnection); } if (_unknownFields != null) { _unknownFields.WriteTo(ref output); } } #endif [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public int CalculateSize() { int size = 0; size += connections_.CalculateSize(_repeated_connections_codec); if (eventCase_ == EventOneofCase.NewConnection) { size += 1 + pb::CodedOutputStream.ComputeMessageSize(NewConnection); } if (eventCase_ == EventOneofCase.ClosedConnection) { size += 1 + pb::CodedOutputStream.ComputeMessageSize(ClosedConnection); } if (_unknownFields != null) { size += _unknownFields.CalculateSize(); } return size; } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public void MergeFrom(GetConnectionsEvent other) { if (other == null) { return; } connections_.Add(other.connections_); switch (other.EventCase) { case EventOneofCase.NewConnection: if (NewConnection == null) { NewConnection = new global::Plexus.Host.Internal.Generated.AppConnectionDescriptor(); } NewConnection.MergeFrom(other.NewConnection); break; case EventOneofCase.ClosedConnection: if (ClosedConnection == null) { ClosedConnection = new global::Plexus.Host.Internal.Generated.AppConnectionDescriptor(); } ClosedConnection.MergeFrom(other.ClosedConnection); break; } _unknownFields = pb::UnknownFieldSet.MergeFrom(_unknownFields, other._unknownFields); } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public void MergeFrom(pb::CodedInputStream input) { #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE input.ReadRawMessage(this); #else uint tag; while ((tag = input.ReadTag()) != 0) { switch(tag) { default: _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input); break; case 10: { connections_.AddEntriesFrom(input, _repeated_connections_codec); break; } case 18: { global::Plexus.Host.Internal.Generated.AppConnectionDescriptor subBuilder = new global::Plexus.Host.Internal.Generated.AppConnectionDescriptor(); if (eventCase_ == EventOneofCase.NewConnection) { subBuilder.MergeFrom(NewConnection); } input.ReadMessage(subBuilder); NewConnection = subBuilder; break; } case 26: { global::Plexus.Host.Internal.Generated.AppConnectionDescriptor subBuilder = new global::Plexus.Host.Internal.Generated.AppConnectionDescriptor(); if (eventCase_ == EventOneofCase.ClosedConnection) { subBuilder.MergeFrom(ClosedConnection); } input.ReadMessage(subBuilder); ClosedConnection = subBuilder; break; } } } #endif } #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] void pb::IBufferMessage.InternalMergeFrom(ref pb::ParseContext input) { uint tag; while ((tag = input.ReadTag()) != 0) { switch(tag) { default: _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, ref input); break; case 10: { connections_.AddEntriesFrom(ref input, _repeated_connections_codec); break; } case 18: { global::Plexus.Host.Internal.Generated.AppConnectionDescriptor subBuilder = new global::Plexus.Host.Internal.Generated.AppConnectionDescriptor(); if (eventCase_ == EventOneofCase.NewConnection) { subBuilder.MergeFrom(NewConnection); } input.ReadMessage(subBuilder); NewConnection = subBuilder; break; } case 26: { global::Plexus.Host.Internal.Generated.AppConnectionDescriptor subBuilder = new global::Plexus.Host.Internal.Generated.AppConnectionDescriptor(); if (eventCase_ == EventOneofCase.ClosedConnection) { subBuilder.MergeFrom(ClosedConnection); } input.ReadMessage(subBuilder); ClosedConnection = subBuilder; break; } } } } #endif } #endregion } #endregion Designer generated code ================================================ FILE: desktop/src/Plexus.Host/Internal/Generated/interop/AppLifecycleService.svc.g.cs ================================================ /** * Copyright 2017-2021 Plexus Interop Deutsche Bank AG * SPDX-License-Identifier: Apache-2.0 * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ // // Generated by the Plexus Interop compiler. DO NOT EDIT! // source: interop\app_lifecycle_service.proto // #pragma warning disable 1591, 0612, 3021 #region Designer generated code namespace Plexus.Host.Internal.Generated { using System; using global::Plexus; using global::Plexus.Channels; using global::Plexus.Interop; using global::System.Threading.Tasks; internal static partial class AppLifecycleService { public const string Id = "interop.AppLifecycleService"; public const string ResolveAppMethodId = "ResolveApp"; public const string GetLifecycleEventStreamMethodId = "GetLifecycleEventStream"; public const string GetInvocationEventStreamMethodId = "GetInvocationEventStream"; public const string GetConnectionsMethodId = "GetConnections"; public const string GetConnectionsStreamMethodId = "GetConnectionsStream"; public static readonly AppLifecycleService.Descriptor DefaultDescriptor = CreateDescriptor(); public static AppLifecycleService.Descriptor CreateDescriptor() { return new AppLifecycleService.Descriptor(); } public static AppLifecycleService.Descriptor CreateDescriptor(string alias) { return new AppLifecycleService.Descriptor(alias); } public partial interface IResolveAppProxy { IUnaryMethodCall ResolveApp(global::Plexus.Host.Internal.Generated.ResolveAppRequest request); } public partial interface IGetLifecycleEventStreamProxy { IServerStreamingMethodCall GetLifecycleEventStream(global::Google.Protobuf.WellKnownTypes.Empty request); } public partial interface IGetInvocationEventStreamProxy { IServerStreamingMethodCall GetInvocationEventStream(global::Google.Protobuf.WellKnownTypes.Empty request); } public partial interface IGetConnectionsProxy { IUnaryMethodCall GetConnections(global::Plexus.Host.Internal.Generated.GetConnectionsRequest request); } public partial interface IGetConnectionsStreamProxy { IServerStreamingMethodCall GetConnectionsStream(global::Plexus.Host.Internal.Generated.GetConnectionsRequest request); } public partial interface IResolveAppImpl { Task ResolveApp(global::Plexus.Host.Internal.Generated.ResolveAppRequest request, MethodCallContext context); } public partial interface IGetLifecycleEventStreamImpl { Task GetLifecycleEventStream(global::Google.Protobuf.WellKnownTypes.Empty request, IWritableChannel responseStream, MethodCallContext context); } public partial interface IGetInvocationEventStreamImpl { Task GetInvocationEventStream(global::Google.Protobuf.WellKnownTypes.Empty request, IWritableChannel responseStream, MethodCallContext context); } public partial interface IGetConnectionsImpl { Task GetConnections(global::Plexus.Host.Internal.Generated.GetConnectionsRequest request, MethodCallContext context); } public partial interface IGetConnectionsStreamImpl { Task GetConnectionsStream(global::Plexus.Host.Internal.Generated.GetConnectionsRequest request, IWritableChannel responseStream, MethodCallContext context); } public sealed partial class Descriptor { public UnaryMethod ResolveAppMethod {get; private set; } public ServerStreamingMethod GetLifecycleEventStreamMethod {get; private set; } public ServerStreamingMethod GetInvocationEventStreamMethod {get; private set; } public UnaryMethod GetConnectionsMethod {get; private set; } public ServerStreamingMethod GetConnectionsStreamMethod {get; private set; } public Descriptor() { ResolveAppMethod = Method.Unary(Id, ResolveAppMethodId); GetLifecycleEventStreamMethod = Method.ServerStreaming(Id, GetLifecycleEventStreamMethodId); GetInvocationEventStreamMethod = Method.ServerStreaming(Id, GetInvocationEventStreamMethodId); GetConnectionsMethod = Method.Unary(Id, GetConnectionsMethodId); GetConnectionsStreamMethod = Method.ServerStreaming(Id, GetConnectionsStreamMethodId); } public Descriptor(string alias) { ResolveAppMethod = Method.Unary(Id, alias, ResolveAppMethodId); GetLifecycleEventStreamMethod = Method.ServerStreaming(Id, alias, GetLifecycleEventStreamMethodId); GetInvocationEventStreamMethod = Method.ServerStreaming(Id, alias, GetInvocationEventStreamMethodId); GetConnectionsMethod = Method.Unary(Id, alias, GetConnectionsMethodId); GetConnectionsStreamMethod = Method.ServerStreaming(Id, alias, GetConnectionsStreamMethodId); } } } } #endregion Designer generated code ================================================ FILE: desktop/src/Plexus.Host/Internal/Generated/interop/CommandLineTool.app.g.cs ================================================ /** * Copyright 2017-2021 Plexus Interop Deutsche Bank AG * SPDX-License-Identifier: Apache-2.0 * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ // // Generated by the Plexus Interop compiler. DO NOT EDIT! // source: interop\command_line_tool.interop // #pragma warning disable 1591, 0612, 3021 #region Designer generated code namespace Plexus.Host.Internal.Generated { using System; using global::Plexus; using global::Plexus.Channels; using global::Plexus.Interop; using global::System.Threading.Tasks; internal partial interface ICommandLineToolClient: IClient { CommandLineToolClient.IAppLifecycleServiceProxy AppLifecycleService { get; } } internal sealed partial class CommandLineToolClient: ClientBase, ICommandLineToolClient { public const string Id = "interop.CommandLineTool"; private static ClientOptions CreateClientOptions(Func setup = null) { ClientOptionsBuilder builder = new ClientOptionsBuilder().WithApplicationId(Id).WithDefaultConfiguration(); if (setup != null) { builder = setup(builder); } return builder.Build(); } public CommandLineToolClient(Func setup = null): base(CreateClientOptions(setup)) { AppLifecycleService = new CommandLineToolClient.AppLifecycleServiceProxy(this.CallInvoker); } public partial interface IAppLifecycleServiceProxy: global::Plexus.Host.Internal.Generated.AppLifecycleService.IResolveAppProxy { } public sealed partial class AppLifecycleServiceProxy: IAppLifecycleServiceProxy { public static global::Plexus.Host.Internal.Generated.AppLifecycleService.Descriptor Descriptor = global::Plexus.Host.Internal.Generated.AppLifecycleService.DefaultDescriptor; private readonly IClientCallInvoker _callInvoker; public AppLifecycleServiceProxy(IClientCallInvoker callInvoker) { _callInvoker = callInvoker; } public IUnaryMethodCall ResolveApp(global::Plexus.Host.Internal.Generated.ResolveAppRequest request) { return _callInvoker.Call(Descriptor.ResolveAppMethod, request); } } public IAppLifecycleServiceProxy AppLifecycleService { get; private set; } } } #endregion Designer generated code ================================================ FILE: desktop/src/Plexus.Host/Internal/Generated/interop/InvocationDescriptor.msg.g.cs ================================================ /** * Copyright 2017-2021 Plexus Interop Deutsche Bank AG * SPDX-License-Identifier: Apache-2.0 * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ // // Generated by the protocol buffer compiler. DO NOT EDIT! // source: interop/invocation_descriptor.proto // #pragma warning disable 1591, 0612, 3021 #region Designer generated code using pb = global::Google.Protobuf; using pbc = global::Google.Protobuf.Collections; using pbr = global::Google.Protobuf.Reflection; using scg = global::System.Collections.Generic; namespace Plexus.Host.Internal.Generated { /// Holder for reflection information generated from interop/invocation_descriptor.proto internal static partial class InvocationDescriptorReflection { #region Descriptor /// File descriptor for interop/invocation_descriptor.proto public static pbr::FileDescriptor Descriptor { get { return descriptor; } } private static pbr::FileDescriptor descriptor; static InvocationDescriptorReflection() { byte[] descriptorData = global::System.Convert.FromBase64String( string.Concat( "CiNpbnRlcm9wL2ludm9jYXRpb25fZGVzY3JpcHRvci5wcm90bxIHaW50ZXJv", "cBonaW50ZXJvcC9hcHBfY29ubmVjdGlvbl9kZXNjcmlwdG9yLnByb3RvGhVp", "bnRlcm9wL29wdGlvbnMucHJvdG8i3QEKFEludm9jYXRpb25EZXNjcmlwdG9y", "EhIKCnNlcnZpY2VfaWQYASABKAkSGAoQc2VydmljZV9hbGlhc19pZBgCIAEo", "CRIRCgltZXRob2RfaWQYAyABKAkSMAoGc291cmNlGAQgASgLMiAuaW50ZXJv", "cC5BcHBDb25uZWN0aW9uRGVzY3JpcHRvchIwCgZ0YXJnZXQYBSABKAsyIC5p", "bnRlcm9wLkFwcENvbm5lY3Rpb25EZXNjcmlwdG9yOiCS2wQcaW50ZXJvcC5J", "bnZvY2F0aW9uRGVzY3JpcHRvckIhqgIeUGxleHVzLkhvc3QuSW50ZXJuYWwu", "R2VuZXJhdGVkYgZwcm90bzM=")); descriptor = pbr::FileDescriptor.FromGeneratedCode(descriptorData, new pbr::FileDescriptor[] { global::Plexus.Host.Internal.Generated.AppConnectionDescriptorReflection.Descriptor, global::Plexus.Host.Internal.Generated.OptionsReflection.Descriptor, }, new pbr::GeneratedClrTypeInfo(null, null, new pbr::GeneratedClrTypeInfo[] { new pbr::GeneratedClrTypeInfo(typeof(global::Plexus.Host.Internal.Generated.InvocationDescriptor), global::Plexus.Host.Internal.Generated.InvocationDescriptor.Parser, new[]{ "ServiceId", "ServiceAliasId", "MethodId", "Source", "Target" }, null, null, null, null) })); } #endregion } #region Messages internal sealed partial class InvocationDescriptor : pb::IMessage #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE , pb::IBufferMessage #endif { private static readonly pb::MessageParser _parser = new pb::MessageParser(() => new InvocationDescriptor()); private pb::UnknownFieldSet _unknownFields; [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public static pb::MessageParser Parser { get { return _parser; } } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public static pbr::MessageDescriptor Descriptor { get { return global::Plexus.Host.Internal.Generated.InvocationDescriptorReflection.Descriptor.MessageTypes[0]; } } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] pbr::MessageDescriptor pb::IMessage.Descriptor { get { return Descriptor; } } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public InvocationDescriptor() { OnConstruction(); } partial void OnConstruction(); [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public InvocationDescriptor(InvocationDescriptor other) : this() { serviceId_ = other.serviceId_; serviceAliasId_ = other.serviceAliasId_; methodId_ = other.methodId_; source_ = other.source_ != null ? other.source_.Clone() : null; target_ = other.target_ != null ? other.target_.Clone() : null; _unknownFields = pb::UnknownFieldSet.Clone(other._unknownFields); } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public InvocationDescriptor Clone() { return new InvocationDescriptor(this); } /// Field number for the "service_id" field. public const int ServiceIdFieldNumber = 1; private string serviceId_ = ""; [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public string ServiceId { get { return serviceId_; } set { serviceId_ = pb::ProtoPreconditions.CheckNotNull(value, "value"); } } /// Field number for the "service_alias_id" field. public const int ServiceAliasIdFieldNumber = 2; private string serviceAliasId_ = ""; [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public string ServiceAliasId { get { return serviceAliasId_; } set { serviceAliasId_ = pb::ProtoPreconditions.CheckNotNull(value, "value"); } } /// Field number for the "method_id" field. public const int MethodIdFieldNumber = 3; private string methodId_ = ""; [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public string MethodId { get { return methodId_; } set { methodId_ = pb::ProtoPreconditions.CheckNotNull(value, "value"); } } /// Field number for the "source" field. public const int SourceFieldNumber = 4; private global::Plexus.Host.Internal.Generated.AppConnectionDescriptor source_; [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public global::Plexus.Host.Internal.Generated.AppConnectionDescriptor Source { get { return source_; } set { source_ = value; } } /// Field number for the "target" field. public const int TargetFieldNumber = 5; private global::Plexus.Host.Internal.Generated.AppConnectionDescriptor target_; [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public global::Plexus.Host.Internal.Generated.AppConnectionDescriptor Target { get { return target_; } set { target_ = value; } } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public override bool Equals(object other) { return Equals(other as InvocationDescriptor); } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public bool Equals(InvocationDescriptor other) { if (ReferenceEquals(other, null)) { return false; } if (ReferenceEquals(other, this)) { return true; } if (ServiceId != other.ServiceId) return false; if (ServiceAliasId != other.ServiceAliasId) return false; if (MethodId != other.MethodId) return false; if (!object.Equals(Source, other.Source)) return false; if (!object.Equals(Target, other.Target)) return false; return Equals(_unknownFields, other._unknownFields); } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public override int GetHashCode() { int hash = 1; if (ServiceId.Length != 0) hash ^= ServiceId.GetHashCode(); if (ServiceAliasId.Length != 0) hash ^= ServiceAliasId.GetHashCode(); if (MethodId.Length != 0) hash ^= MethodId.GetHashCode(); if (source_ != null) hash ^= Source.GetHashCode(); if (target_ != null) hash ^= Target.GetHashCode(); if (_unknownFields != null) { hash ^= _unknownFields.GetHashCode(); } return hash; } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public override string ToString() { return pb::JsonFormatter.ToDiagnosticString(this); } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public void WriteTo(pb::CodedOutputStream output) { #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE output.WriteRawMessage(this); #else if (ServiceId.Length != 0) { output.WriteRawTag(10); output.WriteString(ServiceId); } if (ServiceAliasId.Length != 0) { output.WriteRawTag(18); output.WriteString(ServiceAliasId); } if (MethodId.Length != 0) { output.WriteRawTag(26); output.WriteString(MethodId); } if (source_ != null) { output.WriteRawTag(34); output.WriteMessage(Source); } if (target_ != null) { output.WriteRawTag(42); output.WriteMessage(Target); } if (_unknownFields != null) { _unknownFields.WriteTo(output); } #endif } #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] void pb::IBufferMessage.InternalWriteTo(ref pb::WriteContext output) { if (ServiceId.Length != 0) { output.WriteRawTag(10); output.WriteString(ServiceId); } if (ServiceAliasId.Length != 0) { output.WriteRawTag(18); output.WriteString(ServiceAliasId); } if (MethodId.Length != 0) { output.WriteRawTag(26); output.WriteString(MethodId); } if (source_ != null) { output.WriteRawTag(34); output.WriteMessage(Source); } if (target_ != null) { output.WriteRawTag(42); output.WriteMessage(Target); } if (_unknownFields != null) { _unknownFields.WriteTo(ref output); } } #endif [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public int CalculateSize() { int size = 0; if (ServiceId.Length != 0) { size += 1 + pb::CodedOutputStream.ComputeStringSize(ServiceId); } if (ServiceAliasId.Length != 0) { size += 1 + pb::CodedOutputStream.ComputeStringSize(ServiceAliasId); } if (MethodId.Length != 0) { size += 1 + pb::CodedOutputStream.ComputeStringSize(MethodId); } if (source_ != null) { size += 1 + pb::CodedOutputStream.ComputeMessageSize(Source); } if (target_ != null) { size += 1 + pb::CodedOutputStream.ComputeMessageSize(Target); } if (_unknownFields != null) { size += _unknownFields.CalculateSize(); } return size; } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public void MergeFrom(InvocationDescriptor other) { if (other == null) { return; } if (other.ServiceId.Length != 0) { ServiceId = other.ServiceId; } if (other.ServiceAliasId.Length != 0) { ServiceAliasId = other.ServiceAliasId; } if (other.MethodId.Length != 0) { MethodId = other.MethodId; } if (other.source_ != null) { if (source_ == null) { Source = new global::Plexus.Host.Internal.Generated.AppConnectionDescriptor(); } Source.MergeFrom(other.Source); } if (other.target_ != null) { if (target_ == null) { Target = new global::Plexus.Host.Internal.Generated.AppConnectionDescriptor(); } Target.MergeFrom(other.Target); } _unknownFields = pb::UnknownFieldSet.MergeFrom(_unknownFields, other._unknownFields); } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public void MergeFrom(pb::CodedInputStream input) { #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE input.ReadRawMessage(this); #else uint tag; while ((tag = input.ReadTag()) != 0) { switch(tag) { default: _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input); break; case 10: { ServiceId = input.ReadString(); break; } case 18: { ServiceAliasId = input.ReadString(); break; } case 26: { MethodId = input.ReadString(); break; } case 34: { if (source_ == null) { Source = new global::Plexus.Host.Internal.Generated.AppConnectionDescriptor(); } input.ReadMessage(Source); break; } case 42: { if (target_ == null) { Target = new global::Plexus.Host.Internal.Generated.AppConnectionDescriptor(); } input.ReadMessage(Target); break; } } } #endif } #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] void pb::IBufferMessage.InternalMergeFrom(ref pb::ParseContext input) { uint tag; while ((tag = input.ReadTag()) != 0) { switch(tag) { default: _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, ref input); break; case 10: { ServiceId = input.ReadString(); break; } case 18: { ServiceAliasId = input.ReadString(); break; } case 26: { MethodId = input.ReadString(); break; } case 34: { if (source_ == null) { Source = new global::Plexus.Host.Internal.Generated.AppConnectionDescriptor(); } input.ReadMessage(Source); break; } case 42: { if (target_ == null) { Target = new global::Plexus.Host.Internal.Generated.AppConnectionDescriptor(); } input.ReadMessage(Target); break; } } } } #endif } #endregion } #endregion Designer generated code ================================================ FILE: desktop/src/Plexus.Host/Internal/Generated/interop/Options.msg.g.cs ================================================ /** * Copyright 2017-2021 Plexus Interop Deutsche Bank AG * SPDX-License-Identifier: Apache-2.0 * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ // // Generated by the protocol buffer compiler. DO NOT EDIT! // source: interop/options.proto // #pragma warning disable 1591, 0612, 3021 #region Designer generated code using pb = global::Google.Protobuf; using pbc = global::Google.Protobuf.Collections; using pbr = global::Google.Protobuf.Reflection; using scg = global::System.Collections.Generic; namespace Plexus.Host.Internal.Generated { /// Holder for reflection information generated from interop/options.proto internal static partial class OptionsReflection { #region Descriptor /// File descriptor for interop/options.proto public static pbr::FileDescriptor Descriptor { get { return descriptor; } } private static pbr::FileDescriptor descriptor; static OptionsReflection() { byte[] descriptorData = global::System.Convert.FromBase64String( string.Concat( "ChVpbnRlcm9wL29wdGlvbnMucHJvdG8SB2ludGVyb3AaIGdvb2dsZS9wcm90", "b2J1Zi9kZXNjcmlwdG9yLnByb3RvOjQKCm1lc3NhZ2VfaWQSHy5nb29nbGUu", "cHJvdG9idWYuTWVzc2FnZU9wdGlvbnMYsksgASgJOjQKCnNlcnZpY2VfaWQS", "Hy5nb29nbGUucHJvdG9idWYuU2VydmljZU9wdGlvbnMYsksgASgJOjIKCW1l", "dGhvZF9pZBIeLmdvb2dsZS5wcm90b2J1Zi5NZXRob2RPcHRpb25zGLJLIAEo", "CUIhqgIeUGxleHVzLkhvc3QuSW50ZXJuYWwuR2VuZXJhdGVkYgZwcm90bzM=")); descriptor = pbr::FileDescriptor.FromGeneratedCode(descriptorData, new pbr::FileDescriptor[] { global::Google.Protobuf.Reflection.DescriptorReflection.Descriptor, }, new pbr::GeneratedClrTypeInfo(null, new pb::Extension[] { OptionsExtensions.MessageId, OptionsExtensions.ServiceId, OptionsExtensions.MethodId }, null)); } #endregion } /// Holder for extension identifiers generated from the top level of interop/options.proto internal static partial class OptionsExtensions { public static readonly pb::Extension MessageId = new pb::Extension(9650, pb::FieldCodec.ForString(77202, "")); public static readonly pb::Extension ServiceId = new pb::Extension(9650, pb::FieldCodec.ForString(77202, "")); public static readonly pb::Extension MethodId = new pb::Extension(9650, pb::FieldCodec.ForString(77202, "")); } } #endregion Designer generated code ================================================ FILE: desktop/src/Plexus.Host/Internal/Generated/interop/UniqueId.msg.g.cs ================================================ /** * Copyright 2017-2021 Plexus Interop Deutsche Bank AG * SPDX-License-Identifier: Apache-2.0 * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ // // Generated by the protocol buffer compiler. DO NOT EDIT! // source: interop/unique_id.proto // #pragma warning disable 1591, 0612, 3021 #region Designer generated code using pb = global::Google.Protobuf; using pbc = global::Google.Protobuf.Collections; using pbr = global::Google.Protobuf.Reflection; using scg = global::System.Collections.Generic; namespace Plexus.Host.Internal.Generated { /// Holder for reflection information generated from interop/unique_id.proto internal static partial class UniqueIdReflection { #region Descriptor /// File descriptor for interop/unique_id.proto public static pbr::FileDescriptor Descriptor { get { return descriptor; } } private static pbr::FileDescriptor descriptor; static UniqueIdReflection() { byte[] descriptorData = global::System.Convert.FromBase64String( string.Concat( "ChdpbnRlcm9wL3VuaXF1ZV9pZC5wcm90bxIHaW50ZXJvcBoVaW50ZXJvcC9v", "cHRpb25zLnByb3RvIjgKCFVuaXF1ZUlkEgoKAmxvGAEgASgGEgoKAmhpGAIg", "ASgGOhSS2wQQaW50ZXJvcC5VbmlxdWVJZEIhqgIeUGxleHVzLkhvc3QuSW50", "ZXJuYWwuR2VuZXJhdGVkYgZwcm90bzM=")); descriptor = pbr::FileDescriptor.FromGeneratedCode(descriptorData, new pbr::FileDescriptor[] { global::Plexus.Host.Internal.Generated.OptionsReflection.Descriptor, }, new pbr::GeneratedClrTypeInfo(null, null, new pbr::GeneratedClrTypeInfo[] { new pbr::GeneratedClrTypeInfo(typeof(global::Plexus.Host.Internal.Generated.UniqueId), global::Plexus.Host.Internal.Generated.UniqueId.Parser, new[]{ "Lo", "Hi" }, null, null, null, null) })); } #endregion } #region Messages /// /// Stores UUID in little-endian format (i.e. reversed). /// To convert to bytes on little-endian systems (most common case): concat (toBytes(hi), toBytes(lo)) /// To convert to bytes on big-endian systems need to additionally reverse "hi" and "lo" parts: concat( reverse(toBytes(hi)), reverse(toBytes(lo)) ) /// internal sealed partial class UniqueId : pb::IMessage #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE , pb::IBufferMessage #endif { private static readonly pb::MessageParser _parser = new pb::MessageParser(() => new UniqueId()); private pb::UnknownFieldSet _unknownFields; [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public static pb::MessageParser Parser { get { return _parser; } } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public static pbr::MessageDescriptor Descriptor { get { return global::Plexus.Host.Internal.Generated.UniqueIdReflection.Descriptor.MessageTypes[0]; } } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] pbr::MessageDescriptor pb::IMessage.Descriptor { get { return Descriptor; } } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public UniqueId() { OnConstruction(); } partial void OnConstruction(); [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public UniqueId(UniqueId other) : this() { lo_ = other.lo_; hi_ = other.hi_; _unknownFields = pb::UnknownFieldSet.Clone(other._unknownFields); } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public UniqueId Clone() { return new UniqueId(this); } /// Field number for the "lo" field. public const int LoFieldNumber = 1; private ulong lo_; [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public ulong Lo { get { return lo_; } set { lo_ = value; } } /// Field number for the "hi" field. public const int HiFieldNumber = 2; private ulong hi_; [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public ulong Hi { get { return hi_; } set { hi_ = value; } } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public override bool Equals(object other) { return Equals(other as UniqueId); } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public bool Equals(UniqueId other) { if (ReferenceEquals(other, null)) { return false; } if (ReferenceEquals(other, this)) { return true; } if (Lo != other.Lo) return false; if (Hi != other.Hi) return false; return Equals(_unknownFields, other._unknownFields); } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public override int GetHashCode() { int hash = 1; if (Lo != 0UL) hash ^= Lo.GetHashCode(); if (Hi != 0UL) hash ^= Hi.GetHashCode(); if (_unknownFields != null) { hash ^= _unknownFields.GetHashCode(); } return hash; } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public override string ToString() { return pb::JsonFormatter.ToDiagnosticString(this); } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public void WriteTo(pb::CodedOutputStream output) { #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE output.WriteRawMessage(this); #else if (Lo != 0UL) { output.WriteRawTag(9); output.WriteFixed64(Lo); } if (Hi != 0UL) { output.WriteRawTag(17); output.WriteFixed64(Hi); } if (_unknownFields != null) { _unknownFields.WriteTo(output); } #endif } #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] void pb::IBufferMessage.InternalWriteTo(ref pb::WriteContext output) { if (Lo != 0UL) { output.WriteRawTag(9); output.WriteFixed64(Lo); } if (Hi != 0UL) { output.WriteRawTag(17); output.WriteFixed64(Hi); } if (_unknownFields != null) { _unknownFields.WriteTo(ref output); } } #endif [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public int CalculateSize() { int size = 0; if (Lo != 0UL) { size += 1 + 8; } if (Hi != 0UL) { size += 1 + 8; } if (_unknownFields != null) { size += _unknownFields.CalculateSize(); } return size; } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public void MergeFrom(UniqueId other) { if (other == null) { return; } if (other.Lo != 0UL) { Lo = other.Lo; } if (other.Hi != 0UL) { Hi = other.Hi; } _unknownFields = pb::UnknownFieldSet.MergeFrom(_unknownFields, other._unknownFields); } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public void MergeFrom(pb::CodedInputStream input) { #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE input.ReadRawMessage(this); #else uint tag; while ((tag = input.ReadTag()) != 0) { switch(tag) { default: _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input); break; case 9: { Lo = input.ReadFixed64(); break; } case 17: { Hi = input.ReadFixed64(); break; } } } #endif } #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] void pb::IBufferMessage.InternalMergeFrom(ref pb::ParseContext input) { uint tag; while ((tag = input.ReadTag()) != 0) { switch(tag) { default: _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, ref input); break; case 9: { Lo = input.ReadFixed64(); break; } case 17: { Hi = input.ReadFixed64(); break; } } } } #endif } #endregion } #endregion Designer generated code ================================================ FILE: desktop/src/Plexus.Host/Internal/IProgram.cs ================================================ /** * Copyright 2017-2021 Plexus Interop Deutsche Bank AG * SPDX-License-Identifier: Apache-2.0 * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ namespace Plexus.Host.Internal { using System.Threading.Tasks; internal interface IProgram { string Name { get; } string InstanceKey { get; } InstanceAwareness InstanceAwareness { get; } Task StartAsync(); Task ShutdownAsync(); } } ================================================ FILE: desktop/src/Plexus.Host/Internal/InstanceAwareness.cs ================================================ /** * Copyright 2017-2021 Plexus Interop Deutsche Bank AG * SPDX-License-Identifier: Apache-2.0 * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ namespace Plexus.Host.Internal { internal enum InstanceAwareness { MultiInstance, SingleInstancePerDirectory, } } ================================================ FILE: desktop/src/Plexus.Host/Internal/InteropCliProgram.cs ================================================ /** * Copyright 2017-2021 Plexus Interop Deutsche Bank AG * SPDX-License-Identifier: Apache-2.0 * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ namespace Plexus.Host.Internal { using System; using System.Collections.Generic; using System.IO; using System.Linq; using System.Threading.Tasks; using Plexus.Host.Internal.Generated; using Plexus.Interop; using UniqueId = Plexus.UniqueId; internal sealed class InteropCliProgram : IProgram { private static readonly ILogger Log = LogManager.GetLogger(); private readonly ICommandLineToolClient _client = new CommandLineToolClient(s => s.WithBrokerWorkingDir(Directory.GetCurrentDirectory())); private readonly string[] _ids; public InteropCliProgram(IEnumerable ids) { _ids = ids.ToArray(); } public string Name { get; } = "Interop CLI"; public string InstanceKey { get; } = "interop-cli"; public InstanceAwareness InstanceAwareness { get; } = InstanceAwareness.MultiInstance; public async Task StartAsync() { if (_ids.Length == 0) { return TaskConstants.Completed; } await _client.ConnectAsync().ConfigureAwait(false); return ProcessAsync(); } private async Task ProcessAsync() { try { await Task.WhenAll(_ids.Select(LaunchAppAsync)).ConfigureAwait(false); } finally { await _client.DisconnectAsync().ConfigureAwait(false); } } private async Task LaunchAppAsync(string appId) { try { Log.Info("Launching app {0}", appId); var request = new ResolveAppRequest { AppId = appId, AppResolveMode = AppLaunchMode.MultiInstance }; var response = await _client.AppLifecycleService.ResolveApp(request).ConfigureAwait(false); var connectionId = UniqueId.FromHiLo(response.AppConnectionId.Hi, response.AppConnectionId.Lo); var appInstanceId = UniqueId.FromHiLo(response.AppInstanceId.Hi, response.AppInstanceId.Lo); Log.Info("Launched app {0}: connectionId={1}, appInstanceId={2}", appId, connectionId, appInstanceId); } catch (Exception ex) { Log.Error(ex, "Failed to launch app {0}", appId); } } public Task ShutdownAsync() { return _client.DisconnectAsync(); } } } ================================================ FILE: desktop/src/Plexus.Host/Internal/LaunchCliOptions.cs ================================================ /** * Copyright 2017-2021 Plexus Interop Deutsche Bank AG * SPDX-License-Identifier: Apache-2.0 * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ namespace Plexus.Host.Internal { using System.Collections.Generic; using CommandLine; #if !NET45 [Verb("launch", HelpText = "Launch interop application.")] #endif internal sealed class LaunchCliOptions { #if !NET45 [Option('a', "application", Required = true, HelpText = "Identifier of application.", Separator = ',')] #else [OptionList('a', "application", Required = true, HelpText = "Identifier of application.", Separator = ',')] #endif public IEnumerable ApplicationIds { get; set; } } } ================================================ FILE: desktop/src/Plexus.Host/Internal/LockFile.cs ================================================ /** * Copyright 2017-2021 Plexus Interop Deutsche Bank AG * SPDX-License-Identifier: Apache-2.0 * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ namespace Plexus.Host.Internal { using System; using System.Diagnostics; using System.IO; using System.Text; using System.Threading; internal sealed class LockFile : IDisposable { private readonly string _lockFileContent; private FileStream _fileStream; public LockFile(string lockFileName, string lockFileContent) { Name = lockFileName; _lockFileContent = lockFileContent; } public string Name { get; } public bool TryEnter(int timeoutMs) { var stopwatch = new Stopwatch(); stopwatch.Start(); do { try { _fileStream = new FileStream(Name, FileMode.OpenOrCreate, FileAccess.ReadWrite, FileShare.Read); var bytes = Encoding.UTF8.GetBytes(_lockFileContent); _fileStream.Write(bytes, 0, bytes.Length); _fileStream.Flush(true); } catch { Thread.Sleep(50); } } while (_fileStream == null && stopwatch.ElapsedMilliseconds < timeoutMs); stopwatch.Stop(); return _fileStream != null; } public void Release() { if (_fileStream == null) { return; } _fileStream.Dispose(); try { if (File.Exists(Name)) { File.Delete(Name); } } catch { // ignore } } public void Dispose() { Release(); } } } ================================================ FILE: desktop/src/Plexus.Host/Internal/ProgramLoader.cs ================================================ /** * Copyright 2017-2021 Plexus Interop Deutsche Bank AG * SPDX-License-Identifier: Apache-2.0 * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ namespace Plexus.Host.Internal { using System; using System.Diagnostics; using System.IO; using System.Threading; using System.Threading.Tasks; using Plexus.Logging.NLog; internal sealed class ProgramLoader : IDisposable { private static readonly TimeSpan ShutdownTimeout = TimeoutConstants.Timeout5Sec; private readonly LoggingInitializer _loggingInitializer; private readonly ILogger _log; private readonly IProgram _program; private int _isShuttingDown; public ProgramLoader(IProgram program) { _program = program; _loggingInitializer = new LoggingInitializer(); _log = LogManager.GetLogger(); } public async Task LoadAndRunAsync() { LockFile lockFile = null; try { _log.Info("Starting {0}", _program.Name); if (_program.InstanceAwareness == InstanceAwareness.SingleInstancePerDirectory) { var workingDir = Directory.GetCurrentDirectory(); _log.Info($"Checking if another instance of {_program.Name} is already running in directory {workingDir}"); var lockFileName = _program.InstanceKey + "-lock"; lockFile = new LockFile(lockFileName, Process.GetCurrentProcess().Id.ToString()); _log.Info("Trying to acquire lock file {0}", lockFile.Name); var isFirstInstance = lockFile.TryEnter(500); if (!isFirstInstance) { _log.Info($"Another instance of {_program.InstanceKey} is already running in directory {workingDir}. Exiting."); return 1; } } var parentProcessVar = Environment.GetEnvironmentVariable(EnvironmentHelper.ParentProcessIdVarName); if (!string.IsNullOrWhiteSpace(parentProcessVar) && int.TryParse(parentProcessVar, out var parentPid)) { var parentProcess = Process.GetProcessById(parentPid); AttachToParent(parentProcess); } RegisterShutdownEvent(); var task = await _program.StartAsync().ConfigureAwait(false); _log.Info("{0} started", _program.Name); await task.ConfigureAwait(false); _log.Info("{0} completed", _program.Name); } catch (Exception ex) { _log.Error(ex, "Unhandled exception while running {0}", _program.Name); return 1; } finally { if (lockFile != null) { _log.Info("Releasing lock file {0}", lockFile.Name); lockFile.Dispose(); } } _log.Info("{0} completed successfully", _program.Name); return 0; } private void RegisterShutdownEvent() { Console.CancelKeyPress += (x, y) => { ShutdownAsync().IgnoreAwait(_log); y.Cancel = true; }; var shutdownEventName = "plexus-host-shutdown-" + Process.GetCurrentProcess().Id; _log.Debug("Registering shutdown event: {0}", shutdownEventName); var shutdownEvent = new EventWaitHandle(false, EventResetMode.AutoReset, shutdownEventName); ThreadPool.RegisterWaitForSingleObject( shutdownEvent, (state, timedOut) => ShutdownAsync().IgnoreAwait(_log), null, Timeout.Infinite, true); } private void AttachToParent(Process parentProcess) { _log.Info("Attaching the current process to the parent process \"{0}\" ({1})", parentProcess.ProcessName, parentProcess.Id); void OnParentProcessExited() { _log.Warn("Exiting because the attached parent process \"{0}\" ({1}) exited with code {2}", parentProcess.ProcessName, parentProcess.Id, parentProcess.ExitCode); _loggingInitializer?.Dispose(); Environment.Exit(1); } parentProcess.EnableRaisingEvents = true; parentProcess.Exited += (sender, args) => { OnParentProcessExited(); }; if (parentProcess.HasExited) { OnParentProcessExited(); } } private async Task ShutdownAsync() { if (Interlocked.Exchange(ref _isShuttingDown, 1) == 1) { return; } if (_program == null) { _loggingInitializer?.Dispose(); Environment.Exit(0); } else { _log.Info("Shutting down"); var task = TaskRunner.RunInBackground(_program.ShutdownAsync); var completed = await Task.WhenAny(task, Task.Delay(ShutdownTimeout)).ConfigureAwait(false); if (completed != task) { _log.Error("Program {0} failed to shutdown gracefully withing the given timeout {1} sec", _program.GetType(), ShutdownTimeout.TotalSeconds); _loggingInitializer?.Dispose(); Environment.Exit(1); } if (task.IsFaulted) { _log.Error(task.Exception.ExtractInner(), "Exception while shutting down program {0}", _program.GetType()); _loggingInitializer?.Dispose(); Environment.Exit(1); } } } public void Dispose() { _loggingInitializer?.Dispose(); } } } ================================================ FILE: desktop/src/Plexus.Host/Internal/StopCliOptions.cs ================================================ /** * Copyright 2017-2021 Plexus Interop Deutsche Bank AG * SPDX-License-Identifier: Apache-2.0 * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ namespace Plexus.Host.Internal { using CommandLine; #if !NET45 [Verb("stop", HelpText = "Stop interop broker.")] #endif internal sealed class StopCliOptions { } } ================================================ FILE: desktop/src/Plexus.Host/Internal/StudioCliOptions.cs ================================================ /** * Copyright 2017-2021 Plexus Interop Deutsche Bank AG * SPDX-License-Identifier: Apache-2.0 * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ namespace Plexus.Host.Internal { using CommandLine; #if !NET45 [Verb("studio", HelpText = "Start Plexus Studio.")] #endif internal sealed class StudioCliOptions { } } ================================================ FILE: desktop/src/Plexus.Host/Internal/VerbOptions.cs ================================================ /** * Copyright 2017-2021 Plexus Interop Deutsche Bank AG * SPDX-License-Identifier: Apache-2.0 * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ namespace Plexus.Host.Internal { using CommandLine; using CommandLine.Text; #if NET45 internal sealed class VerbOptions { [HelpVerbOption] public string DoHelpForVerb(string verbName) { return HelpText.AutoBuild(this, current => HelpText.DefaultParsingErrorsHandler(this, current), true); } [VerbOption("start", HelpText = "Start interop broker.")] public StartCliOptions StartVerb { get; set; } [VerbOption("broker", HelpText = "Start interop broker.")] public BrokerCliOptions BrokerVerb { get; set; } [VerbOption("launch", HelpText = "Launch interop application.")] public LaunchCliOptions LaunchCliVerb { get; set; } [VerbOption("stop", HelpText = "Stop interop broker.")] public StopCliOptions StopVerb { get; set; } [VerbOption("studio", HelpText = "Start Plexus Studio.")] public StudioCliOptions StudioVerb { get; set; } } #endif } ================================================ FILE: desktop/src/Plexus.Host/Plexus.Host.csproj ================================================  net45 .NETFramework v4.5 AnyCPU false netcoreapp2.1 win-x64 x64 Exe plexus ../../../ $(RepoRootDir)bin/$(TargetFramework)-$(PlatformTarget)/ $(ArtifactsDir)broker/ true $(MSBuildThisFileDirectory)Plexus.Interop.Broker.Redist.nuspec false Build PreserveNewest $(NuspecProperties);id=Plexus.Interop.Broker.Redist $(NuspecProperties);id=Plexus.Interop.Broker.Redist-$(RuntimeIdentifier) $(NuspecProperties);version=$(PackageVersion) $(NuspecProperties);artifacts=$(TargetFramework)-$(PlatformTarget) ================================================ FILE: desktop/src/Plexus.Host/Plexus.Interop.Broker.Redist.nuspec ================================================ $id$ $version$ $id$ Plexus Interop Deutsche Bank AG https://github.com/finos-plexus/plexus-interop/blob/master/LICENSE http://plexus.finos.org false Plexus Interop Broker Binaries Copyright 2017 plexus interop broker ipc rpc messaging interoperability ================================================ FILE: desktop/src/Plexus.Host/Plexus.Interop.Broker.Redist.targets ================================================ ================================================ FILE: desktop/src/Plexus.Host/Program.cs ================================================ /** * Copyright 2017-2021 Plexus Interop Deutsche Bank AG * SPDX-License-Identifier: Apache-2.0 * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ namespace Plexus.Host { using CommandLine; using Plexus.Host.Internal; using Plexus.Interop; using System; using System.Diagnostics; using System.IO; using System.Linq; using System.Text; using System.Threading; using System.Threading.Tasks; public sealed class Program { private static readonly TimeSpan ShutdownTimeout = TimeoutConstants.Timeout5Sec; public static int Main(string[] args) { InitializeProcess(); return new Program().RunAsync(args).GetResult(); } public async Task RunAsync(string[] args) { #if NET45 var invokedVerb = string.Empty; object invokedVerbInstance = null; var options = new VerbOptions(); if (!Parser.Default.ParseArguments(args, options, (verb, subOptions) => { invokedVerb = verb; invokedVerbInstance = subOptions; })) { Console.WriteLine("There is no mandatory cmd argument. Exit immediately"); return Parser.DefaultExitCodeFail; } switch (invokedVerb) { case "start": return await StartBrokerAsync((StartCliOptions)invokedVerbInstance).ConfigureAwait(false); case "broker": return await StartBrokerAsync((BrokerCliOptions)invokedVerbInstance).ConfigureAwait(false); case "launch": return await LaunchAppAsync((LaunchCliOptions)invokedVerbInstance).ConfigureAwait(false); case "stop": return await StopBrokerAsync().ConfigureAwait(false); case "studio": return await StartStudioAsync().ConfigureAwait(false); default: Console.WriteLine("There is no mandatory cmd argument. Exit immediately"); return Parser.DefaultExitCodeFail; } #else return await Parser.Default .ParseArguments(args) .MapResult( (BrokerCliOptions opts) => StartBrokerAsync(opts), (StartCliOptions opts) => StartBrokerAsync(opts), (LaunchCliOptions opts) => LaunchAppAsync(opts), (StopCliOptions opts) => StopBrokerAsync(), (StudioCliOptions opts) => StartStudioAsync(), errs => Task.FromResult(1)); #endif } private static async Task LoadAndRunProgramAsync(IProgram program) { using (var loader = new ProgramLoader(program)) { return await loader.LoadAndRunAsync().ConfigureAwait(false); } } private static async Task LaunchAppAsync(LaunchCliOptions opts) { var program = new InteropCliProgram(opts.ApplicationIds); return await LoadAndRunProgramAsync(program).ConfigureAwait(false); } private static async Task StartBrokerAsync(StartCliOptions opts) { var brokerOptions = new BrokerOptions(opts.Metadata, opts.Port, opts.WssPort); var program = new BrokerProgram(brokerOptions); return await LoadAndRunProgramAsync(program).ConfigureAwait(false); } private static async Task StopBrokerAsync() { const string lockFileName = "plexus-interop-broker-lock"; var pid = -1; if (File.Exists(lockFileName)) { using (var stream = new FileStream(lockFileName, FileMode.Open, FileAccess.Read, FileShare.ReadWrite)) using (var streamReader = new StreamReader(stream)) { if (!int.TryParse(streamReader.ReadToEnd(), out pid)) { pid = -1; } } } if (pid == -1) { Console.WriteLine("Plexus Broker is not running in current directory {0}", Directory.GetCurrentDirectory()); return 0; } var processes = Process.GetProcesses().Where(x => x.Id == pid); async Task ShutdownProcessAsync(Process process) { Console.WriteLine($"Shutting down plexus process {process.Id}"); process.EnableRaisingEvents = true; var exitPromise = new Promise(); process.Exited += (sender, eventArgs) => exitPromise.TryComplete(((Process) sender).ExitCode); if (process.HasExited) { exitPromise.TryComplete(process.ExitCode); } else { var evtName = "plexus-host-shutdown-" + process.Id; var evt = new EventWaitHandle(false, EventResetMode.AutoReset, evtName); evt.Set(); var completed = await Task.WhenAny(exitPromise.Task, Task.Delay(ShutdownTimeout)); if (completed != exitPromise.Task) { Console.WriteLine($"Killing plexus process {process.Id} which failed to shutdown gracefully in the given timeout {ShutdownTimeout.TotalSeconds} sec"); process.Kill(); } } var exitCode = await exitPromise.Task.ConfigureAwait(false); Console.WriteLine($"Plexus process {process.Id} exited with code {exitCode}"); } var tasks = processes.Select(ShutdownProcessAsync); await Task.WhenAll(tasks).IgnoreExceptions().ConfigureAwait(false); return 0; } private static Task StartStudioAsync() { var dir = Directory.GetCurrentDirectory(); var addressFile = Path.Combine(dir, "servers", "ws-v1", "address"); if (!File.Exists(addressFile)) { throw new InvalidOperationException($"Broker is not running in the current folder {dir}"); } var wsUri = new Uri(File.ReadAllText(addressFile)); var uriBuilder = new UriBuilder(wsUri) { Scheme = "http", Path = "studio/index.html" }; var uri = uriBuilder.Uri; Console.WriteLine("Starting " + uri); Process.Start(new ProcessStartInfo(uri.ToString()) {UseShellExecute = true}); return Task.FromResult(0); } private static void InitializeProcess() { #if !NET45 // by default, .NET Core doesn't have all code pages needed for Console apps. // see the .NET Core Notes in https://msdn.microsoft.com/en-us/library/system.diagnostics.process(v=vs.110).aspx Encoding.RegisterProvider(CodePagesEncodingProvider.Instance); #else // For .NET 4.5 increasing min threads count ThreadPool.GetMaxThreads(out var minWorkerThreads, out var minCompletionPortThreads); ThreadPool.SetMinThreads(minWorkerThreads, minCompletionPortThreads); #endif } } } ================================================ FILE: desktop/src/Plexus.Host/Properties/launchSettings.json ================================================ { "profiles": { "Samples Broker": { "commandName": "Executable", "executablePath": ".\\plexus.cmd", "commandLineArgs": "broker", "workingDirectory": "$(ArtifactsSamplesDir)" }, "QuickStart Broker": { "commandName": "Executable", "executablePath": ".\\plexus.cmd", "commandLineArgs": "broker", "workingDirectory": "$(QuickStartSamplesDir)" } } } ================================================ FILE: desktop/src/Plexus.Host/nlog.config ================================================  ================================================ FILE: desktop/src/Plexus.Interop.Apps.Manager/Generate.cmd ================================================ set INTEROP_METADATA_PATH=..\..\..\dsl\interop-lang\src\main\resources set INTEROP_MANIFEST_PATH={app_lifecycle_manager.interop,native_app_launcher.interop} set CSHARP_NAMESPACE=internal_access:Plexus.Interop.Apps.Internal.Generated set CSHARP_OUT=Internal\Generated plexus gen-csharp -b %INTEROP_METADATA_PATH% -i %INTEROP_MANIFEST_PATH% -o %CSHARP_OUT% -n %CSHARP_NAMESPACE% -v ================================================ FILE: desktop/src/Plexus.Interop.Apps.Manager/IAppLaunchedEventConsumer.cs ================================================ /** * Copyright 2017-2021 Plexus Interop Deutsche Bank AG * SPDX-License-Identifier: Apache-2.0 * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ namespace Plexus.Interop.Apps { using System; using Plexus.Interop.Apps.Internal.Generated; interface IAppLaunchedEventConsumer { IObserver AppLaunchedEventObserver { get; } } } ================================================ FILE: desktop/src/Plexus.Interop.Apps.Manager/Internal/AppConnection.cs ================================================ /** * Copyright 2017-2021 Plexus Interop Deutsche Bank AG * SPDX-License-Identifier: Apache-2.0 * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ namespace Plexus.Interop.Apps.Internal { using Plexus.Channels; using Plexus.Interop.Apps; using Plexus.Interop.Transport; using System; using System.Collections.Generic; using System.Threading.Tasks; internal sealed class AppConnection : IAppConnection { private readonly ILogger _log; private readonly ITransportConnection _connection; public AppConnection(ITransportConnection connection, AppConnectionDescriptor appInfo) { Id = connection.Id; _log = LogManager.GetLogger(Id.ToString()); Info = appInfo; _connection = connection; Completion = ProcessAsync(); } private async Task ProcessAsync() { try { await IncomingChannels.Completion.ConfigureAwait(false); _connection.TryComplete(); } catch (Exception ex) { _connection.TryTerminate(ex); throw; } finally { await _connection.Completion.ConfigureAwait(false); } } public UniqueId Id { get; } public AppConnectionDescriptor Info { get; } public Task Completion { get; } public IReadableChannel IncomingChannels => _connection.IncomingChannels; public async ValueTask CreateChannelAsync() { return await _connection.CreateChannelAsync().ConfigureAwait(false); } public override bool Equals(object obj) { return obj is AppConnection connection && EqualityComparer.Default.Equals(Info, connection.Info); } public override int GetHashCode() { return 1340155117 + EqualityComparer.Default.GetHashCode(Info); } public override string ToString() { return Info.ToString(); } } } ================================================ FILE: desktop/src/Plexus.Interop.Apps.Manager/Internal/AppDto.cs ================================================ /** * Copyright 2017-2021 Plexus Interop Deutsche Bank AG * SPDX-License-Identifier: Apache-2.0 * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ namespace Plexus.Interop.Apps.Internal { using System.Collections.Generic; using System.Runtime.Serialization; [DataContract] internal sealed class AppDto { private Dictionary _launcherParams = new Dictionary(); [DataMember(Name = "id", IsRequired = true)] public string Id { get; set; } [DataMember(Name = "displayName")] public string DisplayName { get; set; } [DataMember(Name = "launcherId")] public string LauncherId { get; set; } [DataMember(Name = "launcherParams")] public Dictionary LauncherParams { get => _launcherParams = _launcherParams ?? new Dictionary(); set => _launcherParams = value ?? new Dictionary(); } } } ================================================ FILE: desktop/src/Plexus.Interop.Apps.Manager/Internal/AppInfo.cs ================================================ /** * Copyright 2017-2021 Plexus Interop Deutsche Bank AG * SPDX-License-Identifier: Apache-2.0 * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ namespace Plexus.Interop.Apps.Internal { using System.Collections.Generic; internal class AppInfo { public AppInfo(string id, string displayName, string launcherId, IDictionary launcherParams) { Id = id; DisplayName = displayName; LauncherId = launcherId; LauncherParams = launcherParams == null ? new Dictionary() : new Dictionary(launcherParams); } public string Id { get; set; } public string DisplayName { get; set; } public string LauncherId { get; set; } public IDictionary LauncherParams { get; set; } } } ================================================ FILE: desktop/src/Plexus.Interop.Apps.Manager/Internal/AppLaunchedEventProvider.cs ================================================ /** * Copyright 2017-2021 Plexus Interop Deutsche Bank AG * SPDX-License-Identifier: Apache-2.0 * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ namespace Plexus.Interop.Apps.Internal { using System; using System.Reactive.Subjects; using Plexus.Interop.Apps.Internal.Generated; internal class AppLaunchedEventProvider : IAppLaunchedEventProvider, IAppLaunchedEventConsumer { private readonly ReplaySubject _appLaunchedSubject = new ReplaySubject(10); public IObservable AppLaunchedStream => _appLaunchedSubject; public IObserver AppLaunchedEventObserver => _appLaunchedSubject; } } ================================================ FILE: desktop/src/Plexus.Interop.Apps.Manager/Internal/AppLaunchedEventSubscriber.cs ================================================ /** * Copyright 2017-2021 Plexus Interop Deutsche Bank AG * SPDX-License-Identifier: Apache-2.0 * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ namespace Plexus.Interop.Apps.Internal { using System; using System.Linq; using System.Reactive.Linq; using System.Threading.Tasks; using Google.Protobuf.WellKnownTypes; using Plexus.Interop.Apps.Internal.Generated; using Plexus.Interop.Metamodel; using AppConnectionDescriptor = Plexus.AppConnectionDescriptor; using UniqueId = Plexus.UniqueId; internal class AppLaunchedEventSubscriber { private readonly IRegistryProvider _registryProvider; private readonly IAppLaunchedEventConsumer _appLaunchedEventConsumer; private readonly IAppLifecycleManagerClientClientRepository _lifecycleManagerClientRepo; private ILogger Log { get; } = LogManager.GetLogger(); public AppLaunchedEventSubscriber( IAppLifecycleManager appConnectedEventProvider, IRegistryProvider registryProvider, IAppLaunchedEventConsumer appLaunchedEventConsumer, IAppLifecycleManagerClientClientRepository lifecycleManagerClientRepo) { _registryProvider = registryProvider; _appLaunchedEventConsumer = appLaunchedEventConsumer; _lifecycleManagerClientRepo = lifecycleManagerClientRepo; appConnectedEventProvider.ConnectionEventsStream .Where(ev => ev.Type == ConnectionEventType.AppConnected) .Select(ev => ev.Connection) .Subscribe(OnAppConnected); } private void OnAppConnected(AppConnectionDescriptor appConnectionDescriptor) { if (IsLauncher(appConnectionDescriptor, out var applicationId)) { SubscribeToApplicationLaunchedEventStream(applicationId, appConnectionDescriptor.ConnectionId); } } private bool IsLauncher(AppConnectionDescriptor appConnectionDescriptor, out string applicationId) { applicationId = appConnectionDescriptor.ApplicationId; return _registryProvider.Current.Applications.TryGetValue(applicationId, out var application) && application.ProvidedServices.Any(service => service.Service.Id == AppLauncherService.Id); } private void SubscribeToApplicationLaunchedEventStream(string applicationId, UniqueId connectionId) { var appLauncherServiceId = AppLauncherService.Id; var appLaunchedEventStreamMethodId = AppLauncherService.AppLaunchedEventStreamMethodId; var methodCallDescriptor = ProvidedMethodReference.CreateWithConnectionId(appLauncherServiceId, appLaunchedEventStreamMethodId, applicationId, connectionId); _lifecycleManagerClientRepo.GetClientObservable() .Subscribe(client => SubscribeToLaunchedEventStream(client, connectionId, applicationId, methodCallDescriptor)); } private void SubscribeToLaunchedEventStream(AppLifecycleManagerClient client, UniqueId connectionId, string applicationId, ProvidedMethodReference methodCallDescriptor) { Task.Factory.StartNew(async () => { Log.Info($"Subscribing client '{client.ApplicationInstanceId}' to ApplicationLaunchedEventStream of {connectionId} application ({applicationId})"); await client.CallInvoker .CallServerStreaming(methodCallDescriptor.CallDescriptor, new Empty()) .ResponseStream.PipeAsync(_appLaunchedEventConsumer.AppLaunchedEventObserver).ConfigureAwait(false); Log.Info($"Subscription to ApplicationLaunchedEventStream of {connectionId} application ({applicationId}) have finished"); }, TaskCreationOptions.LongRunning); } } } ================================================ FILE: desktop/src/Plexus.Interop.Apps.Manager/Internal/AppLifecycleManager.cs ================================================ /** * Copyright 2017-2021 Plexus Interop Deutsche Bank AG * SPDX-License-Identifier: Apache-2.0 * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ namespace Plexus.Interop.Apps.Internal { using Plexus.Interop.Transport; using System; using System.Collections.Generic; using System.Linq; using System.Reactive.Concurrency; using System.Reactive.Linq; using System.Reactive.Subjects; using System.Threading.Tasks; using Plexus.Interop.Apps.Internal.Generated; using AppConnectionDescriptor = Plexus.AppConnectionDescriptor; using UniqueId = Plexus.UniqueId; internal sealed class AppLifecycleManager : IAppLifecycleManager { private readonly object _sync = new object(); private readonly HashSet _appInstanceIds = new HashSet(); private readonly Dictionary _connections = new Dictionary(); private readonly Dictionary> _appInstanceConnections = new Dictionary>(); private readonly Dictionary> _appConnections = new Dictionary>(); private readonly Dictionary<(UniqueId AppInstanceId, string AppId), Promise> _appInstanceConnectionsInProgress = new Dictionary<(UniqueId, string), Promise>(); private readonly IAppRegistryProvider _appRegistryProvider; private readonly IAppLifecycleManagerClientClientRepository _appLifecycleManagerClientClientRepo; private readonly Subject _connectionSubject = new Subject(); public AppLifecycleManager( IAppRegistryProvider appRegistryProvider, IAppLaunchedEventProvider appLaunchedEventProvider, IAppLifecycleManagerClientClientRepository appLifecycleManagerClientClientRepo) { _appRegistryProvider = appRegistryProvider; _appLifecycleManagerClientClientRepo = appLifecycleManagerClientClientRepo; appLaunchedEventProvider.AppLaunchedStream.Subscribe(OnApplicationLaunchedEvent); } private ILogger Log { get; } = LogManager.GetLogger(); public IObservable ConnectionEventsStream => _connectionSubject; public IReadOnlyCollection GetAppInstanceConnections(UniqueId appInstanceId) { lock (_sync) { if (_appInstanceConnections.TryGetValue(appInstanceId, out Dictionary connections)) { return connections.Values.ToList(); } return new IAppConnection[0]; } } public IReadOnlyCollection GetAppConnections(string appId) { lock (_sync) { if (_appConnections.TryGetValue(appId, out var appConnections)) { return appConnections.ToList(); } return new IAppConnection[0]; } } public IAppConnection AcceptConnection( ITransportConnection connection, AppConnectionDescriptor connectionInfo) { AppConnection clientConnection; Promise waiter; lock (_sync) { clientConnection = new AppConnection(connection, connectionInfo); if (_connections.ContainsKey(clientConnection.Id)) { throw new InvalidOperationException($"Connection id already exists: {clientConnection.Id}"); } _connections[clientConnection.Id] = clientConnection; var appInstanceId = clientConnection.Info.ApplicationInstanceId; if (!_appInstanceConnections.TryGetValue(appInstanceId, out var appConnections)) { appConnections = new Dictionary(); _appInstanceConnections[appInstanceId] = appConnections; } appConnections[clientConnection.Info.ApplicationId] = clientConnection; var appId = clientConnection.Info.ApplicationId; if (!_appConnections.TryGetValue(appId, out var appConnectionList)) { appConnectionList = new List(); _appConnections[appId] = appConnectionList; } appConnectionList.Add(clientConnection); Log.Debug("New connection accepted: {{{0}}}", clientConnection); var deferredConnectionKey = (appInstanceId, appId); if (_appInstanceConnectionsInProgress.TryGetValue(deferredConnectionKey, out waiter)) { Log.Debug("Resolving deferred connection {{{0}}} to accepted connection {{{1}}}", deferredConnectionKey, connection); _appInstanceConnectionsInProgress.Remove(deferredConnectionKey); } } waiter?.TryComplete(clientConnection); _connectionSubject.OnNext(new AppConnectionEvent(connectionInfo, ConnectionEventType.AppConnected)); return clientConnection; } public bool TryRemoveConnection(IAppConnection connection) { Log.Debug("Removing connection {0}", connection.Info); Promise waiter; lock (_sync) { if (!_connections.Remove(connection.Id)) { return false; } var appInstanceId = connection.Info.ApplicationInstanceId; var appId = connection.Info.ApplicationId; if (_appInstanceConnections.TryGetValue(appInstanceId, out var connections)) { connections.Remove(appId); if (connections.Count == 0) { _appInstanceConnections.Remove(appInstanceId); } } if (_appConnections.TryGetValue(appId, out var appConnectionList)) { appConnectionList.Remove(connection); if (appConnectionList.Count == 0) { _appConnections.Remove(appId); } } var deferredConnectionKey = (appInstanceId, connection.Info.ApplicationId); if (_appInstanceConnectionsInProgress.TryGetValue(deferredConnectionKey, out waiter)) { _appInstanceConnectionsInProgress.Remove(deferredConnectionKey); } } waiter?.TryCancel(); _connectionSubject.OnNext(new AppConnectionEvent(connection.Info, ConnectionEventType.AppDisconnected)); return true; } public void ReportConnectionError(AppConnectionDescriptor connectionInfo) => _connectionSubject.OnNext(new AppConnectionEvent(connectionInfo, ConnectionEventType.AppConnectionError)); public bool TryGetConnectionInProgress(UniqueId appInstanceId, string appId, out Task appConnection) { lock (_sync) { if (_appInstanceConnections.TryGetValue(appInstanceId, out var connections) && connections.TryGetValue(appId, out var existingConnection)) { appConnection = Task.FromResult(existingConnection); return true; } if (_appInstanceConnectionsInProgress.TryGetValue((appInstanceId, appId), out var promise)) { appConnection = promise.Task; return true; } appConnection = null; return false; } } public bool TryGetOnlineConnection(UniqueId connectionId, out IAppConnection connection) { lock (_sync) { return _connections.TryGetValue(connectionId, out connection); } } public bool TryGetOnlineConnection(UniqueId appInstanceId, string app, out IAppConnection connection) { connection = null; lock (_sync) { return _appInstanceConnections.TryGetValue(appInstanceId, out var appConnections) && appConnections.TryGetValue(app, out connection); } } public IEnumerable FilterCanBeLaunched(IEnumerable appIds) { return appIds.Join(_appRegistryProvider.Current.Apps, x => x, y => y.Id, (x, y) => x).Distinct(); } public bool CanBeLaunched(string appId) { return FilterCanBeLaunched(new[] { appId }).Contains(appId); } public async Task LaunchAndConnectAsync(string appId, ResolveMode mode, AppConnectionDescriptor referrerConnectionInfo) { var suggestedInstanceId = UniqueId.Generate(); Log.Debug($"Resolving connection for app {appId} with mode {mode} to new instance with suggested id {suggestedInstanceId}"); var resolvedConnection = await LaunchAndWaitConnectionAsync(appId, suggestedInstanceId, mode, referrerConnectionInfo).ConfigureAwait(false); Log.Debug($"Resolved connection for app {appId} with mode {mode} to launched instance {{{resolvedConnection}}} by request from {{{referrerConnectionInfo}}}"); return new ResolvedConnection(resolvedConnection, suggestedInstanceId == resolvedConnection.Info.ApplicationInstanceId); } public IReadOnlyCollection GetOnlineConnections() { lock (_sync) { return _connections.Values.ToList(); } } private async Task LaunchAndWaitConnectionAsync( string appId, UniqueId suggestedAppInstanceId, ResolveMode resolveMode, AppConnectionDescriptor referrerConnectionInfo) { var appInstanceId = suggestedAppInstanceId; Log.Info("Launching {0}", appId); var deferredConnectionKey = (suggestedAppInstanceId, appId); try { appInstanceId = await LaunchAsync(appId, appInstanceId, resolveMode, referrerConnectionInfo).ConfigureAwait(false); deferredConnectionKey = (appInstanceId, appId); Promise connectionPromise; lock (_sync) { if (_appInstanceConnections.TryGetValue(appInstanceId, out var connections) && connections.TryGetValue(appId, out var existingConnection)) { Log.Debug("Resolving deferred connection {{{0}}} to existing connection {{{1}}}", deferredConnectionKey, existingConnection); return existingConnection; } else { if (_appInstanceConnectionsInProgress.TryGetValue(deferredConnectionKey, out var existingPromise)) { connectionPromise = existingPromise; } else { connectionPromise = new Promise(); _appInstanceConnectionsInProgress[deferredConnectionKey] = connectionPromise; } } } return await connectionPromise.Task.ConfigureAwait(false); } finally { lock (_sync) { _appInstanceConnectionsInProgress.Remove(deferredConnectionKey); } } } private void OnApplicationLaunchedEvent(AppLaunchedEvent appLaunchedEvent) { var appInstanceId = appLaunchedEvent.AppInstanceId.ToUniqueId(); RegisterAppInstanceConnection(appLaunchedEvent.AppIds, appInstanceId); } public void RegisterAppInstanceConnection(string appId, UniqueId appInstanceId) { RegisterAppInstanceConnection(new[] { appId }, appInstanceId); } private void RegisterAppInstanceConnection(IEnumerable appIds, UniqueId appInstanceId) { lock (_sync) { foreach (var appId in appIds) { if (_appInstanceConnections.TryGetValue(appInstanceId, out var connections) && connections.TryGetValue(appId, out var _)) { continue; } var deferredConnectionKey = (appInstanceId, appId); if (_appInstanceConnectionsInProgress.TryGetValue(deferredConnectionKey, out _)) { continue; } _appInstanceConnectionsInProgress[deferredConnectionKey] = new Promise(); } RegisterAppInstance(appInstanceId); } } public void RegisterAppInstance(UniqueId appInstanceId) { bool added; lock (_sync) { added = _appInstanceIds.Add(appInstanceId); } if (added) { Log.Debug($"{nameof(RegisterAppInstance)}: {appInstanceId}"); } } public bool IsAppInstanceRegistered(UniqueId appInstanceId) { lock (_sync) { return _appInstanceIds.Contains(appInstanceId); } } private async Task LaunchAsync( string appId, UniqueId suggestedAppInstanceId, ResolveMode resolveMode, AppConnectionDescriptor referrerConnectionInfo) { var appDto = _appRegistryProvider.Current.Apps.FirstOrDefault(x => string.Equals(x.Id, appId)); if (appDto == null) { throw new InvalidOperationException($"The requested application {appId} is not defined in application registry"); } if (string.IsNullOrEmpty(appDto.LauncherId)) { throw new InvalidOperationException($"Launcher is not defined for application {appId}"); } Log.Debug("Sending request to launcher {0}: appId={1}, params={2}", appDto.LauncherId, appId, string.Join("; ", appDto.LauncherParams.Select(kvp => $"{kvp.Key}:{kvp.Value}"))); var referrer = new AppLaunchReferrer { AppId = referrerConnectionInfo.ApplicationId, AppInstanceId = referrerConnectionInfo.ApplicationInstanceId.ToProto(), ConnectionId = referrerConnectionInfo.ConnectionId.ToProto() }; var request = new AppLaunchRequest { AppId = appId, LaunchParamsJson = JsonConvert.Serialize(appDto.LauncherParams), SuggestedAppInstanceId = suggestedAppInstanceId.ToProto(), LaunchMode = Convert(resolveMode), Referrer = referrer }; var response = await LaunchUsingLauncherAsync(appDto.LauncherId, request).ConfigureAwait(false); var appInstanceId = UniqueId.FromHiLo(response.AppInstanceId.Hi, response.AppInstanceId.Lo); Log.Info("Received launch response for app {0} from {1}: {2}", appId, appDto.LauncherId, response); return appInstanceId; } private async Task LaunchUsingLauncherAsync(string launcherId, AppLaunchRequest request) { var appLauncherServiceId = AppLauncherService.Id; var launchMethodId = AppLauncherService.LaunchMethodId; var launchMethodReference = ProvidedMethodReference.Create(appLauncherServiceId, launchMethodId, launcherId); var client = await _appLifecycleManagerClientClientRepo.GetClientAsync().ConfigureAwait(false); var response = await client.CallInvoker .CallUnary(launchMethodReference.CallDescriptor, request) .ConfigureAwait(false); return response; } private static AppLaunchMode Convert(ResolveMode resolveMode) { switch (resolveMode) { case ResolveMode.SingleInstance: return AppLaunchMode.SingleInstance; case ResolveMode.MultiInstance: return AppLaunchMode.MultiInstance; default: throw new ArgumentOutOfRangeException(nameof(resolveMode), resolveMode, null); } } } } ================================================ FILE: desktop/src/Plexus.Interop.Apps.Manager/Internal/AppLifecycleManagerClientClientRepository.cs ================================================ /** * Copyright 2017-2021 Plexus Interop Deutsche Bank AG * SPDX-License-Identifier: Apache-2.0 * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ namespace Plexus.Interop.Apps.Internal { using System; using System.Reactive.Linq; using System.Reactive.Subjects; using System.Threading.Tasks; using Plexus.Interop.Apps.Internal.Generated; internal class AppLifecycleManagerClientClientRepository : IAppLifecycleManagerClientClientRepository { private ILogger Log { get; } = LogManager.GetLogger(); private readonly object _lifecycleClientAccess = new object(); private readonly Subject _clientConnections = new Subject(); private AppLifecycleManagerClient _lifecycleManagerClient = null; private bool _started = false; public void Stop() { _started = false; GetRunningClient()?.Disconnect(); } public IObservable GetClientObservable() { var clientObservable = _clientConnections.AsObservable(); AppLifecycleManagerClient runningClient = GetRunningClient(); if (runningClient != null) { return Observable.Return(runningClient).Merge(clientObservable).DistinctUntilChanged(); } return clientObservable; } public async Task GetClientAsync() { AppLifecycleManagerClient runningClient = GetRunningClient(); if (runningClient != null) { return runningClient; } return await _clientConnections.AsObservable().FirstOrDefaultAsync(); } public async Task Start(Func createClientFunc) { var client = createClientFunc(); _started = true; while (_started) { await client.ConnectAsync(); SetConnectedClient(client); if (!_started) { Disconnect(client); } try { await client.Completion; } catch (Exception ex) { Log.Warn("AppLifecycleManager completed with error", ex); } RemoveCurrentClient(); if (_started) { Log.Info("Trying to automatically reconnect AppLifecycleManager client"); client = createClientFunc(); } } _clientConnections.OnCompleted(); } private void Disconnect(AppLifecycleManagerClient client) { client?.Disconnect(); } private AppLifecycleManagerClient GetRunningClient() { lock (_lifecycleClientAccess) { return _lifecycleManagerClient; } } private void SetConnectedClient(AppLifecycleManagerClient client) { lock (_lifecycleClientAccess) { _lifecycleManagerClient = client; } _clientConnections.OnNext(client); } private void RemoveCurrentClient() { AppLifecycleManagerClient client; lock (_lifecycleClientAccess) { client = _lifecycleManagerClient; _lifecycleManagerClient = null; } client?.Dispose(); } } } ================================================ FILE: desktop/src/Plexus.Interop.Apps.Manager/Internal/AppRegistry.cs ================================================ /** * Copyright 2017-2021 Plexus Interop Deutsche Bank AG * SPDX-License-Identifier: Apache-2.0 * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ namespace Plexus.Interop.Apps.Internal { using System.Collections.Generic; internal class AppRegistry { public AppRegistry(IEnumerable apps) { Apps = new List(apps); } public IReadOnlyCollection Apps { get; } } } ================================================ FILE: desktop/src/Plexus.Interop.Apps.Manager/Internal/AppsDto.cs ================================================ /** * Copyright 2017-2021 Plexus Interop Deutsche Bank AG * SPDX-License-Identifier: Apache-2.0 * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ namespace Plexus.Interop.Apps.Internal { using System.Collections.Generic; using System.Runtime.Serialization; [DataContract] internal sealed class AppsDto { [DataMember(Name = "apps")] public List Apps { get; set; } = new List(); public static AppsDto FromContent(string content) => JsonConvert.Deserialize(content); } } ================================================ FILE: desktop/src/Plexus.Interop.Apps.Manager/Internal/Generated/interop/AppConnectionDescriptor.msg.g.cs ================================================ /** * Copyright 2017-2021 Plexus Interop Deutsche Bank AG * SPDX-License-Identifier: Apache-2.0 * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ // // Generated by the protocol buffer compiler. DO NOT EDIT! // source: interop/app_connection_descriptor.proto // #pragma warning disable 1591, 0612, 3021 #region Designer generated code using pb = global::Google.Protobuf; using pbc = global::Google.Protobuf.Collections; using pbr = global::Google.Protobuf.Reflection; using scg = global::System.Collections.Generic; namespace Plexus.Interop.Apps.Internal.Generated { /// Holder for reflection information generated from interop/app_connection_descriptor.proto internal static partial class AppConnectionDescriptorReflection { #region Descriptor /// File descriptor for interop/app_connection_descriptor.proto public static pbr::FileDescriptor Descriptor { get { return descriptor; } } private static pbr::FileDescriptor descriptor; static AppConnectionDescriptorReflection() { byte[] descriptorData = global::System.Convert.FromBase64String( string.Concat( "CidpbnRlcm9wL2FwcF9jb25uZWN0aW9uX2Rlc2NyaXB0b3IucHJvdG8SB2lu", "dGVyb3AaF2ludGVyb3AvdW5pcXVlX2lkLnByb3RvGhVpbnRlcm9wL29wdGlv", "bnMucHJvdG8i1AEKF0FwcENvbm5lY3Rpb25EZXNjcmlwdG9yEigKDWNvbm5l", "Y3Rpb25faWQYASABKAsyES5pbnRlcm9wLlVuaXF1ZUlkEg4KBmFwcF9pZBgC", "IAEoCRIqCg9hcHBfaW5zdGFuY2VfaWQYAyABKAsyES5pbnRlcm9wLlVuaXF1", "ZUlkEi4KDnRyYW5zcG9ydF90eXBlGAQgASgOMhYuaW50ZXJvcC5UcmFuc3Bv", "cnRUeXBlOiOS2wQfaW50ZXJvcC5BcHBDb25uZWN0aW9uRGVzY3JpcHRvcio3", "Cg1UcmFuc3BvcnRUeXBlEgsKB1Vua25vd24QABIICgRQaXBlEAESBgoCV3MQ", "AhIHCgNXc3MQA0IpqgImUGxleHVzLkludGVyb3AuQXBwcy5JbnRlcm5hbC5H", "ZW5lcmF0ZWRiBnByb3RvMw==")); descriptor = pbr::FileDescriptor.FromGeneratedCode(descriptorData, new pbr::FileDescriptor[] { global::Plexus.Interop.Apps.Internal.Generated.UniqueIdReflection.Descriptor, global::Plexus.Interop.Apps.Internal.Generated.OptionsReflection.Descriptor, }, new pbr::GeneratedClrTypeInfo(new[] {typeof(global::Plexus.Interop.Apps.Internal.Generated.TransportType), }, null, new pbr::GeneratedClrTypeInfo[] { new pbr::GeneratedClrTypeInfo(typeof(global::Plexus.Interop.Apps.Internal.Generated.AppConnectionDescriptor), global::Plexus.Interop.Apps.Internal.Generated.AppConnectionDescriptor.Parser, new[]{ "ConnectionId", "AppId", "AppInstanceId", "TransportType" }, null, null, null, null) })); } #endregion } #region Enums internal enum TransportType { [pbr::OriginalName("Unknown")] Unknown = 0, [pbr::OriginalName("Pipe")] Pipe = 1, [pbr::OriginalName("Ws")] Ws = 2, [pbr::OriginalName("Wss")] Wss = 3, } #endregion #region Messages internal sealed partial class AppConnectionDescriptor : pb::IMessage #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE , pb::IBufferMessage #endif { private static readonly pb::MessageParser _parser = new pb::MessageParser(() => new AppConnectionDescriptor()); private pb::UnknownFieldSet _unknownFields; [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public static pb::MessageParser Parser { get { return _parser; } } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public static pbr::MessageDescriptor Descriptor { get { return global::Plexus.Interop.Apps.Internal.Generated.AppConnectionDescriptorReflection.Descriptor.MessageTypes[0]; } } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] pbr::MessageDescriptor pb::IMessage.Descriptor { get { return Descriptor; } } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public AppConnectionDescriptor() { OnConstruction(); } partial void OnConstruction(); [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public AppConnectionDescriptor(AppConnectionDescriptor other) : this() { connectionId_ = other.connectionId_ != null ? other.connectionId_.Clone() : null; appId_ = other.appId_; appInstanceId_ = other.appInstanceId_ != null ? other.appInstanceId_.Clone() : null; transportType_ = other.transportType_; _unknownFields = pb::UnknownFieldSet.Clone(other._unknownFields); } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public AppConnectionDescriptor Clone() { return new AppConnectionDescriptor(this); } /// Field number for the "connection_id" field. public const int ConnectionIdFieldNumber = 1; private global::Plexus.Interop.Apps.Internal.Generated.UniqueId connectionId_; [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public global::Plexus.Interop.Apps.Internal.Generated.UniqueId ConnectionId { get { return connectionId_; } set { connectionId_ = value; } } /// Field number for the "app_id" field. public const int AppIdFieldNumber = 2; private string appId_ = ""; [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public string AppId { get { return appId_; } set { appId_ = pb::ProtoPreconditions.CheckNotNull(value, "value"); } } /// Field number for the "app_instance_id" field. public const int AppInstanceIdFieldNumber = 3; private global::Plexus.Interop.Apps.Internal.Generated.UniqueId appInstanceId_; [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public global::Plexus.Interop.Apps.Internal.Generated.UniqueId AppInstanceId { get { return appInstanceId_; } set { appInstanceId_ = value; } } /// Field number for the "transport_type" field. public const int TransportTypeFieldNumber = 4; private global::Plexus.Interop.Apps.Internal.Generated.TransportType transportType_ = global::Plexus.Interop.Apps.Internal.Generated.TransportType.Unknown; [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public global::Plexus.Interop.Apps.Internal.Generated.TransportType TransportType { get { return transportType_; } set { transportType_ = value; } } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public override bool Equals(object other) { return Equals(other as AppConnectionDescriptor); } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public bool Equals(AppConnectionDescriptor other) { if (ReferenceEquals(other, null)) { return false; } if (ReferenceEquals(other, this)) { return true; } if (!object.Equals(ConnectionId, other.ConnectionId)) return false; if (AppId != other.AppId) return false; if (!object.Equals(AppInstanceId, other.AppInstanceId)) return false; if (TransportType != other.TransportType) return false; return Equals(_unknownFields, other._unknownFields); } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public override int GetHashCode() { int hash = 1; if (connectionId_ != null) hash ^= ConnectionId.GetHashCode(); if (AppId.Length != 0) hash ^= AppId.GetHashCode(); if (appInstanceId_ != null) hash ^= AppInstanceId.GetHashCode(); if (TransportType != global::Plexus.Interop.Apps.Internal.Generated.TransportType.Unknown) hash ^= TransportType.GetHashCode(); if (_unknownFields != null) { hash ^= _unknownFields.GetHashCode(); } return hash; } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public override string ToString() { return pb::JsonFormatter.ToDiagnosticString(this); } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public void WriteTo(pb::CodedOutputStream output) { #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE output.WriteRawMessage(this); #else if (connectionId_ != null) { output.WriteRawTag(10); output.WriteMessage(ConnectionId); } if (AppId.Length != 0) { output.WriteRawTag(18); output.WriteString(AppId); } if (appInstanceId_ != null) { output.WriteRawTag(26); output.WriteMessage(AppInstanceId); } if (TransportType != global::Plexus.Interop.Apps.Internal.Generated.TransportType.Unknown) { output.WriteRawTag(32); output.WriteEnum((int) TransportType); } if (_unknownFields != null) { _unknownFields.WriteTo(output); } #endif } #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] void pb::IBufferMessage.InternalWriteTo(ref pb::WriteContext output) { if (connectionId_ != null) { output.WriteRawTag(10); output.WriteMessage(ConnectionId); } if (AppId.Length != 0) { output.WriteRawTag(18); output.WriteString(AppId); } if (appInstanceId_ != null) { output.WriteRawTag(26); output.WriteMessage(AppInstanceId); } if (TransportType != global::Plexus.Interop.Apps.Internal.Generated.TransportType.Unknown) { output.WriteRawTag(32); output.WriteEnum((int) TransportType); } if (_unknownFields != null) { _unknownFields.WriteTo(ref output); } } #endif [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public int CalculateSize() { int size = 0; if (connectionId_ != null) { size += 1 + pb::CodedOutputStream.ComputeMessageSize(ConnectionId); } if (AppId.Length != 0) { size += 1 + pb::CodedOutputStream.ComputeStringSize(AppId); } if (appInstanceId_ != null) { size += 1 + pb::CodedOutputStream.ComputeMessageSize(AppInstanceId); } if (TransportType != global::Plexus.Interop.Apps.Internal.Generated.TransportType.Unknown) { size += 1 + pb::CodedOutputStream.ComputeEnumSize((int) TransportType); } if (_unknownFields != null) { size += _unknownFields.CalculateSize(); } return size; } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public void MergeFrom(AppConnectionDescriptor other) { if (other == null) { return; } if (other.connectionId_ != null) { if (connectionId_ == null) { ConnectionId = new global::Plexus.Interop.Apps.Internal.Generated.UniqueId(); } ConnectionId.MergeFrom(other.ConnectionId); } if (other.AppId.Length != 0) { AppId = other.AppId; } if (other.appInstanceId_ != null) { if (appInstanceId_ == null) { AppInstanceId = new global::Plexus.Interop.Apps.Internal.Generated.UniqueId(); } AppInstanceId.MergeFrom(other.AppInstanceId); } if (other.TransportType != global::Plexus.Interop.Apps.Internal.Generated.TransportType.Unknown) { TransportType = other.TransportType; } _unknownFields = pb::UnknownFieldSet.MergeFrom(_unknownFields, other._unknownFields); } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public void MergeFrom(pb::CodedInputStream input) { #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE input.ReadRawMessage(this); #else uint tag; while ((tag = input.ReadTag()) != 0) { switch(tag) { default: _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input); break; case 10: { if (connectionId_ == null) { ConnectionId = new global::Plexus.Interop.Apps.Internal.Generated.UniqueId(); } input.ReadMessage(ConnectionId); break; } case 18: { AppId = input.ReadString(); break; } case 26: { if (appInstanceId_ == null) { AppInstanceId = new global::Plexus.Interop.Apps.Internal.Generated.UniqueId(); } input.ReadMessage(AppInstanceId); break; } case 32: { TransportType = (global::Plexus.Interop.Apps.Internal.Generated.TransportType) input.ReadEnum(); break; } } } #endif } #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] void pb::IBufferMessage.InternalMergeFrom(ref pb::ParseContext input) { uint tag; while ((tag = input.ReadTag()) != 0) { switch(tag) { default: _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, ref input); break; case 10: { if (connectionId_ == null) { ConnectionId = new global::Plexus.Interop.Apps.Internal.Generated.UniqueId(); } input.ReadMessage(ConnectionId); break; } case 18: { AppId = input.ReadString(); break; } case 26: { if (appInstanceId_ == null) { AppInstanceId = new global::Plexus.Interop.Apps.Internal.Generated.UniqueId(); } input.ReadMessage(AppInstanceId); break; } case 32: { TransportType = (global::Plexus.Interop.Apps.Internal.Generated.TransportType) input.ReadEnum(); break; } } } } #endif } #endregion } #endregion Designer generated code ================================================ FILE: desktop/src/Plexus.Interop.Apps.Manager/Internal/Generated/interop/AppLaunchMode.msg.g.cs ================================================ /** * Copyright 2017-2021 Plexus Interop Deutsche Bank AG * SPDX-License-Identifier: Apache-2.0 * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ // // Generated by the protocol buffer compiler. DO NOT EDIT! // source: interop/app_launch_mode.proto // #pragma warning disable 1591, 0612, 3021 #region Designer generated code using pb = global::Google.Protobuf; using pbc = global::Google.Protobuf.Collections; using pbr = global::Google.Protobuf.Reflection; using scg = global::System.Collections.Generic; namespace Plexus.Interop.Apps.Internal.Generated { /// Holder for reflection information generated from interop/app_launch_mode.proto internal static partial class AppLaunchModeReflection { #region Descriptor /// File descriptor for interop/app_launch_mode.proto public static pbr::FileDescriptor Descriptor { get { return descriptor; } } private static pbr::FileDescriptor descriptor; static AppLaunchModeReflection() { byte[] descriptorData = global::System.Convert.FromBase64String( string.Concat( "Ch1pbnRlcm9wL2FwcF9sYXVuY2hfbW9kZS5wcm90bxIHaW50ZXJvcBoVaW50", "ZXJvcC9vcHRpb25zLnByb3RvKjgKDUFwcExhdW5jaE1vZGUSEwoPU0lOR0xF", "X0lOU1RBTkNFEAASEgoOTVVMVElfSU5TVEFOQ0UQAUIpqgImUGxleHVzLklu", "dGVyb3AuQXBwcy5JbnRlcm5hbC5HZW5lcmF0ZWRiBnByb3RvMw==")); descriptor = pbr::FileDescriptor.FromGeneratedCode(descriptorData, new pbr::FileDescriptor[] { global::Plexus.Interop.Apps.Internal.Generated.OptionsReflection.Descriptor, }, new pbr::GeneratedClrTypeInfo(new[] {typeof(global::Plexus.Interop.Apps.Internal.Generated.AppLaunchMode), }, null, null)); } #endregion } #region Enums internal enum AppLaunchMode { [pbr::OriginalName("SINGLE_INSTANCE")] SingleInstance = 0, [pbr::OriginalName("MULTI_INSTANCE")] MultiInstance = 1, } #endregion } #endregion Designer generated code ================================================ FILE: desktop/src/Plexus.Interop.Apps.Manager/Internal/Generated/interop/AppLauncherService.msg.g.cs ================================================ /** * Copyright 2017-2021 Plexus Interop Deutsche Bank AG * SPDX-License-Identifier: Apache-2.0 * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ // // Generated by the protocol buffer compiler. DO NOT EDIT! // source: interop/app_launcher_service.proto // #pragma warning disable 1591, 0612, 3021 #region Designer generated code using pb = global::Google.Protobuf; using pbc = global::Google.Protobuf.Collections; using pbr = global::Google.Protobuf.Reflection; using scg = global::System.Collections.Generic; namespace Plexus.Interop.Apps.Internal.Generated { /// Holder for reflection information generated from interop/app_launcher_service.proto internal static partial class AppLauncherServiceReflection { #region Descriptor /// File descriptor for interop/app_launcher_service.proto public static pbr::FileDescriptor Descriptor { get { return descriptor; } } private static pbr::FileDescriptor descriptor; static AppLauncherServiceReflection() { byte[] descriptorData = global::System.Convert.FromBase64String( string.Concat( "CiJpbnRlcm9wL2FwcF9sYXVuY2hlcl9zZXJ2aWNlLnByb3RvEgdpbnRlcm9w", "Ghtnb29nbGUvcHJvdG9idWYvZW1wdHkucHJvdG8aF2ludGVyb3AvdW5pcXVl", "X2lkLnByb3RvGh1pbnRlcm9wL2FwcF9sYXVuY2hfbW9kZS5wcm90bxoVaW50", "ZXJvcC9vcHRpb25zLnByb3RvIu0BChBBcHBMYXVuY2hSZXF1ZXN0Eg4KBmFw", "cF9pZBgBIAEoCRIaChJsYXVuY2hfcGFyYW1zX2pzb24YAiABKAkSKwoLbGF1", "bmNoX21vZGUYAyABKA4yFi5pbnRlcm9wLkFwcExhdW5jaE1vZGUSNAoZc3Vn", "Z2VzdGVkX2FwcF9pbnN0YW5jZV9pZBgEIAEoCzIRLmludGVyb3AuVW5pcXVl", "SWQSLAoIcmVmZXJyZXIYBSABKAsyGi5pbnRlcm9wLkFwcExhdW5jaFJlZmVy", "cmVyOhyS2wQYaW50ZXJvcC5BcHBMYXVuY2hSZXF1ZXN0IpgBChFBcHBMYXVu", "Y2hSZWZlcnJlchIOCgZhcHBfaWQYASABKAkSKgoPYXBwX2luc3RhbmNlX2lk", "GAIgASgLMhEuaW50ZXJvcC5VbmlxdWVJZBIoCg1jb25uZWN0aW9uX2lkGAMg", "ASgLMhEuaW50ZXJvcC5VbmlxdWVJZDodktsEGWludGVyb3AuQXBwTGF1bmNo", "UmVmZXJyZXIiXgoRQXBwTGF1bmNoUmVzcG9uc2USKgoPYXBwX2luc3RhbmNl", "X2lkGAEgASgLMhEuaW50ZXJvcC5VbmlxdWVJZDodktsEGWludGVyb3AuQXBw", "TGF1bmNoUmVzcG9uc2UimwEKEEFwcExhdW5jaGVkRXZlbnQSKgoPYXBwX2lu", "c3RhbmNlX2lkGAEgASgLMhEuaW50ZXJvcC5VbmlxdWVJZBIPCgdhcHBfaWRz", "GAIgAygJEiwKCHJlZmVycmVyGAMgASgLMhouaW50ZXJvcC5BcHBMYXVuY2hS", "ZWZlcnJlcjocktsEGGludGVyb3AuQXBwTGF1bmNoZWRFdmVudDLEAQoSQXBw", "TGF1bmNoZXJTZXJ2aWNlEj8KBkxhdW5jaBIZLmludGVyb3AuQXBwTGF1bmNo", "UmVxdWVzdBoaLmludGVyb3AuQXBwTGF1bmNoUmVzcG9uc2USTQoWQXBwTGF1", "bmNoZWRFdmVudFN0cmVhbRIWLmdvb2dsZS5wcm90b2J1Zi5FbXB0eRoZLmlu", "dGVyb3AuQXBwTGF1bmNoZWRFdmVudDABGh6S2wQaaW50ZXJvcC5BcHBMYXVu", "Y2hlclNlcnZpY2VCKaoCJlBsZXh1cy5JbnRlcm9wLkFwcHMuSW50ZXJuYWwu", "R2VuZXJhdGVkYgZwcm90bzM=")); descriptor = pbr::FileDescriptor.FromGeneratedCode(descriptorData, new pbr::FileDescriptor[] { global::Google.Protobuf.WellKnownTypes.EmptyReflection.Descriptor, global::Plexus.Interop.Apps.Internal.Generated.UniqueIdReflection.Descriptor, global::Plexus.Interop.Apps.Internal.Generated.AppLaunchModeReflection.Descriptor, global::Plexus.Interop.Apps.Internal.Generated.OptionsReflection.Descriptor, }, new pbr::GeneratedClrTypeInfo(null, null, new pbr::GeneratedClrTypeInfo[] { new pbr::GeneratedClrTypeInfo(typeof(global::Plexus.Interop.Apps.Internal.Generated.AppLaunchRequest), global::Plexus.Interop.Apps.Internal.Generated.AppLaunchRequest.Parser, new[]{ "AppId", "LaunchParamsJson", "LaunchMode", "SuggestedAppInstanceId", "Referrer" }, null, null, null, null), new pbr::GeneratedClrTypeInfo(typeof(global::Plexus.Interop.Apps.Internal.Generated.AppLaunchReferrer), global::Plexus.Interop.Apps.Internal.Generated.AppLaunchReferrer.Parser, new[]{ "AppId", "AppInstanceId", "ConnectionId" }, null, null, null, null), new pbr::GeneratedClrTypeInfo(typeof(global::Plexus.Interop.Apps.Internal.Generated.AppLaunchResponse), global::Plexus.Interop.Apps.Internal.Generated.AppLaunchResponse.Parser, new[]{ "AppInstanceId" }, null, null, null, null), new pbr::GeneratedClrTypeInfo(typeof(global::Plexus.Interop.Apps.Internal.Generated.AppLaunchedEvent), global::Plexus.Interop.Apps.Internal.Generated.AppLaunchedEvent.Parser, new[]{ "AppInstanceId", "AppIds", "Referrer" }, null, null, null, null) })); } #endregion } #region Messages internal sealed partial class AppLaunchRequest : pb::IMessage #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE , pb::IBufferMessage #endif { private static readonly pb::MessageParser _parser = new pb::MessageParser(() => new AppLaunchRequest()); private pb::UnknownFieldSet _unknownFields; [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public static pb::MessageParser Parser { get { return _parser; } } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public static pbr::MessageDescriptor Descriptor { get { return global::Plexus.Interop.Apps.Internal.Generated.AppLauncherServiceReflection.Descriptor.MessageTypes[0]; } } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] pbr::MessageDescriptor pb::IMessage.Descriptor { get { return Descriptor; } } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public AppLaunchRequest() { OnConstruction(); } partial void OnConstruction(); [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public AppLaunchRequest(AppLaunchRequest other) : this() { appId_ = other.appId_; launchParamsJson_ = other.launchParamsJson_; launchMode_ = other.launchMode_; suggestedAppInstanceId_ = other.suggestedAppInstanceId_ != null ? other.suggestedAppInstanceId_.Clone() : null; referrer_ = other.referrer_ != null ? other.referrer_.Clone() : null; _unknownFields = pb::UnknownFieldSet.Clone(other._unknownFields); } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public AppLaunchRequest Clone() { return new AppLaunchRequest(this); } /// Field number for the "app_id" field. public const int AppIdFieldNumber = 1; private string appId_ = ""; [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public string AppId { get { return appId_; } set { appId_ = pb::ProtoPreconditions.CheckNotNull(value, "value"); } } /// Field number for the "launch_params_json" field. public const int LaunchParamsJsonFieldNumber = 2; private string launchParamsJson_ = ""; [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public string LaunchParamsJson { get { return launchParamsJson_; } set { launchParamsJson_ = pb::ProtoPreconditions.CheckNotNull(value, "value"); } } /// Field number for the "launch_mode" field. public const int LaunchModeFieldNumber = 3; private global::Plexus.Interop.Apps.Internal.Generated.AppLaunchMode launchMode_ = global::Plexus.Interop.Apps.Internal.Generated.AppLaunchMode.SingleInstance; [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public global::Plexus.Interop.Apps.Internal.Generated.AppLaunchMode LaunchMode { get { return launchMode_; } set { launchMode_ = value; } } /// Field number for the "suggested_app_instance_id" field. public const int SuggestedAppInstanceIdFieldNumber = 4; private global::Plexus.Interop.Apps.Internal.Generated.UniqueId suggestedAppInstanceId_; [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public global::Plexus.Interop.Apps.Internal.Generated.UniqueId SuggestedAppInstanceId { get { return suggestedAppInstanceId_; } set { suggestedAppInstanceId_ = value; } } /// Field number for the "referrer" field. public const int ReferrerFieldNumber = 5; private global::Plexus.Interop.Apps.Internal.Generated.AppLaunchReferrer referrer_; [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public global::Plexus.Interop.Apps.Internal.Generated.AppLaunchReferrer Referrer { get { return referrer_; } set { referrer_ = value; } } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public override bool Equals(object other) { return Equals(other as AppLaunchRequest); } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public bool Equals(AppLaunchRequest other) { if (ReferenceEquals(other, null)) { return false; } if (ReferenceEquals(other, this)) { return true; } if (AppId != other.AppId) return false; if (LaunchParamsJson != other.LaunchParamsJson) return false; if (LaunchMode != other.LaunchMode) return false; if (!object.Equals(SuggestedAppInstanceId, other.SuggestedAppInstanceId)) return false; if (!object.Equals(Referrer, other.Referrer)) return false; return Equals(_unknownFields, other._unknownFields); } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public override int GetHashCode() { int hash = 1; if (AppId.Length != 0) hash ^= AppId.GetHashCode(); if (LaunchParamsJson.Length != 0) hash ^= LaunchParamsJson.GetHashCode(); if (LaunchMode != global::Plexus.Interop.Apps.Internal.Generated.AppLaunchMode.SingleInstance) hash ^= LaunchMode.GetHashCode(); if (suggestedAppInstanceId_ != null) hash ^= SuggestedAppInstanceId.GetHashCode(); if (referrer_ != null) hash ^= Referrer.GetHashCode(); if (_unknownFields != null) { hash ^= _unknownFields.GetHashCode(); } return hash; } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public override string ToString() { return pb::JsonFormatter.ToDiagnosticString(this); } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public void WriteTo(pb::CodedOutputStream output) { #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE output.WriteRawMessage(this); #else if (AppId.Length != 0) { output.WriteRawTag(10); output.WriteString(AppId); } if (LaunchParamsJson.Length != 0) { output.WriteRawTag(18); output.WriteString(LaunchParamsJson); } if (LaunchMode != global::Plexus.Interop.Apps.Internal.Generated.AppLaunchMode.SingleInstance) { output.WriteRawTag(24); output.WriteEnum((int) LaunchMode); } if (suggestedAppInstanceId_ != null) { output.WriteRawTag(34); output.WriteMessage(SuggestedAppInstanceId); } if (referrer_ != null) { output.WriteRawTag(42); output.WriteMessage(Referrer); } if (_unknownFields != null) { _unknownFields.WriteTo(output); } #endif } #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] void pb::IBufferMessage.InternalWriteTo(ref pb::WriteContext output) { if (AppId.Length != 0) { output.WriteRawTag(10); output.WriteString(AppId); } if (LaunchParamsJson.Length != 0) { output.WriteRawTag(18); output.WriteString(LaunchParamsJson); } if (LaunchMode != global::Plexus.Interop.Apps.Internal.Generated.AppLaunchMode.SingleInstance) { output.WriteRawTag(24); output.WriteEnum((int) LaunchMode); } if (suggestedAppInstanceId_ != null) { output.WriteRawTag(34); output.WriteMessage(SuggestedAppInstanceId); } if (referrer_ != null) { output.WriteRawTag(42); output.WriteMessage(Referrer); } if (_unknownFields != null) { _unknownFields.WriteTo(ref output); } } #endif [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public int CalculateSize() { int size = 0; if (AppId.Length != 0) { size += 1 + pb::CodedOutputStream.ComputeStringSize(AppId); } if (LaunchParamsJson.Length != 0) { size += 1 + pb::CodedOutputStream.ComputeStringSize(LaunchParamsJson); } if (LaunchMode != global::Plexus.Interop.Apps.Internal.Generated.AppLaunchMode.SingleInstance) { size += 1 + pb::CodedOutputStream.ComputeEnumSize((int) LaunchMode); } if (suggestedAppInstanceId_ != null) { size += 1 + pb::CodedOutputStream.ComputeMessageSize(SuggestedAppInstanceId); } if (referrer_ != null) { size += 1 + pb::CodedOutputStream.ComputeMessageSize(Referrer); } if (_unknownFields != null) { size += _unknownFields.CalculateSize(); } return size; } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public void MergeFrom(AppLaunchRequest other) { if (other == null) { return; } if (other.AppId.Length != 0) { AppId = other.AppId; } if (other.LaunchParamsJson.Length != 0) { LaunchParamsJson = other.LaunchParamsJson; } if (other.LaunchMode != global::Plexus.Interop.Apps.Internal.Generated.AppLaunchMode.SingleInstance) { LaunchMode = other.LaunchMode; } if (other.suggestedAppInstanceId_ != null) { if (suggestedAppInstanceId_ == null) { SuggestedAppInstanceId = new global::Plexus.Interop.Apps.Internal.Generated.UniqueId(); } SuggestedAppInstanceId.MergeFrom(other.SuggestedAppInstanceId); } if (other.referrer_ != null) { if (referrer_ == null) { Referrer = new global::Plexus.Interop.Apps.Internal.Generated.AppLaunchReferrer(); } Referrer.MergeFrom(other.Referrer); } _unknownFields = pb::UnknownFieldSet.MergeFrom(_unknownFields, other._unknownFields); } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public void MergeFrom(pb::CodedInputStream input) { #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE input.ReadRawMessage(this); #else uint tag; while ((tag = input.ReadTag()) != 0) { switch(tag) { default: _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input); break; case 10: { AppId = input.ReadString(); break; } case 18: { LaunchParamsJson = input.ReadString(); break; } case 24: { LaunchMode = (global::Plexus.Interop.Apps.Internal.Generated.AppLaunchMode) input.ReadEnum(); break; } case 34: { if (suggestedAppInstanceId_ == null) { SuggestedAppInstanceId = new global::Plexus.Interop.Apps.Internal.Generated.UniqueId(); } input.ReadMessage(SuggestedAppInstanceId); break; } case 42: { if (referrer_ == null) { Referrer = new global::Plexus.Interop.Apps.Internal.Generated.AppLaunchReferrer(); } input.ReadMessage(Referrer); break; } } } #endif } #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] void pb::IBufferMessage.InternalMergeFrom(ref pb::ParseContext input) { uint tag; while ((tag = input.ReadTag()) != 0) { switch(tag) { default: _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, ref input); break; case 10: { AppId = input.ReadString(); break; } case 18: { LaunchParamsJson = input.ReadString(); break; } case 24: { LaunchMode = (global::Plexus.Interop.Apps.Internal.Generated.AppLaunchMode) input.ReadEnum(); break; } case 34: { if (suggestedAppInstanceId_ == null) { SuggestedAppInstanceId = new global::Plexus.Interop.Apps.Internal.Generated.UniqueId(); } input.ReadMessage(SuggestedAppInstanceId); break; } case 42: { if (referrer_ == null) { Referrer = new global::Plexus.Interop.Apps.Internal.Generated.AppLaunchReferrer(); } input.ReadMessage(Referrer); break; } } } } #endif } internal sealed partial class AppLaunchReferrer : pb::IMessage #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE , pb::IBufferMessage #endif { private static readonly pb::MessageParser _parser = new pb::MessageParser(() => new AppLaunchReferrer()); private pb::UnknownFieldSet _unknownFields; [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public static pb::MessageParser Parser { get { return _parser; } } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public static pbr::MessageDescriptor Descriptor { get { return global::Plexus.Interop.Apps.Internal.Generated.AppLauncherServiceReflection.Descriptor.MessageTypes[1]; } } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] pbr::MessageDescriptor pb::IMessage.Descriptor { get { return Descriptor; } } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public AppLaunchReferrer() { OnConstruction(); } partial void OnConstruction(); [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public AppLaunchReferrer(AppLaunchReferrer other) : this() { appId_ = other.appId_; appInstanceId_ = other.appInstanceId_ != null ? other.appInstanceId_.Clone() : null; connectionId_ = other.connectionId_ != null ? other.connectionId_.Clone() : null; _unknownFields = pb::UnknownFieldSet.Clone(other._unknownFields); } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public AppLaunchReferrer Clone() { return new AppLaunchReferrer(this); } /// Field number for the "app_id" field. public const int AppIdFieldNumber = 1; private string appId_ = ""; [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public string AppId { get { return appId_; } set { appId_ = pb::ProtoPreconditions.CheckNotNull(value, "value"); } } /// Field number for the "app_instance_id" field. public const int AppInstanceIdFieldNumber = 2; private global::Plexus.Interop.Apps.Internal.Generated.UniqueId appInstanceId_; [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public global::Plexus.Interop.Apps.Internal.Generated.UniqueId AppInstanceId { get { return appInstanceId_; } set { appInstanceId_ = value; } } /// Field number for the "connection_id" field. public const int ConnectionIdFieldNumber = 3; private global::Plexus.Interop.Apps.Internal.Generated.UniqueId connectionId_; [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public global::Plexus.Interop.Apps.Internal.Generated.UniqueId ConnectionId { get { return connectionId_; } set { connectionId_ = value; } } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public override bool Equals(object other) { return Equals(other as AppLaunchReferrer); } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public bool Equals(AppLaunchReferrer other) { if (ReferenceEquals(other, null)) { return false; } if (ReferenceEquals(other, this)) { return true; } if (AppId != other.AppId) return false; if (!object.Equals(AppInstanceId, other.AppInstanceId)) return false; if (!object.Equals(ConnectionId, other.ConnectionId)) return false; return Equals(_unknownFields, other._unknownFields); } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public override int GetHashCode() { int hash = 1; if (AppId.Length != 0) hash ^= AppId.GetHashCode(); if (appInstanceId_ != null) hash ^= AppInstanceId.GetHashCode(); if (connectionId_ != null) hash ^= ConnectionId.GetHashCode(); if (_unknownFields != null) { hash ^= _unknownFields.GetHashCode(); } return hash; } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public override string ToString() { return pb::JsonFormatter.ToDiagnosticString(this); } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public void WriteTo(pb::CodedOutputStream output) { #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE output.WriteRawMessage(this); #else if (AppId.Length != 0) { output.WriteRawTag(10); output.WriteString(AppId); } if (appInstanceId_ != null) { output.WriteRawTag(18); output.WriteMessage(AppInstanceId); } if (connectionId_ != null) { output.WriteRawTag(26); output.WriteMessage(ConnectionId); } if (_unknownFields != null) { _unknownFields.WriteTo(output); } #endif } #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] void pb::IBufferMessage.InternalWriteTo(ref pb::WriteContext output) { if (AppId.Length != 0) { output.WriteRawTag(10); output.WriteString(AppId); } if (appInstanceId_ != null) { output.WriteRawTag(18); output.WriteMessage(AppInstanceId); } if (connectionId_ != null) { output.WriteRawTag(26); output.WriteMessage(ConnectionId); } if (_unknownFields != null) { _unknownFields.WriteTo(ref output); } } #endif [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public int CalculateSize() { int size = 0; if (AppId.Length != 0) { size += 1 + pb::CodedOutputStream.ComputeStringSize(AppId); } if (appInstanceId_ != null) { size += 1 + pb::CodedOutputStream.ComputeMessageSize(AppInstanceId); } if (connectionId_ != null) { size += 1 + pb::CodedOutputStream.ComputeMessageSize(ConnectionId); } if (_unknownFields != null) { size += _unknownFields.CalculateSize(); } return size; } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public void MergeFrom(AppLaunchReferrer other) { if (other == null) { return; } if (other.AppId.Length != 0) { AppId = other.AppId; } if (other.appInstanceId_ != null) { if (appInstanceId_ == null) { AppInstanceId = new global::Plexus.Interop.Apps.Internal.Generated.UniqueId(); } AppInstanceId.MergeFrom(other.AppInstanceId); } if (other.connectionId_ != null) { if (connectionId_ == null) { ConnectionId = new global::Plexus.Interop.Apps.Internal.Generated.UniqueId(); } ConnectionId.MergeFrom(other.ConnectionId); } _unknownFields = pb::UnknownFieldSet.MergeFrom(_unknownFields, other._unknownFields); } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public void MergeFrom(pb::CodedInputStream input) { #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE input.ReadRawMessage(this); #else uint tag; while ((tag = input.ReadTag()) != 0) { switch(tag) { default: _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input); break; case 10: { AppId = input.ReadString(); break; } case 18: { if (appInstanceId_ == null) { AppInstanceId = new global::Plexus.Interop.Apps.Internal.Generated.UniqueId(); } input.ReadMessage(AppInstanceId); break; } case 26: { if (connectionId_ == null) { ConnectionId = new global::Plexus.Interop.Apps.Internal.Generated.UniqueId(); } input.ReadMessage(ConnectionId); break; } } } #endif } #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] void pb::IBufferMessage.InternalMergeFrom(ref pb::ParseContext input) { uint tag; while ((tag = input.ReadTag()) != 0) { switch(tag) { default: _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, ref input); break; case 10: { AppId = input.ReadString(); break; } case 18: { if (appInstanceId_ == null) { AppInstanceId = new global::Plexus.Interop.Apps.Internal.Generated.UniqueId(); } input.ReadMessage(AppInstanceId); break; } case 26: { if (connectionId_ == null) { ConnectionId = new global::Plexus.Interop.Apps.Internal.Generated.UniqueId(); } input.ReadMessage(ConnectionId); break; } } } } #endif } internal sealed partial class AppLaunchResponse : pb::IMessage #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE , pb::IBufferMessage #endif { private static readonly pb::MessageParser _parser = new pb::MessageParser(() => new AppLaunchResponse()); private pb::UnknownFieldSet _unknownFields; [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public static pb::MessageParser Parser { get { return _parser; } } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public static pbr::MessageDescriptor Descriptor { get { return global::Plexus.Interop.Apps.Internal.Generated.AppLauncherServiceReflection.Descriptor.MessageTypes[2]; } } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] pbr::MessageDescriptor pb::IMessage.Descriptor { get { return Descriptor; } } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public AppLaunchResponse() { OnConstruction(); } partial void OnConstruction(); [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public AppLaunchResponse(AppLaunchResponse other) : this() { appInstanceId_ = other.appInstanceId_ != null ? other.appInstanceId_.Clone() : null; _unknownFields = pb::UnknownFieldSet.Clone(other._unknownFields); } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public AppLaunchResponse Clone() { return new AppLaunchResponse(this); } /// Field number for the "app_instance_id" field. public const int AppInstanceIdFieldNumber = 1; private global::Plexus.Interop.Apps.Internal.Generated.UniqueId appInstanceId_; [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public global::Plexus.Interop.Apps.Internal.Generated.UniqueId AppInstanceId { get { return appInstanceId_; } set { appInstanceId_ = value; } } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public override bool Equals(object other) { return Equals(other as AppLaunchResponse); } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public bool Equals(AppLaunchResponse other) { if (ReferenceEquals(other, null)) { return false; } if (ReferenceEquals(other, this)) { return true; } if (!object.Equals(AppInstanceId, other.AppInstanceId)) return false; return Equals(_unknownFields, other._unknownFields); } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public override int GetHashCode() { int hash = 1; if (appInstanceId_ != null) hash ^= AppInstanceId.GetHashCode(); if (_unknownFields != null) { hash ^= _unknownFields.GetHashCode(); } return hash; } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public override string ToString() { return pb::JsonFormatter.ToDiagnosticString(this); } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public void WriteTo(pb::CodedOutputStream output) { #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE output.WriteRawMessage(this); #else if (appInstanceId_ != null) { output.WriteRawTag(10); output.WriteMessage(AppInstanceId); } if (_unknownFields != null) { _unknownFields.WriteTo(output); } #endif } #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] void pb::IBufferMessage.InternalWriteTo(ref pb::WriteContext output) { if (appInstanceId_ != null) { output.WriteRawTag(10); output.WriteMessage(AppInstanceId); } if (_unknownFields != null) { _unknownFields.WriteTo(ref output); } } #endif [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public int CalculateSize() { int size = 0; if (appInstanceId_ != null) { size += 1 + pb::CodedOutputStream.ComputeMessageSize(AppInstanceId); } if (_unknownFields != null) { size += _unknownFields.CalculateSize(); } return size; } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public void MergeFrom(AppLaunchResponse other) { if (other == null) { return; } if (other.appInstanceId_ != null) { if (appInstanceId_ == null) { AppInstanceId = new global::Plexus.Interop.Apps.Internal.Generated.UniqueId(); } AppInstanceId.MergeFrom(other.AppInstanceId); } _unknownFields = pb::UnknownFieldSet.MergeFrom(_unknownFields, other._unknownFields); } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public void MergeFrom(pb::CodedInputStream input) { #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE input.ReadRawMessage(this); #else uint tag; while ((tag = input.ReadTag()) != 0) { switch(tag) { default: _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input); break; case 10: { if (appInstanceId_ == null) { AppInstanceId = new global::Plexus.Interop.Apps.Internal.Generated.UniqueId(); } input.ReadMessage(AppInstanceId); break; } } } #endif } #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] void pb::IBufferMessage.InternalMergeFrom(ref pb::ParseContext input) { uint tag; while ((tag = input.ReadTag()) != 0) { switch(tag) { default: _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, ref input); break; case 10: { if (appInstanceId_ == null) { AppInstanceId = new global::Plexus.Interop.Apps.Internal.Generated.UniqueId(); } input.ReadMessage(AppInstanceId); break; } } } } #endif } internal sealed partial class AppLaunchedEvent : pb::IMessage #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE , pb::IBufferMessage #endif { private static readonly pb::MessageParser _parser = new pb::MessageParser(() => new AppLaunchedEvent()); private pb::UnknownFieldSet _unknownFields; [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public static pb::MessageParser Parser { get { return _parser; } } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public static pbr::MessageDescriptor Descriptor { get { return global::Plexus.Interop.Apps.Internal.Generated.AppLauncherServiceReflection.Descriptor.MessageTypes[3]; } } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] pbr::MessageDescriptor pb::IMessage.Descriptor { get { return Descriptor; } } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public AppLaunchedEvent() { OnConstruction(); } partial void OnConstruction(); [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public AppLaunchedEvent(AppLaunchedEvent other) : this() { appInstanceId_ = other.appInstanceId_ != null ? other.appInstanceId_.Clone() : null; appIds_ = other.appIds_.Clone(); referrer_ = other.referrer_ != null ? other.referrer_.Clone() : null; _unknownFields = pb::UnknownFieldSet.Clone(other._unknownFields); } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public AppLaunchedEvent Clone() { return new AppLaunchedEvent(this); } /// Field number for the "app_instance_id" field. public const int AppInstanceIdFieldNumber = 1; private global::Plexus.Interop.Apps.Internal.Generated.UniqueId appInstanceId_; [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public global::Plexus.Interop.Apps.Internal.Generated.UniqueId AppInstanceId { get { return appInstanceId_; } set { appInstanceId_ = value; } } /// Field number for the "app_ids" field. public const int AppIdsFieldNumber = 2; private static readonly pb::FieldCodec _repeated_appIds_codec = pb::FieldCodec.ForString(18); private readonly pbc::RepeatedField appIds_ = new pbc::RepeatedField(); [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public pbc::RepeatedField AppIds { get { return appIds_; } } /// Field number for the "referrer" field. public const int ReferrerFieldNumber = 3; private global::Plexus.Interop.Apps.Internal.Generated.AppLaunchReferrer referrer_; [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public global::Plexus.Interop.Apps.Internal.Generated.AppLaunchReferrer Referrer { get { return referrer_; } set { referrer_ = value; } } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public override bool Equals(object other) { return Equals(other as AppLaunchedEvent); } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public bool Equals(AppLaunchedEvent other) { if (ReferenceEquals(other, null)) { return false; } if (ReferenceEquals(other, this)) { return true; } if (!object.Equals(AppInstanceId, other.AppInstanceId)) return false; if(!appIds_.Equals(other.appIds_)) return false; if (!object.Equals(Referrer, other.Referrer)) return false; return Equals(_unknownFields, other._unknownFields); } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public override int GetHashCode() { int hash = 1; if (appInstanceId_ != null) hash ^= AppInstanceId.GetHashCode(); hash ^= appIds_.GetHashCode(); if (referrer_ != null) hash ^= Referrer.GetHashCode(); if (_unknownFields != null) { hash ^= _unknownFields.GetHashCode(); } return hash; } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public override string ToString() { return pb::JsonFormatter.ToDiagnosticString(this); } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public void WriteTo(pb::CodedOutputStream output) { #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE output.WriteRawMessage(this); #else if (appInstanceId_ != null) { output.WriteRawTag(10); output.WriteMessage(AppInstanceId); } appIds_.WriteTo(output, _repeated_appIds_codec); if (referrer_ != null) { output.WriteRawTag(26); output.WriteMessage(Referrer); } if (_unknownFields != null) { _unknownFields.WriteTo(output); } #endif } #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] void pb::IBufferMessage.InternalWriteTo(ref pb::WriteContext output) { if (appInstanceId_ != null) { output.WriteRawTag(10); output.WriteMessage(AppInstanceId); } appIds_.WriteTo(ref output, _repeated_appIds_codec); if (referrer_ != null) { output.WriteRawTag(26); output.WriteMessage(Referrer); } if (_unknownFields != null) { _unknownFields.WriteTo(ref output); } } #endif [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public int CalculateSize() { int size = 0; if (appInstanceId_ != null) { size += 1 + pb::CodedOutputStream.ComputeMessageSize(AppInstanceId); } size += appIds_.CalculateSize(_repeated_appIds_codec); if (referrer_ != null) { size += 1 + pb::CodedOutputStream.ComputeMessageSize(Referrer); } if (_unknownFields != null) { size += _unknownFields.CalculateSize(); } return size; } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public void MergeFrom(AppLaunchedEvent other) { if (other == null) { return; } if (other.appInstanceId_ != null) { if (appInstanceId_ == null) { AppInstanceId = new global::Plexus.Interop.Apps.Internal.Generated.UniqueId(); } AppInstanceId.MergeFrom(other.AppInstanceId); } appIds_.Add(other.appIds_); if (other.referrer_ != null) { if (referrer_ == null) { Referrer = new global::Plexus.Interop.Apps.Internal.Generated.AppLaunchReferrer(); } Referrer.MergeFrom(other.Referrer); } _unknownFields = pb::UnknownFieldSet.MergeFrom(_unknownFields, other._unknownFields); } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public void MergeFrom(pb::CodedInputStream input) { #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE input.ReadRawMessage(this); #else uint tag; while ((tag = input.ReadTag()) != 0) { switch(tag) { default: _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input); break; case 10: { if (appInstanceId_ == null) { AppInstanceId = new global::Plexus.Interop.Apps.Internal.Generated.UniqueId(); } input.ReadMessage(AppInstanceId); break; } case 18: { appIds_.AddEntriesFrom(input, _repeated_appIds_codec); break; } case 26: { if (referrer_ == null) { Referrer = new global::Plexus.Interop.Apps.Internal.Generated.AppLaunchReferrer(); } input.ReadMessage(Referrer); break; } } } #endif } #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] void pb::IBufferMessage.InternalMergeFrom(ref pb::ParseContext input) { uint tag; while ((tag = input.ReadTag()) != 0) { switch(tag) { default: _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, ref input); break; case 10: { if (appInstanceId_ == null) { AppInstanceId = new global::Plexus.Interop.Apps.Internal.Generated.UniqueId(); } input.ReadMessage(AppInstanceId); break; } case 18: { appIds_.AddEntriesFrom(ref input, _repeated_appIds_codec); break; } case 26: { if (referrer_ == null) { Referrer = new global::Plexus.Interop.Apps.Internal.Generated.AppLaunchReferrer(); } input.ReadMessage(Referrer); break; } } } } #endif } #endregion } #endregion Designer generated code ================================================ FILE: desktop/src/Plexus.Interop.Apps.Manager/Internal/Generated/interop/AppLauncherService.svc.g.cs ================================================ /** * Copyright 2017-2021 Plexus Interop Deutsche Bank AG * SPDX-License-Identifier: Apache-2.0 * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ // // Generated by the Plexus Interop compiler. DO NOT EDIT! // source: interop\app_launcher_service.proto // #pragma warning disable 1591, 0612, 3021 #region Designer generated code namespace Plexus.Interop.Apps.Internal.Generated { using System; using global::Plexus; using global::Plexus.Channels; using global::Plexus.Interop; using global::System.Threading.Tasks; internal static partial class AppLauncherService { public const string Id = "interop.AppLauncherService"; public const string LaunchMethodId = "Launch"; public const string AppLaunchedEventStreamMethodId = "AppLaunchedEventStream"; public static readonly AppLauncherService.Descriptor DefaultDescriptor = CreateDescriptor(); public static AppLauncherService.Descriptor CreateDescriptor() { return new AppLauncherService.Descriptor(); } public static AppLauncherService.Descriptor CreateDescriptor(string alias) { return new AppLauncherService.Descriptor(alias); } public partial interface ILaunchProxy { IUnaryMethodCall Launch(global::Plexus.Interop.Apps.Internal.Generated.AppLaunchRequest request); } public partial interface IAppLaunchedEventStreamProxy { IServerStreamingMethodCall AppLaunchedEventStream(global::Google.Protobuf.WellKnownTypes.Empty request); } public partial interface ILaunchImpl { Task Launch(global::Plexus.Interop.Apps.Internal.Generated.AppLaunchRequest request, MethodCallContext context); } public partial interface IAppLaunchedEventStreamImpl { Task AppLaunchedEventStream(global::Google.Protobuf.WellKnownTypes.Empty request, IWritableChannel responseStream, MethodCallContext context); } public sealed partial class Descriptor { public UnaryMethod LaunchMethod {get; private set; } public ServerStreamingMethod AppLaunchedEventStreamMethod {get; private set; } public Descriptor() { LaunchMethod = Method.Unary(Id, LaunchMethodId); AppLaunchedEventStreamMethod = Method.ServerStreaming(Id, AppLaunchedEventStreamMethodId); } public Descriptor(string alias) { LaunchMethod = Method.Unary(Id, alias, LaunchMethodId); AppLaunchedEventStreamMethod = Method.ServerStreaming(Id, alias, AppLaunchedEventStreamMethodId); } } } } #endregion Designer generated code ================================================ FILE: desktop/src/Plexus.Interop.Apps.Manager/Internal/Generated/interop/AppLifecycleManager.app.g.cs ================================================ /** * Copyright 2017-2021 Plexus Interop Deutsche Bank AG * SPDX-License-Identifier: Apache-2.0 * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ // // Generated by the Plexus Interop compiler. DO NOT EDIT! // source: interop\app_lifecycle_manager.interop // #pragma warning disable 1591, 0612, 3021 #region Designer generated code namespace Plexus.Interop.Apps.Internal.Generated { using System; using global::Plexus; using global::Plexus.Channels; using global::Plexus.Interop; using global::System.Threading.Tasks; internal partial interface IAppLifecycleManagerClient: IClient { AppLifecycleManagerClient.IAppLauncherServiceProxy AppLauncherService { get; } } internal sealed partial class AppLifecycleManagerClient: ClientBase, IAppLifecycleManagerClient { public const string Id = "interop.AppLifecycleManager"; private static ClientOptions CreateClientOptions(AppLifecycleManagerClient.ServiceBinder serviceBinder, Func setup = null) { ClientOptionsBuilder builder = new ClientOptionsBuilder().WithApplicationId(Id).WithDefaultConfiguration(); serviceBinder.Bind(builder); if (setup != null) { builder = setup(builder); } return builder.Build(); } public AppLifecycleManagerClient( AppLifecycleManagerClient.IAppLifecycleServiceImpl appLifecycleService, AppLifecycleManagerClient.IAppMetadataServiceImpl appMetadataService, AppLifecycleManagerClient.IContextLinkageServiceImpl contextLinkageService, AppLifecycleManagerClient.IAppRegistrationServiceImpl appRegistrationService, Func setup = null ) :this(new AppLifecycleManagerClient.ServiceBinder( appLifecycleService, appMetadataService, contextLinkageService, appRegistrationService ), setup) { } public AppLifecycleManagerClient(AppLifecycleManagerClient.ServiceBinder serviceBinder, Func setup = null): base(CreateClientOptions(serviceBinder, setup)) { AppLauncherService = new AppLifecycleManagerClient.AppLauncherServiceProxy(this.CallInvoker); } public sealed partial class ServiceBinder { public ServiceBinder( AppLifecycleManagerClient.IAppLifecycleServiceImpl appLifecycleService, AppLifecycleManagerClient.IAppMetadataServiceImpl appMetadataService, AppLifecycleManagerClient.IContextLinkageServiceImpl contextLinkageService, AppLifecycleManagerClient.IAppRegistrationServiceImpl appRegistrationService ) { _appLifecycleServiceBinder = new AppLifecycleManagerClient.AppLifecycleServiceBinder(appLifecycleService); _appMetadataServiceBinder = new AppLifecycleManagerClient.AppMetadataServiceBinder(appMetadataService); _contextLinkageServiceBinder = new AppLifecycleManagerClient.ContextLinkageServiceBinder(contextLinkageService); _appRegistrationServiceBinder = new AppLifecycleManagerClient.AppRegistrationServiceBinder(appRegistrationService); } private AppLifecycleServiceBinder _appLifecycleServiceBinder; private AppMetadataServiceBinder _appMetadataServiceBinder; private ContextLinkageServiceBinder _contextLinkageServiceBinder; private AppRegistrationServiceBinder _appRegistrationServiceBinder; public ClientOptionsBuilder Bind(ClientOptionsBuilder builder) { builder = _appLifecycleServiceBinder.Bind(builder); builder = _appMetadataServiceBinder.Bind(builder); builder = _contextLinkageServiceBinder.Bind(builder); builder = _appRegistrationServiceBinder.Bind(builder); return builder; } } public partial interface IAppLifecycleServiceImpl: global::Plexus.Interop.Apps.Internal.Generated.AppLifecycleService.IResolveAppImpl, global::Plexus.Interop.Apps.Internal.Generated.AppLifecycleService.IGetLifecycleEventStreamImpl, global::Plexus.Interop.Apps.Internal.Generated.AppLifecycleService.IGetInvocationEventStreamImpl, global::Plexus.Interop.Apps.Internal.Generated.AppLifecycleService.IGetConnectionsImpl, global::Plexus.Interop.Apps.Internal.Generated.AppLifecycleService.IGetConnectionsStreamImpl { } private sealed partial class AppLifecycleServiceBinder { private readonly IAppLifecycleServiceImpl _impl; public AppLifecycleServiceBinder(IAppLifecycleServiceImpl impl) { _impl = impl; } public ClientOptionsBuilder Bind(ClientOptionsBuilder builder) { return builder.WithProvidedService(global::Plexus.Interop.Apps.Internal.Generated.AppLifecycleService.Id, Bind); } private ProvidedServiceDefinition.Builder Bind(ProvidedServiceDefinition.Builder builder) { builder = builder.WithUnaryMethod(global::Plexus.Interop.Apps.Internal.Generated.AppLifecycleService.ResolveAppMethodId, _impl.ResolveApp); builder = builder.WithServerStreamingMethod(global::Plexus.Interop.Apps.Internal.Generated.AppLifecycleService.GetLifecycleEventStreamMethodId, _impl.GetLifecycleEventStream); builder = builder.WithServerStreamingMethod(global::Plexus.Interop.Apps.Internal.Generated.AppLifecycleService.GetInvocationEventStreamMethodId, _impl.GetInvocationEventStream); builder = builder.WithUnaryMethod(global::Plexus.Interop.Apps.Internal.Generated.AppLifecycleService.GetConnectionsMethodId, _impl.GetConnections); builder = builder.WithServerStreamingMethod(global::Plexus.Interop.Apps.Internal.Generated.AppLifecycleService.GetConnectionsStreamMethodId, _impl.GetConnectionsStream); return builder; } } public sealed partial class AppLifecycleServiceImpl: IAppLifecycleServiceImpl { private readonly UnaryMethodHandler _resolveAppHandler; private readonly ServerStreamingMethodHandler _getLifecycleEventStreamHandler; private readonly ServerStreamingMethodHandler _getInvocationEventStreamHandler; private readonly UnaryMethodHandler _getConnectionsHandler; private readonly ServerStreamingMethodHandler _getConnectionsStreamHandler; public AppLifecycleServiceImpl( UnaryMethodHandler resolveAppHandler, ServerStreamingMethodHandler getLifecycleEventStreamHandler, ServerStreamingMethodHandler getInvocationEventStreamHandler, UnaryMethodHandler getConnectionsHandler, ServerStreamingMethodHandler getConnectionsStreamHandler ) { _resolveAppHandler = resolveAppHandler; _getLifecycleEventStreamHandler = getLifecycleEventStreamHandler; _getInvocationEventStreamHandler = getInvocationEventStreamHandler; _getConnectionsHandler = getConnectionsHandler; _getConnectionsStreamHandler = getConnectionsStreamHandler; } public Task ResolveApp(global::Plexus.Interop.Apps.Internal.Generated.ResolveAppRequest request, MethodCallContext context) { return _resolveAppHandler(request, context); } public Task GetLifecycleEventStream(global::Google.Protobuf.WellKnownTypes.Empty request, IWritableChannel responseStream, MethodCallContext context) { return _getLifecycleEventStreamHandler(request, responseStream, context); } public Task GetInvocationEventStream(global::Google.Protobuf.WellKnownTypes.Empty request, IWritableChannel responseStream, MethodCallContext context) { return _getInvocationEventStreamHandler(request, responseStream, context); } public Task GetConnections(global::Plexus.Interop.Apps.Internal.Generated.GetConnectionsRequest request, MethodCallContext context) { return _getConnectionsHandler(request, context); } public Task GetConnectionsStream(global::Plexus.Interop.Apps.Internal.Generated.GetConnectionsRequest request, IWritableChannel responseStream, MethodCallContext context) { return _getConnectionsStreamHandler(request, responseStream, context); } } public sealed partial class AppLifecycleServiceImpl: IAppLifecycleServiceImpl where T: global::Plexus.Interop.Apps.Internal.Generated.AppLifecycleService.IResolveAppImpl, global::Plexus.Interop.Apps.Internal.Generated.AppLifecycleService.IGetLifecycleEventStreamImpl, global::Plexus.Interop.Apps.Internal.Generated.AppLifecycleService.IGetInvocationEventStreamImpl, global::Plexus.Interop.Apps.Internal.Generated.AppLifecycleService.IGetConnectionsImpl, global::Plexus.Interop.Apps.Internal.Generated.AppLifecycleService.IGetConnectionsStreamImpl { private readonly T _impl; public AppLifecycleServiceImpl(T impl) { _impl = impl; } public Task ResolveApp(global::Plexus.Interop.Apps.Internal.Generated.ResolveAppRequest request, MethodCallContext context) { return _impl.ResolveApp(request, context); } public Task GetLifecycleEventStream(global::Google.Protobuf.WellKnownTypes.Empty request, IWritableChannel responseStream, MethodCallContext context) { return _impl.GetLifecycleEventStream(request, responseStream, context); } public Task GetInvocationEventStream(global::Google.Protobuf.WellKnownTypes.Empty request, IWritableChannel responseStream, MethodCallContext context) { return _impl.GetInvocationEventStream(request, responseStream, context); } public Task GetConnections(global::Plexus.Interop.Apps.Internal.Generated.GetConnectionsRequest request, MethodCallContext context) { return _impl.GetConnections(request, context); } public Task GetConnectionsStream(global::Plexus.Interop.Apps.Internal.Generated.GetConnectionsRequest request, IWritableChannel responseStream, MethodCallContext context) { return _impl.GetConnectionsStream(request, responseStream, context); } } public partial interface IAppMetadataServiceImpl: global::Plexus.Interop.Apps.Internal.Generated.AppMetadataService.IGetAppMetadataChangedEventStreamImpl, global::Plexus.Interop.Apps.Internal.Generated.AppMetadataService.IGetMetamodelChangedEventStreamImpl { } private sealed partial class AppMetadataServiceBinder { private readonly IAppMetadataServiceImpl _impl; public AppMetadataServiceBinder(IAppMetadataServiceImpl impl) { _impl = impl; } public ClientOptionsBuilder Bind(ClientOptionsBuilder builder) { return builder.WithProvidedService(global::Plexus.Interop.Apps.Internal.Generated.AppMetadataService.Id, Bind); } private ProvidedServiceDefinition.Builder Bind(ProvidedServiceDefinition.Builder builder) { builder = builder.WithServerStreamingMethod(global::Plexus.Interop.Apps.Internal.Generated.AppMetadataService.GetAppMetadataChangedEventStreamMethodId, _impl.GetAppMetadataChangedEventStream); builder = builder.WithServerStreamingMethod(global::Plexus.Interop.Apps.Internal.Generated.AppMetadataService.GetMetamodelChangedEventStreamMethodId, _impl.GetMetamodelChangedEventStream); return builder; } } public sealed partial class AppMetadataServiceImpl: IAppMetadataServiceImpl { private readonly ServerStreamingMethodHandler _getAppMetadataChangedEventStreamHandler; private readonly ServerStreamingMethodHandler _getMetamodelChangedEventStreamHandler; public AppMetadataServiceImpl( ServerStreamingMethodHandler getAppMetadataChangedEventStreamHandler, ServerStreamingMethodHandler getMetamodelChangedEventStreamHandler ) { _getAppMetadataChangedEventStreamHandler = getAppMetadataChangedEventStreamHandler; _getMetamodelChangedEventStreamHandler = getMetamodelChangedEventStreamHandler; } public Task GetAppMetadataChangedEventStream(global::Google.Protobuf.WellKnownTypes.Empty request, IWritableChannel responseStream, MethodCallContext context) { return _getAppMetadataChangedEventStreamHandler(request, responseStream, context); } public Task GetMetamodelChangedEventStream(global::Google.Protobuf.WellKnownTypes.Empty request, IWritableChannel responseStream, MethodCallContext context) { return _getMetamodelChangedEventStreamHandler(request, responseStream, context); } } public sealed partial class AppMetadataServiceImpl: IAppMetadataServiceImpl where T: global::Plexus.Interop.Apps.Internal.Generated.AppMetadataService.IGetAppMetadataChangedEventStreamImpl, global::Plexus.Interop.Apps.Internal.Generated.AppMetadataService.IGetMetamodelChangedEventStreamImpl { private readonly T _impl; public AppMetadataServiceImpl(T impl) { _impl = impl; } public Task GetAppMetadataChangedEventStream(global::Google.Protobuf.WellKnownTypes.Empty request, IWritableChannel responseStream, MethodCallContext context) { return _impl.GetAppMetadataChangedEventStream(request, responseStream, context); } public Task GetMetamodelChangedEventStream(global::Google.Protobuf.WellKnownTypes.Empty request, IWritableChannel responseStream, MethodCallContext context) { return _impl.GetMetamodelChangedEventStream(request, responseStream, context); } } public partial interface IContextLinkageServiceImpl: global::Plexus.Interop.Apps.Internal.Generated.ContextLinkageService.IContextLoadedStreamImpl, global::Plexus.Interop.Apps.Internal.Generated.ContextLinkageService.ICreateContextImpl, global::Plexus.Interop.Apps.Internal.Generated.ContextLinkageService.ICreateContext2Impl, global::Plexus.Interop.Apps.Internal.Generated.ContextLinkageService.IJoinContextImpl, global::Plexus.Interop.Apps.Internal.Generated.ContextLinkageService.IGetContextsImpl, global::Plexus.Interop.Apps.Internal.Generated.ContextLinkageService.IGetLinkedInvocationsImpl, global::Plexus.Interop.Apps.Internal.Generated.ContextLinkageService.IGetAllLinkedInvocationsImpl, global::Plexus.Interop.Apps.Internal.Generated.ContextLinkageService.IAppJoinedContextStreamImpl, global::Plexus.Interop.Apps.Internal.Generated.ContextLinkageService.IRestoreContextsLinkageImpl { } private sealed partial class ContextLinkageServiceBinder { private readonly IContextLinkageServiceImpl _impl; public ContextLinkageServiceBinder(IContextLinkageServiceImpl impl) { _impl = impl; } public ClientOptionsBuilder Bind(ClientOptionsBuilder builder) { return builder.WithProvidedService(global::Plexus.Interop.Apps.Internal.Generated.ContextLinkageService.Id, Bind); } private ProvidedServiceDefinition.Builder Bind(ProvidedServiceDefinition.Builder builder) { builder = builder.WithServerStreamingMethod(global::Plexus.Interop.Apps.Internal.Generated.ContextLinkageService.ContextLoadedStreamMethodId, _impl.ContextLoadedStream); builder = builder.WithUnaryMethod(global::Plexus.Interop.Apps.Internal.Generated.ContextLinkageService.CreateContextMethodId, _impl.CreateContext); builder = builder.WithUnaryMethod(global::Plexus.Interop.Apps.Internal.Generated.ContextLinkageService.CreateContext2MethodId, _impl.CreateContext2); builder = builder.WithUnaryMethod(global::Plexus.Interop.Apps.Internal.Generated.ContextLinkageService.JoinContextMethodId, _impl.JoinContext); builder = builder.WithUnaryMethod(global::Plexus.Interop.Apps.Internal.Generated.ContextLinkageService.GetContextsMethodId, _impl.GetContexts); builder = builder.WithUnaryMethod(global::Plexus.Interop.Apps.Internal.Generated.ContextLinkageService.GetLinkedInvocationsMethodId, _impl.GetLinkedInvocations); builder = builder.WithUnaryMethod(global::Plexus.Interop.Apps.Internal.Generated.ContextLinkageService.GetAllLinkedInvocationsMethodId, _impl.GetAllLinkedInvocations); builder = builder.WithServerStreamingMethod(global::Plexus.Interop.Apps.Internal.Generated.ContextLinkageService.AppJoinedContextStreamMethodId, _impl.AppJoinedContextStream); builder = builder.WithUnaryMethod(global::Plexus.Interop.Apps.Internal.Generated.ContextLinkageService.RestoreContextsLinkageMethodId, _impl.RestoreContextsLinkage); return builder; } } public sealed partial class ContextLinkageServiceImpl: IContextLinkageServiceImpl { private readonly ServerStreamingMethodHandler _contextLoadedStreamHandler; private readonly UnaryMethodHandler _createContextHandler; private readonly UnaryMethodHandler _createContext2Handler; private readonly UnaryMethodHandler _joinContextHandler; private readonly UnaryMethodHandler _getContextsHandler; private readonly UnaryMethodHandler _getLinkedInvocationsHandler; private readonly UnaryMethodHandler _getAllLinkedInvocationsHandler; private readonly ServerStreamingMethodHandler _appJoinedContextStreamHandler; private readonly UnaryMethodHandler _restoreContextsLinkageHandler; public ContextLinkageServiceImpl( ServerStreamingMethodHandler contextLoadedStreamHandler, UnaryMethodHandler createContextHandler, UnaryMethodHandler createContext2Handler, UnaryMethodHandler joinContextHandler, UnaryMethodHandler getContextsHandler, UnaryMethodHandler getLinkedInvocationsHandler, UnaryMethodHandler getAllLinkedInvocationsHandler, ServerStreamingMethodHandler appJoinedContextStreamHandler, UnaryMethodHandler restoreContextsLinkageHandler ) { _contextLoadedStreamHandler = contextLoadedStreamHandler; _createContextHandler = createContextHandler; _createContext2Handler = createContext2Handler; _joinContextHandler = joinContextHandler; _getContextsHandler = getContextsHandler; _getLinkedInvocationsHandler = getLinkedInvocationsHandler; _getAllLinkedInvocationsHandler = getAllLinkedInvocationsHandler; _appJoinedContextStreamHandler = appJoinedContextStreamHandler; _restoreContextsLinkageHandler = restoreContextsLinkageHandler; } public Task ContextLoadedStream(global::Plexus.Interop.Apps.Internal.Generated.Context request, IWritableChannel responseStream, MethodCallContext context) { return _contextLoadedStreamHandler(request, responseStream, context); } public Task CreateContext(global::Google.Protobuf.WellKnownTypes.Empty request, MethodCallContext context) { return _createContextHandler(request, context); } public Task CreateContext2(global::Plexus.Interop.Apps.Internal.Generated.CreateContextRequest request, MethodCallContext context) { return _createContext2Handler(request, context); } public Task JoinContext(global::Plexus.Interop.Apps.Internal.Generated.Context request, MethodCallContext context) { return _joinContextHandler(request, context); } public Task GetContexts(global::Google.Protobuf.WellKnownTypes.Empty request, MethodCallContext context) { return _getContextsHandler(request, context); } public Task GetLinkedInvocations(global::Plexus.Interop.Apps.Internal.Generated.Context request, MethodCallContext context) { return _getLinkedInvocationsHandler(request, context); } public Task GetAllLinkedInvocations(global::Google.Protobuf.WellKnownTypes.Empty request, MethodCallContext context) { return _getAllLinkedInvocationsHandler(request, context); } public Task AppJoinedContextStream(global::Google.Protobuf.WellKnownTypes.Empty request, IWritableChannel responseStream, MethodCallContext context) { return _appJoinedContextStreamHandler(request, responseStream, context); } public Task RestoreContextsLinkage(global::Plexus.Interop.Apps.Internal.Generated.RestoreContextsLinkageRequest request, MethodCallContext context) { return _restoreContextsLinkageHandler(request, context); } } public sealed partial class ContextLinkageServiceImpl: IContextLinkageServiceImpl where T: global::Plexus.Interop.Apps.Internal.Generated.ContextLinkageService.IContextLoadedStreamImpl, global::Plexus.Interop.Apps.Internal.Generated.ContextLinkageService.ICreateContextImpl, global::Plexus.Interop.Apps.Internal.Generated.ContextLinkageService.ICreateContext2Impl, global::Plexus.Interop.Apps.Internal.Generated.ContextLinkageService.IJoinContextImpl, global::Plexus.Interop.Apps.Internal.Generated.ContextLinkageService.IGetContextsImpl, global::Plexus.Interop.Apps.Internal.Generated.ContextLinkageService.IGetLinkedInvocationsImpl, global::Plexus.Interop.Apps.Internal.Generated.ContextLinkageService.IGetAllLinkedInvocationsImpl, global::Plexus.Interop.Apps.Internal.Generated.ContextLinkageService.IAppJoinedContextStreamImpl, global::Plexus.Interop.Apps.Internal.Generated.ContextLinkageService.IRestoreContextsLinkageImpl { private readonly T _impl; public ContextLinkageServiceImpl(T impl) { _impl = impl; } public Task ContextLoadedStream(global::Plexus.Interop.Apps.Internal.Generated.Context request, IWritableChannel responseStream, MethodCallContext context) { return _impl.ContextLoadedStream(request, responseStream, context); } public Task CreateContext(global::Google.Protobuf.WellKnownTypes.Empty request, MethodCallContext context) { return _impl.CreateContext(request, context); } public Task CreateContext2(global::Plexus.Interop.Apps.Internal.Generated.CreateContextRequest request, MethodCallContext context) { return _impl.CreateContext2(request, context); } public Task JoinContext(global::Plexus.Interop.Apps.Internal.Generated.Context request, MethodCallContext context) { return _impl.JoinContext(request, context); } public Task GetContexts(global::Google.Protobuf.WellKnownTypes.Empty request, MethodCallContext context) { return _impl.GetContexts(request, context); } public Task GetLinkedInvocations(global::Plexus.Interop.Apps.Internal.Generated.Context request, MethodCallContext context) { return _impl.GetLinkedInvocations(request, context); } public Task GetAllLinkedInvocations(global::Google.Protobuf.WellKnownTypes.Empty request, MethodCallContext context) { return _impl.GetAllLinkedInvocations(request, context); } public Task AppJoinedContextStream(global::Google.Protobuf.WellKnownTypes.Empty request, IWritableChannel responseStream, MethodCallContext context) { return _impl.AppJoinedContextStream(request, responseStream, context); } public Task RestoreContextsLinkage(global::Plexus.Interop.Apps.Internal.Generated.RestoreContextsLinkageRequest request, MethodCallContext context) { return _impl.RestoreContextsLinkage(request, context); } } public partial interface IAppRegistrationServiceImpl: global::Plexus.Interop.Apps.Internal.Generated.AppRegistrationService.IRequestInstanceIdImpl, global::Plexus.Interop.Apps.Internal.Generated.AppRegistrationService.IRegisterInstanceIdImpl { } private sealed partial class AppRegistrationServiceBinder { private readonly IAppRegistrationServiceImpl _impl; public AppRegistrationServiceBinder(IAppRegistrationServiceImpl impl) { _impl = impl; } public ClientOptionsBuilder Bind(ClientOptionsBuilder builder) { return builder.WithProvidedService(global::Plexus.Interop.Apps.Internal.Generated.AppRegistrationService.Id, Bind); } private ProvidedServiceDefinition.Builder Bind(ProvidedServiceDefinition.Builder builder) { builder = builder.WithUnaryMethod(global::Plexus.Interop.Apps.Internal.Generated.AppRegistrationService.RequestInstanceIdMethodId, _impl.RequestInstanceId); builder = builder.WithUnaryMethod(global::Plexus.Interop.Apps.Internal.Generated.AppRegistrationService.RegisterInstanceIdMethodId, _impl.RegisterInstanceId); return builder; } } public sealed partial class AppRegistrationServiceImpl: IAppRegistrationServiceImpl { private readonly UnaryMethodHandler _requestInstanceIdHandler; private readonly UnaryMethodHandler _registerInstanceIdHandler; public AppRegistrationServiceImpl( UnaryMethodHandler requestInstanceIdHandler, UnaryMethodHandler registerInstanceIdHandler ) { _requestInstanceIdHandler = requestInstanceIdHandler; _registerInstanceIdHandler = registerInstanceIdHandler; } public Task RequestInstanceId(global::Plexus.Interop.Apps.Internal.Generated.RequestInstanceIdRequest request, MethodCallContext context) { return _requestInstanceIdHandler(request, context); } public Task RegisterInstanceId(global::Plexus.Interop.Apps.Internal.Generated.RegisterInstanceIdRequest request, MethodCallContext context) { return _registerInstanceIdHandler(request, context); } } public sealed partial class AppRegistrationServiceImpl: IAppRegistrationServiceImpl where T: global::Plexus.Interop.Apps.Internal.Generated.AppRegistrationService.IRequestInstanceIdImpl, global::Plexus.Interop.Apps.Internal.Generated.AppRegistrationService.IRegisterInstanceIdImpl { private readonly T _impl; public AppRegistrationServiceImpl(T impl) { _impl = impl; } public Task RequestInstanceId(global::Plexus.Interop.Apps.Internal.Generated.RequestInstanceIdRequest request, MethodCallContext context) { return _impl.RequestInstanceId(request, context); } public Task RegisterInstanceId(global::Plexus.Interop.Apps.Internal.Generated.RegisterInstanceIdRequest request, MethodCallContext context) { return _impl.RegisterInstanceId(request, context); } } public partial interface IAppLauncherServiceProxy: global::Plexus.Interop.Apps.Internal.Generated.AppLauncherService.ILaunchProxy, global::Plexus.Interop.Apps.Internal.Generated.AppLauncherService.IAppLaunchedEventStreamProxy { } public sealed partial class AppLauncherServiceProxy: IAppLauncherServiceProxy { public static global::Plexus.Interop.Apps.Internal.Generated.AppLauncherService.Descriptor Descriptor = global::Plexus.Interop.Apps.Internal.Generated.AppLauncherService.DefaultDescriptor; private readonly IClientCallInvoker _callInvoker; public AppLauncherServiceProxy(IClientCallInvoker callInvoker) { _callInvoker = callInvoker; } public IUnaryMethodCall Launch(global::Plexus.Interop.Apps.Internal.Generated.AppLaunchRequest request) { return _callInvoker.Call(Descriptor.LaunchMethod, request); } public IServerStreamingMethodCall AppLaunchedEventStream(global::Google.Protobuf.WellKnownTypes.Empty request) { return _callInvoker.Call(Descriptor.AppLaunchedEventStreamMethod, request); } } public IAppLauncherServiceProxy AppLauncherService { get; private set; } } } #endregion Designer generated code ================================================ FILE: desktop/src/Plexus.Interop.Apps.Manager/Internal/Generated/interop/AppLifecycleService.msg.g.cs ================================================ /** * Copyright 2017-2021 Plexus Interop Deutsche Bank AG * SPDX-License-Identifier: Apache-2.0 * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ // // Generated by the protocol buffer compiler. DO NOT EDIT! // source: interop/app_lifecycle_service.proto // #pragma warning disable 1591, 0612, 3021 #region Designer generated code using pb = global::Google.Protobuf; using pbc = global::Google.Protobuf.Collections; using pbr = global::Google.Protobuf.Reflection; using scg = global::System.Collections.Generic; namespace Plexus.Interop.Apps.Internal.Generated { /// Holder for reflection information generated from interop/app_lifecycle_service.proto internal static partial class AppLifecycleServiceReflection { #region Descriptor /// File descriptor for interop/app_lifecycle_service.proto public static pbr::FileDescriptor Descriptor { get { return descriptor; } } private static pbr::FileDescriptor descriptor; static AppLifecycleServiceReflection() { byte[] descriptorData = global::System.Convert.FromBase64String( string.Concat( "CiNpbnRlcm9wL2FwcF9saWZlY3ljbGVfc2VydmljZS5wcm90bxIHaW50ZXJv", "cBoXaW50ZXJvcC91bmlxdWVfaWQucHJvdG8aHWludGVyb3AvYXBwX2xhdW5j", "aF9tb2RlLnByb3RvGidpbnRlcm9wL2FwcF9jb25uZWN0aW9uX2Rlc2NyaXB0", "b3IucHJvdG8aI2ludGVyb3AvaW52b2NhdGlvbl9kZXNjcmlwdG9yLnByb3Rv", "Ghtnb29nbGUvcHJvdG9idWYvZW1wdHkucHJvdG8aFWludGVyb3Avb3B0aW9u", "cy5wcm90byJ0ChFSZXNvbHZlQXBwUmVxdWVzdBIOCgZhcHBfaWQYASABKAkS", "MAoQYXBwX3Jlc29sdmVfbW9kZRgCIAEoDjIWLmludGVyb3AuQXBwTGF1bmNo", "TW9kZTodktsEGWludGVyb3AuUmVzb2x2ZUFwcFJlcXVlc3QisAEKElJlc29s", "dmVBcHBSZXNwb25zZRIqCg9hcHBfaW5zdGFuY2VfaWQYASABKAsyES5pbnRl", "cm9wLlVuaXF1ZUlkEiwKEWFwcF9jb25uZWN0aW9uX2lkGAIgASgLMhEuaW50", "ZXJvcC5VbmlxdWVJZBIgChhpc19uZXdfaW5zdGFuY2VfbGF1bmNoZWQYAyAB", "KAg6HpLbBBppbnRlcm9wLlJlc29sdmVBcHBSZXNwb25zZSLWAQoRQXBwTGlm", "ZWN5Y2xlRXZlbnQSLwoJY29ubmVjdGVkGAEgASgLMhouaW50ZXJvcC5BcHBD", "b25uZWN0ZWRFdmVudEgAEjUKDGRpc2Nvbm5lY3RlZBgCIAEoCzIdLmludGVy", "b3AuQXBwRGlzY29ubmVjdGVkRXZlbnRIABIxCgVlcnJvchgDIAEoCzIgLmlu", "dGVyb3AuQXBwQ29ubmVjdGlvbkVycm9yRXZlbnRIADodktsEGWludGVyb3Au", "QXBwTGlmZWN5Y2xlRXZlbnRCBwoFZXZlbnQitwEKD0ludm9jYXRpb25FdmVu", "dBI9ChJpbnZvY2F0aW9uX3N0YXJ0ZWQYASABKAsyHy5pbnRlcm9wLkludm9j", "YXRpb25TdGFydGVkRXZlbnRIABI/ChNpbnZvY2F0aW9uX2ZpbmlzaGVkGAIg", "ASgLMiAuaW50ZXJvcC5JbnZvY2F0aW9uRmluaXNoZWRFdmVudEgAOhuS2wQX", "aW50ZXJvcC5JbnZvY2F0aW9uRXZlbnRCBwoFZXZlbnQicwoRQXBwQ29ubmVj", "dGVkRXZlbnQSPwoVY29ubmVjdGlvbl9kZXNjcmlwdG9yGAEgASgLMiAuaW50", "ZXJvcC5BcHBDb25uZWN0aW9uRGVzY3JpcHRvcjodktsEGWludGVyb3AuQXBw", "Q29ubmVjdGVkRXZlbnQieQoUQXBwRGlzY29ubmVjdGVkRXZlbnQSPwoVY29u", "bmVjdGlvbl9kZXNjcmlwdG9yGAEgASgLMiAuaW50ZXJvcC5BcHBDb25uZWN0", "aW9uRGVzY3JpcHRvcjogktsEHGludGVyb3AuQXBwRGlzY29ubmVjdGVkRXZl", "bnQifwoXQXBwQ29ubmVjdGlvbkVycm9yRXZlbnQSPwoVY29ubmVjdGlvbl9k", "ZXNjcmlwdG9yGAEgASgLMiAuaW50ZXJvcC5BcHBDb25uZWN0aW9uRGVzY3Jp", "cHRvcjojktsEH2ludGVyb3AuQXBwQ29ubmVjdGlvbkVycm9yRXZlbnQiegoW", "SW52b2NhdGlvblN0YXJ0ZWRFdmVudBI8ChVpbnZvY2F0aW9uX2Rlc2NyaXB0", "b3IYASABKAsyHS5pbnRlcm9wLkludm9jYXRpb25EZXNjcmlwdG9yOiKS2wQe", "aW50ZXJvcC5JbnZvY2F0aW9uU3RhcnRlZEV2ZW50IrwBChdJbnZvY2F0aW9u", "RmluaXNoZWRFdmVudBI8ChVpbnZvY2F0aW9uX2Rlc2NyaXB0b3IYASABKAsy", "HS5pbnRlcm9wLkludm9jYXRpb25EZXNjcmlwdG9yEikKBnJlc3VsdBgCIAEo", "DjIZLmludGVyb3AuSW52b2NhdGlvblJlc3VsdBITCgtkdXJhdGlvbl9tcxgD", "IAEoAzojktsEH2ludGVyb3AuSW52b2NhdGlvbkZpbmlzaGVkRXZlbnQiqAEK", "FUdldENvbm5lY3Rpb25zUmVxdWVzdBIWCg5hcHBsaWNhdGlvbl9pZBgBIAEo", "CRIqCg9hcHBfaW5zdGFuY2VfaWQYAiABKAsyES5pbnRlcm9wLlVuaXF1ZUlk", "EigKDWNvbm5lY3Rpb25faWQYAyABKAsyES5pbnRlcm9wLlVuaXF1ZUlkOiGS", "2wQdaW50ZXJvcC5HZXRDb25uZWN0aW9uc1JlcXVlc3QicwoWR2V0Q29ubmVj", "dGlvbnNSZXNwb25zZRI1Cgtjb25uZWN0aW9ucxgBIAMoCzIgLmludGVyb3Au", "QXBwQ29ubmVjdGlvbkRlc2NyaXB0b3I6IpLbBB5pbnRlcm9wLkdldENvbm5l", "Y3Rpb25zUmVzcG9uc2Ui8QEKE0dldENvbm5lY3Rpb25zRXZlbnQSNQoLY29u", "bmVjdGlvbnMYASADKAsyIC5pbnRlcm9wLkFwcENvbm5lY3Rpb25EZXNjcmlw", "dG9yEjoKDm5ld19jb25uZWN0aW9uGAIgASgLMiAuaW50ZXJvcC5BcHBDb25u", "ZWN0aW9uRGVzY3JpcHRvckgAEj0KEWNsb3NlZF9jb25uZWN0aW9uGAMgASgL", "MiAuaW50ZXJvcC5BcHBDb25uZWN0aW9uRGVzY3JpcHRvckgAOh+S2wQbaW50", "ZXJvcC5HZXRDb25uZWN0aW9uc0V2ZW50QgcKBWV2ZW50KjsKEEludm9jYXRp", "b25SZXN1bHQSDQoJU3VjY2VlZGVkEAASDAoIQ2FuY2VsZWQQARIKCgZGYWls", "ZWQQAjLJAwoTQXBwTGlmZWN5Y2xlU2VydmljZRJFCgpSZXNvbHZlQXBwEhou", "aW50ZXJvcC5SZXNvbHZlQXBwUmVxdWVzdBobLmludGVyb3AuUmVzb2x2ZUFw", "cFJlc3BvbnNlEk8KF0dldExpZmVjeWNsZUV2ZW50U3RyZWFtEhYuZ29vZ2xl", "LnByb3RvYnVmLkVtcHR5GhouaW50ZXJvcC5BcHBMaWZlY3ljbGVFdmVudDAB", "Ek4KGEdldEludm9jYXRpb25FdmVudFN0cmVhbRIWLmdvb2dsZS5wcm90b2J1", "Zi5FbXB0eRoYLmludGVyb3AuSW52b2NhdGlvbkV2ZW50MAESUQoOR2V0Q29u", "bmVjdGlvbnMSHi5pbnRlcm9wLkdldENvbm5lY3Rpb25zUmVxdWVzdBofLmlu", "dGVyb3AuR2V0Q29ubmVjdGlvbnNSZXNwb25zZRJWChRHZXRDb25uZWN0aW9u", "c1N0cmVhbRIeLmludGVyb3AuR2V0Q29ubmVjdGlvbnNSZXF1ZXN0GhwuaW50", "ZXJvcC5HZXRDb25uZWN0aW9uc0V2ZW50MAEaH5LbBBtpbnRlcm9wLkFwcExp", "ZmVjeWNsZVNlcnZpY2VCKaoCJlBsZXh1cy5JbnRlcm9wLkFwcHMuSW50ZXJu", "YWwuR2VuZXJhdGVkYgZwcm90bzM=")); descriptor = pbr::FileDescriptor.FromGeneratedCode(descriptorData, new pbr::FileDescriptor[] { global::Plexus.Interop.Apps.Internal.Generated.UniqueIdReflection.Descriptor, global::Plexus.Interop.Apps.Internal.Generated.AppLaunchModeReflection.Descriptor, global::Plexus.Interop.Apps.Internal.Generated.AppConnectionDescriptorReflection.Descriptor, global::Plexus.Interop.Apps.Internal.Generated.InvocationDescriptorReflection.Descriptor, global::Google.Protobuf.WellKnownTypes.EmptyReflection.Descriptor, global::Plexus.Interop.Apps.Internal.Generated.OptionsReflection.Descriptor, }, new pbr::GeneratedClrTypeInfo(new[] {typeof(global::Plexus.Interop.Apps.Internal.Generated.InvocationResult), }, null, new pbr::GeneratedClrTypeInfo[] { new pbr::GeneratedClrTypeInfo(typeof(global::Plexus.Interop.Apps.Internal.Generated.ResolveAppRequest), global::Plexus.Interop.Apps.Internal.Generated.ResolveAppRequest.Parser, new[]{ "AppId", "AppResolveMode" }, null, null, null, null), new pbr::GeneratedClrTypeInfo(typeof(global::Plexus.Interop.Apps.Internal.Generated.ResolveAppResponse), global::Plexus.Interop.Apps.Internal.Generated.ResolveAppResponse.Parser, new[]{ "AppInstanceId", "AppConnectionId", "IsNewInstanceLaunched" }, null, null, null, null), new pbr::GeneratedClrTypeInfo(typeof(global::Plexus.Interop.Apps.Internal.Generated.AppLifecycleEvent), global::Plexus.Interop.Apps.Internal.Generated.AppLifecycleEvent.Parser, new[]{ "Connected", "Disconnected", "Error" }, new[]{ "Event" }, null, null, null), new pbr::GeneratedClrTypeInfo(typeof(global::Plexus.Interop.Apps.Internal.Generated.InvocationEvent), global::Plexus.Interop.Apps.Internal.Generated.InvocationEvent.Parser, new[]{ "InvocationStarted", "InvocationFinished" }, new[]{ "Event" }, null, null, null), new pbr::GeneratedClrTypeInfo(typeof(global::Plexus.Interop.Apps.Internal.Generated.AppConnectedEvent), global::Plexus.Interop.Apps.Internal.Generated.AppConnectedEvent.Parser, new[]{ "ConnectionDescriptor" }, null, null, null, null), new pbr::GeneratedClrTypeInfo(typeof(global::Plexus.Interop.Apps.Internal.Generated.AppDisconnectedEvent), global::Plexus.Interop.Apps.Internal.Generated.AppDisconnectedEvent.Parser, new[]{ "ConnectionDescriptor" }, null, null, null, null), new pbr::GeneratedClrTypeInfo(typeof(global::Plexus.Interop.Apps.Internal.Generated.AppConnectionErrorEvent), global::Plexus.Interop.Apps.Internal.Generated.AppConnectionErrorEvent.Parser, new[]{ "ConnectionDescriptor" }, null, null, null, null), new pbr::GeneratedClrTypeInfo(typeof(global::Plexus.Interop.Apps.Internal.Generated.InvocationStartedEvent), global::Plexus.Interop.Apps.Internal.Generated.InvocationStartedEvent.Parser, new[]{ "InvocationDescriptor" }, null, null, null, null), new pbr::GeneratedClrTypeInfo(typeof(global::Plexus.Interop.Apps.Internal.Generated.InvocationFinishedEvent), global::Plexus.Interop.Apps.Internal.Generated.InvocationFinishedEvent.Parser, new[]{ "InvocationDescriptor", "Result", "DurationMs" }, null, null, null, null), new pbr::GeneratedClrTypeInfo(typeof(global::Plexus.Interop.Apps.Internal.Generated.GetConnectionsRequest), global::Plexus.Interop.Apps.Internal.Generated.GetConnectionsRequest.Parser, new[]{ "ApplicationId", "AppInstanceId", "ConnectionId" }, null, null, null, null), new pbr::GeneratedClrTypeInfo(typeof(global::Plexus.Interop.Apps.Internal.Generated.GetConnectionsResponse), global::Plexus.Interop.Apps.Internal.Generated.GetConnectionsResponse.Parser, new[]{ "Connections" }, null, null, null, null), new pbr::GeneratedClrTypeInfo(typeof(global::Plexus.Interop.Apps.Internal.Generated.GetConnectionsEvent), global::Plexus.Interop.Apps.Internal.Generated.GetConnectionsEvent.Parser, new[]{ "Connections", "NewConnection", "ClosedConnection" }, new[]{ "Event" }, null, null, null) })); } #endregion } #region Enums internal enum InvocationResult { [pbr::OriginalName("Succeeded")] Succeeded = 0, [pbr::OriginalName("Canceled")] Canceled = 1, [pbr::OriginalName("Failed")] Failed = 2, } #endregion #region Messages internal sealed partial class ResolveAppRequest : pb::IMessage #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE , pb::IBufferMessage #endif { private static readonly pb::MessageParser _parser = new pb::MessageParser(() => new ResolveAppRequest()); private pb::UnknownFieldSet _unknownFields; [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public static pb::MessageParser Parser { get { return _parser; } } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public static pbr::MessageDescriptor Descriptor { get { return global::Plexus.Interop.Apps.Internal.Generated.AppLifecycleServiceReflection.Descriptor.MessageTypes[0]; } } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] pbr::MessageDescriptor pb::IMessage.Descriptor { get { return Descriptor; } } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public ResolveAppRequest() { OnConstruction(); } partial void OnConstruction(); [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public ResolveAppRequest(ResolveAppRequest other) : this() { appId_ = other.appId_; appResolveMode_ = other.appResolveMode_; _unknownFields = pb::UnknownFieldSet.Clone(other._unknownFields); } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public ResolveAppRequest Clone() { return new ResolveAppRequest(this); } /// Field number for the "app_id" field. public const int AppIdFieldNumber = 1; private string appId_ = ""; [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public string AppId { get { return appId_; } set { appId_ = pb::ProtoPreconditions.CheckNotNull(value, "value"); } } /// Field number for the "app_resolve_mode" field. public const int AppResolveModeFieldNumber = 2; private global::Plexus.Interop.Apps.Internal.Generated.AppLaunchMode appResolveMode_ = global::Plexus.Interop.Apps.Internal.Generated.AppLaunchMode.SingleInstance; [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public global::Plexus.Interop.Apps.Internal.Generated.AppLaunchMode AppResolveMode { get { return appResolveMode_; } set { appResolveMode_ = value; } } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public override bool Equals(object other) { return Equals(other as ResolveAppRequest); } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public bool Equals(ResolveAppRequest other) { if (ReferenceEquals(other, null)) { return false; } if (ReferenceEquals(other, this)) { return true; } if (AppId != other.AppId) return false; if (AppResolveMode != other.AppResolveMode) return false; return Equals(_unknownFields, other._unknownFields); } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public override int GetHashCode() { int hash = 1; if (AppId.Length != 0) hash ^= AppId.GetHashCode(); if (AppResolveMode != global::Plexus.Interop.Apps.Internal.Generated.AppLaunchMode.SingleInstance) hash ^= AppResolveMode.GetHashCode(); if (_unknownFields != null) { hash ^= _unknownFields.GetHashCode(); } return hash; } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public override string ToString() { return pb::JsonFormatter.ToDiagnosticString(this); } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public void WriteTo(pb::CodedOutputStream output) { #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE output.WriteRawMessage(this); #else if (AppId.Length != 0) { output.WriteRawTag(10); output.WriteString(AppId); } if (AppResolveMode != global::Plexus.Interop.Apps.Internal.Generated.AppLaunchMode.SingleInstance) { output.WriteRawTag(16); output.WriteEnum((int) AppResolveMode); } if (_unknownFields != null) { _unknownFields.WriteTo(output); } #endif } #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] void pb::IBufferMessage.InternalWriteTo(ref pb::WriteContext output) { if (AppId.Length != 0) { output.WriteRawTag(10); output.WriteString(AppId); } if (AppResolveMode != global::Plexus.Interop.Apps.Internal.Generated.AppLaunchMode.SingleInstance) { output.WriteRawTag(16); output.WriteEnum((int) AppResolveMode); } if (_unknownFields != null) { _unknownFields.WriteTo(ref output); } } #endif [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public int CalculateSize() { int size = 0; if (AppId.Length != 0) { size += 1 + pb::CodedOutputStream.ComputeStringSize(AppId); } if (AppResolveMode != global::Plexus.Interop.Apps.Internal.Generated.AppLaunchMode.SingleInstance) { size += 1 + pb::CodedOutputStream.ComputeEnumSize((int) AppResolveMode); } if (_unknownFields != null) { size += _unknownFields.CalculateSize(); } return size; } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public void MergeFrom(ResolveAppRequest other) { if (other == null) { return; } if (other.AppId.Length != 0) { AppId = other.AppId; } if (other.AppResolveMode != global::Plexus.Interop.Apps.Internal.Generated.AppLaunchMode.SingleInstance) { AppResolveMode = other.AppResolveMode; } _unknownFields = pb::UnknownFieldSet.MergeFrom(_unknownFields, other._unknownFields); } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public void MergeFrom(pb::CodedInputStream input) { #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE input.ReadRawMessage(this); #else uint tag; while ((tag = input.ReadTag()) != 0) { switch(tag) { default: _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input); break; case 10: { AppId = input.ReadString(); break; } case 16: { AppResolveMode = (global::Plexus.Interop.Apps.Internal.Generated.AppLaunchMode) input.ReadEnum(); break; } } } #endif } #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] void pb::IBufferMessage.InternalMergeFrom(ref pb::ParseContext input) { uint tag; while ((tag = input.ReadTag()) != 0) { switch(tag) { default: _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, ref input); break; case 10: { AppId = input.ReadString(); break; } case 16: { AppResolveMode = (global::Plexus.Interop.Apps.Internal.Generated.AppLaunchMode) input.ReadEnum(); break; } } } } #endif } internal sealed partial class ResolveAppResponse : pb::IMessage #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE , pb::IBufferMessage #endif { private static readonly pb::MessageParser _parser = new pb::MessageParser(() => new ResolveAppResponse()); private pb::UnknownFieldSet _unknownFields; [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public static pb::MessageParser Parser { get { return _parser; } } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public static pbr::MessageDescriptor Descriptor { get { return global::Plexus.Interop.Apps.Internal.Generated.AppLifecycleServiceReflection.Descriptor.MessageTypes[1]; } } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] pbr::MessageDescriptor pb::IMessage.Descriptor { get { return Descriptor; } } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public ResolveAppResponse() { OnConstruction(); } partial void OnConstruction(); [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public ResolveAppResponse(ResolveAppResponse other) : this() { appInstanceId_ = other.appInstanceId_ != null ? other.appInstanceId_.Clone() : null; appConnectionId_ = other.appConnectionId_ != null ? other.appConnectionId_.Clone() : null; isNewInstanceLaunched_ = other.isNewInstanceLaunched_; _unknownFields = pb::UnknownFieldSet.Clone(other._unknownFields); } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public ResolveAppResponse Clone() { return new ResolveAppResponse(this); } /// Field number for the "app_instance_id" field. public const int AppInstanceIdFieldNumber = 1; private global::Plexus.Interop.Apps.Internal.Generated.UniqueId appInstanceId_; [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public global::Plexus.Interop.Apps.Internal.Generated.UniqueId AppInstanceId { get { return appInstanceId_; } set { appInstanceId_ = value; } } /// Field number for the "app_connection_id" field. public const int AppConnectionIdFieldNumber = 2; private global::Plexus.Interop.Apps.Internal.Generated.UniqueId appConnectionId_; [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public global::Plexus.Interop.Apps.Internal.Generated.UniqueId AppConnectionId { get { return appConnectionId_; } set { appConnectionId_ = value; } } /// Field number for the "is_new_instance_launched" field. public const int IsNewInstanceLaunchedFieldNumber = 3; private bool isNewInstanceLaunched_; [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public bool IsNewInstanceLaunched { get { return isNewInstanceLaunched_; } set { isNewInstanceLaunched_ = value; } } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public override bool Equals(object other) { return Equals(other as ResolveAppResponse); } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public bool Equals(ResolveAppResponse other) { if (ReferenceEquals(other, null)) { return false; } if (ReferenceEquals(other, this)) { return true; } if (!object.Equals(AppInstanceId, other.AppInstanceId)) return false; if (!object.Equals(AppConnectionId, other.AppConnectionId)) return false; if (IsNewInstanceLaunched != other.IsNewInstanceLaunched) return false; return Equals(_unknownFields, other._unknownFields); } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public override int GetHashCode() { int hash = 1; if (appInstanceId_ != null) hash ^= AppInstanceId.GetHashCode(); if (appConnectionId_ != null) hash ^= AppConnectionId.GetHashCode(); if (IsNewInstanceLaunched != false) hash ^= IsNewInstanceLaunched.GetHashCode(); if (_unknownFields != null) { hash ^= _unknownFields.GetHashCode(); } return hash; } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public override string ToString() { return pb::JsonFormatter.ToDiagnosticString(this); } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public void WriteTo(pb::CodedOutputStream output) { #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE output.WriteRawMessage(this); #else if (appInstanceId_ != null) { output.WriteRawTag(10); output.WriteMessage(AppInstanceId); } if (appConnectionId_ != null) { output.WriteRawTag(18); output.WriteMessage(AppConnectionId); } if (IsNewInstanceLaunched != false) { output.WriteRawTag(24); output.WriteBool(IsNewInstanceLaunched); } if (_unknownFields != null) { _unknownFields.WriteTo(output); } #endif } #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] void pb::IBufferMessage.InternalWriteTo(ref pb::WriteContext output) { if (appInstanceId_ != null) { output.WriteRawTag(10); output.WriteMessage(AppInstanceId); } if (appConnectionId_ != null) { output.WriteRawTag(18); output.WriteMessage(AppConnectionId); } if (IsNewInstanceLaunched != false) { output.WriteRawTag(24); output.WriteBool(IsNewInstanceLaunched); } if (_unknownFields != null) { _unknownFields.WriteTo(ref output); } } #endif [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public int CalculateSize() { int size = 0; if (appInstanceId_ != null) { size += 1 + pb::CodedOutputStream.ComputeMessageSize(AppInstanceId); } if (appConnectionId_ != null) { size += 1 + pb::CodedOutputStream.ComputeMessageSize(AppConnectionId); } if (IsNewInstanceLaunched != false) { size += 1 + 1; } if (_unknownFields != null) { size += _unknownFields.CalculateSize(); } return size; } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public void MergeFrom(ResolveAppResponse other) { if (other == null) { return; } if (other.appInstanceId_ != null) { if (appInstanceId_ == null) { AppInstanceId = new global::Plexus.Interop.Apps.Internal.Generated.UniqueId(); } AppInstanceId.MergeFrom(other.AppInstanceId); } if (other.appConnectionId_ != null) { if (appConnectionId_ == null) { AppConnectionId = new global::Plexus.Interop.Apps.Internal.Generated.UniqueId(); } AppConnectionId.MergeFrom(other.AppConnectionId); } if (other.IsNewInstanceLaunched != false) { IsNewInstanceLaunched = other.IsNewInstanceLaunched; } _unknownFields = pb::UnknownFieldSet.MergeFrom(_unknownFields, other._unknownFields); } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public void MergeFrom(pb::CodedInputStream input) { #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE input.ReadRawMessage(this); #else uint tag; while ((tag = input.ReadTag()) != 0) { switch(tag) { default: _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input); break; case 10: { if (appInstanceId_ == null) { AppInstanceId = new global::Plexus.Interop.Apps.Internal.Generated.UniqueId(); } input.ReadMessage(AppInstanceId); break; } case 18: { if (appConnectionId_ == null) { AppConnectionId = new global::Plexus.Interop.Apps.Internal.Generated.UniqueId(); } input.ReadMessage(AppConnectionId); break; } case 24: { IsNewInstanceLaunched = input.ReadBool(); break; } } } #endif } #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] void pb::IBufferMessage.InternalMergeFrom(ref pb::ParseContext input) { uint tag; while ((tag = input.ReadTag()) != 0) { switch(tag) { default: _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, ref input); break; case 10: { if (appInstanceId_ == null) { AppInstanceId = new global::Plexus.Interop.Apps.Internal.Generated.UniqueId(); } input.ReadMessage(AppInstanceId); break; } case 18: { if (appConnectionId_ == null) { AppConnectionId = new global::Plexus.Interop.Apps.Internal.Generated.UniqueId(); } input.ReadMessage(AppConnectionId); break; } case 24: { IsNewInstanceLaunched = input.ReadBool(); break; } } } } #endif } internal sealed partial class AppLifecycleEvent : pb::IMessage #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE , pb::IBufferMessage #endif { private static readonly pb::MessageParser _parser = new pb::MessageParser(() => new AppLifecycleEvent()); private pb::UnknownFieldSet _unknownFields; [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public static pb::MessageParser Parser { get { return _parser; } } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public static pbr::MessageDescriptor Descriptor { get { return global::Plexus.Interop.Apps.Internal.Generated.AppLifecycleServiceReflection.Descriptor.MessageTypes[2]; } } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] pbr::MessageDescriptor pb::IMessage.Descriptor { get { return Descriptor; } } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public AppLifecycleEvent() { OnConstruction(); } partial void OnConstruction(); [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public AppLifecycleEvent(AppLifecycleEvent other) : this() { switch (other.EventCase) { case EventOneofCase.Connected: Connected = other.Connected.Clone(); break; case EventOneofCase.Disconnected: Disconnected = other.Disconnected.Clone(); break; case EventOneofCase.Error: Error = other.Error.Clone(); break; } _unknownFields = pb::UnknownFieldSet.Clone(other._unknownFields); } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public AppLifecycleEvent Clone() { return new AppLifecycleEvent(this); } /// Field number for the "connected" field. public const int ConnectedFieldNumber = 1; [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public global::Plexus.Interop.Apps.Internal.Generated.AppConnectedEvent Connected { get { return eventCase_ == EventOneofCase.Connected ? (global::Plexus.Interop.Apps.Internal.Generated.AppConnectedEvent) event_ : null; } set { event_ = value; eventCase_ = value == null ? EventOneofCase.None : EventOneofCase.Connected; } } /// Field number for the "disconnected" field. public const int DisconnectedFieldNumber = 2; [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public global::Plexus.Interop.Apps.Internal.Generated.AppDisconnectedEvent Disconnected { get { return eventCase_ == EventOneofCase.Disconnected ? (global::Plexus.Interop.Apps.Internal.Generated.AppDisconnectedEvent) event_ : null; } set { event_ = value; eventCase_ = value == null ? EventOneofCase.None : EventOneofCase.Disconnected; } } /// Field number for the "error" field. public const int ErrorFieldNumber = 3; [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public global::Plexus.Interop.Apps.Internal.Generated.AppConnectionErrorEvent Error { get { return eventCase_ == EventOneofCase.Error ? (global::Plexus.Interop.Apps.Internal.Generated.AppConnectionErrorEvent) event_ : null; } set { event_ = value; eventCase_ = value == null ? EventOneofCase.None : EventOneofCase.Error; } } private object event_; /// Enum of possible cases for the "event" oneof. public enum EventOneofCase { None = 0, Connected = 1, Disconnected = 2, Error = 3, } private EventOneofCase eventCase_ = EventOneofCase.None; [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public EventOneofCase EventCase { get { return eventCase_; } } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public void ClearEvent() { eventCase_ = EventOneofCase.None; event_ = null; } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public override bool Equals(object other) { return Equals(other as AppLifecycleEvent); } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public bool Equals(AppLifecycleEvent other) { if (ReferenceEquals(other, null)) { return false; } if (ReferenceEquals(other, this)) { return true; } if (!object.Equals(Connected, other.Connected)) return false; if (!object.Equals(Disconnected, other.Disconnected)) return false; if (!object.Equals(Error, other.Error)) return false; if (EventCase != other.EventCase) return false; return Equals(_unknownFields, other._unknownFields); } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public override int GetHashCode() { int hash = 1; if (eventCase_ == EventOneofCase.Connected) hash ^= Connected.GetHashCode(); if (eventCase_ == EventOneofCase.Disconnected) hash ^= Disconnected.GetHashCode(); if (eventCase_ == EventOneofCase.Error) hash ^= Error.GetHashCode(); hash ^= (int) eventCase_; if (_unknownFields != null) { hash ^= _unknownFields.GetHashCode(); } return hash; } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public override string ToString() { return pb::JsonFormatter.ToDiagnosticString(this); } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public void WriteTo(pb::CodedOutputStream output) { #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE output.WriteRawMessage(this); #else if (eventCase_ == EventOneofCase.Connected) { output.WriteRawTag(10); output.WriteMessage(Connected); } if (eventCase_ == EventOneofCase.Disconnected) { output.WriteRawTag(18); output.WriteMessage(Disconnected); } if (eventCase_ == EventOneofCase.Error) { output.WriteRawTag(26); output.WriteMessage(Error); } if (_unknownFields != null) { _unknownFields.WriteTo(output); } #endif } #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] void pb::IBufferMessage.InternalWriteTo(ref pb::WriteContext output) { if (eventCase_ == EventOneofCase.Connected) { output.WriteRawTag(10); output.WriteMessage(Connected); } if (eventCase_ == EventOneofCase.Disconnected) { output.WriteRawTag(18); output.WriteMessage(Disconnected); } if (eventCase_ == EventOneofCase.Error) { output.WriteRawTag(26); output.WriteMessage(Error); } if (_unknownFields != null) { _unknownFields.WriteTo(ref output); } } #endif [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public int CalculateSize() { int size = 0; if (eventCase_ == EventOneofCase.Connected) { size += 1 + pb::CodedOutputStream.ComputeMessageSize(Connected); } if (eventCase_ == EventOneofCase.Disconnected) { size += 1 + pb::CodedOutputStream.ComputeMessageSize(Disconnected); } if (eventCase_ == EventOneofCase.Error) { size += 1 + pb::CodedOutputStream.ComputeMessageSize(Error); } if (_unknownFields != null) { size += _unknownFields.CalculateSize(); } return size; } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public void MergeFrom(AppLifecycleEvent other) { if (other == null) { return; } switch (other.EventCase) { case EventOneofCase.Connected: if (Connected == null) { Connected = new global::Plexus.Interop.Apps.Internal.Generated.AppConnectedEvent(); } Connected.MergeFrom(other.Connected); break; case EventOneofCase.Disconnected: if (Disconnected == null) { Disconnected = new global::Plexus.Interop.Apps.Internal.Generated.AppDisconnectedEvent(); } Disconnected.MergeFrom(other.Disconnected); break; case EventOneofCase.Error: if (Error == null) { Error = new global::Plexus.Interop.Apps.Internal.Generated.AppConnectionErrorEvent(); } Error.MergeFrom(other.Error); break; } _unknownFields = pb::UnknownFieldSet.MergeFrom(_unknownFields, other._unknownFields); } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public void MergeFrom(pb::CodedInputStream input) { #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE input.ReadRawMessage(this); #else uint tag; while ((tag = input.ReadTag()) != 0) { switch(tag) { default: _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input); break; case 10: { global::Plexus.Interop.Apps.Internal.Generated.AppConnectedEvent subBuilder = new global::Plexus.Interop.Apps.Internal.Generated.AppConnectedEvent(); if (eventCase_ == EventOneofCase.Connected) { subBuilder.MergeFrom(Connected); } input.ReadMessage(subBuilder); Connected = subBuilder; break; } case 18: { global::Plexus.Interop.Apps.Internal.Generated.AppDisconnectedEvent subBuilder = new global::Plexus.Interop.Apps.Internal.Generated.AppDisconnectedEvent(); if (eventCase_ == EventOneofCase.Disconnected) { subBuilder.MergeFrom(Disconnected); } input.ReadMessage(subBuilder); Disconnected = subBuilder; break; } case 26: { global::Plexus.Interop.Apps.Internal.Generated.AppConnectionErrorEvent subBuilder = new global::Plexus.Interop.Apps.Internal.Generated.AppConnectionErrorEvent(); if (eventCase_ == EventOneofCase.Error) { subBuilder.MergeFrom(Error); } input.ReadMessage(subBuilder); Error = subBuilder; break; } } } #endif } #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] void pb::IBufferMessage.InternalMergeFrom(ref pb::ParseContext input) { uint tag; while ((tag = input.ReadTag()) != 0) { switch(tag) { default: _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, ref input); break; case 10: { global::Plexus.Interop.Apps.Internal.Generated.AppConnectedEvent subBuilder = new global::Plexus.Interop.Apps.Internal.Generated.AppConnectedEvent(); if (eventCase_ == EventOneofCase.Connected) { subBuilder.MergeFrom(Connected); } input.ReadMessage(subBuilder); Connected = subBuilder; break; } case 18: { global::Plexus.Interop.Apps.Internal.Generated.AppDisconnectedEvent subBuilder = new global::Plexus.Interop.Apps.Internal.Generated.AppDisconnectedEvent(); if (eventCase_ == EventOneofCase.Disconnected) { subBuilder.MergeFrom(Disconnected); } input.ReadMessage(subBuilder); Disconnected = subBuilder; break; } case 26: { global::Plexus.Interop.Apps.Internal.Generated.AppConnectionErrorEvent subBuilder = new global::Plexus.Interop.Apps.Internal.Generated.AppConnectionErrorEvent(); if (eventCase_ == EventOneofCase.Error) { subBuilder.MergeFrom(Error); } input.ReadMessage(subBuilder); Error = subBuilder; break; } } } } #endif } internal sealed partial class InvocationEvent : pb::IMessage #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE , pb::IBufferMessage #endif { private static readonly pb::MessageParser _parser = new pb::MessageParser(() => new InvocationEvent()); private pb::UnknownFieldSet _unknownFields; [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public static pb::MessageParser Parser { get { return _parser; } } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public static pbr::MessageDescriptor Descriptor { get { return global::Plexus.Interop.Apps.Internal.Generated.AppLifecycleServiceReflection.Descriptor.MessageTypes[3]; } } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] pbr::MessageDescriptor pb::IMessage.Descriptor { get { return Descriptor; } } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public InvocationEvent() { OnConstruction(); } partial void OnConstruction(); [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public InvocationEvent(InvocationEvent other) : this() { switch (other.EventCase) { case EventOneofCase.InvocationStarted: InvocationStarted = other.InvocationStarted.Clone(); break; case EventOneofCase.InvocationFinished: InvocationFinished = other.InvocationFinished.Clone(); break; } _unknownFields = pb::UnknownFieldSet.Clone(other._unknownFields); } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public InvocationEvent Clone() { return new InvocationEvent(this); } /// Field number for the "invocation_started" field. public const int InvocationStartedFieldNumber = 1; [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public global::Plexus.Interop.Apps.Internal.Generated.InvocationStartedEvent InvocationStarted { get { return eventCase_ == EventOneofCase.InvocationStarted ? (global::Plexus.Interop.Apps.Internal.Generated.InvocationStartedEvent) event_ : null; } set { event_ = value; eventCase_ = value == null ? EventOneofCase.None : EventOneofCase.InvocationStarted; } } /// Field number for the "invocation_finished" field. public const int InvocationFinishedFieldNumber = 2; [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public global::Plexus.Interop.Apps.Internal.Generated.InvocationFinishedEvent InvocationFinished { get { return eventCase_ == EventOneofCase.InvocationFinished ? (global::Plexus.Interop.Apps.Internal.Generated.InvocationFinishedEvent) event_ : null; } set { event_ = value; eventCase_ = value == null ? EventOneofCase.None : EventOneofCase.InvocationFinished; } } private object event_; /// Enum of possible cases for the "event" oneof. public enum EventOneofCase { None = 0, InvocationStarted = 1, InvocationFinished = 2, } private EventOneofCase eventCase_ = EventOneofCase.None; [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public EventOneofCase EventCase { get { return eventCase_; } } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public void ClearEvent() { eventCase_ = EventOneofCase.None; event_ = null; } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public override bool Equals(object other) { return Equals(other as InvocationEvent); } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public bool Equals(InvocationEvent other) { if (ReferenceEquals(other, null)) { return false; } if (ReferenceEquals(other, this)) { return true; } if (!object.Equals(InvocationStarted, other.InvocationStarted)) return false; if (!object.Equals(InvocationFinished, other.InvocationFinished)) return false; if (EventCase != other.EventCase) return false; return Equals(_unknownFields, other._unknownFields); } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public override int GetHashCode() { int hash = 1; if (eventCase_ == EventOneofCase.InvocationStarted) hash ^= InvocationStarted.GetHashCode(); if (eventCase_ == EventOneofCase.InvocationFinished) hash ^= InvocationFinished.GetHashCode(); hash ^= (int) eventCase_; if (_unknownFields != null) { hash ^= _unknownFields.GetHashCode(); } return hash; } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public override string ToString() { return pb::JsonFormatter.ToDiagnosticString(this); } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public void WriteTo(pb::CodedOutputStream output) { #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE output.WriteRawMessage(this); #else if (eventCase_ == EventOneofCase.InvocationStarted) { output.WriteRawTag(10); output.WriteMessage(InvocationStarted); } if (eventCase_ == EventOneofCase.InvocationFinished) { output.WriteRawTag(18); output.WriteMessage(InvocationFinished); } if (_unknownFields != null) { _unknownFields.WriteTo(output); } #endif } #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] void pb::IBufferMessage.InternalWriteTo(ref pb::WriteContext output) { if (eventCase_ == EventOneofCase.InvocationStarted) { output.WriteRawTag(10); output.WriteMessage(InvocationStarted); } if (eventCase_ == EventOneofCase.InvocationFinished) { output.WriteRawTag(18); output.WriteMessage(InvocationFinished); } if (_unknownFields != null) { _unknownFields.WriteTo(ref output); } } #endif [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public int CalculateSize() { int size = 0; if (eventCase_ == EventOneofCase.InvocationStarted) { size += 1 + pb::CodedOutputStream.ComputeMessageSize(InvocationStarted); } if (eventCase_ == EventOneofCase.InvocationFinished) { size += 1 + pb::CodedOutputStream.ComputeMessageSize(InvocationFinished); } if (_unknownFields != null) { size += _unknownFields.CalculateSize(); } return size; } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public void MergeFrom(InvocationEvent other) { if (other == null) { return; } switch (other.EventCase) { case EventOneofCase.InvocationStarted: if (InvocationStarted == null) { InvocationStarted = new global::Plexus.Interop.Apps.Internal.Generated.InvocationStartedEvent(); } InvocationStarted.MergeFrom(other.InvocationStarted); break; case EventOneofCase.InvocationFinished: if (InvocationFinished == null) { InvocationFinished = new global::Plexus.Interop.Apps.Internal.Generated.InvocationFinishedEvent(); } InvocationFinished.MergeFrom(other.InvocationFinished); break; } _unknownFields = pb::UnknownFieldSet.MergeFrom(_unknownFields, other._unknownFields); } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public void MergeFrom(pb::CodedInputStream input) { #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE input.ReadRawMessage(this); #else uint tag; while ((tag = input.ReadTag()) != 0) { switch(tag) { default: _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input); break; case 10: { global::Plexus.Interop.Apps.Internal.Generated.InvocationStartedEvent subBuilder = new global::Plexus.Interop.Apps.Internal.Generated.InvocationStartedEvent(); if (eventCase_ == EventOneofCase.InvocationStarted) { subBuilder.MergeFrom(InvocationStarted); } input.ReadMessage(subBuilder); InvocationStarted = subBuilder; break; } case 18: { global::Plexus.Interop.Apps.Internal.Generated.InvocationFinishedEvent subBuilder = new global::Plexus.Interop.Apps.Internal.Generated.InvocationFinishedEvent(); if (eventCase_ == EventOneofCase.InvocationFinished) { subBuilder.MergeFrom(InvocationFinished); } input.ReadMessage(subBuilder); InvocationFinished = subBuilder; break; } } } #endif } #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] void pb::IBufferMessage.InternalMergeFrom(ref pb::ParseContext input) { uint tag; while ((tag = input.ReadTag()) != 0) { switch(tag) { default: _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, ref input); break; case 10: { global::Plexus.Interop.Apps.Internal.Generated.InvocationStartedEvent subBuilder = new global::Plexus.Interop.Apps.Internal.Generated.InvocationStartedEvent(); if (eventCase_ == EventOneofCase.InvocationStarted) { subBuilder.MergeFrom(InvocationStarted); } input.ReadMessage(subBuilder); InvocationStarted = subBuilder; break; } case 18: { global::Plexus.Interop.Apps.Internal.Generated.InvocationFinishedEvent subBuilder = new global::Plexus.Interop.Apps.Internal.Generated.InvocationFinishedEvent(); if (eventCase_ == EventOneofCase.InvocationFinished) { subBuilder.MergeFrom(InvocationFinished); } input.ReadMessage(subBuilder); InvocationFinished = subBuilder; break; } } } } #endif } internal sealed partial class AppConnectedEvent : pb::IMessage #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE , pb::IBufferMessage #endif { private static readonly pb::MessageParser _parser = new pb::MessageParser(() => new AppConnectedEvent()); private pb::UnknownFieldSet _unknownFields; [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public static pb::MessageParser Parser { get { return _parser; } } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public static pbr::MessageDescriptor Descriptor { get { return global::Plexus.Interop.Apps.Internal.Generated.AppLifecycleServiceReflection.Descriptor.MessageTypes[4]; } } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] pbr::MessageDescriptor pb::IMessage.Descriptor { get { return Descriptor; } } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public AppConnectedEvent() { OnConstruction(); } partial void OnConstruction(); [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public AppConnectedEvent(AppConnectedEvent other) : this() { connectionDescriptor_ = other.connectionDescriptor_ != null ? other.connectionDescriptor_.Clone() : null; _unknownFields = pb::UnknownFieldSet.Clone(other._unknownFields); } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public AppConnectedEvent Clone() { return new AppConnectedEvent(this); } /// Field number for the "connection_descriptor" field. public const int ConnectionDescriptorFieldNumber = 1; private global::Plexus.Interop.Apps.Internal.Generated.AppConnectionDescriptor connectionDescriptor_; [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public global::Plexus.Interop.Apps.Internal.Generated.AppConnectionDescriptor ConnectionDescriptor { get { return connectionDescriptor_; } set { connectionDescriptor_ = value; } } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public override bool Equals(object other) { return Equals(other as AppConnectedEvent); } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public bool Equals(AppConnectedEvent other) { if (ReferenceEquals(other, null)) { return false; } if (ReferenceEquals(other, this)) { return true; } if (!object.Equals(ConnectionDescriptor, other.ConnectionDescriptor)) return false; return Equals(_unknownFields, other._unknownFields); } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public override int GetHashCode() { int hash = 1; if (connectionDescriptor_ != null) hash ^= ConnectionDescriptor.GetHashCode(); if (_unknownFields != null) { hash ^= _unknownFields.GetHashCode(); } return hash; } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public override string ToString() { return pb::JsonFormatter.ToDiagnosticString(this); } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public void WriteTo(pb::CodedOutputStream output) { #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE output.WriteRawMessage(this); #else if (connectionDescriptor_ != null) { output.WriteRawTag(10); output.WriteMessage(ConnectionDescriptor); } if (_unknownFields != null) { _unknownFields.WriteTo(output); } #endif } #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] void pb::IBufferMessage.InternalWriteTo(ref pb::WriteContext output) { if (connectionDescriptor_ != null) { output.WriteRawTag(10); output.WriteMessage(ConnectionDescriptor); } if (_unknownFields != null) { _unknownFields.WriteTo(ref output); } } #endif [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public int CalculateSize() { int size = 0; if (connectionDescriptor_ != null) { size += 1 + pb::CodedOutputStream.ComputeMessageSize(ConnectionDescriptor); } if (_unknownFields != null) { size += _unknownFields.CalculateSize(); } return size; } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public void MergeFrom(AppConnectedEvent other) { if (other == null) { return; } if (other.connectionDescriptor_ != null) { if (connectionDescriptor_ == null) { ConnectionDescriptor = new global::Plexus.Interop.Apps.Internal.Generated.AppConnectionDescriptor(); } ConnectionDescriptor.MergeFrom(other.ConnectionDescriptor); } _unknownFields = pb::UnknownFieldSet.MergeFrom(_unknownFields, other._unknownFields); } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public void MergeFrom(pb::CodedInputStream input) { #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE input.ReadRawMessage(this); #else uint tag; while ((tag = input.ReadTag()) != 0) { switch(tag) { default: _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input); break; case 10: { if (connectionDescriptor_ == null) { ConnectionDescriptor = new global::Plexus.Interop.Apps.Internal.Generated.AppConnectionDescriptor(); } input.ReadMessage(ConnectionDescriptor); break; } } } #endif } #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] void pb::IBufferMessage.InternalMergeFrom(ref pb::ParseContext input) { uint tag; while ((tag = input.ReadTag()) != 0) { switch(tag) { default: _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, ref input); break; case 10: { if (connectionDescriptor_ == null) { ConnectionDescriptor = new global::Plexus.Interop.Apps.Internal.Generated.AppConnectionDescriptor(); } input.ReadMessage(ConnectionDescriptor); break; } } } } #endif } internal sealed partial class AppDisconnectedEvent : pb::IMessage #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE , pb::IBufferMessage #endif { private static readonly pb::MessageParser _parser = new pb::MessageParser(() => new AppDisconnectedEvent()); private pb::UnknownFieldSet _unknownFields; [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public static pb::MessageParser Parser { get { return _parser; } } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public static pbr::MessageDescriptor Descriptor { get { return global::Plexus.Interop.Apps.Internal.Generated.AppLifecycleServiceReflection.Descriptor.MessageTypes[5]; } } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] pbr::MessageDescriptor pb::IMessage.Descriptor { get { return Descriptor; } } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public AppDisconnectedEvent() { OnConstruction(); } partial void OnConstruction(); [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public AppDisconnectedEvent(AppDisconnectedEvent other) : this() { connectionDescriptor_ = other.connectionDescriptor_ != null ? other.connectionDescriptor_.Clone() : null; _unknownFields = pb::UnknownFieldSet.Clone(other._unknownFields); } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public AppDisconnectedEvent Clone() { return new AppDisconnectedEvent(this); } /// Field number for the "connection_descriptor" field. public const int ConnectionDescriptorFieldNumber = 1; private global::Plexus.Interop.Apps.Internal.Generated.AppConnectionDescriptor connectionDescriptor_; [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public global::Plexus.Interop.Apps.Internal.Generated.AppConnectionDescriptor ConnectionDescriptor { get { return connectionDescriptor_; } set { connectionDescriptor_ = value; } } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public override bool Equals(object other) { return Equals(other as AppDisconnectedEvent); } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public bool Equals(AppDisconnectedEvent other) { if (ReferenceEquals(other, null)) { return false; } if (ReferenceEquals(other, this)) { return true; } if (!object.Equals(ConnectionDescriptor, other.ConnectionDescriptor)) return false; return Equals(_unknownFields, other._unknownFields); } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public override int GetHashCode() { int hash = 1; if (connectionDescriptor_ != null) hash ^= ConnectionDescriptor.GetHashCode(); if (_unknownFields != null) { hash ^= _unknownFields.GetHashCode(); } return hash; } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public override string ToString() { return pb::JsonFormatter.ToDiagnosticString(this); } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public void WriteTo(pb::CodedOutputStream output) { #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE output.WriteRawMessage(this); #else if (connectionDescriptor_ != null) { output.WriteRawTag(10); output.WriteMessage(ConnectionDescriptor); } if (_unknownFields != null) { _unknownFields.WriteTo(output); } #endif } #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] void pb::IBufferMessage.InternalWriteTo(ref pb::WriteContext output) { if (connectionDescriptor_ != null) { output.WriteRawTag(10); output.WriteMessage(ConnectionDescriptor); } if (_unknownFields != null) { _unknownFields.WriteTo(ref output); } } #endif [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public int CalculateSize() { int size = 0; if (connectionDescriptor_ != null) { size += 1 + pb::CodedOutputStream.ComputeMessageSize(ConnectionDescriptor); } if (_unknownFields != null) { size += _unknownFields.CalculateSize(); } return size; } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public void MergeFrom(AppDisconnectedEvent other) { if (other == null) { return; } if (other.connectionDescriptor_ != null) { if (connectionDescriptor_ == null) { ConnectionDescriptor = new global::Plexus.Interop.Apps.Internal.Generated.AppConnectionDescriptor(); } ConnectionDescriptor.MergeFrom(other.ConnectionDescriptor); } _unknownFields = pb::UnknownFieldSet.MergeFrom(_unknownFields, other._unknownFields); } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public void MergeFrom(pb::CodedInputStream input) { #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE input.ReadRawMessage(this); #else uint tag; while ((tag = input.ReadTag()) != 0) { switch(tag) { default: _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input); break; case 10: { if (connectionDescriptor_ == null) { ConnectionDescriptor = new global::Plexus.Interop.Apps.Internal.Generated.AppConnectionDescriptor(); } input.ReadMessage(ConnectionDescriptor); break; } } } #endif } #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] void pb::IBufferMessage.InternalMergeFrom(ref pb::ParseContext input) { uint tag; while ((tag = input.ReadTag()) != 0) { switch(tag) { default: _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, ref input); break; case 10: { if (connectionDescriptor_ == null) { ConnectionDescriptor = new global::Plexus.Interop.Apps.Internal.Generated.AppConnectionDescriptor(); } input.ReadMessage(ConnectionDescriptor); break; } } } } #endif } internal sealed partial class AppConnectionErrorEvent : pb::IMessage #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE , pb::IBufferMessage #endif { private static readonly pb::MessageParser _parser = new pb::MessageParser(() => new AppConnectionErrorEvent()); private pb::UnknownFieldSet _unknownFields; [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public static pb::MessageParser Parser { get { return _parser; } } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public static pbr::MessageDescriptor Descriptor { get { return global::Plexus.Interop.Apps.Internal.Generated.AppLifecycleServiceReflection.Descriptor.MessageTypes[6]; } } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] pbr::MessageDescriptor pb::IMessage.Descriptor { get { return Descriptor; } } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public AppConnectionErrorEvent() { OnConstruction(); } partial void OnConstruction(); [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public AppConnectionErrorEvent(AppConnectionErrorEvent other) : this() { connectionDescriptor_ = other.connectionDescriptor_ != null ? other.connectionDescriptor_.Clone() : null; _unknownFields = pb::UnknownFieldSet.Clone(other._unknownFields); } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public AppConnectionErrorEvent Clone() { return new AppConnectionErrorEvent(this); } /// Field number for the "connection_descriptor" field. public const int ConnectionDescriptorFieldNumber = 1; private global::Plexus.Interop.Apps.Internal.Generated.AppConnectionDescriptor connectionDescriptor_; [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public global::Plexus.Interop.Apps.Internal.Generated.AppConnectionDescriptor ConnectionDescriptor { get { return connectionDescriptor_; } set { connectionDescriptor_ = value; } } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public override bool Equals(object other) { return Equals(other as AppConnectionErrorEvent); } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public bool Equals(AppConnectionErrorEvent other) { if (ReferenceEquals(other, null)) { return false; } if (ReferenceEquals(other, this)) { return true; } if (!object.Equals(ConnectionDescriptor, other.ConnectionDescriptor)) return false; return Equals(_unknownFields, other._unknownFields); } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public override int GetHashCode() { int hash = 1; if (connectionDescriptor_ != null) hash ^= ConnectionDescriptor.GetHashCode(); if (_unknownFields != null) { hash ^= _unknownFields.GetHashCode(); } return hash; } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public override string ToString() { return pb::JsonFormatter.ToDiagnosticString(this); } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public void WriteTo(pb::CodedOutputStream output) { #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE output.WriteRawMessage(this); #else if (connectionDescriptor_ != null) { output.WriteRawTag(10); output.WriteMessage(ConnectionDescriptor); } if (_unknownFields != null) { _unknownFields.WriteTo(output); } #endif } #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] void pb::IBufferMessage.InternalWriteTo(ref pb::WriteContext output) { if (connectionDescriptor_ != null) { output.WriteRawTag(10); output.WriteMessage(ConnectionDescriptor); } if (_unknownFields != null) { _unknownFields.WriteTo(ref output); } } #endif [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public int CalculateSize() { int size = 0; if (connectionDescriptor_ != null) { size += 1 + pb::CodedOutputStream.ComputeMessageSize(ConnectionDescriptor); } if (_unknownFields != null) { size += _unknownFields.CalculateSize(); } return size; } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public void MergeFrom(AppConnectionErrorEvent other) { if (other == null) { return; } if (other.connectionDescriptor_ != null) { if (connectionDescriptor_ == null) { ConnectionDescriptor = new global::Plexus.Interop.Apps.Internal.Generated.AppConnectionDescriptor(); } ConnectionDescriptor.MergeFrom(other.ConnectionDescriptor); } _unknownFields = pb::UnknownFieldSet.MergeFrom(_unknownFields, other._unknownFields); } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public void MergeFrom(pb::CodedInputStream input) { #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE input.ReadRawMessage(this); #else uint tag; while ((tag = input.ReadTag()) != 0) { switch(tag) { default: _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input); break; case 10: { if (connectionDescriptor_ == null) { ConnectionDescriptor = new global::Plexus.Interop.Apps.Internal.Generated.AppConnectionDescriptor(); } input.ReadMessage(ConnectionDescriptor); break; } } } #endif } #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] void pb::IBufferMessage.InternalMergeFrom(ref pb::ParseContext input) { uint tag; while ((tag = input.ReadTag()) != 0) { switch(tag) { default: _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, ref input); break; case 10: { if (connectionDescriptor_ == null) { ConnectionDescriptor = new global::Plexus.Interop.Apps.Internal.Generated.AppConnectionDescriptor(); } input.ReadMessage(ConnectionDescriptor); break; } } } } #endif } internal sealed partial class InvocationStartedEvent : pb::IMessage #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE , pb::IBufferMessage #endif { private static readonly pb::MessageParser _parser = new pb::MessageParser(() => new InvocationStartedEvent()); private pb::UnknownFieldSet _unknownFields; [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public static pb::MessageParser Parser { get { return _parser; } } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public static pbr::MessageDescriptor Descriptor { get { return global::Plexus.Interop.Apps.Internal.Generated.AppLifecycleServiceReflection.Descriptor.MessageTypes[7]; } } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] pbr::MessageDescriptor pb::IMessage.Descriptor { get { return Descriptor; } } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public InvocationStartedEvent() { OnConstruction(); } partial void OnConstruction(); [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public InvocationStartedEvent(InvocationStartedEvent other) : this() { invocationDescriptor_ = other.invocationDescriptor_ != null ? other.invocationDescriptor_.Clone() : null; _unknownFields = pb::UnknownFieldSet.Clone(other._unknownFields); } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public InvocationStartedEvent Clone() { return new InvocationStartedEvent(this); } /// Field number for the "invocation_descriptor" field. public const int InvocationDescriptorFieldNumber = 1; private global::Plexus.Interop.Apps.Internal.Generated.InvocationDescriptor invocationDescriptor_; [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public global::Plexus.Interop.Apps.Internal.Generated.InvocationDescriptor InvocationDescriptor { get { return invocationDescriptor_; } set { invocationDescriptor_ = value; } } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public override bool Equals(object other) { return Equals(other as InvocationStartedEvent); } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public bool Equals(InvocationStartedEvent other) { if (ReferenceEquals(other, null)) { return false; } if (ReferenceEquals(other, this)) { return true; } if (!object.Equals(InvocationDescriptor, other.InvocationDescriptor)) return false; return Equals(_unknownFields, other._unknownFields); } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public override int GetHashCode() { int hash = 1; if (invocationDescriptor_ != null) hash ^= InvocationDescriptor.GetHashCode(); if (_unknownFields != null) { hash ^= _unknownFields.GetHashCode(); } return hash; } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public override string ToString() { return pb::JsonFormatter.ToDiagnosticString(this); } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public void WriteTo(pb::CodedOutputStream output) { #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE output.WriteRawMessage(this); #else if (invocationDescriptor_ != null) { output.WriteRawTag(10); output.WriteMessage(InvocationDescriptor); } if (_unknownFields != null) { _unknownFields.WriteTo(output); } #endif } #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] void pb::IBufferMessage.InternalWriteTo(ref pb::WriteContext output) { if (invocationDescriptor_ != null) { output.WriteRawTag(10); output.WriteMessage(InvocationDescriptor); } if (_unknownFields != null) { _unknownFields.WriteTo(ref output); } } #endif [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public int CalculateSize() { int size = 0; if (invocationDescriptor_ != null) { size += 1 + pb::CodedOutputStream.ComputeMessageSize(InvocationDescriptor); } if (_unknownFields != null) { size += _unknownFields.CalculateSize(); } return size; } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public void MergeFrom(InvocationStartedEvent other) { if (other == null) { return; } if (other.invocationDescriptor_ != null) { if (invocationDescriptor_ == null) { InvocationDescriptor = new global::Plexus.Interop.Apps.Internal.Generated.InvocationDescriptor(); } InvocationDescriptor.MergeFrom(other.InvocationDescriptor); } _unknownFields = pb::UnknownFieldSet.MergeFrom(_unknownFields, other._unknownFields); } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public void MergeFrom(pb::CodedInputStream input) { #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE input.ReadRawMessage(this); #else uint tag; while ((tag = input.ReadTag()) != 0) { switch(tag) { default: _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input); break; case 10: { if (invocationDescriptor_ == null) { InvocationDescriptor = new global::Plexus.Interop.Apps.Internal.Generated.InvocationDescriptor(); } input.ReadMessage(InvocationDescriptor); break; } } } #endif } #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] void pb::IBufferMessage.InternalMergeFrom(ref pb::ParseContext input) { uint tag; while ((tag = input.ReadTag()) != 0) { switch(tag) { default: _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, ref input); break; case 10: { if (invocationDescriptor_ == null) { InvocationDescriptor = new global::Plexus.Interop.Apps.Internal.Generated.InvocationDescriptor(); } input.ReadMessage(InvocationDescriptor); break; } } } } #endif } internal sealed partial class InvocationFinishedEvent : pb::IMessage #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE , pb::IBufferMessage #endif { private static readonly pb::MessageParser _parser = new pb::MessageParser(() => new InvocationFinishedEvent()); private pb::UnknownFieldSet _unknownFields; [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public static pb::MessageParser Parser { get { return _parser; } } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public static pbr::MessageDescriptor Descriptor { get { return global::Plexus.Interop.Apps.Internal.Generated.AppLifecycleServiceReflection.Descriptor.MessageTypes[8]; } } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] pbr::MessageDescriptor pb::IMessage.Descriptor { get { return Descriptor; } } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public InvocationFinishedEvent() { OnConstruction(); } partial void OnConstruction(); [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public InvocationFinishedEvent(InvocationFinishedEvent other) : this() { invocationDescriptor_ = other.invocationDescriptor_ != null ? other.invocationDescriptor_.Clone() : null; result_ = other.result_; durationMs_ = other.durationMs_; _unknownFields = pb::UnknownFieldSet.Clone(other._unknownFields); } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public InvocationFinishedEvent Clone() { return new InvocationFinishedEvent(this); } /// Field number for the "invocation_descriptor" field. public const int InvocationDescriptorFieldNumber = 1; private global::Plexus.Interop.Apps.Internal.Generated.InvocationDescriptor invocationDescriptor_; [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public global::Plexus.Interop.Apps.Internal.Generated.InvocationDescriptor InvocationDescriptor { get { return invocationDescriptor_; } set { invocationDescriptor_ = value; } } /// Field number for the "result" field. public const int ResultFieldNumber = 2; private global::Plexus.Interop.Apps.Internal.Generated.InvocationResult result_ = global::Plexus.Interop.Apps.Internal.Generated.InvocationResult.Succeeded; [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public global::Plexus.Interop.Apps.Internal.Generated.InvocationResult Result { get { return result_; } set { result_ = value; } } /// Field number for the "duration_ms" field. public const int DurationMsFieldNumber = 3; private long durationMs_; [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public long DurationMs { get { return durationMs_; } set { durationMs_ = value; } } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public override bool Equals(object other) { return Equals(other as InvocationFinishedEvent); } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public bool Equals(InvocationFinishedEvent other) { if (ReferenceEquals(other, null)) { return false; } if (ReferenceEquals(other, this)) { return true; } if (!object.Equals(InvocationDescriptor, other.InvocationDescriptor)) return false; if (Result != other.Result) return false; if (DurationMs != other.DurationMs) return false; return Equals(_unknownFields, other._unknownFields); } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public override int GetHashCode() { int hash = 1; if (invocationDescriptor_ != null) hash ^= InvocationDescriptor.GetHashCode(); if (Result != global::Plexus.Interop.Apps.Internal.Generated.InvocationResult.Succeeded) hash ^= Result.GetHashCode(); if (DurationMs != 0L) hash ^= DurationMs.GetHashCode(); if (_unknownFields != null) { hash ^= _unknownFields.GetHashCode(); } return hash; } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public override string ToString() { return pb::JsonFormatter.ToDiagnosticString(this); } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public void WriteTo(pb::CodedOutputStream output) { #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE output.WriteRawMessage(this); #else if (invocationDescriptor_ != null) { output.WriteRawTag(10); output.WriteMessage(InvocationDescriptor); } if (Result != global::Plexus.Interop.Apps.Internal.Generated.InvocationResult.Succeeded) { output.WriteRawTag(16); output.WriteEnum((int) Result); } if (DurationMs != 0L) { output.WriteRawTag(24); output.WriteInt64(DurationMs); } if (_unknownFields != null) { _unknownFields.WriteTo(output); } #endif } #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] void pb::IBufferMessage.InternalWriteTo(ref pb::WriteContext output) { if (invocationDescriptor_ != null) { output.WriteRawTag(10); output.WriteMessage(InvocationDescriptor); } if (Result != global::Plexus.Interop.Apps.Internal.Generated.InvocationResult.Succeeded) { output.WriteRawTag(16); output.WriteEnum((int) Result); } if (DurationMs != 0L) { output.WriteRawTag(24); output.WriteInt64(DurationMs); } if (_unknownFields != null) { _unknownFields.WriteTo(ref output); } } #endif [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public int CalculateSize() { int size = 0; if (invocationDescriptor_ != null) { size += 1 + pb::CodedOutputStream.ComputeMessageSize(InvocationDescriptor); } if (Result != global::Plexus.Interop.Apps.Internal.Generated.InvocationResult.Succeeded) { size += 1 + pb::CodedOutputStream.ComputeEnumSize((int) Result); } if (DurationMs != 0L) { size += 1 + pb::CodedOutputStream.ComputeInt64Size(DurationMs); } if (_unknownFields != null) { size += _unknownFields.CalculateSize(); } return size; } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public void MergeFrom(InvocationFinishedEvent other) { if (other == null) { return; } if (other.invocationDescriptor_ != null) { if (invocationDescriptor_ == null) { InvocationDescriptor = new global::Plexus.Interop.Apps.Internal.Generated.InvocationDescriptor(); } InvocationDescriptor.MergeFrom(other.InvocationDescriptor); } if (other.Result != global::Plexus.Interop.Apps.Internal.Generated.InvocationResult.Succeeded) { Result = other.Result; } if (other.DurationMs != 0L) { DurationMs = other.DurationMs; } _unknownFields = pb::UnknownFieldSet.MergeFrom(_unknownFields, other._unknownFields); } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public void MergeFrom(pb::CodedInputStream input) { #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE input.ReadRawMessage(this); #else uint tag; while ((tag = input.ReadTag()) != 0) { switch(tag) { default: _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input); break; case 10: { if (invocationDescriptor_ == null) { InvocationDescriptor = new global::Plexus.Interop.Apps.Internal.Generated.InvocationDescriptor(); } input.ReadMessage(InvocationDescriptor); break; } case 16: { Result = (global::Plexus.Interop.Apps.Internal.Generated.InvocationResult) input.ReadEnum(); break; } case 24: { DurationMs = input.ReadInt64(); break; } } } #endif } #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] void pb::IBufferMessage.InternalMergeFrom(ref pb::ParseContext input) { uint tag; while ((tag = input.ReadTag()) != 0) { switch(tag) { default: _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, ref input); break; case 10: { if (invocationDescriptor_ == null) { InvocationDescriptor = new global::Plexus.Interop.Apps.Internal.Generated.InvocationDescriptor(); } input.ReadMessage(InvocationDescriptor); break; } case 16: { Result = (global::Plexus.Interop.Apps.Internal.Generated.InvocationResult) input.ReadEnum(); break; } case 24: { DurationMs = input.ReadInt64(); break; } } } } #endif } internal sealed partial class GetConnectionsRequest : pb::IMessage #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE , pb::IBufferMessage #endif { private static readonly pb::MessageParser _parser = new pb::MessageParser(() => new GetConnectionsRequest()); private pb::UnknownFieldSet _unknownFields; [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public static pb::MessageParser Parser { get { return _parser; } } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public static pbr::MessageDescriptor Descriptor { get { return global::Plexus.Interop.Apps.Internal.Generated.AppLifecycleServiceReflection.Descriptor.MessageTypes[9]; } } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] pbr::MessageDescriptor pb::IMessage.Descriptor { get { return Descriptor; } } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public GetConnectionsRequest() { OnConstruction(); } partial void OnConstruction(); [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public GetConnectionsRequest(GetConnectionsRequest other) : this() { applicationId_ = other.applicationId_; appInstanceId_ = other.appInstanceId_ != null ? other.appInstanceId_.Clone() : null; connectionId_ = other.connectionId_ != null ? other.connectionId_.Clone() : null; _unknownFields = pb::UnknownFieldSet.Clone(other._unknownFields); } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public GetConnectionsRequest Clone() { return new GetConnectionsRequest(this); } /// Field number for the "application_id" field. public const int ApplicationIdFieldNumber = 1; private string applicationId_ = ""; [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public string ApplicationId { get { return applicationId_; } set { applicationId_ = pb::ProtoPreconditions.CheckNotNull(value, "value"); } } /// Field number for the "app_instance_id" field. public const int AppInstanceIdFieldNumber = 2; private global::Plexus.Interop.Apps.Internal.Generated.UniqueId appInstanceId_; [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public global::Plexus.Interop.Apps.Internal.Generated.UniqueId AppInstanceId { get { return appInstanceId_; } set { appInstanceId_ = value; } } /// Field number for the "connection_id" field. public const int ConnectionIdFieldNumber = 3; private global::Plexus.Interop.Apps.Internal.Generated.UniqueId connectionId_; [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public global::Plexus.Interop.Apps.Internal.Generated.UniqueId ConnectionId { get { return connectionId_; } set { connectionId_ = value; } } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public override bool Equals(object other) { return Equals(other as GetConnectionsRequest); } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public bool Equals(GetConnectionsRequest other) { if (ReferenceEquals(other, null)) { return false; } if (ReferenceEquals(other, this)) { return true; } if (ApplicationId != other.ApplicationId) return false; if (!object.Equals(AppInstanceId, other.AppInstanceId)) return false; if (!object.Equals(ConnectionId, other.ConnectionId)) return false; return Equals(_unknownFields, other._unknownFields); } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public override int GetHashCode() { int hash = 1; if (ApplicationId.Length != 0) hash ^= ApplicationId.GetHashCode(); if (appInstanceId_ != null) hash ^= AppInstanceId.GetHashCode(); if (connectionId_ != null) hash ^= ConnectionId.GetHashCode(); if (_unknownFields != null) { hash ^= _unknownFields.GetHashCode(); } return hash; } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public override string ToString() { return pb::JsonFormatter.ToDiagnosticString(this); } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public void WriteTo(pb::CodedOutputStream output) { #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE output.WriteRawMessage(this); #else if (ApplicationId.Length != 0) { output.WriteRawTag(10); output.WriteString(ApplicationId); } if (appInstanceId_ != null) { output.WriteRawTag(18); output.WriteMessage(AppInstanceId); } if (connectionId_ != null) { output.WriteRawTag(26); output.WriteMessage(ConnectionId); } if (_unknownFields != null) { _unknownFields.WriteTo(output); } #endif } #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] void pb::IBufferMessage.InternalWriteTo(ref pb::WriteContext output) { if (ApplicationId.Length != 0) { output.WriteRawTag(10); output.WriteString(ApplicationId); } if (appInstanceId_ != null) { output.WriteRawTag(18); output.WriteMessage(AppInstanceId); } if (connectionId_ != null) { output.WriteRawTag(26); output.WriteMessage(ConnectionId); } if (_unknownFields != null) { _unknownFields.WriteTo(ref output); } } #endif [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public int CalculateSize() { int size = 0; if (ApplicationId.Length != 0) { size += 1 + pb::CodedOutputStream.ComputeStringSize(ApplicationId); } if (appInstanceId_ != null) { size += 1 + pb::CodedOutputStream.ComputeMessageSize(AppInstanceId); } if (connectionId_ != null) { size += 1 + pb::CodedOutputStream.ComputeMessageSize(ConnectionId); } if (_unknownFields != null) { size += _unknownFields.CalculateSize(); } return size; } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public void MergeFrom(GetConnectionsRequest other) { if (other == null) { return; } if (other.ApplicationId.Length != 0) { ApplicationId = other.ApplicationId; } if (other.appInstanceId_ != null) { if (appInstanceId_ == null) { AppInstanceId = new global::Plexus.Interop.Apps.Internal.Generated.UniqueId(); } AppInstanceId.MergeFrom(other.AppInstanceId); } if (other.connectionId_ != null) { if (connectionId_ == null) { ConnectionId = new global::Plexus.Interop.Apps.Internal.Generated.UniqueId(); } ConnectionId.MergeFrom(other.ConnectionId); } _unknownFields = pb::UnknownFieldSet.MergeFrom(_unknownFields, other._unknownFields); } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public void MergeFrom(pb::CodedInputStream input) { #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE input.ReadRawMessage(this); #else uint tag; while ((tag = input.ReadTag()) != 0) { switch(tag) { default: _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input); break; case 10: { ApplicationId = input.ReadString(); break; } case 18: { if (appInstanceId_ == null) { AppInstanceId = new global::Plexus.Interop.Apps.Internal.Generated.UniqueId(); } input.ReadMessage(AppInstanceId); break; } case 26: { if (connectionId_ == null) { ConnectionId = new global::Plexus.Interop.Apps.Internal.Generated.UniqueId(); } input.ReadMessage(ConnectionId); break; } } } #endif } #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] void pb::IBufferMessage.InternalMergeFrom(ref pb::ParseContext input) { uint tag; while ((tag = input.ReadTag()) != 0) { switch(tag) { default: _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, ref input); break; case 10: { ApplicationId = input.ReadString(); break; } case 18: { if (appInstanceId_ == null) { AppInstanceId = new global::Plexus.Interop.Apps.Internal.Generated.UniqueId(); } input.ReadMessage(AppInstanceId); break; } case 26: { if (connectionId_ == null) { ConnectionId = new global::Plexus.Interop.Apps.Internal.Generated.UniqueId(); } input.ReadMessage(ConnectionId); break; } } } } #endif } internal sealed partial class GetConnectionsResponse : pb::IMessage #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE , pb::IBufferMessage #endif { private static readonly pb::MessageParser _parser = new pb::MessageParser(() => new GetConnectionsResponse()); private pb::UnknownFieldSet _unknownFields; [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public static pb::MessageParser Parser { get { return _parser; } } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public static pbr::MessageDescriptor Descriptor { get { return global::Plexus.Interop.Apps.Internal.Generated.AppLifecycleServiceReflection.Descriptor.MessageTypes[10]; } } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] pbr::MessageDescriptor pb::IMessage.Descriptor { get { return Descriptor; } } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public GetConnectionsResponse() { OnConstruction(); } partial void OnConstruction(); [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public GetConnectionsResponse(GetConnectionsResponse other) : this() { connections_ = other.connections_.Clone(); _unknownFields = pb::UnknownFieldSet.Clone(other._unknownFields); } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public GetConnectionsResponse Clone() { return new GetConnectionsResponse(this); } /// Field number for the "connections" field. public const int ConnectionsFieldNumber = 1; private static readonly pb::FieldCodec _repeated_connections_codec = pb::FieldCodec.ForMessage(10, global::Plexus.Interop.Apps.Internal.Generated.AppConnectionDescriptor.Parser); private readonly pbc::RepeatedField connections_ = new pbc::RepeatedField(); [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public pbc::RepeatedField Connections { get { return connections_; } } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public override bool Equals(object other) { return Equals(other as GetConnectionsResponse); } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public bool Equals(GetConnectionsResponse other) { if (ReferenceEquals(other, null)) { return false; } if (ReferenceEquals(other, this)) { return true; } if(!connections_.Equals(other.connections_)) return false; return Equals(_unknownFields, other._unknownFields); } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public override int GetHashCode() { int hash = 1; hash ^= connections_.GetHashCode(); if (_unknownFields != null) { hash ^= _unknownFields.GetHashCode(); } return hash; } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public override string ToString() { return pb::JsonFormatter.ToDiagnosticString(this); } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public void WriteTo(pb::CodedOutputStream output) { #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE output.WriteRawMessage(this); #else connections_.WriteTo(output, _repeated_connections_codec); if (_unknownFields != null) { _unknownFields.WriteTo(output); } #endif } #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] void pb::IBufferMessage.InternalWriteTo(ref pb::WriteContext output) { connections_.WriteTo(ref output, _repeated_connections_codec); if (_unknownFields != null) { _unknownFields.WriteTo(ref output); } } #endif [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public int CalculateSize() { int size = 0; size += connections_.CalculateSize(_repeated_connections_codec); if (_unknownFields != null) { size += _unknownFields.CalculateSize(); } return size; } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public void MergeFrom(GetConnectionsResponse other) { if (other == null) { return; } connections_.Add(other.connections_); _unknownFields = pb::UnknownFieldSet.MergeFrom(_unknownFields, other._unknownFields); } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public void MergeFrom(pb::CodedInputStream input) { #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE input.ReadRawMessage(this); #else uint tag; while ((tag = input.ReadTag()) != 0) { switch(tag) { default: _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input); break; case 10: { connections_.AddEntriesFrom(input, _repeated_connections_codec); break; } } } #endif } #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] void pb::IBufferMessage.InternalMergeFrom(ref pb::ParseContext input) { uint tag; while ((tag = input.ReadTag()) != 0) { switch(tag) { default: _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, ref input); break; case 10: { connections_.AddEntriesFrom(ref input, _repeated_connections_codec); break; } } } } #endif } internal sealed partial class GetConnectionsEvent : pb::IMessage #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE , pb::IBufferMessage #endif { private static readonly pb::MessageParser _parser = new pb::MessageParser(() => new GetConnectionsEvent()); private pb::UnknownFieldSet _unknownFields; [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public static pb::MessageParser Parser { get { return _parser; } } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public static pbr::MessageDescriptor Descriptor { get { return global::Plexus.Interop.Apps.Internal.Generated.AppLifecycleServiceReflection.Descriptor.MessageTypes[11]; } } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] pbr::MessageDescriptor pb::IMessage.Descriptor { get { return Descriptor; } } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public GetConnectionsEvent() { OnConstruction(); } partial void OnConstruction(); [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public GetConnectionsEvent(GetConnectionsEvent other) : this() { connections_ = other.connections_.Clone(); switch (other.EventCase) { case EventOneofCase.NewConnection: NewConnection = other.NewConnection.Clone(); break; case EventOneofCase.ClosedConnection: ClosedConnection = other.ClosedConnection.Clone(); break; } _unknownFields = pb::UnknownFieldSet.Clone(other._unknownFields); } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public GetConnectionsEvent Clone() { return new GetConnectionsEvent(this); } /// Field number for the "connections" field. public const int ConnectionsFieldNumber = 1; private static readonly pb::FieldCodec _repeated_connections_codec = pb::FieldCodec.ForMessage(10, global::Plexus.Interop.Apps.Internal.Generated.AppConnectionDescriptor.Parser); private readonly pbc::RepeatedField connections_ = new pbc::RepeatedField(); [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public pbc::RepeatedField Connections { get { return connections_; } } /// Field number for the "new_connection" field. public const int NewConnectionFieldNumber = 2; [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public global::Plexus.Interop.Apps.Internal.Generated.AppConnectionDescriptor NewConnection { get { return eventCase_ == EventOneofCase.NewConnection ? (global::Plexus.Interop.Apps.Internal.Generated.AppConnectionDescriptor) event_ : null; } set { event_ = value; eventCase_ = value == null ? EventOneofCase.None : EventOneofCase.NewConnection; } } /// Field number for the "closed_connection" field. public const int ClosedConnectionFieldNumber = 3; [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public global::Plexus.Interop.Apps.Internal.Generated.AppConnectionDescriptor ClosedConnection { get { return eventCase_ == EventOneofCase.ClosedConnection ? (global::Plexus.Interop.Apps.Internal.Generated.AppConnectionDescriptor) event_ : null; } set { event_ = value; eventCase_ = value == null ? EventOneofCase.None : EventOneofCase.ClosedConnection; } } private object event_; /// Enum of possible cases for the "event" oneof. public enum EventOneofCase { None = 0, NewConnection = 2, ClosedConnection = 3, } private EventOneofCase eventCase_ = EventOneofCase.None; [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public EventOneofCase EventCase { get { return eventCase_; } } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public void ClearEvent() { eventCase_ = EventOneofCase.None; event_ = null; } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public override bool Equals(object other) { return Equals(other as GetConnectionsEvent); } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public bool Equals(GetConnectionsEvent other) { if (ReferenceEquals(other, null)) { return false; } if (ReferenceEquals(other, this)) { return true; } if(!connections_.Equals(other.connections_)) return false; if (!object.Equals(NewConnection, other.NewConnection)) return false; if (!object.Equals(ClosedConnection, other.ClosedConnection)) return false; if (EventCase != other.EventCase) return false; return Equals(_unknownFields, other._unknownFields); } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public override int GetHashCode() { int hash = 1; hash ^= connections_.GetHashCode(); if (eventCase_ == EventOneofCase.NewConnection) hash ^= NewConnection.GetHashCode(); if (eventCase_ == EventOneofCase.ClosedConnection) hash ^= ClosedConnection.GetHashCode(); hash ^= (int) eventCase_; if (_unknownFields != null) { hash ^= _unknownFields.GetHashCode(); } return hash; } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public override string ToString() { return pb::JsonFormatter.ToDiagnosticString(this); } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public void WriteTo(pb::CodedOutputStream output) { #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE output.WriteRawMessage(this); #else connections_.WriteTo(output, _repeated_connections_codec); if (eventCase_ == EventOneofCase.NewConnection) { output.WriteRawTag(18); output.WriteMessage(NewConnection); } if (eventCase_ == EventOneofCase.ClosedConnection) { output.WriteRawTag(26); output.WriteMessage(ClosedConnection); } if (_unknownFields != null) { _unknownFields.WriteTo(output); } #endif } #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] void pb::IBufferMessage.InternalWriteTo(ref pb::WriteContext output) { connections_.WriteTo(ref output, _repeated_connections_codec); if (eventCase_ == EventOneofCase.NewConnection) { output.WriteRawTag(18); output.WriteMessage(NewConnection); } if (eventCase_ == EventOneofCase.ClosedConnection) { output.WriteRawTag(26); output.WriteMessage(ClosedConnection); } if (_unknownFields != null) { _unknownFields.WriteTo(ref output); } } #endif [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public int CalculateSize() { int size = 0; size += connections_.CalculateSize(_repeated_connections_codec); if (eventCase_ == EventOneofCase.NewConnection) { size += 1 + pb::CodedOutputStream.ComputeMessageSize(NewConnection); } if (eventCase_ == EventOneofCase.ClosedConnection) { size += 1 + pb::CodedOutputStream.ComputeMessageSize(ClosedConnection); } if (_unknownFields != null) { size += _unknownFields.CalculateSize(); } return size; } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public void MergeFrom(GetConnectionsEvent other) { if (other == null) { return; } connections_.Add(other.connections_); switch (other.EventCase) { case EventOneofCase.NewConnection: if (NewConnection == null) { NewConnection = new global::Plexus.Interop.Apps.Internal.Generated.AppConnectionDescriptor(); } NewConnection.MergeFrom(other.NewConnection); break; case EventOneofCase.ClosedConnection: if (ClosedConnection == null) { ClosedConnection = new global::Plexus.Interop.Apps.Internal.Generated.AppConnectionDescriptor(); } ClosedConnection.MergeFrom(other.ClosedConnection); break; } _unknownFields = pb::UnknownFieldSet.MergeFrom(_unknownFields, other._unknownFields); } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public void MergeFrom(pb::CodedInputStream input) { #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE input.ReadRawMessage(this); #else uint tag; while ((tag = input.ReadTag()) != 0) { switch(tag) { default: _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input); break; case 10: { connections_.AddEntriesFrom(input, _repeated_connections_codec); break; } case 18: { global::Plexus.Interop.Apps.Internal.Generated.AppConnectionDescriptor subBuilder = new global::Plexus.Interop.Apps.Internal.Generated.AppConnectionDescriptor(); if (eventCase_ == EventOneofCase.NewConnection) { subBuilder.MergeFrom(NewConnection); } input.ReadMessage(subBuilder); NewConnection = subBuilder; break; } case 26: { global::Plexus.Interop.Apps.Internal.Generated.AppConnectionDescriptor subBuilder = new global::Plexus.Interop.Apps.Internal.Generated.AppConnectionDescriptor(); if (eventCase_ == EventOneofCase.ClosedConnection) { subBuilder.MergeFrom(ClosedConnection); } input.ReadMessage(subBuilder); ClosedConnection = subBuilder; break; } } } #endif } #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] void pb::IBufferMessage.InternalMergeFrom(ref pb::ParseContext input) { uint tag; while ((tag = input.ReadTag()) != 0) { switch(tag) { default: _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, ref input); break; case 10: { connections_.AddEntriesFrom(ref input, _repeated_connections_codec); break; } case 18: { global::Plexus.Interop.Apps.Internal.Generated.AppConnectionDescriptor subBuilder = new global::Plexus.Interop.Apps.Internal.Generated.AppConnectionDescriptor(); if (eventCase_ == EventOneofCase.NewConnection) { subBuilder.MergeFrom(NewConnection); } input.ReadMessage(subBuilder); NewConnection = subBuilder; break; } case 26: { global::Plexus.Interop.Apps.Internal.Generated.AppConnectionDescriptor subBuilder = new global::Plexus.Interop.Apps.Internal.Generated.AppConnectionDescriptor(); if (eventCase_ == EventOneofCase.ClosedConnection) { subBuilder.MergeFrom(ClosedConnection); } input.ReadMessage(subBuilder); ClosedConnection = subBuilder; break; } } } } #endif } #endregion } #endregion Designer generated code ================================================ FILE: desktop/src/Plexus.Interop.Apps.Manager/Internal/Generated/interop/AppLifecycleService.svc.g.cs ================================================ /** * Copyright 2017-2021 Plexus Interop Deutsche Bank AG * SPDX-License-Identifier: Apache-2.0 * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ // // Generated by the Plexus Interop compiler. DO NOT EDIT! // source: interop\app_lifecycle_service.proto // #pragma warning disable 1591, 0612, 3021 #region Designer generated code namespace Plexus.Interop.Apps.Internal.Generated { using System; using global::Plexus; using global::Plexus.Channels; using global::Plexus.Interop; using global::System.Threading.Tasks; internal static partial class AppLifecycleService { public const string Id = "interop.AppLifecycleService"; public const string ResolveAppMethodId = "ResolveApp"; public const string GetLifecycleEventStreamMethodId = "GetLifecycleEventStream"; public const string GetInvocationEventStreamMethodId = "GetInvocationEventStream"; public const string GetConnectionsMethodId = "GetConnections"; public const string GetConnectionsStreamMethodId = "GetConnectionsStream"; public static readonly AppLifecycleService.Descriptor DefaultDescriptor = CreateDescriptor(); public static AppLifecycleService.Descriptor CreateDescriptor() { return new AppLifecycleService.Descriptor(); } public static AppLifecycleService.Descriptor CreateDescriptor(string alias) { return new AppLifecycleService.Descriptor(alias); } public partial interface IResolveAppProxy { IUnaryMethodCall ResolveApp(global::Plexus.Interop.Apps.Internal.Generated.ResolveAppRequest request); } public partial interface IGetLifecycleEventStreamProxy { IServerStreamingMethodCall GetLifecycleEventStream(global::Google.Protobuf.WellKnownTypes.Empty request); } public partial interface IGetInvocationEventStreamProxy { IServerStreamingMethodCall GetInvocationEventStream(global::Google.Protobuf.WellKnownTypes.Empty request); } public partial interface IGetConnectionsProxy { IUnaryMethodCall GetConnections(global::Plexus.Interop.Apps.Internal.Generated.GetConnectionsRequest request); } public partial interface IGetConnectionsStreamProxy { IServerStreamingMethodCall GetConnectionsStream(global::Plexus.Interop.Apps.Internal.Generated.GetConnectionsRequest request); } public partial interface IResolveAppImpl { Task ResolveApp(global::Plexus.Interop.Apps.Internal.Generated.ResolveAppRequest request, MethodCallContext context); } public partial interface IGetLifecycleEventStreamImpl { Task GetLifecycleEventStream(global::Google.Protobuf.WellKnownTypes.Empty request, IWritableChannel responseStream, MethodCallContext context); } public partial interface IGetInvocationEventStreamImpl { Task GetInvocationEventStream(global::Google.Protobuf.WellKnownTypes.Empty request, IWritableChannel responseStream, MethodCallContext context); } public partial interface IGetConnectionsImpl { Task GetConnections(global::Plexus.Interop.Apps.Internal.Generated.GetConnectionsRequest request, MethodCallContext context); } public partial interface IGetConnectionsStreamImpl { Task GetConnectionsStream(global::Plexus.Interop.Apps.Internal.Generated.GetConnectionsRequest request, IWritableChannel responseStream, MethodCallContext context); } public sealed partial class Descriptor { public UnaryMethod ResolveAppMethod {get; private set; } public ServerStreamingMethod GetLifecycleEventStreamMethod {get; private set; } public ServerStreamingMethod GetInvocationEventStreamMethod {get; private set; } public UnaryMethod GetConnectionsMethod {get; private set; } public ServerStreamingMethod GetConnectionsStreamMethod {get; private set; } public Descriptor() { ResolveAppMethod = Method.Unary(Id, ResolveAppMethodId); GetLifecycleEventStreamMethod = Method.ServerStreaming(Id, GetLifecycleEventStreamMethodId); GetInvocationEventStreamMethod = Method.ServerStreaming(Id, GetInvocationEventStreamMethodId); GetConnectionsMethod = Method.Unary(Id, GetConnectionsMethodId); GetConnectionsStreamMethod = Method.ServerStreaming(Id, GetConnectionsStreamMethodId); } public Descriptor(string alias) { ResolveAppMethod = Method.Unary(Id, alias, ResolveAppMethodId); GetLifecycleEventStreamMethod = Method.ServerStreaming(Id, alias, GetLifecycleEventStreamMethodId); GetInvocationEventStreamMethod = Method.ServerStreaming(Id, alias, GetInvocationEventStreamMethodId); GetConnectionsMethod = Method.Unary(Id, alias, GetConnectionsMethodId); GetConnectionsStreamMethod = Method.ServerStreaming(Id, alias, GetConnectionsStreamMethodId); } } } } #endregion Designer generated code ================================================ FILE: desktop/src/Plexus.Interop.Apps.Manager/Internal/Generated/interop/AppMetadataService.msg.g.cs ================================================ /** * Copyright 2017-2021 Plexus Interop Deutsche Bank AG * SPDX-License-Identifier: Apache-2.0 * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ // // Generated by the protocol buffer compiler. DO NOT EDIT! // source: interop/app_metadata_service.proto // #pragma warning disable 1591, 0612, 3021 #region Designer generated code using pb = global::Google.Protobuf; using pbc = global::Google.Protobuf.Collections; using pbr = global::Google.Protobuf.Reflection; using scg = global::System.Collections.Generic; namespace Plexus.Interop.Apps.Internal.Generated { /// Holder for reflection information generated from interop/app_metadata_service.proto internal static partial class AppMetadataServiceReflection { #region Descriptor /// File descriptor for interop/app_metadata_service.proto public static pbr::FileDescriptor Descriptor { get { return descriptor; } } private static pbr::FileDescriptor descriptor; static AppMetadataServiceReflection() { byte[] descriptorData = global::System.Convert.FromBase64String( string.Concat( "CiJpbnRlcm9wL2FwcF9tZXRhZGF0YV9zZXJ2aWNlLnByb3RvEgdpbnRlcm9w", "GhdpbnRlcm9wL3VuaXF1ZV9pZC5wcm90bxodaW50ZXJvcC9hcHBfbGF1bmNo", "X21vZGUucHJvdG8aJ2ludGVyb3AvYXBwX2Nvbm5lY3Rpb25fZGVzY3JpcHRv", "ci5wcm90bxojaW50ZXJvcC9pbnZvY2F0aW9uX2Rlc2NyaXB0b3IucHJvdG8a", "G2dvb2dsZS9wcm90b2J1Zi9lbXB0eS5wcm90bxoVaW50ZXJvcC9vcHRpb25z", "LnByb3RvImYKF0FwcE1ldGFkYXRhQ2hhbmdlZEV2ZW50EiYKBGFwcHMYASAD", "KAsyGC5pbnRlcm9wLkFwcE1ldGFkYXRhSW5mbzojktsEH2ludGVyb3AuQXBw", "TWV0YWRhdGFDaGFuZ2VkRXZlbnQimAEKD0FwcE1ldGFkYXRhSW5mbxIKCgJp", "ZBgBIAEoCRIUCgxkaXNwbGF5X25hbWUYAiABKAkSEwoLbGF1bmNoZXJfaWQY", "AyABKAkSMQoPbGF1bmNoZXJfcGFyYW1zGAQgAygLMhguaW50ZXJvcC5PcHRp", "b25QYXJhbWV0ZXI6G5LbBBdpbnRlcm9wLkFwcE1ldGFkYXRhSW5mbyKPAQoV", "TWV0YW1vZGVsQ2hhbmdlZEV2ZW50Ei8KDGFwcGxpY2F0aW9ucxgBIAMoCzIZ", "LmludGVyb3AuQXBwTWV0YW1vZGVsSW5mbxIiCghzZXJ2aWNlcxgCIAMoCzIQ", "LmludGVyb3AuU2VydmljZTohktsEHWludGVyb3AuTWV0YW1vZGVsQ2hhbmdl", "ZEV2ZW50IqYBChBBcHBNZXRhbW9kZWxJbmZvEgoKAmlkGAEgASgJEjMKEWNv", "bnN1bWVkX3NlcnZpY2VzGAIgAygLMhguaW50ZXJvcC5Db25zdW1lZFNlcnZp", "Y2USMwoRcHJvdmlkZWRfc2VydmljZXMYAyADKAsyGC5pbnRlcm9wLlByb3Zp", "ZGVkU2VydmljZTocktsEGGludGVyb3AuQXBwTWV0YW1vZGVsSW5mbyJ7Cg9Q", "cm92aWRlZFNlcnZpY2USEgoKc2VydmljZV9pZBgBIAEoCRINCgVhbGlhcxgC", "IAEoCRIoCgdtZXRob2RzGAMgAygLMhcuaW50ZXJvcC5Qcm92aWRlZE1ldGhv", "ZDobktsEF2ludGVyb3AuUHJvdmlkZWRTZXJ2aWNlInsKD0NvbnN1bWVkU2Vy", "dmljZRISCgpzZXJ2aWNlX2lkGAEgASgJEg0KBWFsaWFzGAIgASgJEigKB21l", "dGhvZHMYAyADKAsyFy5pbnRlcm9wLkNvbnN1bWVkTWV0aG9kOhuS2wQXaW50", "ZXJvcC5Db25zdW1lZFNlcnZpY2UiOgoOQ29uc3VtZWRNZXRob2QSDAoEbmFt", "ZRgBIAEoCToaktsEFmludGVyb3AuQ29uc3VtZWRNZXRob2QikgIKDlByb3Zp", "ZGVkTWV0aG9kEgwKBG5hbWUYASABKAkSDQoFdGl0bGUYAiABKAkSQAoLbGF1", "bmNoX21vZGUYAyABKA4yKy5pbnRlcm9wLlByb3ZpZGVkTWV0aG9kLk1ldGFt", "b2RlbExhdW5jaE1vZGUSEgoKdGltZW91dF9tcxgEIAEoBRIpCgdvcHRpb25z", "GAUgAygLMhguaW50ZXJvcC5PcHRpb25QYXJhbWV0ZXIiRgoTTWV0YW1vZGVs", "TGF1bmNoTW9kZRIICgROb25lEAASEgoOU2luZ2xlSW5zdGFuY2UQARIRCg1N", "dWx0aUluc3RhbmNlEAI6GpLbBBZpbnRlcm9wLlByb3ZpZGVkTWV0aG9kInsK", "B1NlcnZpY2USCgoCaWQYASABKAkSJAoHbWV0aG9kcxgCIAMoCzITLmludGVy", "b3AuTWV0aG9kSW5mbxIpCgdvcHRpb25zGAMgAygLMhguaW50ZXJvcC5PcHRp", "b25QYXJhbWV0ZXI6E5LbBA9pbnRlcm9wLlNlcnZpY2Ui8QEKCk1ldGhvZElu", "Zm8SDAoEbmFtZRgBIAEoCRIaChJyZXF1ZXN0X21lc3NhZ2VfaWQYAyABKAkS", "GwoTcmVzcG9uc2VfbWVzc2FnZV9pZBgEIAEoCRIsCgR0eXBlGAUgASgOMh4u", "aW50ZXJvcC5NZXRob2RJbmZvLk1ldGhvZFR5cGUiVgoKTWV0aG9kVHlwZRIJ", "CgVVbmFyeRAAEhMKD1NlcnZlclN0cmVhbWluZxABEhMKD0NsaWVudFN0cmVh", "bWluZxACEhMKD0R1cGxleFN0cmVhbWluZxADOhaS2wQSaW50ZXJvcC5NZXRo", "b2RJbmZvIkoKD09wdGlvblBhcmFtZXRlchILCgNrZXkYASABKAkSDQoFdmFs", "dWUYAiABKAk6G5LbBBdpbnRlcm9wLk9wdGlvblBhcmFtZXRlcjLwAQoSQXBw", "TWV0YWRhdGFTZXJ2aWNlEl4KIEdldEFwcE1ldGFkYXRhQ2hhbmdlZEV2ZW50", "U3RyZWFtEhYuZ29vZ2xlLnByb3RvYnVmLkVtcHR5GiAuaW50ZXJvcC5BcHBN", "ZXRhZGF0YUNoYW5nZWRFdmVudDABEloKHkdldE1ldGFtb2RlbENoYW5nZWRF", "dmVudFN0cmVhbRIWLmdvb2dsZS5wcm90b2J1Zi5FbXB0eRoeLmludGVyb3Au", "TWV0YW1vZGVsQ2hhbmdlZEV2ZW50MAEaHpLbBBppbnRlcm9wLkFwcE1ldGFk", "YXRhU2VydmljZUIpqgImUGxleHVzLkludGVyb3AuQXBwcy5JbnRlcm5hbC5H", "ZW5lcmF0ZWRiBnByb3RvMw==")); descriptor = pbr::FileDescriptor.FromGeneratedCode(descriptorData, new pbr::FileDescriptor[] { global::Plexus.Interop.Apps.Internal.Generated.UniqueIdReflection.Descriptor, global::Plexus.Interop.Apps.Internal.Generated.AppLaunchModeReflection.Descriptor, global::Plexus.Interop.Apps.Internal.Generated.AppConnectionDescriptorReflection.Descriptor, global::Plexus.Interop.Apps.Internal.Generated.InvocationDescriptorReflection.Descriptor, global::Google.Protobuf.WellKnownTypes.EmptyReflection.Descriptor, global::Plexus.Interop.Apps.Internal.Generated.OptionsReflection.Descriptor, }, new pbr::GeneratedClrTypeInfo(null, null, new pbr::GeneratedClrTypeInfo[] { new pbr::GeneratedClrTypeInfo(typeof(global::Plexus.Interop.Apps.Internal.Generated.AppMetadataChangedEvent), global::Plexus.Interop.Apps.Internal.Generated.AppMetadataChangedEvent.Parser, new[]{ "Apps" }, null, null, null, null), new pbr::GeneratedClrTypeInfo(typeof(global::Plexus.Interop.Apps.Internal.Generated.AppMetadataInfo), global::Plexus.Interop.Apps.Internal.Generated.AppMetadataInfo.Parser, new[]{ "Id", "DisplayName", "LauncherId", "LauncherParams" }, null, null, null, null), new pbr::GeneratedClrTypeInfo(typeof(global::Plexus.Interop.Apps.Internal.Generated.MetamodelChangedEvent), global::Plexus.Interop.Apps.Internal.Generated.MetamodelChangedEvent.Parser, new[]{ "Applications", "Services" }, null, null, null, null), new pbr::GeneratedClrTypeInfo(typeof(global::Plexus.Interop.Apps.Internal.Generated.AppMetamodelInfo), global::Plexus.Interop.Apps.Internal.Generated.AppMetamodelInfo.Parser, new[]{ "Id", "ConsumedServices", "ProvidedServices" }, null, null, null, null), new pbr::GeneratedClrTypeInfo(typeof(global::Plexus.Interop.Apps.Internal.Generated.ProvidedService), global::Plexus.Interop.Apps.Internal.Generated.ProvidedService.Parser, new[]{ "ServiceId", "Alias", "Methods" }, null, null, null, null), new pbr::GeneratedClrTypeInfo(typeof(global::Plexus.Interop.Apps.Internal.Generated.ConsumedService), global::Plexus.Interop.Apps.Internal.Generated.ConsumedService.Parser, new[]{ "ServiceId", "Alias", "Methods" }, null, null, null, null), new pbr::GeneratedClrTypeInfo(typeof(global::Plexus.Interop.Apps.Internal.Generated.ConsumedMethod), global::Plexus.Interop.Apps.Internal.Generated.ConsumedMethod.Parser, new[]{ "Name" }, null, null, null, null), new pbr::GeneratedClrTypeInfo(typeof(global::Plexus.Interop.Apps.Internal.Generated.ProvidedMethod), global::Plexus.Interop.Apps.Internal.Generated.ProvidedMethod.Parser, new[]{ "Name", "Title", "LaunchMode", "TimeoutMs", "Options" }, null, new[]{ typeof(global::Plexus.Interop.Apps.Internal.Generated.ProvidedMethod.Types.MetamodelLaunchMode) }, null, null), new pbr::GeneratedClrTypeInfo(typeof(global::Plexus.Interop.Apps.Internal.Generated.Service), global::Plexus.Interop.Apps.Internal.Generated.Service.Parser, new[]{ "Id", "Methods", "Options" }, null, null, null, null), new pbr::GeneratedClrTypeInfo(typeof(global::Plexus.Interop.Apps.Internal.Generated.MethodInfo), global::Plexus.Interop.Apps.Internal.Generated.MethodInfo.Parser, new[]{ "Name", "RequestMessageId", "ResponseMessageId", "Type" }, null, new[]{ typeof(global::Plexus.Interop.Apps.Internal.Generated.MethodInfo.Types.MethodType) }, null, null), new pbr::GeneratedClrTypeInfo(typeof(global::Plexus.Interop.Apps.Internal.Generated.OptionParameter), global::Plexus.Interop.Apps.Internal.Generated.OptionParameter.Parser, new[]{ "Key", "Value" }, null, null, null, null) })); } #endregion } #region Messages internal sealed partial class AppMetadataChangedEvent : pb::IMessage #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE , pb::IBufferMessage #endif { private static readonly pb::MessageParser _parser = new pb::MessageParser(() => new AppMetadataChangedEvent()); private pb::UnknownFieldSet _unknownFields; [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public static pb::MessageParser Parser { get { return _parser; } } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public static pbr::MessageDescriptor Descriptor { get { return global::Plexus.Interop.Apps.Internal.Generated.AppMetadataServiceReflection.Descriptor.MessageTypes[0]; } } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] pbr::MessageDescriptor pb::IMessage.Descriptor { get { return Descriptor; } } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public AppMetadataChangedEvent() { OnConstruction(); } partial void OnConstruction(); [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public AppMetadataChangedEvent(AppMetadataChangedEvent other) : this() { apps_ = other.apps_.Clone(); _unknownFields = pb::UnknownFieldSet.Clone(other._unknownFields); } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public AppMetadataChangedEvent Clone() { return new AppMetadataChangedEvent(this); } /// Field number for the "apps" field. public const int AppsFieldNumber = 1; private static readonly pb::FieldCodec _repeated_apps_codec = pb::FieldCodec.ForMessage(10, global::Plexus.Interop.Apps.Internal.Generated.AppMetadataInfo.Parser); private readonly pbc::RepeatedField apps_ = new pbc::RepeatedField(); [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public pbc::RepeatedField Apps { get { return apps_; } } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public override bool Equals(object other) { return Equals(other as AppMetadataChangedEvent); } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public bool Equals(AppMetadataChangedEvent other) { if (ReferenceEquals(other, null)) { return false; } if (ReferenceEquals(other, this)) { return true; } if(!apps_.Equals(other.apps_)) return false; return Equals(_unknownFields, other._unknownFields); } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public override int GetHashCode() { int hash = 1; hash ^= apps_.GetHashCode(); if (_unknownFields != null) { hash ^= _unknownFields.GetHashCode(); } return hash; } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public override string ToString() { return pb::JsonFormatter.ToDiagnosticString(this); } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public void WriteTo(pb::CodedOutputStream output) { #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE output.WriteRawMessage(this); #else apps_.WriteTo(output, _repeated_apps_codec); if (_unknownFields != null) { _unknownFields.WriteTo(output); } #endif } #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] void pb::IBufferMessage.InternalWriteTo(ref pb::WriteContext output) { apps_.WriteTo(ref output, _repeated_apps_codec); if (_unknownFields != null) { _unknownFields.WriteTo(ref output); } } #endif [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public int CalculateSize() { int size = 0; size += apps_.CalculateSize(_repeated_apps_codec); if (_unknownFields != null) { size += _unknownFields.CalculateSize(); } return size; } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public void MergeFrom(AppMetadataChangedEvent other) { if (other == null) { return; } apps_.Add(other.apps_); _unknownFields = pb::UnknownFieldSet.MergeFrom(_unknownFields, other._unknownFields); } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public void MergeFrom(pb::CodedInputStream input) { #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE input.ReadRawMessage(this); #else uint tag; while ((tag = input.ReadTag()) != 0) { switch(tag) { default: _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input); break; case 10: { apps_.AddEntriesFrom(input, _repeated_apps_codec); break; } } } #endif } #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] void pb::IBufferMessage.InternalMergeFrom(ref pb::ParseContext input) { uint tag; while ((tag = input.ReadTag()) != 0) { switch(tag) { default: _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, ref input); break; case 10: { apps_.AddEntriesFrom(ref input, _repeated_apps_codec); break; } } } } #endif } internal sealed partial class AppMetadataInfo : pb::IMessage #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE , pb::IBufferMessage #endif { private static readonly pb::MessageParser _parser = new pb::MessageParser(() => new AppMetadataInfo()); private pb::UnknownFieldSet _unknownFields; [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public static pb::MessageParser Parser { get { return _parser; } } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public static pbr::MessageDescriptor Descriptor { get { return global::Plexus.Interop.Apps.Internal.Generated.AppMetadataServiceReflection.Descriptor.MessageTypes[1]; } } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] pbr::MessageDescriptor pb::IMessage.Descriptor { get { return Descriptor; } } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public AppMetadataInfo() { OnConstruction(); } partial void OnConstruction(); [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public AppMetadataInfo(AppMetadataInfo other) : this() { id_ = other.id_; displayName_ = other.displayName_; launcherId_ = other.launcherId_; launcherParams_ = other.launcherParams_.Clone(); _unknownFields = pb::UnknownFieldSet.Clone(other._unknownFields); } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public AppMetadataInfo Clone() { return new AppMetadataInfo(this); } /// Field number for the "id" field. public const int IdFieldNumber = 1; private string id_ = ""; [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public string Id { get { return id_; } set { id_ = pb::ProtoPreconditions.CheckNotNull(value, "value"); } } /// Field number for the "display_name" field. public const int DisplayNameFieldNumber = 2; private string displayName_ = ""; [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public string DisplayName { get { return displayName_; } set { displayName_ = pb::ProtoPreconditions.CheckNotNull(value, "value"); } } /// Field number for the "launcher_id" field. public const int LauncherIdFieldNumber = 3; private string launcherId_ = ""; [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public string LauncherId { get { return launcherId_; } set { launcherId_ = pb::ProtoPreconditions.CheckNotNull(value, "value"); } } /// Field number for the "launcher_params" field. public const int LauncherParamsFieldNumber = 4; private static readonly pb::FieldCodec _repeated_launcherParams_codec = pb::FieldCodec.ForMessage(34, global::Plexus.Interop.Apps.Internal.Generated.OptionParameter.Parser); private readonly pbc::RepeatedField launcherParams_ = new pbc::RepeatedField(); [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public pbc::RepeatedField LauncherParams { get { return launcherParams_; } } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public override bool Equals(object other) { return Equals(other as AppMetadataInfo); } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public bool Equals(AppMetadataInfo other) { if (ReferenceEquals(other, null)) { return false; } if (ReferenceEquals(other, this)) { return true; } if (Id != other.Id) return false; if (DisplayName != other.DisplayName) return false; if (LauncherId != other.LauncherId) return false; if(!launcherParams_.Equals(other.launcherParams_)) return false; return Equals(_unknownFields, other._unknownFields); } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public override int GetHashCode() { int hash = 1; if (Id.Length != 0) hash ^= Id.GetHashCode(); if (DisplayName.Length != 0) hash ^= DisplayName.GetHashCode(); if (LauncherId.Length != 0) hash ^= LauncherId.GetHashCode(); hash ^= launcherParams_.GetHashCode(); if (_unknownFields != null) { hash ^= _unknownFields.GetHashCode(); } return hash; } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public override string ToString() { return pb::JsonFormatter.ToDiagnosticString(this); } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public void WriteTo(pb::CodedOutputStream output) { #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE output.WriteRawMessage(this); #else if (Id.Length != 0) { output.WriteRawTag(10); output.WriteString(Id); } if (DisplayName.Length != 0) { output.WriteRawTag(18); output.WriteString(DisplayName); } if (LauncherId.Length != 0) { output.WriteRawTag(26); output.WriteString(LauncherId); } launcherParams_.WriteTo(output, _repeated_launcherParams_codec); if (_unknownFields != null) { _unknownFields.WriteTo(output); } #endif } #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] void pb::IBufferMessage.InternalWriteTo(ref pb::WriteContext output) { if (Id.Length != 0) { output.WriteRawTag(10); output.WriteString(Id); } if (DisplayName.Length != 0) { output.WriteRawTag(18); output.WriteString(DisplayName); } if (LauncherId.Length != 0) { output.WriteRawTag(26); output.WriteString(LauncherId); } launcherParams_.WriteTo(ref output, _repeated_launcherParams_codec); if (_unknownFields != null) { _unknownFields.WriteTo(ref output); } } #endif [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public int CalculateSize() { int size = 0; if (Id.Length != 0) { size += 1 + pb::CodedOutputStream.ComputeStringSize(Id); } if (DisplayName.Length != 0) { size += 1 + pb::CodedOutputStream.ComputeStringSize(DisplayName); } if (LauncherId.Length != 0) { size += 1 + pb::CodedOutputStream.ComputeStringSize(LauncherId); } size += launcherParams_.CalculateSize(_repeated_launcherParams_codec); if (_unknownFields != null) { size += _unknownFields.CalculateSize(); } return size; } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public void MergeFrom(AppMetadataInfo other) { if (other == null) { return; } if (other.Id.Length != 0) { Id = other.Id; } if (other.DisplayName.Length != 0) { DisplayName = other.DisplayName; } if (other.LauncherId.Length != 0) { LauncherId = other.LauncherId; } launcherParams_.Add(other.launcherParams_); _unknownFields = pb::UnknownFieldSet.MergeFrom(_unknownFields, other._unknownFields); } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public void MergeFrom(pb::CodedInputStream input) { #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE input.ReadRawMessage(this); #else uint tag; while ((tag = input.ReadTag()) != 0) { switch(tag) { default: _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input); break; case 10: { Id = input.ReadString(); break; } case 18: { DisplayName = input.ReadString(); break; } case 26: { LauncherId = input.ReadString(); break; } case 34: { launcherParams_.AddEntriesFrom(input, _repeated_launcherParams_codec); break; } } } #endif } #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] void pb::IBufferMessage.InternalMergeFrom(ref pb::ParseContext input) { uint tag; while ((tag = input.ReadTag()) != 0) { switch(tag) { default: _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, ref input); break; case 10: { Id = input.ReadString(); break; } case 18: { DisplayName = input.ReadString(); break; } case 26: { LauncherId = input.ReadString(); break; } case 34: { launcherParams_.AddEntriesFrom(ref input, _repeated_launcherParams_codec); break; } } } } #endif } internal sealed partial class MetamodelChangedEvent : pb::IMessage #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE , pb::IBufferMessage #endif { private static readonly pb::MessageParser _parser = new pb::MessageParser(() => new MetamodelChangedEvent()); private pb::UnknownFieldSet _unknownFields; [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public static pb::MessageParser Parser { get { return _parser; } } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public static pbr::MessageDescriptor Descriptor { get { return global::Plexus.Interop.Apps.Internal.Generated.AppMetadataServiceReflection.Descriptor.MessageTypes[2]; } } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] pbr::MessageDescriptor pb::IMessage.Descriptor { get { return Descriptor; } } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public MetamodelChangedEvent() { OnConstruction(); } partial void OnConstruction(); [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public MetamodelChangedEvent(MetamodelChangedEvent other) : this() { applications_ = other.applications_.Clone(); services_ = other.services_.Clone(); _unknownFields = pb::UnknownFieldSet.Clone(other._unknownFields); } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public MetamodelChangedEvent Clone() { return new MetamodelChangedEvent(this); } /// Field number for the "applications" field. public const int ApplicationsFieldNumber = 1; private static readonly pb::FieldCodec _repeated_applications_codec = pb::FieldCodec.ForMessage(10, global::Plexus.Interop.Apps.Internal.Generated.AppMetamodelInfo.Parser); private readonly pbc::RepeatedField applications_ = new pbc::RepeatedField(); [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public pbc::RepeatedField Applications { get { return applications_; } } /// Field number for the "services" field. public const int ServicesFieldNumber = 2; private static readonly pb::FieldCodec _repeated_services_codec = pb::FieldCodec.ForMessage(18, global::Plexus.Interop.Apps.Internal.Generated.Service.Parser); private readonly pbc::RepeatedField services_ = new pbc::RepeatedField(); [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public pbc::RepeatedField Services { get { return services_; } } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public override bool Equals(object other) { return Equals(other as MetamodelChangedEvent); } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public bool Equals(MetamodelChangedEvent other) { if (ReferenceEquals(other, null)) { return false; } if (ReferenceEquals(other, this)) { return true; } if(!applications_.Equals(other.applications_)) return false; if(!services_.Equals(other.services_)) return false; return Equals(_unknownFields, other._unknownFields); } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public override int GetHashCode() { int hash = 1; hash ^= applications_.GetHashCode(); hash ^= services_.GetHashCode(); if (_unknownFields != null) { hash ^= _unknownFields.GetHashCode(); } return hash; } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public override string ToString() { return pb::JsonFormatter.ToDiagnosticString(this); } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public void WriteTo(pb::CodedOutputStream output) { #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE output.WriteRawMessage(this); #else applications_.WriteTo(output, _repeated_applications_codec); services_.WriteTo(output, _repeated_services_codec); if (_unknownFields != null) { _unknownFields.WriteTo(output); } #endif } #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] void pb::IBufferMessage.InternalWriteTo(ref pb::WriteContext output) { applications_.WriteTo(ref output, _repeated_applications_codec); services_.WriteTo(ref output, _repeated_services_codec); if (_unknownFields != null) { _unknownFields.WriteTo(ref output); } } #endif [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public int CalculateSize() { int size = 0; size += applications_.CalculateSize(_repeated_applications_codec); size += services_.CalculateSize(_repeated_services_codec); if (_unknownFields != null) { size += _unknownFields.CalculateSize(); } return size; } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public void MergeFrom(MetamodelChangedEvent other) { if (other == null) { return; } applications_.Add(other.applications_); services_.Add(other.services_); _unknownFields = pb::UnknownFieldSet.MergeFrom(_unknownFields, other._unknownFields); } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public void MergeFrom(pb::CodedInputStream input) { #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE input.ReadRawMessage(this); #else uint tag; while ((tag = input.ReadTag()) != 0) { switch(tag) { default: _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input); break; case 10: { applications_.AddEntriesFrom(input, _repeated_applications_codec); break; } case 18: { services_.AddEntriesFrom(input, _repeated_services_codec); break; } } } #endif } #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] void pb::IBufferMessage.InternalMergeFrom(ref pb::ParseContext input) { uint tag; while ((tag = input.ReadTag()) != 0) { switch(tag) { default: _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, ref input); break; case 10: { applications_.AddEntriesFrom(ref input, _repeated_applications_codec); break; } case 18: { services_.AddEntriesFrom(ref input, _repeated_services_codec); break; } } } } #endif } internal sealed partial class AppMetamodelInfo : pb::IMessage #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE , pb::IBufferMessage #endif { private static readonly pb::MessageParser _parser = new pb::MessageParser(() => new AppMetamodelInfo()); private pb::UnknownFieldSet _unknownFields; [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public static pb::MessageParser Parser { get { return _parser; } } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public static pbr::MessageDescriptor Descriptor { get { return global::Plexus.Interop.Apps.Internal.Generated.AppMetadataServiceReflection.Descriptor.MessageTypes[3]; } } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] pbr::MessageDescriptor pb::IMessage.Descriptor { get { return Descriptor; } } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public AppMetamodelInfo() { OnConstruction(); } partial void OnConstruction(); [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public AppMetamodelInfo(AppMetamodelInfo other) : this() { id_ = other.id_; consumedServices_ = other.consumedServices_.Clone(); providedServices_ = other.providedServices_.Clone(); _unknownFields = pb::UnknownFieldSet.Clone(other._unknownFields); } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public AppMetamodelInfo Clone() { return new AppMetamodelInfo(this); } /// Field number for the "id" field. public const int IdFieldNumber = 1; private string id_ = ""; [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public string Id { get { return id_; } set { id_ = pb::ProtoPreconditions.CheckNotNull(value, "value"); } } /// Field number for the "consumed_services" field. public const int ConsumedServicesFieldNumber = 2; private static readonly pb::FieldCodec _repeated_consumedServices_codec = pb::FieldCodec.ForMessage(18, global::Plexus.Interop.Apps.Internal.Generated.ConsumedService.Parser); private readonly pbc::RepeatedField consumedServices_ = new pbc::RepeatedField(); [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public pbc::RepeatedField ConsumedServices { get { return consumedServices_; } } /// Field number for the "provided_services" field. public const int ProvidedServicesFieldNumber = 3; private static readonly pb::FieldCodec _repeated_providedServices_codec = pb::FieldCodec.ForMessage(26, global::Plexus.Interop.Apps.Internal.Generated.ProvidedService.Parser); private readonly pbc::RepeatedField providedServices_ = new pbc::RepeatedField(); [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public pbc::RepeatedField ProvidedServices { get { return providedServices_; } } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public override bool Equals(object other) { return Equals(other as AppMetamodelInfo); } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public bool Equals(AppMetamodelInfo other) { if (ReferenceEquals(other, null)) { return false; } if (ReferenceEquals(other, this)) { return true; } if (Id != other.Id) return false; if(!consumedServices_.Equals(other.consumedServices_)) return false; if(!providedServices_.Equals(other.providedServices_)) return false; return Equals(_unknownFields, other._unknownFields); } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public override int GetHashCode() { int hash = 1; if (Id.Length != 0) hash ^= Id.GetHashCode(); hash ^= consumedServices_.GetHashCode(); hash ^= providedServices_.GetHashCode(); if (_unknownFields != null) { hash ^= _unknownFields.GetHashCode(); } return hash; } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public override string ToString() { return pb::JsonFormatter.ToDiagnosticString(this); } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public void WriteTo(pb::CodedOutputStream output) { #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE output.WriteRawMessage(this); #else if (Id.Length != 0) { output.WriteRawTag(10); output.WriteString(Id); } consumedServices_.WriteTo(output, _repeated_consumedServices_codec); providedServices_.WriteTo(output, _repeated_providedServices_codec); if (_unknownFields != null) { _unknownFields.WriteTo(output); } #endif } #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] void pb::IBufferMessage.InternalWriteTo(ref pb::WriteContext output) { if (Id.Length != 0) { output.WriteRawTag(10); output.WriteString(Id); } consumedServices_.WriteTo(ref output, _repeated_consumedServices_codec); providedServices_.WriteTo(ref output, _repeated_providedServices_codec); if (_unknownFields != null) { _unknownFields.WriteTo(ref output); } } #endif [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public int CalculateSize() { int size = 0; if (Id.Length != 0) { size += 1 + pb::CodedOutputStream.ComputeStringSize(Id); } size += consumedServices_.CalculateSize(_repeated_consumedServices_codec); size += providedServices_.CalculateSize(_repeated_providedServices_codec); if (_unknownFields != null) { size += _unknownFields.CalculateSize(); } return size; } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public void MergeFrom(AppMetamodelInfo other) { if (other == null) { return; } if (other.Id.Length != 0) { Id = other.Id; } consumedServices_.Add(other.consumedServices_); providedServices_.Add(other.providedServices_); _unknownFields = pb::UnknownFieldSet.MergeFrom(_unknownFields, other._unknownFields); } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public void MergeFrom(pb::CodedInputStream input) { #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE input.ReadRawMessage(this); #else uint tag; while ((tag = input.ReadTag()) != 0) { switch(tag) { default: _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input); break; case 10: { Id = input.ReadString(); break; } case 18: { consumedServices_.AddEntriesFrom(input, _repeated_consumedServices_codec); break; } case 26: { providedServices_.AddEntriesFrom(input, _repeated_providedServices_codec); break; } } } #endif } #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] void pb::IBufferMessage.InternalMergeFrom(ref pb::ParseContext input) { uint tag; while ((tag = input.ReadTag()) != 0) { switch(tag) { default: _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, ref input); break; case 10: { Id = input.ReadString(); break; } case 18: { consumedServices_.AddEntriesFrom(ref input, _repeated_consumedServices_codec); break; } case 26: { providedServices_.AddEntriesFrom(ref input, _repeated_providedServices_codec); break; } } } } #endif } internal sealed partial class ProvidedService : pb::IMessage #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE , pb::IBufferMessage #endif { private static readonly pb::MessageParser _parser = new pb::MessageParser(() => new ProvidedService()); private pb::UnknownFieldSet _unknownFields; [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public static pb::MessageParser Parser { get { return _parser; } } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public static pbr::MessageDescriptor Descriptor { get { return global::Plexus.Interop.Apps.Internal.Generated.AppMetadataServiceReflection.Descriptor.MessageTypes[4]; } } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] pbr::MessageDescriptor pb::IMessage.Descriptor { get { return Descriptor; } } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public ProvidedService() { OnConstruction(); } partial void OnConstruction(); [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public ProvidedService(ProvidedService other) : this() { serviceId_ = other.serviceId_; alias_ = other.alias_; methods_ = other.methods_.Clone(); _unknownFields = pb::UnknownFieldSet.Clone(other._unknownFields); } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public ProvidedService Clone() { return new ProvidedService(this); } /// Field number for the "service_id" field. public const int ServiceIdFieldNumber = 1; private string serviceId_ = ""; [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public string ServiceId { get { return serviceId_; } set { serviceId_ = pb::ProtoPreconditions.CheckNotNull(value, "value"); } } /// Field number for the "alias" field. public const int AliasFieldNumber = 2; private string alias_ = ""; [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public string Alias { get { return alias_; } set { alias_ = pb::ProtoPreconditions.CheckNotNull(value, "value"); } } /// Field number for the "methods" field. public const int MethodsFieldNumber = 3; private static readonly pb::FieldCodec _repeated_methods_codec = pb::FieldCodec.ForMessage(26, global::Plexus.Interop.Apps.Internal.Generated.ProvidedMethod.Parser); private readonly pbc::RepeatedField methods_ = new pbc::RepeatedField(); [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public pbc::RepeatedField Methods { get { return methods_; } } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public override bool Equals(object other) { return Equals(other as ProvidedService); } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public bool Equals(ProvidedService other) { if (ReferenceEquals(other, null)) { return false; } if (ReferenceEquals(other, this)) { return true; } if (ServiceId != other.ServiceId) return false; if (Alias != other.Alias) return false; if(!methods_.Equals(other.methods_)) return false; return Equals(_unknownFields, other._unknownFields); } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public override int GetHashCode() { int hash = 1; if (ServiceId.Length != 0) hash ^= ServiceId.GetHashCode(); if (Alias.Length != 0) hash ^= Alias.GetHashCode(); hash ^= methods_.GetHashCode(); if (_unknownFields != null) { hash ^= _unknownFields.GetHashCode(); } return hash; } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public override string ToString() { return pb::JsonFormatter.ToDiagnosticString(this); } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public void WriteTo(pb::CodedOutputStream output) { #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE output.WriteRawMessage(this); #else if (ServiceId.Length != 0) { output.WriteRawTag(10); output.WriteString(ServiceId); } if (Alias.Length != 0) { output.WriteRawTag(18); output.WriteString(Alias); } methods_.WriteTo(output, _repeated_methods_codec); if (_unknownFields != null) { _unknownFields.WriteTo(output); } #endif } #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] void pb::IBufferMessage.InternalWriteTo(ref pb::WriteContext output) { if (ServiceId.Length != 0) { output.WriteRawTag(10); output.WriteString(ServiceId); } if (Alias.Length != 0) { output.WriteRawTag(18); output.WriteString(Alias); } methods_.WriteTo(ref output, _repeated_methods_codec); if (_unknownFields != null) { _unknownFields.WriteTo(ref output); } } #endif [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public int CalculateSize() { int size = 0; if (ServiceId.Length != 0) { size += 1 + pb::CodedOutputStream.ComputeStringSize(ServiceId); } if (Alias.Length != 0) { size += 1 + pb::CodedOutputStream.ComputeStringSize(Alias); } size += methods_.CalculateSize(_repeated_methods_codec); if (_unknownFields != null) { size += _unknownFields.CalculateSize(); } return size; } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public void MergeFrom(ProvidedService other) { if (other == null) { return; } if (other.ServiceId.Length != 0) { ServiceId = other.ServiceId; } if (other.Alias.Length != 0) { Alias = other.Alias; } methods_.Add(other.methods_); _unknownFields = pb::UnknownFieldSet.MergeFrom(_unknownFields, other._unknownFields); } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public void MergeFrom(pb::CodedInputStream input) { #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE input.ReadRawMessage(this); #else uint tag; while ((tag = input.ReadTag()) != 0) { switch(tag) { default: _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input); break; case 10: { ServiceId = input.ReadString(); break; } case 18: { Alias = input.ReadString(); break; } case 26: { methods_.AddEntriesFrom(input, _repeated_methods_codec); break; } } } #endif } #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] void pb::IBufferMessage.InternalMergeFrom(ref pb::ParseContext input) { uint tag; while ((tag = input.ReadTag()) != 0) { switch(tag) { default: _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, ref input); break; case 10: { ServiceId = input.ReadString(); break; } case 18: { Alias = input.ReadString(); break; } case 26: { methods_.AddEntriesFrom(ref input, _repeated_methods_codec); break; } } } } #endif } internal sealed partial class ConsumedService : pb::IMessage #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE , pb::IBufferMessage #endif { private static readonly pb::MessageParser _parser = new pb::MessageParser(() => new ConsumedService()); private pb::UnknownFieldSet _unknownFields; [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public static pb::MessageParser Parser { get { return _parser; } } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public static pbr::MessageDescriptor Descriptor { get { return global::Plexus.Interop.Apps.Internal.Generated.AppMetadataServiceReflection.Descriptor.MessageTypes[5]; } } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] pbr::MessageDescriptor pb::IMessage.Descriptor { get { return Descriptor; } } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public ConsumedService() { OnConstruction(); } partial void OnConstruction(); [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public ConsumedService(ConsumedService other) : this() { serviceId_ = other.serviceId_; alias_ = other.alias_; methods_ = other.methods_.Clone(); _unknownFields = pb::UnknownFieldSet.Clone(other._unknownFields); } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public ConsumedService Clone() { return new ConsumedService(this); } /// Field number for the "service_id" field. public const int ServiceIdFieldNumber = 1; private string serviceId_ = ""; [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public string ServiceId { get { return serviceId_; } set { serviceId_ = pb::ProtoPreconditions.CheckNotNull(value, "value"); } } /// Field number for the "alias" field. public const int AliasFieldNumber = 2; private string alias_ = ""; [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public string Alias { get { return alias_; } set { alias_ = pb::ProtoPreconditions.CheckNotNull(value, "value"); } } /// Field number for the "methods" field. public const int MethodsFieldNumber = 3; private static readonly pb::FieldCodec _repeated_methods_codec = pb::FieldCodec.ForMessage(26, global::Plexus.Interop.Apps.Internal.Generated.ConsumedMethod.Parser); private readonly pbc::RepeatedField methods_ = new pbc::RepeatedField(); [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public pbc::RepeatedField Methods { get { return methods_; } } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public override bool Equals(object other) { return Equals(other as ConsumedService); } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public bool Equals(ConsumedService other) { if (ReferenceEquals(other, null)) { return false; } if (ReferenceEquals(other, this)) { return true; } if (ServiceId != other.ServiceId) return false; if (Alias != other.Alias) return false; if(!methods_.Equals(other.methods_)) return false; return Equals(_unknownFields, other._unknownFields); } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public override int GetHashCode() { int hash = 1; if (ServiceId.Length != 0) hash ^= ServiceId.GetHashCode(); if (Alias.Length != 0) hash ^= Alias.GetHashCode(); hash ^= methods_.GetHashCode(); if (_unknownFields != null) { hash ^= _unknownFields.GetHashCode(); } return hash; } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public override string ToString() { return pb::JsonFormatter.ToDiagnosticString(this); } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public void WriteTo(pb::CodedOutputStream output) { #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE output.WriteRawMessage(this); #else if (ServiceId.Length != 0) { output.WriteRawTag(10); output.WriteString(ServiceId); } if (Alias.Length != 0) { output.WriteRawTag(18); output.WriteString(Alias); } methods_.WriteTo(output, _repeated_methods_codec); if (_unknownFields != null) { _unknownFields.WriteTo(output); } #endif } #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] void pb::IBufferMessage.InternalWriteTo(ref pb::WriteContext output) { if (ServiceId.Length != 0) { output.WriteRawTag(10); output.WriteString(ServiceId); } if (Alias.Length != 0) { output.WriteRawTag(18); output.WriteString(Alias); } methods_.WriteTo(ref output, _repeated_methods_codec); if (_unknownFields != null) { _unknownFields.WriteTo(ref output); } } #endif [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public int CalculateSize() { int size = 0; if (ServiceId.Length != 0) { size += 1 + pb::CodedOutputStream.ComputeStringSize(ServiceId); } if (Alias.Length != 0) { size += 1 + pb::CodedOutputStream.ComputeStringSize(Alias); } size += methods_.CalculateSize(_repeated_methods_codec); if (_unknownFields != null) { size += _unknownFields.CalculateSize(); } return size; } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public void MergeFrom(ConsumedService other) { if (other == null) { return; } if (other.ServiceId.Length != 0) { ServiceId = other.ServiceId; } if (other.Alias.Length != 0) { Alias = other.Alias; } methods_.Add(other.methods_); _unknownFields = pb::UnknownFieldSet.MergeFrom(_unknownFields, other._unknownFields); } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public void MergeFrom(pb::CodedInputStream input) { #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE input.ReadRawMessage(this); #else uint tag; while ((tag = input.ReadTag()) != 0) { switch(tag) { default: _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input); break; case 10: { ServiceId = input.ReadString(); break; } case 18: { Alias = input.ReadString(); break; } case 26: { methods_.AddEntriesFrom(input, _repeated_methods_codec); break; } } } #endif } #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] void pb::IBufferMessage.InternalMergeFrom(ref pb::ParseContext input) { uint tag; while ((tag = input.ReadTag()) != 0) { switch(tag) { default: _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, ref input); break; case 10: { ServiceId = input.ReadString(); break; } case 18: { Alias = input.ReadString(); break; } case 26: { methods_.AddEntriesFrom(ref input, _repeated_methods_codec); break; } } } } #endif } internal sealed partial class ConsumedMethod : pb::IMessage #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE , pb::IBufferMessage #endif { private static readonly pb::MessageParser _parser = new pb::MessageParser(() => new ConsumedMethod()); private pb::UnknownFieldSet _unknownFields; [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public static pb::MessageParser Parser { get { return _parser; } } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public static pbr::MessageDescriptor Descriptor { get { return global::Plexus.Interop.Apps.Internal.Generated.AppMetadataServiceReflection.Descriptor.MessageTypes[6]; } } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] pbr::MessageDescriptor pb::IMessage.Descriptor { get { return Descriptor; } } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public ConsumedMethod() { OnConstruction(); } partial void OnConstruction(); [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public ConsumedMethod(ConsumedMethod other) : this() { name_ = other.name_; _unknownFields = pb::UnknownFieldSet.Clone(other._unknownFields); } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public ConsumedMethod Clone() { return new ConsumedMethod(this); } /// Field number for the "name" field. public const int NameFieldNumber = 1; private string name_ = ""; [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public string Name { get { return name_; } set { name_ = pb::ProtoPreconditions.CheckNotNull(value, "value"); } } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public override bool Equals(object other) { return Equals(other as ConsumedMethod); } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public bool Equals(ConsumedMethod other) { if (ReferenceEquals(other, null)) { return false; } if (ReferenceEquals(other, this)) { return true; } if (Name != other.Name) return false; return Equals(_unknownFields, other._unknownFields); } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public override int GetHashCode() { int hash = 1; if (Name.Length != 0) hash ^= Name.GetHashCode(); if (_unknownFields != null) { hash ^= _unknownFields.GetHashCode(); } return hash; } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public override string ToString() { return pb::JsonFormatter.ToDiagnosticString(this); } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public void WriteTo(pb::CodedOutputStream output) { #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE output.WriteRawMessage(this); #else if (Name.Length != 0) { output.WriteRawTag(10); output.WriteString(Name); } if (_unknownFields != null) { _unknownFields.WriteTo(output); } #endif } #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] void pb::IBufferMessage.InternalWriteTo(ref pb::WriteContext output) { if (Name.Length != 0) { output.WriteRawTag(10); output.WriteString(Name); } if (_unknownFields != null) { _unknownFields.WriteTo(ref output); } } #endif [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public int CalculateSize() { int size = 0; if (Name.Length != 0) { size += 1 + pb::CodedOutputStream.ComputeStringSize(Name); } if (_unknownFields != null) { size += _unknownFields.CalculateSize(); } return size; } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public void MergeFrom(ConsumedMethod other) { if (other == null) { return; } if (other.Name.Length != 0) { Name = other.Name; } _unknownFields = pb::UnknownFieldSet.MergeFrom(_unknownFields, other._unknownFields); } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public void MergeFrom(pb::CodedInputStream input) { #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE input.ReadRawMessage(this); #else uint tag; while ((tag = input.ReadTag()) != 0) { switch(tag) { default: _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input); break; case 10: { Name = input.ReadString(); break; } } } #endif } #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] void pb::IBufferMessage.InternalMergeFrom(ref pb::ParseContext input) { uint tag; while ((tag = input.ReadTag()) != 0) { switch(tag) { default: _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, ref input); break; case 10: { Name = input.ReadString(); break; } } } } #endif } internal sealed partial class ProvidedMethod : pb::IMessage #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE , pb::IBufferMessage #endif { private static readonly pb::MessageParser _parser = new pb::MessageParser(() => new ProvidedMethod()); private pb::UnknownFieldSet _unknownFields; [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public static pb::MessageParser Parser { get { return _parser; } } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public static pbr::MessageDescriptor Descriptor { get { return global::Plexus.Interop.Apps.Internal.Generated.AppMetadataServiceReflection.Descriptor.MessageTypes[7]; } } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] pbr::MessageDescriptor pb::IMessage.Descriptor { get { return Descriptor; } } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public ProvidedMethod() { OnConstruction(); } partial void OnConstruction(); [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public ProvidedMethod(ProvidedMethod other) : this() { name_ = other.name_; title_ = other.title_; launchMode_ = other.launchMode_; timeoutMs_ = other.timeoutMs_; options_ = other.options_.Clone(); _unknownFields = pb::UnknownFieldSet.Clone(other._unknownFields); } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public ProvidedMethod Clone() { return new ProvidedMethod(this); } /// Field number for the "name" field. public const int NameFieldNumber = 1; private string name_ = ""; [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public string Name { get { return name_; } set { name_ = pb::ProtoPreconditions.CheckNotNull(value, "value"); } } /// Field number for the "title" field. public const int TitleFieldNumber = 2; private string title_ = ""; [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public string Title { get { return title_; } set { title_ = pb::ProtoPreconditions.CheckNotNull(value, "value"); } } /// Field number for the "launch_mode" field. public const int LaunchModeFieldNumber = 3; private global::Plexus.Interop.Apps.Internal.Generated.ProvidedMethod.Types.MetamodelLaunchMode launchMode_ = global::Plexus.Interop.Apps.Internal.Generated.ProvidedMethod.Types.MetamodelLaunchMode.None; [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public global::Plexus.Interop.Apps.Internal.Generated.ProvidedMethod.Types.MetamodelLaunchMode LaunchMode { get { return launchMode_; } set { launchMode_ = value; } } /// Field number for the "timeout_ms" field. public const int TimeoutMsFieldNumber = 4; private int timeoutMs_; [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public int TimeoutMs { get { return timeoutMs_; } set { timeoutMs_ = value; } } /// Field number for the "options" field. public const int OptionsFieldNumber = 5; private static readonly pb::FieldCodec _repeated_options_codec = pb::FieldCodec.ForMessage(42, global::Plexus.Interop.Apps.Internal.Generated.OptionParameter.Parser); private readonly pbc::RepeatedField options_ = new pbc::RepeatedField(); [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public pbc::RepeatedField Options { get { return options_; } } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public override bool Equals(object other) { return Equals(other as ProvidedMethod); } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public bool Equals(ProvidedMethod other) { if (ReferenceEquals(other, null)) { return false; } if (ReferenceEquals(other, this)) { return true; } if (Name != other.Name) return false; if (Title != other.Title) return false; if (LaunchMode != other.LaunchMode) return false; if (TimeoutMs != other.TimeoutMs) return false; if(!options_.Equals(other.options_)) return false; return Equals(_unknownFields, other._unknownFields); } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public override int GetHashCode() { int hash = 1; if (Name.Length != 0) hash ^= Name.GetHashCode(); if (Title.Length != 0) hash ^= Title.GetHashCode(); if (LaunchMode != global::Plexus.Interop.Apps.Internal.Generated.ProvidedMethod.Types.MetamodelLaunchMode.None) hash ^= LaunchMode.GetHashCode(); if (TimeoutMs != 0) hash ^= TimeoutMs.GetHashCode(); hash ^= options_.GetHashCode(); if (_unknownFields != null) { hash ^= _unknownFields.GetHashCode(); } return hash; } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public override string ToString() { return pb::JsonFormatter.ToDiagnosticString(this); } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public void WriteTo(pb::CodedOutputStream output) { #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE output.WriteRawMessage(this); #else if (Name.Length != 0) { output.WriteRawTag(10); output.WriteString(Name); } if (Title.Length != 0) { output.WriteRawTag(18); output.WriteString(Title); } if (LaunchMode != global::Plexus.Interop.Apps.Internal.Generated.ProvidedMethod.Types.MetamodelLaunchMode.None) { output.WriteRawTag(24); output.WriteEnum((int) LaunchMode); } if (TimeoutMs != 0) { output.WriteRawTag(32); output.WriteInt32(TimeoutMs); } options_.WriteTo(output, _repeated_options_codec); if (_unknownFields != null) { _unknownFields.WriteTo(output); } #endif } #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] void pb::IBufferMessage.InternalWriteTo(ref pb::WriteContext output) { if (Name.Length != 0) { output.WriteRawTag(10); output.WriteString(Name); } if (Title.Length != 0) { output.WriteRawTag(18); output.WriteString(Title); } if (LaunchMode != global::Plexus.Interop.Apps.Internal.Generated.ProvidedMethod.Types.MetamodelLaunchMode.None) { output.WriteRawTag(24); output.WriteEnum((int) LaunchMode); } if (TimeoutMs != 0) { output.WriteRawTag(32); output.WriteInt32(TimeoutMs); } options_.WriteTo(ref output, _repeated_options_codec); if (_unknownFields != null) { _unknownFields.WriteTo(ref output); } } #endif [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public int CalculateSize() { int size = 0; if (Name.Length != 0) { size += 1 + pb::CodedOutputStream.ComputeStringSize(Name); } if (Title.Length != 0) { size += 1 + pb::CodedOutputStream.ComputeStringSize(Title); } if (LaunchMode != global::Plexus.Interop.Apps.Internal.Generated.ProvidedMethod.Types.MetamodelLaunchMode.None) { size += 1 + pb::CodedOutputStream.ComputeEnumSize((int) LaunchMode); } if (TimeoutMs != 0) { size += 1 + pb::CodedOutputStream.ComputeInt32Size(TimeoutMs); } size += options_.CalculateSize(_repeated_options_codec); if (_unknownFields != null) { size += _unknownFields.CalculateSize(); } return size; } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public void MergeFrom(ProvidedMethod other) { if (other == null) { return; } if (other.Name.Length != 0) { Name = other.Name; } if (other.Title.Length != 0) { Title = other.Title; } if (other.LaunchMode != global::Plexus.Interop.Apps.Internal.Generated.ProvidedMethod.Types.MetamodelLaunchMode.None) { LaunchMode = other.LaunchMode; } if (other.TimeoutMs != 0) { TimeoutMs = other.TimeoutMs; } options_.Add(other.options_); _unknownFields = pb::UnknownFieldSet.MergeFrom(_unknownFields, other._unknownFields); } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public void MergeFrom(pb::CodedInputStream input) { #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE input.ReadRawMessage(this); #else uint tag; while ((tag = input.ReadTag()) != 0) { switch(tag) { default: _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input); break; case 10: { Name = input.ReadString(); break; } case 18: { Title = input.ReadString(); break; } case 24: { LaunchMode = (global::Plexus.Interop.Apps.Internal.Generated.ProvidedMethod.Types.MetamodelLaunchMode) input.ReadEnum(); break; } case 32: { TimeoutMs = input.ReadInt32(); break; } case 42: { options_.AddEntriesFrom(input, _repeated_options_codec); break; } } } #endif } #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] void pb::IBufferMessage.InternalMergeFrom(ref pb::ParseContext input) { uint tag; while ((tag = input.ReadTag()) != 0) { switch(tag) { default: _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, ref input); break; case 10: { Name = input.ReadString(); break; } case 18: { Title = input.ReadString(); break; } case 24: { LaunchMode = (global::Plexus.Interop.Apps.Internal.Generated.ProvidedMethod.Types.MetamodelLaunchMode) input.ReadEnum(); break; } case 32: { TimeoutMs = input.ReadInt32(); break; } case 42: { options_.AddEntriesFrom(ref input, _repeated_options_codec); break; } } } } #endif #region Nested types /// Container for nested types declared in the ProvidedMethod message type. [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public static partial class Types { internal enum MetamodelLaunchMode { [pbr::OriginalName("None")] None = 0, [pbr::OriginalName("SingleInstance")] SingleInstance = 1, [pbr::OriginalName("MultiInstance")] MultiInstance = 2, } } #endregion } internal sealed partial class Service : pb::IMessage #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE , pb::IBufferMessage #endif { private static readonly pb::MessageParser _parser = new pb::MessageParser(() => new Service()); private pb::UnknownFieldSet _unknownFields; [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public static pb::MessageParser Parser { get { return _parser; } } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public static pbr::MessageDescriptor Descriptor { get { return global::Plexus.Interop.Apps.Internal.Generated.AppMetadataServiceReflection.Descriptor.MessageTypes[8]; } } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] pbr::MessageDescriptor pb::IMessage.Descriptor { get { return Descriptor; } } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public Service() { OnConstruction(); } partial void OnConstruction(); [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public Service(Service other) : this() { id_ = other.id_; methods_ = other.methods_.Clone(); options_ = other.options_.Clone(); _unknownFields = pb::UnknownFieldSet.Clone(other._unknownFields); } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public Service Clone() { return new Service(this); } /// Field number for the "id" field. public const int IdFieldNumber = 1; private string id_ = ""; [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public string Id { get { return id_; } set { id_ = pb::ProtoPreconditions.CheckNotNull(value, "value"); } } /// Field number for the "methods" field. public const int MethodsFieldNumber = 2; private static readonly pb::FieldCodec _repeated_methods_codec = pb::FieldCodec.ForMessage(18, global::Plexus.Interop.Apps.Internal.Generated.MethodInfo.Parser); private readonly pbc::RepeatedField methods_ = new pbc::RepeatedField(); [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public pbc::RepeatedField Methods { get { return methods_; } } /// Field number for the "options" field. public const int OptionsFieldNumber = 3; private static readonly pb::FieldCodec _repeated_options_codec = pb::FieldCodec.ForMessage(26, global::Plexus.Interop.Apps.Internal.Generated.OptionParameter.Parser); private readonly pbc::RepeatedField options_ = new pbc::RepeatedField(); [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public pbc::RepeatedField Options { get { return options_; } } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public override bool Equals(object other) { return Equals(other as Service); } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public bool Equals(Service other) { if (ReferenceEquals(other, null)) { return false; } if (ReferenceEquals(other, this)) { return true; } if (Id != other.Id) return false; if(!methods_.Equals(other.methods_)) return false; if(!options_.Equals(other.options_)) return false; return Equals(_unknownFields, other._unknownFields); } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public override int GetHashCode() { int hash = 1; if (Id.Length != 0) hash ^= Id.GetHashCode(); hash ^= methods_.GetHashCode(); hash ^= options_.GetHashCode(); if (_unknownFields != null) { hash ^= _unknownFields.GetHashCode(); } return hash; } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public override string ToString() { return pb::JsonFormatter.ToDiagnosticString(this); } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public void WriteTo(pb::CodedOutputStream output) { #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE output.WriteRawMessage(this); #else if (Id.Length != 0) { output.WriteRawTag(10); output.WriteString(Id); } methods_.WriteTo(output, _repeated_methods_codec); options_.WriteTo(output, _repeated_options_codec); if (_unknownFields != null) { _unknownFields.WriteTo(output); } #endif } #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] void pb::IBufferMessage.InternalWriteTo(ref pb::WriteContext output) { if (Id.Length != 0) { output.WriteRawTag(10); output.WriteString(Id); } methods_.WriteTo(ref output, _repeated_methods_codec); options_.WriteTo(ref output, _repeated_options_codec); if (_unknownFields != null) { _unknownFields.WriteTo(ref output); } } #endif [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public int CalculateSize() { int size = 0; if (Id.Length != 0) { size += 1 + pb::CodedOutputStream.ComputeStringSize(Id); } size += methods_.CalculateSize(_repeated_methods_codec); size += options_.CalculateSize(_repeated_options_codec); if (_unknownFields != null) { size += _unknownFields.CalculateSize(); } return size; } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public void MergeFrom(Service other) { if (other == null) { return; } if (other.Id.Length != 0) { Id = other.Id; } methods_.Add(other.methods_); options_.Add(other.options_); _unknownFields = pb::UnknownFieldSet.MergeFrom(_unknownFields, other._unknownFields); } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public void MergeFrom(pb::CodedInputStream input) { #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE input.ReadRawMessage(this); #else uint tag; while ((tag = input.ReadTag()) != 0) { switch(tag) { default: _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input); break; case 10: { Id = input.ReadString(); break; } case 18: { methods_.AddEntriesFrom(input, _repeated_methods_codec); break; } case 26: { options_.AddEntriesFrom(input, _repeated_options_codec); break; } } } #endif } #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] void pb::IBufferMessage.InternalMergeFrom(ref pb::ParseContext input) { uint tag; while ((tag = input.ReadTag()) != 0) { switch(tag) { default: _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, ref input); break; case 10: { Id = input.ReadString(); break; } case 18: { methods_.AddEntriesFrom(ref input, _repeated_methods_codec); break; } case 26: { options_.AddEntriesFrom(ref input, _repeated_options_codec); break; } } } } #endif } internal sealed partial class MethodInfo : pb::IMessage #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE , pb::IBufferMessage #endif { private static readonly pb::MessageParser _parser = new pb::MessageParser(() => new MethodInfo()); private pb::UnknownFieldSet _unknownFields; [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public static pb::MessageParser Parser { get { return _parser; } } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public static pbr::MessageDescriptor Descriptor { get { return global::Plexus.Interop.Apps.Internal.Generated.AppMetadataServiceReflection.Descriptor.MessageTypes[9]; } } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] pbr::MessageDescriptor pb::IMessage.Descriptor { get { return Descriptor; } } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public MethodInfo() { OnConstruction(); } partial void OnConstruction(); [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public MethodInfo(MethodInfo other) : this() { name_ = other.name_; requestMessageId_ = other.requestMessageId_; responseMessageId_ = other.responseMessageId_; type_ = other.type_; _unknownFields = pb::UnknownFieldSet.Clone(other._unknownFields); } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public MethodInfo Clone() { return new MethodInfo(this); } /// Field number for the "name" field. public const int NameFieldNumber = 1; private string name_ = ""; [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public string Name { get { return name_; } set { name_ = pb::ProtoPreconditions.CheckNotNull(value, "value"); } } /// Field number for the "request_message_id" field. public const int RequestMessageIdFieldNumber = 3; private string requestMessageId_ = ""; [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public string RequestMessageId { get { return requestMessageId_; } set { requestMessageId_ = pb::ProtoPreconditions.CheckNotNull(value, "value"); } } /// Field number for the "response_message_id" field. public const int ResponseMessageIdFieldNumber = 4; private string responseMessageId_ = ""; [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public string ResponseMessageId { get { return responseMessageId_; } set { responseMessageId_ = pb::ProtoPreconditions.CheckNotNull(value, "value"); } } /// Field number for the "type" field. public const int TypeFieldNumber = 5; private global::Plexus.Interop.Apps.Internal.Generated.MethodInfo.Types.MethodType type_ = global::Plexus.Interop.Apps.Internal.Generated.MethodInfo.Types.MethodType.Unary; [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public global::Plexus.Interop.Apps.Internal.Generated.MethodInfo.Types.MethodType Type { get { return type_; } set { type_ = value; } } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public override bool Equals(object other) { return Equals(other as MethodInfo); } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public bool Equals(MethodInfo other) { if (ReferenceEquals(other, null)) { return false; } if (ReferenceEquals(other, this)) { return true; } if (Name != other.Name) return false; if (RequestMessageId != other.RequestMessageId) return false; if (ResponseMessageId != other.ResponseMessageId) return false; if (Type != other.Type) return false; return Equals(_unknownFields, other._unknownFields); } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public override int GetHashCode() { int hash = 1; if (Name.Length != 0) hash ^= Name.GetHashCode(); if (RequestMessageId.Length != 0) hash ^= RequestMessageId.GetHashCode(); if (ResponseMessageId.Length != 0) hash ^= ResponseMessageId.GetHashCode(); if (Type != global::Plexus.Interop.Apps.Internal.Generated.MethodInfo.Types.MethodType.Unary) hash ^= Type.GetHashCode(); if (_unknownFields != null) { hash ^= _unknownFields.GetHashCode(); } return hash; } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public override string ToString() { return pb::JsonFormatter.ToDiagnosticString(this); } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public void WriteTo(pb::CodedOutputStream output) { #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE output.WriteRawMessage(this); #else if (Name.Length != 0) { output.WriteRawTag(10); output.WriteString(Name); } if (RequestMessageId.Length != 0) { output.WriteRawTag(26); output.WriteString(RequestMessageId); } if (ResponseMessageId.Length != 0) { output.WriteRawTag(34); output.WriteString(ResponseMessageId); } if (Type != global::Plexus.Interop.Apps.Internal.Generated.MethodInfo.Types.MethodType.Unary) { output.WriteRawTag(40); output.WriteEnum((int) Type); } if (_unknownFields != null) { _unknownFields.WriteTo(output); } #endif } #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] void pb::IBufferMessage.InternalWriteTo(ref pb::WriteContext output) { if (Name.Length != 0) { output.WriteRawTag(10); output.WriteString(Name); } if (RequestMessageId.Length != 0) { output.WriteRawTag(26); output.WriteString(RequestMessageId); } if (ResponseMessageId.Length != 0) { output.WriteRawTag(34); output.WriteString(ResponseMessageId); } if (Type != global::Plexus.Interop.Apps.Internal.Generated.MethodInfo.Types.MethodType.Unary) { output.WriteRawTag(40); output.WriteEnum((int) Type); } if (_unknownFields != null) { _unknownFields.WriteTo(ref output); } } #endif [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public int CalculateSize() { int size = 0; if (Name.Length != 0) { size += 1 + pb::CodedOutputStream.ComputeStringSize(Name); } if (RequestMessageId.Length != 0) { size += 1 + pb::CodedOutputStream.ComputeStringSize(RequestMessageId); } if (ResponseMessageId.Length != 0) { size += 1 + pb::CodedOutputStream.ComputeStringSize(ResponseMessageId); } if (Type != global::Plexus.Interop.Apps.Internal.Generated.MethodInfo.Types.MethodType.Unary) { size += 1 + pb::CodedOutputStream.ComputeEnumSize((int) Type); } if (_unknownFields != null) { size += _unknownFields.CalculateSize(); } return size; } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public void MergeFrom(MethodInfo other) { if (other == null) { return; } if (other.Name.Length != 0) { Name = other.Name; } if (other.RequestMessageId.Length != 0) { RequestMessageId = other.RequestMessageId; } if (other.ResponseMessageId.Length != 0) { ResponseMessageId = other.ResponseMessageId; } if (other.Type != global::Plexus.Interop.Apps.Internal.Generated.MethodInfo.Types.MethodType.Unary) { Type = other.Type; } _unknownFields = pb::UnknownFieldSet.MergeFrom(_unknownFields, other._unknownFields); } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public void MergeFrom(pb::CodedInputStream input) { #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE input.ReadRawMessage(this); #else uint tag; while ((tag = input.ReadTag()) != 0) { switch(tag) { default: _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input); break; case 10: { Name = input.ReadString(); break; } case 26: { RequestMessageId = input.ReadString(); break; } case 34: { ResponseMessageId = input.ReadString(); break; } case 40: { Type = (global::Plexus.Interop.Apps.Internal.Generated.MethodInfo.Types.MethodType) input.ReadEnum(); break; } } } #endif } #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] void pb::IBufferMessage.InternalMergeFrom(ref pb::ParseContext input) { uint tag; while ((tag = input.ReadTag()) != 0) { switch(tag) { default: _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, ref input); break; case 10: { Name = input.ReadString(); break; } case 26: { RequestMessageId = input.ReadString(); break; } case 34: { ResponseMessageId = input.ReadString(); break; } case 40: { Type = (global::Plexus.Interop.Apps.Internal.Generated.MethodInfo.Types.MethodType) input.ReadEnum(); break; } } } } #endif #region Nested types /// Container for nested types declared in the MethodInfo message type. [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public static partial class Types { internal enum MethodType { [pbr::OriginalName("Unary")] Unary = 0, [pbr::OriginalName("ServerStreaming")] ServerStreaming = 1, [pbr::OriginalName("ClientStreaming")] ClientStreaming = 2, [pbr::OriginalName("DuplexStreaming")] DuplexStreaming = 3, } } #endregion } internal sealed partial class OptionParameter : pb::IMessage #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE , pb::IBufferMessage #endif { private static readonly pb::MessageParser _parser = new pb::MessageParser(() => new OptionParameter()); private pb::UnknownFieldSet _unknownFields; [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public static pb::MessageParser Parser { get { return _parser; } } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public static pbr::MessageDescriptor Descriptor { get { return global::Plexus.Interop.Apps.Internal.Generated.AppMetadataServiceReflection.Descriptor.MessageTypes[10]; } } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] pbr::MessageDescriptor pb::IMessage.Descriptor { get { return Descriptor; } } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public OptionParameter() { OnConstruction(); } partial void OnConstruction(); [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public OptionParameter(OptionParameter other) : this() { key_ = other.key_; value_ = other.value_; _unknownFields = pb::UnknownFieldSet.Clone(other._unknownFields); } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public OptionParameter Clone() { return new OptionParameter(this); } /// Field number for the "key" field. public const int KeyFieldNumber = 1; private string key_ = ""; [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public string Key { get { return key_; } set { key_ = pb::ProtoPreconditions.CheckNotNull(value, "value"); } } /// Field number for the "value" field. public const int ValueFieldNumber = 2; private string value_ = ""; [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public string Value { get { return value_; } set { value_ = pb::ProtoPreconditions.CheckNotNull(value, "value"); } } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public override bool Equals(object other) { return Equals(other as OptionParameter); } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public bool Equals(OptionParameter other) { if (ReferenceEquals(other, null)) { return false; } if (ReferenceEquals(other, this)) { return true; } if (Key != other.Key) return false; if (Value != other.Value) return false; return Equals(_unknownFields, other._unknownFields); } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public override int GetHashCode() { int hash = 1; if (Key.Length != 0) hash ^= Key.GetHashCode(); if (Value.Length != 0) hash ^= Value.GetHashCode(); if (_unknownFields != null) { hash ^= _unknownFields.GetHashCode(); } return hash; } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public override string ToString() { return pb::JsonFormatter.ToDiagnosticString(this); } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public void WriteTo(pb::CodedOutputStream output) { #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE output.WriteRawMessage(this); #else if (Key.Length != 0) { output.WriteRawTag(10); output.WriteString(Key); } if (Value.Length != 0) { output.WriteRawTag(18); output.WriteString(Value); } if (_unknownFields != null) { _unknownFields.WriteTo(output); } #endif } #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] void pb::IBufferMessage.InternalWriteTo(ref pb::WriteContext output) { if (Key.Length != 0) { output.WriteRawTag(10); output.WriteString(Key); } if (Value.Length != 0) { output.WriteRawTag(18); output.WriteString(Value); } if (_unknownFields != null) { _unknownFields.WriteTo(ref output); } } #endif [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public int CalculateSize() { int size = 0; if (Key.Length != 0) { size += 1 + pb::CodedOutputStream.ComputeStringSize(Key); } if (Value.Length != 0) { size += 1 + pb::CodedOutputStream.ComputeStringSize(Value); } if (_unknownFields != null) { size += _unknownFields.CalculateSize(); } return size; } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public void MergeFrom(OptionParameter other) { if (other == null) { return; } if (other.Key.Length != 0) { Key = other.Key; } if (other.Value.Length != 0) { Value = other.Value; } _unknownFields = pb::UnknownFieldSet.MergeFrom(_unknownFields, other._unknownFields); } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public void MergeFrom(pb::CodedInputStream input) { #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE input.ReadRawMessage(this); #else uint tag; while ((tag = input.ReadTag()) != 0) { switch(tag) { default: _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input); break; case 10: { Key = input.ReadString(); break; } case 18: { Value = input.ReadString(); break; } } } #endif } #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] void pb::IBufferMessage.InternalMergeFrom(ref pb::ParseContext input) { uint tag; while ((tag = input.ReadTag()) != 0) { switch(tag) { default: _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, ref input); break; case 10: { Key = input.ReadString(); break; } case 18: { Value = input.ReadString(); break; } } } } #endif } #endregion } #endregion Designer generated code ================================================ FILE: desktop/src/Plexus.Interop.Apps.Manager/Internal/Generated/interop/AppMetadataService.svc.g.cs ================================================ /** * Copyright 2017-2021 Plexus Interop Deutsche Bank AG * SPDX-License-Identifier: Apache-2.0 * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ // // Generated by the Plexus Interop compiler. DO NOT EDIT! // source: interop\app_metadata_service.proto // #pragma warning disable 1591, 0612, 3021 #region Designer generated code namespace Plexus.Interop.Apps.Internal.Generated { using System; using global::Plexus; using global::Plexus.Channels; using global::Plexus.Interop; using global::System.Threading.Tasks; internal static partial class AppMetadataService { public const string Id = "interop.AppMetadataService"; public const string GetAppMetadataChangedEventStreamMethodId = "GetAppMetadataChangedEventStream"; public const string GetMetamodelChangedEventStreamMethodId = "GetMetamodelChangedEventStream"; public static readonly AppMetadataService.Descriptor DefaultDescriptor = CreateDescriptor(); public static AppMetadataService.Descriptor CreateDescriptor() { return new AppMetadataService.Descriptor(); } public static AppMetadataService.Descriptor CreateDescriptor(string alias) { return new AppMetadataService.Descriptor(alias); } public partial interface IGetAppMetadataChangedEventStreamProxy { IServerStreamingMethodCall GetAppMetadataChangedEventStream(global::Google.Protobuf.WellKnownTypes.Empty request); } public partial interface IGetMetamodelChangedEventStreamProxy { IServerStreamingMethodCall GetMetamodelChangedEventStream(global::Google.Protobuf.WellKnownTypes.Empty request); } public partial interface IGetAppMetadataChangedEventStreamImpl { Task GetAppMetadataChangedEventStream(global::Google.Protobuf.WellKnownTypes.Empty request, IWritableChannel responseStream, MethodCallContext context); } public partial interface IGetMetamodelChangedEventStreamImpl { Task GetMetamodelChangedEventStream(global::Google.Protobuf.WellKnownTypes.Empty request, IWritableChannel responseStream, MethodCallContext context); } public sealed partial class Descriptor { public ServerStreamingMethod GetAppMetadataChangedEventStreamMethod {get; private set; } public ServerStreamingMethod GetMetamodelChangedEventStreamMethod {get; private set; } public Descriptor() { GetAppMetadataChangedEventStreamMethod = Method.ServerStreaming(Id, GetAppMetadataChangedEventStreamMethodId); GetMetamodelChangedEventStreamMethod = Method.ServerStreaming(Id, GetMetamodelChangedEventStreamMethodId); } public Descriptor(string alias) { GetAppMetadataChangedEventStreamMethod = Method.ServerStreaming(Id, alias, GetAppMetadataChangedEventStreamMethodId); GetMetamodelChangedEventStreamMethod = Method.ServerStreaming(Id, alias, GetMetamodelChangedEventStreamMethodId); } } } } #endregion Designer generated code ================================================ FILE: desktop/src/Plexus.Interop.Apps.Manager/Internal/Generated/interop/AppRegistrationService.msg.g.cs ================================================ /** * Copyright 2017-2021 Plexus Interop Deutsche Bank AG * SPDX-License-Identifier: Apache-2.0 * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ // // Generated by the protocol buffer compiler. DO NOT EDIT! // source: interop/app_registration_service.proto // #pragma warning disable 1591, 0612, 3021 #region Designer generated code using pb = global::Google.Protobuf; using pbc = global::Google.Protobuf.Collections; using pbr = global::Google.Protobuf.Reflection; using scg = global::System.Collections.Generic; namespace Plexus.Interop.Apps.Internal.Generated { /// Holder for reflection information generated from interop/app_registration_service.proto internal static partial class AppRegistrationServiceReflection { #region Descriptor /// File descriptor for interop/app_registration_service.proto public static pbr::FileDescriptor Descriptor { get { return descriptor; } } private static pbr::FileDescriptor descriptor; static AppRegistrationServiceReflection() { byte[] descriptorData = global::System.Convert.FromBase64String( string.Concat( "CiZpbnRlcm9wL2FwcF9yZWdpc3RyYXRpb25fc2VydmljZS5wcm90bxIHaW50", "ZXJvcBoXaW50ZXJvcC91bmlxdWVfaWQucHJvdG8aFWludGVyb3Avb3B0aW9u", "cy5wcm90byJAChhSZXF1ZXN0SW5zdGFuY2VJZFJlcXVlc3Q6JJLbBCBpbnRl", "cm9wLlJlcXVlc3RJbnN0YW5jZUlkUmVxdWVzdCJuChlSZWdpc3Rlckluc3Rh", "bmNlSWRSZXF1ZXN0EioKD2FwcF9pbnN0YW5jZV9pZBgBIAEoCzIRLmludGVy", "b3AuVW5pcXVlSWQ6JZLbBCFpbnRlcm9wLlJlZ2lzdGVySW5zdGFuY2VJZFJl", "cXVlc3QiRAoaUmVnaXN0ZXJJbnN0YW5jZUlkUmVzcG9uc2U6JpLbBCJpbnRl", "cm9wLlJlZ2lzdGVySW5zdGFuY2VJZFJlc3BvbnNlMuYBChZBcHBSZWdpc3Ry", "YXRpb25TZXJ2aWNlEkkKEVJlcXVlc3RJbnN0YW5jZUlkEiEuaW50ZXJvcC5S", "ZXF1ZXN0SW5zdGFuY2VJZFJlcXVlc3QaES5pbnRlcm9wLlVuaXF1ZUlkEl0K", "ElJlZ2lzdGVySW5zdGFuY2VJZBIiLmludGVyb3AuUmVnaXN0ZXJJbnN0YW5j", "ZUlkUmVxdWVzdBojLmludGVyb3AuUmVnaXN0ZXJJbnN0YW5jZUlkUmVzcG9u", "c2UaIpLbBB5pbnRlcm9wLkFwcFJlZ2lzdHJhdGlvblNlcnZpY2VCKaoCJlBs", "ZXh1cy5JbnRlcm9wLkFwcHMuSW50ZXJuYWwuR2VuZXJhdGVkYgZwcm90bzM=")); descriptor = pbr::FileDescriptor.FromGeneratedCode(descriptorData, new pbr::FileDescriptor[] { global::Plexus.Interop.Apps.Internal.Generated.UniqueIdReflection.Descriptor, global::Plexus.Interop.Apps.Internal.Generated.OptionsReflection.Descriptor, }, new pbr::GeneratedClrTypeInfo(null, null, new pbr::GeneratedClrTypeInfo[] { new pbr::GeneratedClrTypeInfo(typeof(global::Plexus.Interop.Apps.Internal.Generated.RequestInstanceIdRequest), global::Plexus.Interop.Apps.Internal.Generated.RequestInstanceIdRequest.Parser, null, null, null, null, null), new pbr::GeneratedClrTypeInfo(typeof(global::Plexus.Interop.Apps.Internal.Generated.RegisterInstanceIdRequest), global::Plexus.Interop.Apps.Internal.Generated.RegisterInstanceIdRequest.Parser, new[]{ "AppInstanceId" }, null, null, null, null), new pbr::GeneratedClrTypeInfo(typeof(global::Plexus.Interop.Apps.Internal.Generated.RegisterInstanceIdResponse), global::Plexus.Interop.Apps.Internal.Generated.RegisterInstanceIdResponse.Parser, null, null, null, null, null) })); } #endregion } #region Messages internal sealed partial class RequestInstanceIdRequest : pb::IMessage #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE , pb::IBufferMessage #endif { private static readonly pb::MessageParser _parser = new pb::MessageParser(() => new RequestInstanceIdRequest()); private pb::UnknownFieldSet _unknownFields; [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public static pb::MessageParser Parser { get { return _parser; } } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public static pbr::MessageDescriptor Descriptor { get { return global::Plexus.Interop.Apps.Internal.Generated.AppRegistrationServiceReflection.Descriptor.MessageTypes[0]; } } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] pbr::MessageDescriptor pb::IMessage.Descriptor { get { return Descriptor; } } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public RequestInstanceIdRequest() { OnConstruction(); } partial void OnConstruction(); [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public RequestInstanceIdRequest(RequestInstanceIdRequest other) : this() { _unknownFields = pb::UnknownFieldSet.Clone(other._unknownFields); } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public RequestInstanceIdRequest Clone() { return new RequestInstanceIdRequest(this); } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public override bool Equals(object other) { return Equals(other as RequestInstanceIdRequest); } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public bool Equals(RequestInstanceIdRequest other) { if (ReferenceEquals(other, null)) { return false; } if (ReferenceEquals(other, this)) { return true; } return Equals(_unknownFields, other._unknownFields); } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public override int GetHashCode() { int hash = 1; if (_unknownFields != null) { hash ^= _unknownFields.GetHashCode(); } return hash; } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public override string ToString() { return pb::JsonFormatter.ToDiagnosticString(this); } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public void WriteTo(pb::CodedOutputStream output) { #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE output.WriteRawMessage(this); #else if (_unknownFields != null) { _unknownFields.WriteTo(output); } #endif } #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] void pb::IBufferMessage.InternalWriteTo(ref pb::WriteContext output) { if (_unknownFields != null) { _unknownFields.WriteTo(ref output); } } #endif [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public int CalculateSize() { int size = 0; if (_unknownFields != null) { size += _unknownFields.CalculateSize(); } return size; } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public void MergeFrom(RequestInstanceIdRequest other) { if (other == null) { return; } _unknownFields = pb::UnknownFieldSet.MergeFrom(_unknownFields, other._unknownFields); } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public void MergeFrom(pb::CodedInputStream input) { #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE input.ReadRawMessage(this); #else uint tag; while ((tag = input.ReadTag()) != 0) { switch(tag) { default: _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input); break; } } #endif } #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] void pb::IBufferMessage.InternalMergeFrom(ref pb::ParseContext input) { uint tag; while ((tag = input.ReadTag()) != 0) { switch(tag) { default: _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, ref input); break; } } } #endif } internal sealed partial class RegisterInstanceIdRequest : pb::IMessage #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE , pb::IBufferMessage #endif { private static readonly pb::MessageParser _parser = new pb::MessageParser(() => new RegisterInstanceIdRequest()); private pb::UnknownFieldSet _unknownFields; [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public static pb::MessageParser Parser { get { return _parser; } } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public static pbr::MessageDescriptor Descriptor { get { return global::Plexus.Interop.Apps.Internal.Generated.AppRegistrationServiceReflection.Descriptor.MessageTypes[1]; } } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] pbr::MessageDescriptor pb::IMessage.Descriptor { get { return Descriptor; } } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public RegisterInstanceIdRequest() { OnConstruction(); } partial void OnConstruction(); [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public RegisterInstanceIdRequest(RegisterInstanceIdRequest other) : this() { appInstanceId_ = other.appInstanceId_ != null ? other.appInstanceId_.Clone() : null; _unknownFields = pb::UnknownFieldSet.Clone(other._unknownFields); } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public RegisterInstanceIdRequest Clone() { return new RegisterInstanceIdRequest(this); } /// Field number for the "app_instance_id" field. public const int AppInstanceIdFieldNumber = 1; private global::Plexus.Interop.Apps.Internal.Generated.UniqueId appInstanceId_; [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public global::Plexus.Interop.Apps.Internal.Generated.UniqueId AppInstanceId { get { return appInstanceId_; } set { appInstanceId_ = value; } } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public override bool Equals(object other) { return Equals(other as RegisterInstanceIdRequest); } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public bool Equals(RegisterInstanceIdRequest other) { if (ReferenceEquals(other, null)) { return false; } if (ReferenceEquals(other, this)) { return true; } if (!object.Equals(AppInstanceId, other.AppInstanceId)) return false; return Equals(_unknownFields, other._unknownFields); } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public override int GetHashCode() { int hash = 1; if (appInstanceId_ != null) hash ^= AppInstanceId.GetHashCode(); if (_unknownFields != null) { hash ^= _unknownFields.GetHashCode(); } return hash; } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public override string ToString() { return pb::JsonFormatter.ToDiagnosticString(this); } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public void WriteTo(pb::CodedOutputStream output) { #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE output.WriteRawMessage(this); #else if (appInstanceId_ != null) { output.WriteRawTag(10); output.WriteMessage(AppInstanceId); } if (_unknownFields != null) { _unknownFields.WriteTo(output); } #endif } #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] void pb::IBufferMessage.InternalWriteTo(ref pb::WriteContext output) { if (appInstanceId_ != null) { output.WriteRawTag(10); output.WriteMessage(AppInstanceId); } if (_unknownFields != null) { _unknownFields.WriteTo(ref output); } } #endif [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public int CalculateSize() { int size = 0; if (appInstanceId_ != null) { size += 1 + pb::CodedOutputStream.ComputeMessageSize(AppInstanceId); } if (_unknownFields != null) { size += _unknownFields.CalculateSize(); } return size; } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public void MergeFrom(RegisterInstanceIdRequest other) { if (other == null) { return; } if (other.appInstanceId_ != null) { if (appInstanceId_ == null) { AppInstanceId = new global::Plexus.Interop.Apps.Internal.Generated.UniqueId(); } AppInstanceId.MergeFrom(other.AppInstanceId); } _unknownFields = pb::UnknownFieldSet.MergeFrom(_unknownFields, other._unknownFields); } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public void MergeFrom(pb::CodedInputStream input) { #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE input.ReadRawMessage(this); #else uint tag; while ((tag = input.ReadTag()) != 0) { switch(tag) { default: _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input); break; case 10: { if (appInstanceId_ == null) { AppInstanceId = new global::Plexus.Interop.Apps.Internal.Generated.UniqueId(); } input.ReadMessage(AppInstanceId); break; } } } #endif } #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] void pb::IBufferMessage.InternalMergeFrom(ref pb::ParseContext input) { uint tag; while ((tag = input.ReadTag()) != 0) { switch(tag) { default: _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, ref input); break; case 10: { if (appInstanceId_ == null) { AppInstanceId = new global::Plexus.Interop.Apps.Internal.Generated.UniqueId(); } input.ReadMessage(AppInstanceId); break; } } } } #endif } internal sealed partial class RegisterInstanceIdResponse : pb::IMessage #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE , pb::IBufferMessage #endif { private static readonly pb::MessageParser _parser = new pb::MessageParser(() => new RegisterInstanceIdResponse()); private pb::UnknownFieldSet _unknownFields; [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public static pb::MessageParser Parser { get { return _parser; } } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public static pbr::MessageDescriptor Descriptor { get { return global::Plexus.Interop.Apps.Internal.Generated.AppRegistrationServiceReflection.Descriptor.MessageTypes[2]; } } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] pbr::MessageDescriptor pb::IMessage.Descriptor { get { return Descriptor; } } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public RegisterInstanceIdResponse() { OnConstruction(); } partial void OnConstruction(); [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public RegisterInstanceIdResponse(RegisterInstanceIdResponse other) : this() { _unknownFields = pb::UnknownFieldSet.Clone(other._unknownFields); } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public RegisterInstanceIdResponse Clone() { return new RegisterInstanceIdResponse(this); } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public override bool Equals(object other) { return Equals(other as RegisterInstanceIdResponse); } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public bool Equals(RegisterInstanceIdResponse other) { if (ReferenceEquals(other, null)) { return false; } if (ReferenceEquals(other, this)) { return true; } return Equals(_unknownFields, other._unknownFields); } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public override int GetHashCode() { int hash = 1; if (_unknownFields != null) { hash ^= _unknownFields.GetHashCode(); } return hash; } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public override string ToString() { return pb::JsonFormatter.ToDiagnosticString(this); } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public void WriteTo(pb::CodedOutputStream output) { #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE output.WriteRawMessage(this); #else if (_unknownFields != null) { _unknownFields.WriteTo(output); } #endif } #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] void pb::IBufferMessage.InternalWriteTo(ref pb::WriteContext output) { if (_unknownFields != null) { _unknownFields.WriteTo(ref output); } } #endif [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public int CalculateSize() { int size = 0; if (_unknownFields != null) { size += _unknownFields.CalculateSize(); } return size; } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public void MergeFrom(RegisterInstanceIdResponse other) { if (other == null) { return; } _unknownFields = pb::UnknownFieldSet.MergeFrom(_unknownFields, other._unknownFields); } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public void MergeFrom(pb::CodedInputStream input) { #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE input.ReadRawMessage(this); #else uint tag; while ((tag = input.ReadTag()) != 0) { switch(tag) { default: _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input); break; } } #endif } #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] void pb::IBufferMessage.InternalMergeFrom(ref pb::ParseContext input) { uint tag; while ((tag = input.ReadTag()) != 0) { switch(tag) { default: _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, ref input); break; } } } #endif } #endregion } #endregion Designer generated code ================================================ FILE: desktop/src/Plexus.Interop.Apps.Manager/Internal/Generated/interop/AppRegistrationService.svc.g.cs ================================================ /** * Copyright 2017-2021 Plexus Interop Deutsche Bank AG * SPDX-License-Identifier: Apache-2.0 * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ // // Generated by the Plexus Interop compiler. DO NOT EDIT! // source: interop\app_registration_service.proto // #pragma warning disable 1591, 0612, 3021 #region Designer generated code namespace Plexus.Interop.Apps.Internal.Generated { using System; using global::Plexus; using global::Plexus.Channels; using global::Plexus.Interop; using global::System.Threading.Tasks; internal static partial class AppRegistrationService { public const string Id = "interop.AppRegistrationService"; public const string RequestInstanceIdMethodId = "RequestInstanceId"; public const string RegisterInstanceIdMethodId = "RegisterInstanceId"; public static readonly AppRegistrationService.Descriptor DefaultDescriptor = CreateDescriptor(); public static AppRegistrationService.Descriptor CreateDescriptor() { return new AppRegistrationService.Descriptor(); } public static AppRegistrationService.Descriptor CreateDescriptor(string alias) { return new AppRegistrationService.Descriptor(alias); } public partial interface IRequestInstanceIdProxy { IUnaryMethodCall RequestInstanceId(global::Plexus.Interop.Apps.Internal.Generated.RequestInstanceIdRequest request); } public partial interface IRegisterInstanceIdProxy { IUnaryMethodCall RegisterInstanceId(global::Plexus.Interop.Apps.Internal.Generated.RegisterInstanceIdRequest request); } public partial interface IRequestInstanceIdImpl { Task RequestInstanceId(global::Plexus.Interop.Apps.Internal.Generated.RequestInstanceIdRequest request, MethodCallContext context); } public partial interface IRegisterInstanceIdImpl { Task RegisterInstanceId(global::Plexus.Interop.Apps.Internal.Generated.RegisterInstanceIdRequest request, MethodCallContext context); } public sealed partial class Descriptor { public UnaryMethod RequestInstanceIdMethod {get; private set; } public UnaryMethod RegisterInstanceIdMethod {get; private set; } public Descriptor() { RequestInstanceIdMethod = Method.Unary(Id, RequestInstanceIdMethodId); RegisterInstanceIdMethod = Method.Unary(Id, RegisterInstanceIdMethodId); } public Descriptor(string alias) { RequestInstanceIdMethod = Method.Unary(Id, alias, RequestInstanceIdMethodId); RegisterInstanceIdMethod = Method.Unary(Id, alias, RegisterInstanceIdMethodId); } } } } #endregion Designer generated code ================================================ FILE: desktop/src/Plexus.Interop.Apps.Manager/Internal/Generated/interop/ContextLinkage.msg.g.cs ================================================ /** * Copyright 2017-2021 Plexus Interop Deutsche Bank AG * SPDX-License-Identifier: Apache-2.0 * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ // // Generated by the protocol buffer compiler. DO NOT EDIT! // source: interop/context_linkage.proto // #pragma warning disable 1591, 0612, 3021 #region Designer generated code using pb = global::Google.Protobuf; using pbc = global::Google.Protobuf.Collections; using pbr = global::Google.Protobuf.Reflection; using scg = global::System.Collections.Generic; namespace Plexus.Interop.Apps.Internal.Generated { /// Holder for reflection information generated from interop/context_linkage.proto internal static partial class ContextLinkageReflection { #region Descriptor /// File descriptor for interop/context_linkage.proto public static pbr::FileDescriptor Descriptor { get { return descriptor; } } private static pbr::FileDescriptor descriptor; static ContextLinkageReflection() { byte[] descriptorData = global::System.Convert.FromBase64String( string.Concat( "Ch1pbnRlcm9wL2NvbnRleHRfbGlua2FnZS5wcm90bxIHaW50ZXJvcBobZ29v", "Z2xlL3Byb3RvYnVmL2VtcHR5LnByb3RvGhdpbnRlcm9wL3VuaXF1ZV9pZC5w", "cm90bxonaW50ZXJvcC9hcHBfY29ubmVjdGlvbl9kZXNjcmlwdG9yLnByb3Rv", "GiJpbnRlcm9wL2FwcF9tZXRhZGF0YV9zZXJ2aWNlLnByb3RvGhVpbnRlcm9w", "L29wdGlvbnMucHJvdG8iRQoHQ29udGV4dBIKCgJpZBgBIAEoCRILCgNvd24Y", "AiABKAgSDAoEa2luZBgDIAEoCToTktsED2ludGVyb3AuQ29udGV4dCJMCgxD", "b250ZXh0c0xpc3QSIgoIY29udGV4dHMYASADKAsyEC5pbnRlcm9wLkNvbnRl", "eHQ6GJLbBBRpbnRlcm9wLkNvbnRleHRzTGlzdCJGChRDcmVhdGVDb250ZXh0", "UmVxdWVzdBIMCgRraW5kGAEgASgJOiCS2wQcaW50ZXJvcC5DcmVhdGVDb250", "ZXh0UmVxdWVzdCLrAQoUQ29udGV4dExvYWRpbmdVcGRhdGUSLQoGc3RhdHVz", "GAEgASgOMh0uaW50ZXJvcC5Db250ZXh0TG9hZGluZ1N0YXR1cxJAChZsb2Fk", "ZWRfYXBwX2Rlc2NyaXB0b3JzGAIgAygLMiAuaW50ZXJvcC5BcHBDb25uZWN0", "aW9uRGVzY3JpcHRvchJAChZmYWlsZWRfYXBwX2Rlc2NyaXB0b3JzGAMgAygL", "MiAuaW50ZXJvcC5BcHBDb25uZWN0aW9uRGVzY3JpcHRvcjogktsEHGludGVy", "b3AuQ29udGV4dExvYWRpbmdVcGRhdGUiiQEKDUludm9jYXRpb25SZWYSKwoI", "YXBwX2luZm8YASABKAsyGS5pbnRlcm9wLkFwcE1ldGFtb2RlbEluZm8SMAoG", "dGFyZ2V0GAIgASgLMiAuaW50ZXJvcC5BcHBDb25uZWN0aW9uRGVzY3JpcHRv", "cjoZktsEFWludGVyb3AuSW52b2NhdGlvblJlZiJbCg9JbnZvY2F0aW9uc0xp", "c3QSKwoLaW52b2NhdGlvbnMYASADKAsyFi5pbnRlcm9wLkludm9jYXRpb25S", "ZWY6G5LbBBdpbnRlcm9wLkludm9jYXRpb25zTGlzdCKKAQoUQ29udGV4dFRv", "SW52b2NhdGlvbnMSIQoHY29udGV4dBgBIAEoCzIQLmludGVyb3AuQ29udGV4", "dBItCgtpbnZvY2F0aW9ucxgCIAEoCzIYLmludGVyb3AuSW52b2NhdGlvbnNM", "aXN0OiCS2wQcaW50ZXJvcC5Db250ZXh0VG9JbnZvY2F0aW9ucyJxChhDb250", "ZXh0VG9JbnZvY2F0aW9uc0xpc3QSLwoIY29udGV4dHMYASADKAsyHS5pbnRl", "cm9wLkNvbnRleHRUb0ludm9jYXRpb25zOiSS2wQgaW50ZXJvcC5Db250ZXh0", "VG9JbnZvY2F0aW9uc0xpc3QiiQEKFUFwcEpvaW5lZENvbnRleHRFdmVudBIh", "Cgdjb250ZXh0GAEgASgLMhAuaW50ZXJvcC5Db250ZXh0EioKD2FwcF9pbnN0", "YW5jZV9pZBgCIAEoCzIRLmludGVyb3AuVW5pcXVlSWQ6IZLbBB1pbnRlcm9w", "LkFwcEpvaW5lZENvbnRleHRFdmVudCJ3Ch1SZXN0b3JlQ29udGV4dHNMaW5r", "YWdlUmVxdWVzdBIrCgRhcHBzGAEgAygLMh0uaW50ZXJvcC5SZXN0b3JpbmdB", "cHBJbnN0YW5jZTopktsEJWludGVyb3AuUmVzdG9yZUNvbnRleHRzTGlua2Fn", "ZVJlcXVlc3QisgEKFFJlc3RvcmluZ0FwcEluc3RhbmNlEioKD2FwcF9pbnN0", "YW5jZV9pZBgBIAEoCzIRLmludGVyb3AuVW5pcXVlSWQSDwoHYXBwX2lkcxgC", "IAMoCRIXCgtjb250ZXh0X2lkcxgDIAMoCUICGAESIgoIY29udGV4dHMYBCAD", "KAsyEC5pbnRlcm9wLkNvbnRleHQ6IJLbBBxpbnRlcm9wLlJlc3RvcmluZ0Fw", "cEluc3RhbmNlIvgBCh5SZXN0b3JlQ29udGV4dHNMaW5rYWdlUmVzcG9uc2US", "XQoUY3JlYXRlZF9jb250ZXh0c19tYXAYASADKAsyPy5pbnRlcm9wLlJlc3Rv", "cmVDb250ZXh0c0xpbmthZ2VSZXNwb25zZS5DcmVhdGVkQ29udGV4dHNNYXBF", "bnRyeRpLChdDcmVhdGVkQ29udGV4dHNNYXBFbnRyeRILCgNrZXkYASABKAkS", "HwoFdmFsdWUYAiABKAsyEC5pbnRlcm9wLkNvbnRleHQ6AjgBOiqS2wQmaW50", "ZXJvcC5SZXN0b3JlQ29udGV4dHNMaW5rYWdlUmVzcG9uc2UqQQoUQ29udGV4", "dExvYWRpbmdTdGF0dXMSDwoLSU5fUFJPR1JFU1MQABIKCgZGQUlMRUQQARIM", "CghGSU5JU0hFRBACMtcFChVDb250ZXh0TGlua2FnZVNlcnZpY2USSAoTQ29u", "dGV4dExvYWRlZFN0cmVhbRIQLmludGVyb3AuQ29udGV4dBodLmludGVyb3Au", "Q29udGV4dExvYWRpbmdVcGRhdGUwARI+Cg1DcmVhdGVDb250ZXh0EhYuZ29v", "Z2xlLnByb3RvYnVmLkVtcHR5GhAuaW50ZXJvcC5Db250ZXh0IgOIAgESQQoO", "Q3JlYXRlQ29udGV4dDISHS5pbnRlcm9wLkNyZWF0ZUNvbnRleHRSZXF1ZXN0", "GhAuaW50ZXJvcC5Db250ZXh0EjcKC0pvaW5Db250ZXh0EhAuaW50ZXJvcC5D", "b250ZXh0GhYuZ29vZ2xlLnByb3RvYnVmLkVtcHR5EjwKC0dldENvbnRleHRz", "EhYuZ29vZ2xlLnByb3RvYnVmLkVtcHR5GhUuaW50ZXJvcC5Db250ZXh0c0xp", "c3QSQgoUR2V0TGlua2VkSW52b2NhdGlvbnMSEC5pbnRlcm9wLkNvbnRleHQa", "GC5pbnRlcm9wLkludm9jYXRpb25zTGlzdBJUChdHZXRBbGxMaW5rZWRJbnZv", "Y2F0aW9ucxIWLmdvb2dsZS5wcm90b2J1Zi5FbXB0eRohLmludGVyb3AuQ29u", "dGV4dFRvSW52b2NhdGlvbnNMaXN0ElIKFkFwcEpvaW5lZENvbnRleHRTdHJl", "YW0SFi5nb29nbGUucHJvdG9idWYuRW1wdHkaHi5pbnRlcm9wLkFwcEpvaW5l", "ZENvbnRleHRFdmVudDABEmkKFlJlc3RvcmVDb250ZXh0c0xpbmthZ2USJi5p", "bnRlcm9wLlJlc3RvcmVDb250ZXh0c0xpbmthZ2VSZXF1ZXN0GicuaW50ZXJv", "cC5SZXN0b3JlQ29udGV4dHNMaW5rYWdlUmVzcG9uc2UaIZLbBB1pbnRlcm9w", "LkNvbnRleHRMaW5rYWdlU2VydmljZUIpqgImUGxleHVzLkludGVyb3AuQXBw", "cy5JbnRlcm5hbC5HZW5lcmF0ZWRiBnByb3RvMw==")); descriptor = pbr::FileDescriptor.FromGeneratedCode(descriptorData, new pbr::FileDescriptor[] { global::Google.Protobuf.WellKnownTypes.EmptyReflection.Descriptor, global::Plexus.Interop.Apps.Internal.Generated.UniqueIdReflection.Descriptor, global::Plexus.Interop.Apps.Internal.Generated.AppConnectionDescriptorReflection.Descriptor, global::Plexus.Interop.Apps.Internal.Generated.AppMetadataServiceReflection.Descriptor, global::Plexus.Interop.Apps.Internal.Generated.OptionsReflection.Descriptor, }, new pbr::GeneratedClrTypeInfo(new[] {typeof(global::Plexus.Interop.Apps.Internal.Generated.ContextLoadingStatus), }, null, new pbr::GeneratedClrTypeInfo[] { new pbr::GeneratedClrTypeInfo(typeof(global::Plexus.Interop.Apps.Internal.Generated.Context), global::Plexus.Interop.Apps.Internal.Generated.Context.Parser, new[]{ "Id", "Own", "Kind" }, null, null, null, null), new pbr::GeneratedClrTypeInfo(typeof(global::Plexus.Interop.Apps.Internal.Generated.ContextsList), global::Plexus.Interop.Apps.Internal.Generated.ContextsList.Parser, new[]{ "Contexts" }, null, null, null, null), new pbr::GeneratedClrTypeInfo(typeof(global::Plexus.Interop.Apps.Internal.Generated.CreateContextRequest), global::Plexus.Interop.Apps.Internal.Generated.CreateContextRequest.Parser, new[]{ "Kind" }, null, null, null, null), new pbr::GeneratedClrTypeInfo(typeof(global::Plexus.Interop.Apps.Internal.Generated.ContextLoadingUpdate), global::Plexus.Interop.Apps.Internal.Generated.ContextLoadingUpdate.Parser, new[]{ "Status", "LoadedAppDescriptors", "FailedAppDescriptors" }, null, null, null, null), new pbr::GeneratedClrTypeInfo(typeof(global::Plexus.Interop.Apps.Internal.Generated.InvocationRef), global::Plexus.Interop.Apps.Internal.Generated.InvocationRef.Parser, new[]{ "AppInfo", "Target" }, null, null, null, null), new pbr::GeneratedClrTypeInfo(typeof(global::Plexus.Interop.Apps.Internal.Generated.InvocationsList), global::Plexus.Interop.Apps.Internal.Generated.InvocationsList.Parser, new[]{ "Invocations" }, null, null, null, null), new pbr::GeneratedClrTypeInfo(typeof(global::Plexus.Interop.Apps.Internal.Generated.ContextToInvocations), global::Plexus.Interop.Apps.Internal.Generated.ContextToInvocations.Parser, new[]{ "Context", "Invocations" }, null, null, null, null), new pbr::GeneratedClrTypeInfo(typeof(global::Plexus.Interop.Apps.Internal.Generated.ContextToInvocationsList), global::Plexus.Interop.Apps.Internal.Generated.ContextToInvocationsList.Parser, new[]{ "Contexts" }, null, null, null, null), new pbr::GeneratedClrTypeInfo(typeof(global::Plexus.Interop.Apps.Internal.Generated.AppJoinedContextEvent), global::Plexus.Interop.Apps.Internal.Generated.AppJoinedContextEvent.Parser, new[]{ "Context", "AppInstanceId" }, null, null, null, null), new pbr::GeneratedClrTypeInfo(typeof(global::Plexus.Interop.Apps.Internal.Generated.RestoreContextsLinkageRequest), global::Plexus.Interop.Apps.Internal.Generated.RestoreContextsLinkageRequest.Parser, new[]{ "Apps" }, null, null, null, null), new pbr::GeneratedClrTypeInfo(typeof(global::Plexus.Interop.Apps.Internal.Generated.RestoringAppInstance), global::Plexus.Interop.Apps.Internal.Generated.RestoringAppInstance.Parser, new[]{ "AppInstanceId", "AppIds", "ContextIds", "Contexts" }, null, null, null, null), new pbr::GeneratedClrTypeInfo(typeof(global::Plexus.Interop.Apps.Internal.Generated.RestoreContextsLinkageResponse), global::Plexus.Interop.Apps.Internal.Generated.RestoreContextsLinkageResponse.Parser, new[]{ "CreatedContextsMap" }, null, null, null, new pbr::GeneratedClrTypeInfo[] { null, }) })); } #endregion } #region Enums internal enum ContextLoadingStatus { /// /// intermediate state, some of apps within context already loaded /// [pbr::OriginalName("IN_PROGRESS")] InProgress = 0, /// /// termination state, some of apps failed to start/connect to plexus, no more apps "in progress" /// [pbr::OriginalName("FAILED")] Failed = 1, /// /// termination state, all apps within context are loaded /// [pbr::OriginalName("FINISHED")] Finished = 2, } #endregion #region Messages internal sealed partial class Context : pb::IMessage #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE , pb::IBufferMessage #endif { private static readonly pb::MessageParser _parser = new pb::MessageParser(() => new Context()); private pb::UnknownFieldSet _unknownFields; [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public static pb::MessageParser Parser { get { return _parser; } } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public static pbr::MessageDescriptor Descriptor { get { return global::Plexus.Interop.Apps.Internal.Generated.ContextLinkageReflection.Descriptor.MessageTypes[0]; } } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] pbr::MessageDescriptor pb::IMessage.Descriptor { get { return Descriptor; } } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public Context() { OnConstruction(); } partial void OnConstruction(); [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public Context(Context other) : this() { id_ = other.id_; own_ = other.own_; kind_ = other.kind_; _unknownFields = pb::UnknownFieldSet.Clone(other._unknownFields); } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public Context Clone() { return new Context(this); } /// Field number for the "id" field. public const int IdFieldNumber = 1; private string id_ = ""; [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public string Id { get { return id_; } set { id_ = pb::ProtoPreconditions.CheckNotNull(value, "value"); } } /// Field number for the "own" field. public const int OwnFieldNumber = 2; private bool own_; [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public bool Own { get { return own_; } set { own_ = value; } } /// Field number for the "kind" field. public const int KindFieldNumber = 3; private string kind_ = ""; [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public string Kind { get { return kind_; } set { kind_ = pb::ProtoPreconditions.CheckNotNull(value, "value"); } } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public override bool Equals(object other) { return Equals(other as Context); } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public bool Equals(Context other) { if (ReferenceEquals(other, null)) { return false; } if (ReferenceEquals(other, this)) { return true; } if (Id != other.Id) return false; if (Own != other.Own) return false; if (Kind != other.Kind) return false; return Equals(_unknownFields, other._unknownFields); } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public override int GetHashCode() { int hash = 1; if (Id.Length != 0) hash ^= Id.GetHashCode(); if (Own != false) hash ^= Own.GetHashCode(); if (Kind.Length != 0) hash ^= Kind.GetHashCode(); if (_unknownFields != null) { hash ^= _unknownFields.GetHashCode(); } return hash; } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public override string ToString() { return pb::JsonFormatter.ToDiagnosticString(this); } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public void WriteTo(pb::CodedOutputStream output) { #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE output.WriteRawMessage(this); #else if (Id.Length != 0) { output.WriteRawTag(10); output.WriteString(Id); } if (Own != false) { output.WriteRawTag(16); output.WriteBool(Own); } if (Kind.Length != 0) { output.WriteRawTag(26); output.WriteString(Kind); } if (_unknownFields != null) { _unknownFields.WriteTo(output); } #endif } #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] void pb::IBufferMessage.InternalWriteTo(ref pb::WriteContext output) { if (Id.Length != 0) { output.WriteRawTag(10); output.WriteString(Id); } if (Own != false) { output.WriteRawTag(16); output.WriteBool(Own); } if (Kind.Length != 0) { output.WriteRawTag(26); output.WriteString(Kind); } if (_unknownFields != null) { _unknownFields.WriteTo(ref output); } } #endif [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public int CalculateSize() { int size = 0; if (Id.Length != 0) { size += 1 + pb::CodedOutputStream.ComputeStringSize(Id); } if (Own != false) { size += 1 + 1; } if (Kind.Length != 0) { size += 1 + pb::CodedOutputStream.ComputeStringSize(Kind); } if (_unknownFields != null) { size += _unknownFields.CalculateSize(); } return size; } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public void MergeFrom(Context other) { if (other == null) { return; } if (other.Id.Length != 0) { Id = other.Id; } if (other.Own != false) { Own = other.Own; } if (other.Kind.Length != 0) { Kind = other.Kind; } _unknownFields = pb::UnknownFieldSet.MergeFrom(_unknownFields, other._unknownFields); } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public void MergeFrom(pb::CodedInputStream input) { #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE input.ReadRawMessage(this); #else uint tag; while ((tag = input.ReadTag()) != 0) { switch(tag) { default: _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input); break; case 10: { Id = input.ReadString(); break; } case 16: { Own = input.ReadBool(); break; } case 26: { Kind = input.ReadString(); break; } } } #endif } #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] void pb::IBufferMessage.InternalMergeFrom(ref pb::ParseContext input) { uint tag; while ((tag = input.ReadTag()) != 0) { switch(tag) { default: _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, ref input); break; case 10: { Id = input.ReadString(); break; } case 16: { Own = input.ReadBool(); break; } case 26: { Kind = input.ReadString(); break; } } } } #endif } internal sealed partial class ContextsList : pb::IMessage #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE , pb::IBufferMessage #endif { private static readonly pb::MessageParser _parser = new pb::MessageParser(() => new ContextsList()); private pb::UnknownFieldSet _unknownFields; [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public static pb::MessageParser Parser { get { return _parser; } } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public static pbr::MessageDescriptor Descriptor { get { return global::Plexus.Interop.Apps.Internal.Generated.ContextLinkageReflection.Descriptor.MessageTypes[1]; } } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] pbr::MessageDescriptor pb::IMessage.Descriptor { get { return Descriptor; } } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public ContextsList() { OnConstruction(); } partial void OnConstruction(); [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public ContextsList(ContextsList other) : this() { contexts_ = other.contexts_.Clone(); _unknownFields = pb::UnknownFieldSet.Clone(other._unknownFields); } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public ContextsList Clone() { return new ContextsList(this); } /// Field number for the "contexts" field. public const int ContextsFieldNumber = 1; private static readonly pb::FieldCodec _repeated_contexts_codec = pb::FieldCodec.ForMessage(10, global::Plexus.Interop.Apps.Internal.Generated.Context.Parser); private readonly pbc::RepeatedField contexts_ = new pbc::RepeatedField(); [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public pbc::RepeatedField Contexts { get { return contexts_; } } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public override bool Equals(object other) { return Equals(other as ContextsList); } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public bool Equals(ContextsList other) { if (ReferenceEquals(other, null)) { return false; } if (ReferenceEquals(other, this)) { return true; } if(!contexts_.Equals(other.contexts_)) return false; return Equals(_unknownFields, other._unknownFields); } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public override int GetHashCode() { int hash = 1; hash ^= contexts_.GetHashCode(); if (_unknownFields != null) { hash ^= _unknownFields.GetHashCode(); } return hash; } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public override string ToString() { return pb::JsonFormatter.ToDiagnosticString(this); } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public void WriteTo(pb::CodedOutputStream output) { #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE output.WriteRawMessage(this); #else contexts_.WriteTo(output, _repeated_contexts_codec); if (_unknownFields != null) { _unknownFields.WriteTo(output); } #endif } #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] void pb::IBufferMessage.InternalWriteTo(ref pb::WriteContext output) { contexts_.WriteTo(ref output, _repeated_contexts_codec); if (_unknownFields != null) { _unknownFields.WriteTo(ref output); } } #endif [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public int CalculateSize() { int size = 0; size += contexts_.CalculateSize(_repeated_contexts_codec); if (_unknownFields != null) { size += _unknownFields.CalculateSize(); } return size; } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public void MergeFrom(ContextsList other) { if (other == null) { return; } contexts_.Add(other.contexts_); _unknownFields = pb::UnknownFieldSet.MergeFrom(_unknownFields, other._unknownFields); } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public void MergeFrom(pb::CodedInputStream input) { #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE input.ReadRawMessage(this); #else uint tag; while ((tag = input.ReadTag()) != 0) { switch(tag) { default: _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input); break; case 10: { contexts_.AddEntriesFrom(input, _repeated_contexts_codec); break; } } } #endif } #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] void pb::IBufferMessage.InternalMergeFrom(ref pb::ParseContext input) { uint tag; while ((tag = input.ReadTag()) != 0) { switch(tag) { default: _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, ref input); break; case 10: { contexts_.AddEntriesFrom(ref input, _repeated_contexts_codec); break; } } } } #endif } internal sealed partial class CreateContextRequest : pb::IMessage #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE , pb::IBufferMessage #endif { private static readonly pb::MessageParser _parser = new pb::MessageParser(() => new CreateContextRequest()); private pb::UnknownFieldSet _unknownFields; [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public static pb::MessageParser Parser { get { return _parser; } } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public static pbr::MessageDescriptor Descriptor { get { return global::Plexus.Interop.Apps.Internal.Generated.ContextLinkageReflection.Descriptor.MessageTypes[2]; } } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] pbr::MessageDescriptor pb::IMessage.Descriptor { get { return Descriptor; } } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public CreateContextRequest() { OnConstruction(); } partial void OnConstruction(); [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public CreateContextRequest(CreateContextRequest other) : this() { kind_ = other.kind_; _unknownFields = pb::UnknownFieldSet.Clone(other._unknownFields); } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public CreateContextRequest Clone() { return new CreateContextRequest(this); } /// Field number for the "kind" field. public const int KindFieldNumber = 1; private string kind_ = ""; [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public string Kind { get { return kind_; } set { kind_ = pb::ProtoPreconditions.CheckNotNull(value, "value"); } } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public override bool Equals(object other) { return Equals(other as CreateContextRequest); } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public bool Equals(CreateContextRequest other) { if (ReferenceEquals(other, null)) { return false; } if (ReferenceEquals(other, this)) { return true; } if (Kind != other.Kind) return false; return Equals(_unknownFields, other._unknownFields); } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public override int GetHashCode() { int hash = 1; if (Kind.Length != 0) hash ^= Kind.GetHashCode(); if (_unknownFields != null) { hash ^= _unknownFields.GetHashCode(); } return hash; } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public override string ToString() { return pb::JsonFormatter.ToDiagnosticString(this); } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public void WriteTo(pb::CodedOutputStream output) { #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE output.WriteRawMessage(this); #else if (Kind.Length != 0) { output.WriteRawTag(10); output.WriteString(Kind); } if (_unknownFields != null) { _unknownFields.WriteTo(output); } #endif } #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] void pb::IBufferMessage.InternalWriteTo(ref pb::WriteContext output) { if (Kind.Length != 0) { output.WriteRawTag(10); output.WriteString(Kind); } if (_unknownFields != null) { _unknownFields.WriteTo(ref output); } } #endif [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public int CalculateSize() { int size = 0; if (Kind.Length != 0) { size += 1 + pb::CodedOutputStream.ComputeStringSize(Kind); } if (_unknownFields != null) { size += _unknownFields.CalculateSize(); } return size; } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public void MergeFrom(CreateContextRequest other) { if (other == null) { return; } if (other.Kind.Length != 0) { Kind = other.Kind; } _unknownFields = pb::UnknownFieldSet.MergeFrom(_unknownFields, other._unknownFields); } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public void MergeFrom(pb::CodedInputStream input) { #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE input.ReadRawMessage(this); #else uint tag; while ((tag = input.ReadTag()) != 0) { switch(tag) { default: _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input); break; case 10: { Kind = input.ReadString(); break; } } } #endif } #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] void pb::IBufferMessage.InternalMergeFrom(ref pb::ParseContext input) { uint tag; while ((tag = input.ReadTag()) != 0) { switch(tag) { default: _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, ref input); break; case 10: { Kind = input.ReadString(); break; } } } } #endif } internal sealed partial class ContextLoadingUpdate : pb::IMessage #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE , pb::IBufferMessage #endif { private static readonly pb::MessageParser _parser = new pb::MessageParser(() => new ContextLoadingUpdate()); private pb::UnknownFieldSet _unknownFields; [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public static pb::MessageParser Parser { get { return _parser; } } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public static pbr::MessageDescriptor Descriptor { get { return global::Plexus.Interop.Apps.Internal.Generated.ContextLinkageReflection.Descriptor.MessageTypes[3]; } } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] pbr::MessageDescriptor pb::IMessage.Descriptor { get { return Descriptor; } } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public ContextLoadingUpdate() { OnConstruction(); } partial void OnConstruction(); [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public ContextLoadingUpdate(ContextLoadingUpdate other) : this() { status_ = other.status_; loadedAppDescriptors_ = other.loadedAppDescriptors_.Clone(); failedAppDescriptors_ = other.failedAppDescriptors_.Clone(); _unknownFields = pb::UnknownFieldSet.Clone(other._unknownFields); } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public ContextLoadingUpdate Clone() { return new ContextLoadingUpdate(this); } /// Field number for the "status" field. public const int StatusFieldNumber = 1; private global::Plexus.Interop.Apps.Internal.Generated.ContextLoadingStatus status_ = global::Plexus.Interop.Apps.Internal.Generated.ContextLoadingStatus.InProgress; [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public global::Plexus.Interop.Apps.Internal.Generated.ContextLoadingStatus Status { get { return status_; } set { status_ = value; } } /// Field number for the "loaded_app_descriptors" field. public const int LoadedAppDescriptorsFieldNumber = 2; private static readonly pb::FieldCodec _repeated_loadedAppDescriptors_codec = pb::FieldCodec.ForMessage(18, global::Plexus.Interop.Apps.Internal.Generated.AppConnectionDescriptor.Parser); private readonly pbc::RepeatedField loadedAppDescriptors_ = new pbc::RepeatedField(); /// /// loaded apps within context at this moment of time /// [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public pbc::RepeatedField LoadedAppDescriptors { get { return loadedAppDescriptors_; } } /// Field number for the "failed_app_descriptors" field. public const int FailedAppDescriptorsFieldNumber = 3; private static readonly pb::FieldCodec _repeated_failedAppDescriptors_codec = pb::FieldCodec.ForMessage(26, global::Plexus.Interop.Apps.Internal.Generated.AppConnectionDescriptor.Parser); private readonly pbc::RepeatedField failedAppDescriptors_ = new pbc::RepeatedField(); /// /// apps registered in context, but failed to load /// [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public pbc::RepeatedField FailedAppDescriptors { get { return failedAppDescriptors_; } } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public override bool Equals(object other) { return Equals(other as ContextLoadingUpdate); } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public bool Equals(ContextLoadingUpdate other) { if (ReferenceEquals(other, null)) { return false; } if (ReferenceEquals(other, this)) { return true; } if (Status != other.Status) return false; if(!loadedAppDescriptors_.Equals(other.loadedAppDescriptors_)) return false; if(!failedAppDescriptors_.Equals(other.failedAppDescriptors_)) return false; return Equals(_unknownFields, other._unknownFields); } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public override int GetHashCode() { int hash = 1; if (Status != global::Plexus.Interop.Apps.Internal.Generated.ContextLoadingStatus.InProgress) hash ^= Status.GetHashCode(); hash ^= loadedAppDescriptors_.GetHashCode(); hash ^= failedAppDescriptors_.GetHashCode(); if (_unknownFields != null) { hash ^= _unknownFields.GetHashCode(); } return hash; } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public override string ToString() { return pb::JsonFormatter.ToDiagnosticString(this); } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public void WriteTo(pb::CodedOutputStream output) { #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE output.WriteRawMessage(this); #else if (Status != global::Plexus.Interop.Apps.Internal.Generated.ContextLoadingStatus.InProgress) { output.WriteRawTag(8); output.WriteEnum((int) Status); } loadedAppDescriptors_.WriteTo(output, _repeated_loadedAppDescriptors_codec); failedAppDescriptors_.WriteTo(output, _repeated_failedAppDescriptors_codec); if (_unknownFields != null) { _unknownFields.WriteTo(output); } #endif } #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] void pb::IBufferMessage.InternalWriteTo(ref pb::WriteContext output) { if (Status != global::Plexus.Interop.Apps.Internal.Generated.ContextLoadingStatus.InProgress) { output.WriteRawTag(8); output.WriteEnum((int) Status); } loadedAppDescriptors_.WriteTo(ref output, _repeated_loadedAppDescriptors_codec); failedAppDescriptors_.WriteTo(ref output, _repeated_failedAppDescriptors_codec); if (_unknownFields != null) { _unknownFields.WriteTo(ref output); } } #endif [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public int CalculateSize() { int size = 0; if (Status != global::Plexus.Interop.Apps.Internal.Generated.ContextLoadingStatus.InProgress) { size += 1 + pb::CodedOutputStream.ComputeEnumSize((int) Status); } size += loadedAppDescriptors_.CalculateSize(_repeated_loadedAppDescriptors_codec); size += failedAppDescriptors_.CalculateSize(_repeated_failedAppDescriptors_codec); if (_unknownFields != null) { size += _unknownFields.CalculateSize(); } return size; } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public void MergeFrom(ContextLoadingUpdate other) { if (other == null) { return; } if (other.Status != global::Plexus.Interop.Apps.Internal.Generated.ContextLoadingStatus.InProgress) { Status = other.Status; } loadedAppDescriptors_.Add(other.loadedAppDescriptors_); failedAppDescriptors_.Add(other.failedAppDescriptors_); _unknownFields = pb::UnknownFieldSet.MergeFrom(_unknownFields, other._unknownFields); } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public void MergeFrom(pb::CodedInputStream input) { #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE input.ReadRawMessage(this); #else uint tag; while ((tag = input.ReadTag()) != 0) { switch(tag) { default: _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input); break; case 8: { Status = (global::Plexus.Interop.Apps.Internal.Generated.ContextLoadingStatus) input.ReadEnum(); break; } case 18: { loadedAppDescriptors_.AddEntriesFrom(input, _repeated_loadedAppDescriptors_codec); break; } case 26: { failedAppDescriptors_.AddEntriesFrom(input, _repeated_failedAppDescriptors_codec); break; } } } #endif } #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] void pb::IBufferMessage.InternalMergeFrom(ref pb::ParseContext input) { uint tag; while ((tag = input.ReadTag()) != 0) { switch(tag) { default: _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, ref input); break; case 8: { Status = (global::Plexus.Interop.Apps.Internal.Generated.ContextLoadingStatus) input.ReadEnum(); break; } case 18: { loadedAppDescriptors_.AddEntriesFrom(ref input, _repeated_loadedAppDescriptors_codec); break; } case 26: { failedAppDescriptors_.AddEntriesFrom(ref input, _repeated_failedAppDescriptors_codec); break; } } } } #endif } internal sealed partial class InvocationRef : pb::IMessage #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE , pb::IBufferMessage #endif { private static readonly pb::MessageParser _parser = new pb::MessageParser(() => new InvocationRef()); private pb::UnknownFieldSet _unknownFields; [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public static pb::MessageParser Parser { get { return _parser; } } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public static pbr::MessageDescriptor Descriptor { get { return global::Plexus.Interop.Apps.Internal.Generated.ContextLinkageReflection.Descriptor.MessageTypes[4]; } } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] pbr::MessageDescriptor pb::IMessage.Descriptor { get { return Descriptor; } } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public InvocationRef() { OnConstruction(); } partial void OnConstruction(); [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public InvocationRef(InvocationRef other) : this() { appInfo_ = other.appInfo_ != null ? other.appInfo_.Clone() : null; target_ = other.target_ != null ? other.target_.Clone() : null; _unknownFields = pb::UnknownFieldSet.Clone(other._unknownFields); } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public InvocationRef Clone() { return new InvocationRef(this); } /// Field number for the "app_info" field. public const int AppInfoFieldNumber = 1; private global::Plexus.Interop.Apps.Internal.Generated.AppMetamodelInfo appInfo_; [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public global::Plexus.Interop.Apps.Internal.Generated.AppMetamodelInfo AppInfo { get { return appInfo_; } set { appInfo_ = value; } } /// Field number for the "target" field. public const int TargetFieldNumber = 2; private global::Plexus.Interop.Apps.Internal.Generated.AppConnectionDescriptor target_; [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public global::Plexus.Interop.Apps.Internal.Generated.AppConnectionDescriptor Target { get { return target_; } set { target_ = value; } } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public override bool Equals(object other) { return Equals(other as InvocationRef); } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public bool Equals(InvocationRef other) { if (ReferenceEquals(other, null)) { return false; } if (ReferenceEquals(other, this)) { return true; } if (!object.Equals(AppInfo, other.AppInfo)) return false; if (!object.Equals(Target, other.Target)) return false; return Equals(_unknownFields, other._unknownFields); } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public override int GetHashCode() { int hash = 1; if (appInfo_ != null) hash ^= AppInfo.GetHashCode(); if (target_ != null) hash ^= Target.GetHashCode(); if (_unknownFields != null) { hash ^= _unknownFields.GetHashCode(); } return hash; } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public override string ToString() { return pb::JsonFormatter.ToDiagnosticString(this); } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public void WriteTo(pb::CodedOutputStream output) { #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE output.WriteRawMessage(this); #else if (appInfo_ != null) { output.WriteRawTag(10); output.WriteMessage(AppInfo); } if (target_ != null) { output.WriteRawTag(18); output.WriteMessage(Target); } if (_unknownFields != null) { _unknownFields.WriteTo(output); } #endif } #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] void pb::IBufferMessage.InternalWriteTo(ref pb::WriteContext output) { if (appInfo_ != null) { output.WriteRawTag(10); output.WriteMessage(AppInfo); } if (target_ != null) { output.WriteRawTag(18); output.WriteMessage(Target); } if (_unknownFields != null) { _unknownFields.WriteTo(ref output); } } #endif [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public int CalculateSize() { int size = 0; if (appInfo_ != null) { size += 1 + pb::CodedOutputStream.ComputeMessageSize(AppInfo); } if (target_ != null) { size += 1 + pb::CodedOutputStream.ComputeMessageSize(Target); } if (_unknownFields != null) { size += _unknownFields.CalculateSize(); } return size; } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public void MergeFrom(InvocationRef other) { if (other == null) { return; } if (other.appInfo_ != null) { if (appInfo_ == null) { AppInfo = new global::Plexus.Interop.Apps.Internal.Generated.AppMetamodelInfo(); } AppInfo.MergeFrom(other.AppInfo); } if (other.target_ != null) { if (target_ == null) { Target = new global::Plexus.Interop.Apps.Internal.Generated.AppConnectionDescriptor(); } Target.MergeFrom(other.Target); } _unknownFields = pb::UnknownFieldSet.MergeFrom(_unknownFields, other._unknownFields); } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public void MergeFrom(pb::CodedInputStream input) { #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE input.ReadRawMessage(this); #else uint tag; while ((tag = input.ReadTag()) != 0) { switch(tag) { default: _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input); break; case 10: { if (appInfo_ == null) { AppInfo = new global::Plexus.Interop.Apps.Internal.Generated.AppMetamodelInfo(); } input.ReadMessage(AppInfo); break; } case 18: { if (target_ == null) { Target = new global::Plexus.Interop.Apps.Internal.Generated.AppConnectionDescriptor(); } input.ReadMessage(Target); break; } } } #endif } #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] void pb::IBufferMessage.InternalMergeFrom(ref pb::ParseContext input) { uint tag; while ((tag = input.ReadTag()) != 0) { switch(tag) { default: _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, ref input); break; case 10: { if (appInfo_ == null) { AppInfo = new global::Plexus.Interop.Apps.Internal.Generated.AppMetamodelInfo(); } input.ReadMessage(AppInfo); break; } case 18: { if (target_ == null) { Target = new global::Plexus.Interop.Apps.Internal.Generated.AppConnectionDescriptor(); } input.ReadMessage(Target); break; } } } } #endif } internal sealed partial class InvocationsList : pb::IMessage #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE , pb::IBufferMessage #endif { private static readonly pb::MessageParser _parser = new pb::MessageParser(() => new InvocationsList()); private pb::UnknownFieldSet _unknownFields; [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public static pb::MessageParser Parser { get { return _parser; } } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public static pbr::MessageDescriptor Descriptor { get { return global::Plexus.Interop.Apps.Internal.Generated.ContextLinkageReflection.Descriptor.MessageTypes[5]; } } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] pbr::MessageDescriptor pb::IMessage.Descriptor { get { return Descriptor; } } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public InvocationsList() { OnConstruction(); } partial void OnConstruction(); [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public InvocationsList(InvocationsList other) : this() { invocations_ = other.invocations_.Clone(); _unknownFields = pb::UnknownFieldSet.Clone(other._unknownFields); } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public InvocationsList Clone() { return new InvocationsList(this); } /// Field number for the "invocations" field. public const int InvocationsFieldNumber = 1; private static readonly pb::FieldCodec _repeated_invocations_codec = pb::FieldCodec.ForMessage(10, global::Plexus.Interop.Apps.Internal.Generated.InvocationRef.Parser); private readonly pbc::RepeatedField invocations_ = new pbc::RepeatedField(); [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public pbc::RepeatedField Invocations { get { return invocations_; } } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public override bool Equals(object other) { return Equals(other as InvocationsList); } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public bool Equals(InvocationsList other) { if (ReferenceEquals(other, null)) { return false; } if (ReferenceEquals(other, this)) { return true; } if(!invocations_.Equals(other.invocations_)) return false; return Equals(_unknownFields, other._unknownFields); } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public override int GetHashCode() { int hash = 1; hash ^= invocations_.GetHashCode(); if (_unknownFields != null) { hash ^= _unknownFields.GetHashCode(); } return hash; } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public override string ToString() { return pb::JsonFormatter.ToDiagnosticString(this); } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public void WriteTo(pb::CodedOutputStream output) { #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE output.WriteRawMessage(this); #else invocations_.WriteTo(output, _repeated_invocations_codec); if (_unknownFields != null) { _unknownFields.WriteTo(output); } #endif } #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] void pb::IBufferMessage.InternalWriteTo(ref pb::WriteContext output) { invocations_.WriteTo(ref output, _repeated_invocations_codec); if (_unknownFields != null) { _unknownFields.WriteTo(ref output); } } #endif [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public int CalculateSize() { int size = 0; size += invocations_.CalculateSize(_repeated_invocations_codec); if (_unknownFields != null) { size += _unknownFields.CalculateSize(); } return size; } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public void MergeFrom(InvocationsList other) { if (other == null) { return; } invocations_.Add(other.invocations_); _unknownFields = pb::UnknownFieldSet.MergeFrom(_unknownFields, other._unknownFields); } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public void MergeFrom(pb::CodedInputStream input) { #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE input.ReadRawMessage(this); #else uint tag; while ((tag = input.ReadTag()) != 0) { switch(tag) { default: _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input); break; case 10: { invocations_.AddEntriesFrom(input, _repeated_invocations_codec); break; } } } #endif } #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] void pb::IBufferMessage.InternalMergeFrom(ref pb::ParseContext input) { uint tag; while ((tag = input.ReadTag()) != 0) { switch(tag) { default: _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, ref input); break; case 10: { invocations_.AddEntriesFrom(ref input, _repeated_invocations_codec); break; } } } } #endif } internal sealed partial class ContextToInvocations : pb::IMessage #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE , pb::IBufferMessage #endif { private static readonly pb::MessageParser _parser = new pb::MessageParser(() => new ContextToInvocations()); private pb::UnknownFieldSet _unknownFields; [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public static pb::MessageParser Parser { get { return _parser; } } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public static pbr::MessageDescriptor Descriptor { get { return global::Plexus.Interop.Apps.Internal.Generated.ContextLinkageReflection.Descriptor.MessageTypes[6]; } } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] pbr::MessageDescriptor pb::IMessage.Descriptor { get { return Descriptor; } } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public ContextToInvocations() { OnConstruction(); } partial void OnConstruction(); [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public ContextToInvocations(ContextToInvocations other) : this() { context_ = other.context_ != null ? other.context_.Clone() : null; invocations_ = other.invocations_ != null ? other.invocations_.Clone() : null; _unknownFields = pb::UnknownFieldSet.Clone(other._unknownFields); } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public ContextToInvocations Clone() { return new ContextToInvocations(this); } /// Field number for the "context" field. public const int ContextFieldNumber = 1; private global::Plexus.Interop.Apps.Internal.Generated.Context context_; [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public global::Plexus.Interop.Apps.Internal.Generated.Context Context { get { return context_; } set { context_ = value; } } /// Field number for the "invocations" field. public const int InvocationsFieldNumber = 2; private global::Plexus.Interop.Apps.Internal.Generated.InvocationsList invocations_; [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public global::Plexus.Interop.Apps.Internal.Generated.InvocationsList Invocations { get { return invocations_; } set { invocations_ = value; } } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public override bool Equals(object other) { return Equals(other as ContextToInvocations); } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public bool Equals(ContextToInvocations other) { if (ReferenceEquals(other, null)) { return false; } if (ReferenceEquals(other, this)) { return true; } if (!object.Equals(Context, other.Context)) return false; if (!object.Equals(Invocations, other.Invocations)) return false; return Equals(_unknownFields, other._unknownFields); } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public override int GetHashCode() { int hash = 1; if (context_ != null) hash ^= Context.GetHashCode(); if (invocations_ != null) hash ^= Invocations.GetHashCode(); if (_unknownFields != null) { hash ^= _unknownFields.GetHashCode(); } return hash; } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public override string ToString() { return pb::JsonFormatter.ToDiagnosticString(this); } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public void WriteTo(pb::CodedOutputStream output) { #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE output.WriteRawMessage(this); #else if (context_ != null) { output.WriteRawTag(10); output.WriteMessage(Context); } if (invocations_ != null) { output.WriteRawTag(18); output.WriteMessage(Invocations); } if (_unknownFields != null) { _unknownFields.WriteTo(output); } #endif } #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] void pb::IBufferMessage.InternalWriteTo(ref pb::WriteContext output) { if (context_ != null) { output.WriteRawTag(10); output.WriteMessage(Context); } if (invocations_ != null) { output.WriteRawTag(18); output.WriteMessage(Invocations); } if (_unknownFields != null) { _unknownFields.WriteTo(ref output); } } #endif [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public int CalculateSize() { int size = 0; if (context_ != null) { size += 1 + pb::CodedOutputStream.ComputeMessageSize(Context); } if (invocations_ != null) { size += 1 + pb::CodedOutputStream.ComputeMessageSize(Invocations); } if (_unknownFields != null) { size += _unknownFields.CalculateSize(); } return size; } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public void MergeFrom(ContextToInvocations other) { if (other == null) { return; } if (other.context_ != null) { if (context_ == null) { Context = new global::Plexus.Interop.Apps.Internal.Generated.Context(); } Context.MergeFrom(other.Context); } if (other.invocations_ != null) { if (invocations_ == null) { Invocations = new global::Plexus.Interop.Apps.Internal.Generated.InvocationsList(); } Invocations.MergeFrom(other.Invocations); } _unknownFields = pb::UnknownFieldSet.MergeFrom(_unknownFields, other._unknownFields); } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public void MergeFrom(pb::CodedInputStream input) { #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE input.ReadRawMessage(this); #else uint tag; while ((tag = input.ReadTag()) != 0) { switch(tag) { default: _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input); break; case 10: { if (context_ == null) { Context = new global::Plexus.Interop.Apps.Internal.Generated.Context(); } input.ReadMessage(Context); break; } case 18: { if (invocations_ == null) { Invocations = new global::Plexus.Interop.Apps.Internal.Generated.InvocationsList(); } input.ReadMessage(Invocations); break; } } } #endif } #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] void pb::IBufferMessage.InternalMergeFrom(ref pb::ParseContext input) { uint tag; while ((tag = input.ReadTag()) != 0) { switch(tag) { default: _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, ref input); break; case 10: { if (context_ == null) { Context = new global::Plexus.Interop.Apps.Internal.Generated.Context(); } input.ReadMessage(Context); break; } case 18: { if (invocations_ == null) { Invocations = new global::Plexus.Interop.Apps.Internal.Generated.InvocationsList(); } input.ReadMessage(Invocations); break; } } } } #endif } internal sealed partial class ContextToInvocationsList : pb::IMessage #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE , pb::IBufferMessage #endif { private static readonly pb::MessageParser _parser = new pb::MessageParser(() => new ContextToInvocationsList()); private pb::UnknownFieldSet _unknownFields; [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public static pb::MessageParser Parser { get { return _parser; } } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public static pbr::MessageDescriptor Descriptor { get { return global::Plexus.Interop.Apps.Internal.Generated.ContextLinkageReflection.Descriptor.MessageTypes[7]; } } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] pbr::MessageDescriptor pb::IMessage.Descriptor { get { return Descriptor; } } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public ContextToInvocationsList() { OnConstruction(); } partial void OnConstruction(); [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public ContextToInvocationsList(ContextToInvocationsList other) : this() { contexts_ = other.contexts_.Clone(); _unknownFields = pb::UnknownFieldSet.Clone(other._unknownFields); } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public ContextToInvocationsList Clone() { return new ContextToInvocationsList(this); } /// Field number for the "contexts" field. public const int ContextsFieldNumber = 1; private static readonly pb::FieldCodec _repeated_contexts_codec = pb::FieldCodec.ForMessage(10, global::Plexus.Interop.Apps.Internal.Generated.ContextToInvocations.Parser); private readonly pbc::RepeatedField contexts_ = new pbc::RepeatedField(); [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public pbc::RepeatedField Contexts { get { return contexts_; } } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public override bool Equals(object other) { return Equals(other as ContextToInvocationsList); } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public bool Equals(ContextToInvocationsList other) { if (ReferenceEquals(other, null)) { return false; } if (ReferenceEquals(other, this)) { return true; } if(!contexts_.Equals(other.contexts_)) return false; return Equals(_unknownFields, other._unknownFields); } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public override int GetHashCode() { int hash = 1; hash ^= contexts_.GetHashCode(); if (_unknownFields != null) { hash ^= _unknownFields.GetHashCode(); } return hash; } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public override string ToString() { return pb::JsonFormatter.ToDiagnosticString(this); } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public void WriteTo(pb::CodedOutputStream output) { #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE output.WriteRawMessage(this); #else contexts_.WriteTo(output, _repeated_contexts_codec); if (_unknownFields != null) { _unknownFields.WriteTo(output); } #endif } #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] void pb::IBufferMessage.InternalWriteTo(ref pb::WriteContext output) { contexts_.WriteTo(ref output, _repeated_contexts_codec); if (_unknownFields != null) { _unknownFields.WriteTo(ref output); } } #endif [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public int CalculateSize() { int size = 0; size += contexts_.CalculateSize(_repeated_contexts_codec); if (_unknownFields != null) { size += _unknownFields.CalculateSize(); } return size; } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public void MergeFrom(ContextToInvocationsList other) { if (other == null) { return; } contexts_.Add(other.contexts_); _unknownFields = pb::UnknownFieldSet.MergeFrom(_unknownFields, other._unknownFields); } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public void MergeFrom(pb::CodedInputStream input) { #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE input.ReadRawMessage(this); #else uint tag; while ((tag = input.ReadTag()) != 0) { switch(tag) { default: _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input); break; case 10: { contexts_.AddEntriesFrom(input, _repeated_contexts_codec); break; } } } #endif } #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] void pb::IBufferMessage.InternalMergeFrom(ref pb::ParseContext input) { uint tag; while ((tag = input.ReadTag()) != 0) { switch(tag) { default: _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, ref input); break; case 10: { contexts_.AddEntriesFrom(ref input, _repeated_contexts_codec); break; } } } } #endif } internal sealed partial class AppJoinedContextEvent : pb::IMessage #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE , pb::IBufferMessage #endif { private static readonly pb::MessageParser _parser = new pb::MessageParser(() => new AppJoinedContextEvent()); private pb::UnknownFieldSet _unknownFields; [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public static pb::MessageParser Parser { get { return _parser; } } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public static pbr::MessageDescriptor Descriptor { get { return global::Plexus.Interop.Apps.Internal.Generated.ContextLinkageReflection.Descriptor.MessageTypes[8]; } } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] pbr::MessageDescriptor pb::IMessage.Descriptor { get { return Descriptor; } } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public AppJoinedContextEvent() { OnConstruction(); } partial void OnConstruction(); [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public AppJoinedContextEvent(AppJoinedContextEvent other) : this() { context_ = other.context_ != null ? other.context_.Clone() : null; appInstanceId_ = other.appInstanceId_ != null ? other.appInstanceId_.Clone() : null; _unknownFields = pb::UnknownFieldSet.Clone(other._unknownFields); } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public AppJoinedContextEvent Clone() { return new AppJoinedContextEvent(this); } /// Field number for the "context" field. public const int ContextFieldNumber = 1; private global::Plexus.Interop.Apps.Internal.Generated.Context context_; [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public global::Plexus.Interop.Apps.Internal.Generated.Context Context { get { return context_; } set { context_ = value; } } /// Field number for the "app_instance_id" field. public const int AppInstanceIdFieldNumber = 2; private global::Plexus.Interop.Apps.Internal.Generated.UniqueId appInstanceId_; [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public global::Plexus.Interop.Apps.Internal.Generated.UniqueId AppInstanceId { get { return appInstanceId_; } set { appInstanceId_ = value; } } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public override bool Equals(object other) { return Equals(other as AppJoinedContextEvent); } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public bool Equals(AppJoinedContextEvent other) { if (ReferenceEquals(other, null)) { return false; } if (ReferenceEquals(other, this)) { return true; } if (!object.Equals(Context, other.Context)) return false; if (!object.Equals(AppInstanceId, other.AppInstanceId)) return false; return Equals(_unknownFields, other._unknownFields); } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public override int GetHashCode() { int hash = 1; if (context_ != null) hash ^= Context.GetHashCode(); if (appInstanceId_ != null) hash ^= AppInstanceId.GetHashCode(); if (_unknownFields != null) { hash ^= _unknownFields.GetHashCode(); } return hash; } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public override string ToString() { return pb::JsonFormatter.ToDiagnosticString(this); } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public void WriteTo(pb::CodedOutputStream output) { #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE output.WriteRawMessage(this); #else if (context_ != null) { output.WriteRawTag(10); output.WriteMessage(Context); } if (appInstanceId_ != null) { output.WriteRawTag(18); output.WriteMessage(AppInstanceId); } if (_unknownFields != null) { _unknownFields.WriteTo(output); } #endif } #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] void pb::IBufferMessage.InternalWriteTo(ref pb::WriteContext output) { if (context_ != null) { output.WriteRawTag(10); output.WriteMessage(Context); } if (appInstanceId_ != null) { output.WriteRawTag(18); output.WriteMessage(AppInstanceId); } if (_unknownFields != null) { _unknownFields.WriteTo(ref output); } } #endif [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public int CalculateSize() { int size = 0; if (context_ != null) { size += 1 + pb::CodedOutputStream.ComputeMessageSize(Context); } if (appInstanceId_ != null) { size += 1 + pb::CodedOutputStream.ComputeMessageSize(AppInstanceId); } if (_unknownFields != null) { size += _unknownFields.CalculateSize(); } return size; } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public void MergeFrom(AppJoinedContextEvent other) { if (other == null) { return; } if (other.context_ != null) { if (context_ == null) { Context = new global::Plexus.Interop.Apps.Internal.Generated.Context(); } Context.MergeFrom(other.Context); } if (other.appInstanceId_ != null) { if (appInstanceId_ == null) { AppInstanceId = new global::Plexus.Interop.Apps.Internal.Generated.UniqueId(); } AppInstanceId.MergeFrom(other.AppInstanceId); } _unknownFields = pb::UnknownFieldSet.MergeFrom(_unknownFields, other._unknownFields); } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public void MergeFrom(pb::CodedInputStream input) { #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE input.ReadRawMessage(this); #else uint tag; while ((tag = input.ReadTag()) != 0) { switch(tag) { default: _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input); break; case 10: { if (context_ == null) { Context = new global::Plexus.Interop.Apps.Internal.Generated.Context(); } input.ReadMessage(Context); break; } case 18: { if (appInstanceId_ == null) { AppInstanceId = new global::Plexus.Interop.Apps.Internal.Generated.UniqueId(); } input.ReadMessage(AppInstanceId); break; } } } #endif } #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] void pb::IBufferMessage.InternalMergeFrom(ref pb::ParseContext input) { uint tag; while ((tag = input.ReadTag()) != 0) { switch(tag) { default: _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, ref input); break; case 10: { if (context_ == null) { Context = new global::Plexus.Interop.Apps.Internal.Generated.Context(); } input.ReadMessage(Context); break; } case 18: { if (appInstanceId_ == null) { AppInstanceId = new global::Plexus.Interop.Apps.Internal.Generated.UniqueId(); } input.ReadMessage(AppInstanceId); break; } } } } #endif } internal sealed partial class RestoreContextsLinkageRequest : pb::IMessage #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE , pb::IBufferMessage #endif { private static readonly pb::MessageParser _parser = new pb::MessageParser(() => new RestoreContextsLinkageRequest()); private pb::UnknownFieldSet _unknownFields; [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public static pb::MessageParser Parser { get { return _parser; } } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public static pbr::MessageDescriptor Descriptor { get { return global::Plexus.Interop.Apps.Internal.Generated.ContextLinkageReflection.Descriptor.MessageTypes[9]; } } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] pbr::MessageDescriptor pb::IMessage.Descriptor { get { return Descriptor; } } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public RestoreContextsLinkageRequest() { OnConstruction(); } partial void OnConstruction(); [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public RestoreContextsLinkageRequest(RestoreContextsLinkageRequest other) : this() { apps_ = other.apps_.Clone(); _unknownFields = pb::UnknownFieldSet.Clone(other._unknownFields); } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public RestoreContextsLinkageRequest Clone() { return new RestoreContextsLinkageRequest(this); } /// Field number for the "apps" field. public const int AppsFieldNumber = 1; private static readonly pb::FieldCodec _repeated_apps_codec = pb::FieldCodec.ForMessage(10, global::Plexus.Interop.Apps.Internal.Generated.RestoringAppInstance.Parser); private readonly pbc::RepeatedField apps_ = new pbc::RepeatedField(); [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public pbc::RepeatedField Apps { get { return apps_; } } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public override bool Equals(object other) { return Equals(other as RestoreContextsLinkageRequest); } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public bool Equals(RestoreContextsLinkageRequest other) { if (ReferenceEquals(other, null)) { return false; } if (ReferenceEquals(other, this)) { return true; } if(!apps_.Equals(other.apps_)) return false; return Equals(_unknownFields, other._unknownFields); } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public override int GetHashCode() { int hash = 1; hash ^= apps_.GetHashCode(); if (_unknownFields != null) { hash ^= _unknownFields.GetHashCode(); } return hash; } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public override string ToString() { return pb::JsonFormatter.ToDiagnosticString(this); } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public void WriteTo(pb::CodedOutputStream output) { #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE output.WriteRawMessage(this); #else apps_.WriteTo(output, _repeated_apps_codec); if (_unknownFields != null) { _unknownFields.WriteTo(output); } #endif } #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] void pb::IBufferMessage.InternalWriteTo(ref pb::WriteContext output) { apps_.WriteTo(ref output, _repeated_apps_codec); if (_unknownFields != null) { _unknownFields.WriteTo(ref output); } } #endif [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public int CalculateSize() { int size = 0; size += apps_.CalculateSize(_repeated_apps_codec); if (_unknownFields != null) { size += _unknownFields.CalculateSize(); } return size; } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public void MergeFrom(RestoreContextsLinkageRequest other) { if (other == null) { return; } apps_.Add(other.apps_); _unknownFields = pb::UnknownFieldSet.MergeFrom(_unknownFields, other._unknownFields); } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public void MergeFrom(pb::CodedInputStream input) { #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE input.ReadRawMessage(this); #else uint tag; while ((tag = input.ReadTag()) != 0) { switch(tag) { default: _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input); break; case 10: { apps_.AddEntriesFrom(input, _repeated_apps_codec); break; } } } #endif } #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] void pb::IBufferMessage.InternalMergeFrom(ref pb::ParseContext input) { uint tag; while ((tag = input.ReadTag()) != 0) { switch(tag) { default: _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, ref input); break; case 10: { apps_.AddEntriesFrom(ref input, _repeated_apps_codec); break; } } } } #endif } internal sealed partial class RestoringAppInstance : pb::IMessage #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE , pb::IBufferMessage #endif { private static readonly pb::MessageParser _parser = new pb::MessageParser(() => new RestoringAppInstance()); private pb::UnknownFieldSet _unknownFields; [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public static pb::MessageParser Parser { get { return _parser; } } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public static pbr::MessageDescriptor Descriptor { get { return global::Plexus.Interop.Apps.Internal.Generated.ContextLinkageReflection.Descriptor.MessageTypes[10]; } } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] pbr::MessageDescriptor pb::IMessage.Descriptor { get { return Descriptor; } } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public RestoringAppInstance() { OnConstruction(); } partial void OnConstruction(); [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public RestoringAppInstance(RestoringAppInstance other) : this() { appInstanceId_ = other.appInstanceId_ != null ? other.appInstanceId_.Clone() : null; appIds_ = other.appIds_.Clone(); contextIds_ = other.contextIds_.Clone(); contexts_ = other.contexts_.Clone(); _unknownFields = pb::UnknownFieldSet.Clone(other._unknownFields); } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public RestoringAppInstance Clone() { return new RestoringAppInstance(this); } /// Field number for the "app_instance_id" field. public const int AppInstanceIdFieldNumber = 1; private global::Plexus.Interop.Apps.Internal.Generated.UniqueId appInstanceId_; [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public global::Plexus.Interop.Apps.Internal.Generated.UniqueId AppInstanceId { get { return appInstanceId_; } set { appInstanceId_ = value; } } /// Field number for the "app_ids" field. public const int AppIdsFieldNumber = 2; private static readonly pb::FieldCodec _repeated_appIds_codec = pb::FieldCodec.ForString(18); private readonly pbc::RepeatedField appIds_ = new pbc::RepeatedField(); [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public pbc::RepeatedField AppIds { get { return appIds_; } } /// Field number for the "context_ids" field. public const int ContextIdsFieldNumber = 3; private static readonly pb::FieldCodec _repeated_contextIds_codec = pb::FieldCodec.ForString(26); private readonly pbc::RepeatedField contextIds_ = new pbc::RepeatedField(); [global::System.ObsoleteAttribute] [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public pbc::RepeatedField ContextIds { get { return contextIds_; } } /// Field number for the "contexts" field. public const int ContextsFieldNumber = 4; private static readonly pb::FieldCodec _repeated_contexts_codec = pb::FieldCodec.ForMessage(34, global::Plexus.Interop.Apps.Internal.Generated.Context.Parser); private readonly pbc::RepeatedField contexts_ = new pbc::RepeatedField(); [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public pbc::RepeatedField Contexts { get { return contexts_; } } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public override bool Equals(object other) { return Equals(other as RestoringAppInstance); } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public bool Equals(RestoringAppInstance other) { if (ReferenceEquals(other, null)) { return false; } if (ReferenceEquals(other, this)) { return true; } if (!object.Equals(AppInstanceId, other.AppInstanceId)) return false; if(!appIds_.Equals(other.appIds_)) return false; if(!contextIds_.Equals(other.contextIds_)) return false; if(!contexts_.Equals(other.contexts_)) return false; return Equals(_unknownFields, other._unknownFields); } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public override int GetHashCode() { int hash = 1; if (appInstanceId_ != null) hash ^= AppInstanceId.GetHashCode(); hash ^= appIds_.GetHashCode(); hash ^= contextIds_.GetHashCode(); hash ^= contexts_.GetHashCode(); if (_unknownFields != null) { hash ^= _unknownFields.GetHashCode(); } return hash; } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public override string ToString() { return pb::JsonFormatter.ToDiagnosticString(this); } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public void WriteTo(pb::CodedOutputStream output) { #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE output.WriteRawMessage(this); #else if (appInstanceId_ != null) { output.WriteRawTag(10); output.WriteMessage(AppInstanceId); } appIds_.WriteTo(output, _repeated_appIds_codec); contextIds_.WriteTo(output, _repeated_contextIds_codec); contexts_.WriteTo(output, _repeated_contexts_codec); if (_unknownFields != null) { _unknownFields.WriteTo(output); } #endif } #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] void pb::IBufferMessage.InternalWriteTo(ref pb::WriteContext output) { if (appInstanceId_ != null) { output.WriteRawTag(10); output.WriteMessage(AppInstanceId); } appIds_.WriteTo(ref output, _repeated_appIds_codec); contextIds_.WriteTo(ref output, _repeated_contextIds_codec); contexts_.WriteTo(ref output, _repeated_contexts_codec); if (_unknownFields != null) { _unknownFields.WriteTo(ref output); } } #endif [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public int CalculateSize() { int size = 0; if (appInstanceId_ != null) { size += 1 + pb::CodedOutputStream.ComputeMessageSize(AppInstanceId); } size += appIds_.CalculateSize(_repeated_appIds_codec); size += contextIds_.CalculateSize(_repeated_contextIds_codec); size += contexts_.CalculateSize(_repeated_contexts_codec); if (_unknownFields != null) { size += _unknownFields.CalculateSize(); } return size; } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public void MergeFrom(RestoringAppInstance other) { if (other == null) { return; } if (other.appInstanceId_ != null) { if (appInstanceId_ == null) { AppInstanceId = new global::Plexus.Interop.Apps.Internal.Generated.UniqueId(); } AppInstanceId.MergeFrom(other.AppInstanceId); } appIds_.Add(other.appIds_); contextIds_.Add(other.contextIds_); contexts_.Add(other.contexts_); _unknownFields = pb::UnknownFieldSet.MergeFrom(_unknownFields, other._unknownFields); } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public void MergeFrom(pb::CodedInputStream input) { #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE input.ReadRawMessage(this); #else uint tag; while ((tag = input.ReadTag()) != 0) { switch(tag) { default: _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input); break; case 10: { if (appInstanceId_ == null) { AppInstanceId = new global::Plexus.Interop.Apps.Internal.Generated.UniqueId(); } input.ReadMessage(AppInstanceId); break; } case 18: { appIds_.AddEntriesFrom(input, _repeated_appIds_codec); break; } case 26: { contextIds_.AddEntriesFrom(input, _repeated_contextIds_codec); break; } case 34: { contexts_.AddEntriesFrom(input, _repeated_contexts_codec); break; } } } #endif } #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] void pb::IBufferMessage.InternalMergeFrom(ref pb::ParseContext input) { uint tag; while ((tag = input.ReadTag()) != 0) { switch(tag) { default: _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, ref input); break; case 10: { if (appInstanceId_ == null) { AppInstanceId = new global::Plexus.Interop.Apps.Internal.Generated.UniqueId(); } input.ReadMessage(AppInstanceId); break; } case 18: { appIds_.AddEntriesFrom(ref input, _repeated_appIds_codec); break; } case 26: { contextIds_.AddEntriesFrom(ref input, _repeated_contextIds_codec); break; } case 34: { contexts_.AddEntriesFrom(ref input, _repeated_contexts_codec); break; } } } } #endif } internal sealed partial class RestoreContextsLinkageResponse : pb::IMessage #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE , pb::IBufferMessage #endif { private static readonly pb::MessageParser _parser = new pb::MessageParser(() => new RestoreContextsLinkageResponse()); private pb::UnknownFieldSet _unknownFields; [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public static pb::MessageParser Parser { get { return _parser; } } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public static pbr::MessageDescriptor Descriptor { get { return global::Plexus.Interop.Apps.Internal.Generated.ContextLinkageReflection.Descriptor.MessageTypes[11]; } } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] pbr::MessageDescriptor pb::IMessage.Descriptor { get { return Descriptor; } } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public RestoreContextsLinkageResponse() { OnConstruction(); } partial void OnConstruction(); [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public RestoreContextsLinkageResponse(RestoreContextsLinkageResponse other) : this() { createdContextsMap_ = other.createdContextsMap_.Clone(); _unknownFields = pb::UnknownFieldSet.Clone(other._unknownFields); } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public RestoreContextsLinkageResponse Clone() { return new RestoreContextsLinkageResponse(this); } /// Field number for the "created_contexts_map" field. public const int CreatedContextsMapFieldNumber = 1; private static readonly pbc::MapField.Codec _map_createdContextsMap_codec = new pbc::MapField.Codec(pb::FieldCodec.ForString(10, ""), pb::FieldCodec.ForMessage(18, global::Plexus.Interop.Apps.Internal.Generated.Context.Parser), 10); private readonly pbc::MapField createdContextsMap_ = new pbc::MapField(); [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public pbc::MapField CreatedContextsMap { get { return createdContextsMap_; } } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public override bool Equals(object other) { return Equals(other as RestoreContextsLinkageResponse); } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public bool Equals(RestoreContextsLinkageResponse other) { if (ReferenceEquals(other, null)) { return false; } if (ReferenceEquals(other, this)) { return true; } if (!CreatedContextsMap.Equals(other.CreatedContextsMap)) return false; return Equals(_unknownFields, other._unknownFields); } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public override int GetHashCode() { int hash = 1; hash ^= CreatedContextsMap.GetHashCode(); if (_unknownFields != null) { hash ^= _unknownFields.GetHashCode(); } return hash; } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public override string ToString() { return pb::JsonFormatter.ToDiagnosticString(this); } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public void WriteTo(pb::CodedOutputStream output) { #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE output.WriteRawMessage(this); #else createdContextsMap_.WriteTo(output, _map_createdContextsMap_codec); if (_unknownFields != null) { _unknownFields.WriteTo(output); } #endif } #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] void pb::IBufferMessage.InternalWriteTo(ref pb::WriteContext output) { createdContextsMap_.WriteTo(ref output, _map_createdContextsMap_codec); if (_unknownFields != null) { _unknownFields.WriteTo(ref output); } } #endif [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public int CalculateSize() { int size = 0; size += createdContextsMap_.CalculateSize(_map_createdContextsMap_codec); if (_unknownFields != null) { size += _unknownFields.CalculateSize(); } return size; } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public void MergeFrom(RestoreContextsLinkageResponse other) { if (other == null) { return; } createdContextsMap_.Add(other.createdContextsMap_); _unknownFields = pb::UnknownFieldSet.MergeFrom(_unknownFields, other._unknownFields); } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public void MergeFrom(pb::CodedInputStream input) { #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE input.ReadRawMessage(this); #else uint tag; while ((tag = input.ReadTag()) != 0) { switch(tag) { default: _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input); break; case 10: { createdContextsMap_.AddEntriesFrom(input, _map_createdContextsMap_codec); break; } } } #endif } #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] void pb::IBufferMessage.InternalMergeFrom(ref pb::ParseContext input) { uint tag; while ((tag = input.ReadTag()) != 0) { switch(tag) { default: _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, ref input); break; case 10: { createdContextsMap_.AddEntriesFrom(ref input, _map_createdContextsMap_codec); break; } } } } #endif } #endregion } #endregion Designer generated code ================================================ FILE: desktop/src/Plexus.Interop.Apps.Manager/Internal/Generated/interop/ContextLinkage.svc.g.cs ================================================ /** * Copyright 2017-2021 Plexus Interop Deutsche Bank AG * SPDX-License-Identifier: Apache-2.0 * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ // // Generated by the Plexus Interop compiler. DO NOT EDIT! // source: interop\context_linkage.proto // #pragma warning disable 1591, 0612, 3021 #region Designer generated code namespace Plexus.Interop.Apps.Internal.Generated { using System; using global::Plexus; using global::Plexus.Channels; using global::Plexus.Interop; using global::System.Threading.Tasks; internal static partial class ContextLinkageService { public const string Id = "interop.ContextLinkageService"; public const string ContextLoadedStreamMethodId = "ContextLoadedStream"; public const string CreateContextMethodId = "CreateContext"; public const string CreateContext2MethodId = "CreateContext2"; public const string JoinContextMethodId = "JoinContext"; public const string GetContextsMethodId = "GetContexts"; public const string GetLinkedInvocationsMethodId = "GetLinkedInvocations"; public const string GetAllLinkedInvocationsMethodId = "GetAllLinkedInvocations"; public const string AppJoinedContextStreamMethodId = "AppJoinedContextStream"; public const string RestoreContextsLinkageMethodId = "RestoreContextsLinkage"; public static readonly ContextLinkageService.Descriptor DefaultDescriptor = CreateDescriptor(); public static ContextLinkageService.Descriptor CreateDescriptor() { return new ContextLinkageService.Descriptor(); } public static ContextLinkageService.Descriptor CreateDescriptor(string alias) { return new ContextLinkageService.Descriptor(alias); } public partial interface IContextLoadedStreamProxy { IServerStreamingMethodCall ContextLoadedStream(global::Plexus.Interop.Apps.Internal.Generated.Context request); } public partial interface ICreateContextProxy { IUnaryMethodCall CreateContext(global::Google.Protobuf.WellKnownTypes.Empty request); } public partial interface ICreateContext2Proxy { IUnaryMethodCall CreateContext2(global::Plexus.Interop.Apps.Internal.Generated.CreateContextRequest request); } public partial interface IJoinContextProxy { IUnaryMethodCall JoinContext(global::Plexus.Interop.Apps.Internal.Generated.Context request); } public partial interface IGetContextsProxy { IUnaryMethodCall GetContexts(global::Google.Protobuf.WellKnownTypes.Empty request); } public partial interface IGetLinkedInvocationsProxy { IUnaryMethodCall GetLinkedInvocations(global::Plexus.Interop.Apps.Internal.Generated.Context request); } public partial interface IGetAllLinkedInvocationsProxy { IUnaryMethodCall GetAllLinkedInvocations(global::Google.Protobuf.WellKnownTypes.Empty request); } public partial interface IAppJoinedContextStreamProxy { IServerStreamingMethodCall AppJoinedContextStream(global::Google.Protobuf.WellKnownTypes.Empty request); } public partial interface IRestoreContextsLinkageProxy { IUnaryMethodCall RestoreContextsLinkage(global::Plexus.Interop.Apps.Internal.Generated.RestoreContextsLinkageRequest request); } public partial interface IContextLoadedStreamImpl { Task ContextLoadedStream(global::Plexus.Interop.Apps.Internal.Generated.Context request, IWritableChannel responseStream, MethodCallContext context); } public partial interface ICreateContextImpl { Task CreateContext(global::Google.Protobuf.WellKnownTypes.Empty request, MethodCallContext context); } public partial interface ICreateContext2Impl { Task CreateContext2(global::Plexus.Interop.Apps.Internal.Generated.CreateContextRequest request, MethodCallContext context); } public partial interface IJoinContextImpl { Task JoinContext(global::Plexus.Interop.Apps.Internal.Generated.Context request, MethodCallContext context); } public partial interface IGetContextsImpl { Task GetContexts(global::Google.Protobuf.WellKnownTypes.Empty request, MethodCallContext context); } public partial interface IGetLinkedInvocationsImpl { Task GetLinkedInvocations(global::Plexus.Interop.Apps.Internal.Generated.Context request, MethodCallContext context); } public partial interface IGetAllLinkedInvocationsImpl { Task GetAllLinkedInvocations(global::Google.Protobuf.WellKnownTypes.Empty request, MethodCallContext context); } public partial interface IAppJoinedContextStreamImpl { Task AppJoinedContextStream(global::Google.Protobuf.WellKnownTypes.Empty request, IWritableChannel responseStream, MethodCallContext context); } public partial interface IRestoreContextsLinkageImpl { Task RestoreContextsLinkage(global::Plexus.Interop.Apps.Internal.Generated.RestoreContextsLinkageRequest request, MethodCallContext context); } public sealed partial class Descriptor { public ServerStreamingMethod ContextLoadedStreamMethod {get; private set; } public UnaryMethod CreateContextMethod {get; private set; } public UnaryMethod CreateContext2Method {get; private set; } public UnaryMethod JoinContextMethod {get; private set; } public UnaryMethod GetContextsMethod {get; private set; } public UnaryMethod GetLinkedInvocationsMethod {get; private set; } public UnaryMethod GetAllLinkedInvocationsMethod {get; private set; } public ServerStreamingMethod AppJoinedContextStreamMethod {get; private set; } public UnaryMethod RestoreContextsLinkageMethod {get; private set; } public Descriptor() { ContextLoadedStreamMethod = Method.ServerStreaming(Id, ContextLoadedStreamMethodId); CreateContextMethod = Method.Unary(Id, CreateContextMethodId); CreateContext2Method = Method.Unary(Id, CreateContext2MethodId); JoinContextMethod = Method.Unary(Id, JoinContextMethodId); GetContextsMethod = Method.Unary(Id, GetContextsMethodId); GetLinkedInvocationsMethod = Method.Unary(Id, GetLinkedInvocationsMethodId); GetAllLinkedInvocationsMethod = Method.Unary(Id, GetAllLinkedInvocationsMethodId); AppJoinedContextStreamMethod = Method.ServerStreaming(Id, AppJoinedContextStreamMethodId); RestoreContextsLinkageMethod = Method.Unary(Id, RestoreContextsLinkageMethodId); } public Descriptor(string alias) { ContextLoadedStreamMethod = Method.ServerStreaming(Id, alias, ContextLoadedStreamMethodId); CreateContextMethod = Method.Unary(Id, alias, CreateContextMethodId); CreateContext2Method = Method.Unary(Id, alias, CreateContext2MethodId); JoinContextMethod = Method.Unary(Id, alias, JoinContextMethodId); GetContextsMethod = Method.Unary(Id, alias, GetContextsMethodId); GetLinkedInvocationsMethod = Method.Unary(Id, alias, GetLinkedInvocationsMethodId); GetAllLinkedInvocationsMethod = Method.Unary(Id, alias, GetAllLinkedInvocationsMethodId); AppJoinedContextStreamMethod = Method.ServerStreaming(Id, alias, AppJoinedContextStreamMethodId); RestoreContextsLinkageMethod = Method.Unary(Id, alias, RestoreContextsLinkageMethodId); } } } } #endregion Designer generated code ================================================ FILE: desktop/src/Plexus.Interop.Apps.Manager/Internal/Generated/interop/InvocationDescriptor.msg.g.cs ================================================ /** * Copyright 2017-2021 Plexus Interop Deutsche Bank AG * SPDX-License-Identifier: Apache-2.0 * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ // // Generated by the protocol buffer compiler. DO NOT EDIT! // source: interop/invocation_descriptor.proto // #pragma warning disable 1591, 0612, 3021 #region Designer generated code using pb = global::Google.Protobuf; using pbc = global::Google.Protobuf.Collections; using pbr = global::Google.Protobuf.Reflection; using scg = global::System.Collections.Generic; namespace Plexus.Interop.Apps.Internal.Generated { /// Holder for reflection information generated from interop/invocation_descriptor.proto internal static partial class InvocationDescriptorReflection { #region Descriptor /// File descriptor for interop/invocation_descriptor.proto public static pbr::FileDescriptor Descriptor { get { return descriptor; } } private static pbr::FileDescriptor descriptor; static InvocationDescriptorReflection() { byte[] descriptorData = global::System.Convert.FromBase64String( string.Concat( "CiNpbnRlcm9wL2ludm9jYXRpb25fZGVzY3JpcHRvci5wcm90bxIHaW50ZXJv", "cBonaW50ZXJvcC9hcHBfY29ubmVjdGlvbl9kZXNjcmlwdG9yLnByb3RvGhVp", "bnRlcm9wL29wdGlvbnMucHJvdG8i3QEKFEludm9jYXRpb25EZXNjcmlwdG9y", "EhIKCnNlcnZpY2VfaWQYASABKAkSGAoQc2VydmljZV9hbGlhc19pZBgCIAEo", "CRIRCgltZXRob2RfaWQYAyABKAkSMAoGc291cmNlGAQgASgLMiAuaW50ZXJv", "cC5BcHBDb25uZWN0aW9uRGVzY3JpcHRvchIwCgZ0YXJnZXQYBSABKAsyIC5p", "bnRlcm9wLkFwcENvbm5lY3Rpb25EZXNjcmlwdG9yOiCS2wQcaW50ZXJvcC5J", "bnZvY2F0aW9uRGVzY3JpcHRvckIpqgImUGxleHVzLkludGVyb3AuQXBwcy5J", "bnRlcm5hbC5HZW5lcmF0ZWRiBnByb3RvMw==")); descriptor = pbr::FileDescriptor.FromGeneratedCode(descriptorData, new pbr::FileDescriptor[] { global::Plexus.Interop.Apps.Internal.Generated.AppConnectionDescriptorReflection.Descriptor, global::Plexus.Interop.Apps.Internal.Generated.OptionsReflection.Descriptor, }, new pbr::GeneratedClrTypeInfo(null, null, new pbr::GeneratedClrTypeInfo[] { new pbr::GeneratedClrTypeInfo(typeof(global::Plexus.Interop.Apps.Internal.Generated.InvocationDescriptor), global::Plexus.Interop.Apps.Internal.Generated.InvocationDescriptor.Parser, new[]{ "ServiceId", "ServiceAliasId", "MethodId", "Source", "Target" }, null, null, null, null) })); } #endregion } #region Messages internal sealed partial class InvocationDescriptor : pb::IMessage #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE , pb::IBufferMessage #endif { private static readonly pb::MessageParser _parser = new pb::MessageParser(() => new InvocationDescriptor()); private pb::UnknownFieldSet _unknownFields; [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public static pb::MessageParser Parser { get { return _parser; } } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public static pbr::MessageDescriptor Descriptor { get { return global::Plexus.Interop.Apps.Internal.Generated.InvocationDescriptorReflection.Descriptor.MessageTypes[0]; } } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] pbr::MessageDescriptor pb::IMessage.Descriptor { get { return Descriptor; } } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public InvocationDescriptor() { OnConstruction(); } partial void OnConstruction(); [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public InvocationDescriptor(InvocationDescriptor other) : this() { serviceId_ = other.serviceId_; serviceAliasId_ = other.serviceAliasId_; methodId_ = other.methodId_; source_ = other.source_ != null ? other.source_.Clone() : null; target_ = other.target_ != null ? other.target_.Clone() : null; _unknownFields = pb::UnknownFieldSet.Clone(other._unknownFields); } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public InvocationDescriptor Clone() { return new InvocationDescriptor(this); } /// Field number for the "service_id" field. public const int ServiceIdFieldNumber = 1; private string serviceId_ = ""; [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public string ServiceId { get { return serviceId_; } set { serviceId_ = pb::ProtoPreconditions.CheckNotNull(value, "value"); } } /// Field number for the "service_alias_id" field. public const int ServiceAliasIdFieldNumber = 2; private string serviceAliasId_ = ""; [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public string ServiceAliasId { get { return serviceAliasId_; } set { serviceAliasId_ = pb::ProtoPreconditions.CheckNotNull(value, "value"); } } /// Field number for the "method_id" field. public const int MethodIdFieldNumber = 3; private string methodId_ = ""; [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public string MethodId { get { return methodId_; } set { methodId_ = pb::ProtoPreconditions.CheckNotNull(value, "value"); } } /// Field number for the "source" field. public const int SourceFieldNumber = 4; private global::Plexus.Interop.Apps.Internal.Generated.AppConnectionDescriptor source_; [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public global::Plexus.Interop.Apps.Internal.Generated.AppConnectionDescriptor Source { get { return source_; } set { source_ = value; } } /// Field number for the "target" field. public const int TargetFieldNumber = 5; private global::Plexus.Interop.Apps.Internal.Generated.AppConnectionDescriptor target_; [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public global::Plexus.Interop.Apps.Internal.Generated.AppConnectionDescriptor Target { get { return target_; } set { target_ = value; } } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public override bool Equals(object other) { return Equals(other as InvocationDescriptor); } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public bool Equals(InvocationDescriptor other) { if (ReferenceEquals(other, null)) { return false; } if (ReferenceEquals(other, this)) { return true; } if (ServiceId != other.ServiceId) return false; if (ServiceAliasId != other.ServiceAliasId) return false; if (MethodId != other.MethodId) return false; if (!object.Equals(Source, other.Source)) return false; if (!object.Equals(Target, other.Target)) return false; return Equals(_unknownFields, other._unknownFields); } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public override int GetHashCode() { int hash = 1; if (ServiceId.Length != 0) hash ^= ServiceId.GetHashCode(); if (ServiceAliasId.Length != 0) hash ^= ServiceAliasId.GetHashCode(); if (MethodId.Length != 0) hash ^= MethodId.GetHashCode(); if (source_ != null) hash ^= Source.GetHashCode(); if (target_ != null) hash ^= Target.GetHashCode(); if (_unknownFields != null) { hash ^= _unknownFields.GetHashCode(); } return hash; } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public override string ToString() { return pb::JsonFormatter.ToDiagnosticString(this); } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public void WriteTo(pb::CodedOutputStream output) { #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE output.WriteRawMessage(this); #else if (ServiceId.Length != 0) { output.WriteRawTag(10); output.WriteString(ServiceId); } if (ServiceAliasId.Length != 0) { output.WriteRawTag(18); output.WriteString(ServiceAliasId); } if (MethodId.Length != 0) { output.WriteRawTag(26); output.WriteString(MethodId); } if (source_ != null) { output.WriteRawTag(34); output.WriteMessage(Source); } if (target_ != null) { output.WriteRawTag(42); output.WriteMessage(Target); } if (_unknownFields != null) { _unknownFields.WriteTo(output); } #endif } #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] void pb::IBufferMessage.InternalWriteTo(ref pb::WriteContext output) { if (ServiceId.Length != 0) { output.WriteRawTag(10); output.WriteString(ServiceId); } if (ServiceAliasId.Length != 0) { output.WriteRawTag(18); output.WriteString(ServiceAliasId); } if (MethodId.Length != 0) { output.WriteRawTag(26); output.WriteString(MethodId); } if (source_ != null) { output.WriteRawTag(34); output.WriteMessage(Source); } if (target_ != null) { output.WriteRawTag(42); output.WriteMessage(Target); } if (_unknownFields != null) { _unknownFields.WriteTo(ref output); } } #endif [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public int CalculateSize() { int size = 0; if (ServiceId.Length != 0) { size += 1 + pb::CodedOutputStream.ComputeStringSize(ServiceId); } if (ServiceAliasId.Length != 0) { size += 1 + pb::CodedOutputStream.ComputeStringSize(ServiceAliasId); } if (MethodId.Length != 0) { size += 1 + pb::CodedOutputStream.ComputeStringSize(MethodId); } if (source_ != null) { size += 1 + pb::CodedOutputStream.ComputeMessageSize(Source); } if (target_ != null) { size += 1 + pb::CodedOutputStream.ComputeMessageSize(Target); } if (_unknownFields != null) { size += _unknownFields.CalculateSize(); } return size; } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public void MergeFrom(InvocationDescriptor other) { if (other == null) { return; } if (other.ServiceId.Length != 0) { ServiceId = other.ServiceId; } if (other.ServiceAliasId.Length != 0) { ServiceAliasId = other.ServiceAliasId; } if (other.MethodId.Length != 0) { MethodId = other.MethodId; } if (other.source_ != null) { if (source_ == null) { Source = new global::Plexus.Interop.Apps.Internal.Generated.AppConnectionDescriptor(); } Source.MergeFrom(other.Source); } if (other.target_ != null) { if (target_ == null) { Target = new global::Plexus.Interop.Apps.Internal.Generated.AppConnectionDescriptor(); } Target.MergeFrom(other.Target); } _unknownFields = pb::UnknownFieldSet.MergeFrom(_unknownFields, other._unknownFields); } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public void MergeFrom(pb::CodedInputStream input) { #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE input.ReadRawMessage(this); #else uint tag; while ((tag = input.ReadTag()) != 0) { switch(tag) { default: _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input); break; case 10: { ServiceId = input.ReadString(); break; } case 18: { ServiceAliasId = input.ReadString(); break; } case 26: { MethodId = input.ReadString(); break; } case 34: { if (source_ == null) { Source = new global::Plexus.Interop.Apps.Internal.Generated.AppConnectionDescriptor(); } input.ReadMessage(Source); break; } case 42: { if (target_ == null) { Target = new global::Plexus.Interop.Apps.Internal.Generated.AppConnectionDescriptor(); } input.ReadMessage(Target); break; } } } #endif } #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] void pb::IBufferMessage.InternalMergeFrom(ref pb::ParseContext input) { uint tag; while ((tag = input.ReadTag()) != 0) { switch(tag) { default: _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, ref input); break; case 10: { ServiceId = input.ReadString(); break; } case 18: { ServiceAliasId = input.ReadString(); break; } case 26: { MethodId = input.ReadString(); break; } case 34: { if (source_ == null) { Source = new global::Plexus.Interop.Apps.Internal.Generated.AppConnectionDescriptor(); } input.ReadMessage(Source); break; } case 42: { if (target_ == null) { Target = new global::Plexus.Interop.Apps.Internal.Generated.AppConnectionDescriptor(); } input.ReadMessage(Target); break; } } } } #endif } #endregion } #endregion Designer generated code ================================================ FILE: desktop/src/Plexus.Interop.Apps.Manager/Internal/Generated/interop/NativeAppLauncher.app.g.cs ================================================ /** * Copyright 2017-2021 Plexus Interop Deutsche Bank AG * SPDX-License-Identifier: Apache-2.0 * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ // // Generated by the Plexus Interop compiler. DO NOT EDIT! // source: interop\native_app_launcher.interop // #pragma warning disable 1591, 0612, 3021 #region Designer generated code namespace Plexus.Interop.Apps.Internal.Generated { using System; using global::Plexus; using global::Plexus.Channels; using global::Plexus.Interop; using global::System.Threading.Tasks; internal partial interface INativeAppLauncherClient: IClient { } internal sealed partial class NativeAppLauncherClient: ClientBase, INativeAppLauncherClient { public const string Id = "interop.NativeAppLauncher"; private static ClientOptions CreateClientOptions(NativeAppLauncherClient.ServiceBinder serviceBinder, Func setup = null) { ClientOptionsBuilder builder = new ClientOptionsBuilder().WithApplicationId(Id).WithDefaultConfiguration(); serviceBinder.Bind(builder); if (setup != null) { builder = setup(builder); } return builder.Build(); } public NativeAppLauncherClient( NativeAppLauncherClient.IAppLauncherServiceImpl appLauncherService, Func setup = null ) :this(new NativeAppLauncherClient.ServiceBinder( appLauncherService ), setup) { } public NativeAppLauncherClient(NativeAppLauncherClient.ServiceBinder serviceBinder, Func setup = null): base(CreateClientOptions(serviceBinder, setup)) { } public sealed partial class ServiceBinder { public ServiceBinder( NativeAppLauncherClient.IAppLauncherServiceImpl appLauncherService ) { _appLauncherServiceBinder = new NativeAppLauncherClient.AppLauncherServiceBinder(appLauncherService); } private AppLauncherServiceBinder _appLauncherServiceBinder; public ClientOptionsBuilder Bind(ClientOptionsBuilder builder) { builder = _appLauncherServiceBinder.Bind(builder); return builder; } } public partial interface IAppLauncherServiceImpl: global::Plexus.Interop.Apps.Internal.Generated.AppLauncherService.ILaunchImpl, global::Plexus.Interop.Apps.Internal.Generated.AppLauncherService.IAppLaunchedEventStreamImpl { } private sealed partial class AppLauncherServiceBinder { private readonly IAppLauncherServiceImpl _impl; public AppLauncherServiceBinder(IAppLauncherServiceImpl impl) { _impl = impl; } public ClientOptionsBuilder Bind(ClientOptionsBuilder builder) { return builder.WithProvidedService(global::Plexus.Interop.Apps.Internal.Generated.AppLauncherService.Id, Bind); } private ProvidedServiceDefinition.Builder Bind(ProvidedServiceDefinition.Builder builder) { builder = builder.WithUnaryMethod(global::Plexus.Interop.Apps.Internal.Generated.AppLauncherService.LaunchMethodId, _impl.Launch); builder = builder.WithServerStreamingMethod(global::Plexus.Interop.Apps.Internal.Generated.AppLauncherService.AppLaunchedEventStreamMethodId, _impl.AppLaunchedEventStream); return builder; } } public sealed partial class AppLauncherServiceImpl: IAppLauncherServiceImpl { private readonly UnaryMethodHandler _launchHandler; private readonly ServerStreamingMethodHandler _appLaunchedEventStreamHandler; public AppLauncherServiceImpl( UnaryMethodHandler launchHandler, ServerStreamingMethodHandler appLaunchedEventStreamHandler ) { _launchHandler = launchHandler; _appLaunchedEventStreamHandler = appLaunchedEventStreamHandler; } public Task Launch(global::Plexus.Interop.Apps.Internal.Generated.AppLaunchRequest request, MethodCallContext context) { return _launchHandler(request, context); } public Task AppLaunchedEventStream(global::Google.Protobuf.WellKnownTypes.Empty request, IWritableChannel responseStream, MethodCallContext context) { return _appLaunchedEventStreamHandler(request, responseStream, context); } } public sealed partial class AppLauncherServiceImpl: IAppLauncherServiceImpl where T: global::Plexus.Interop.Apps.Internal.Generated.AppLauncherService.ILaunchImpl, global::Plexus.Interop.Apps.Internal.Generated.AppLauncherService.IAppLaunchedEventStreamImpl { private readonly T _impl; public AppLauncherServiceImpl(T impl) { _impl = impl; } public Task Launch(global::Plexus.Interop.Apps.Internal.Generated.AppLaunchRequest request, MethodCallContext context) { return _impl.Launch(request, context); } public Task AppLaunchedEventStream(global::Google.Protobuf.WellKnownTypes.Empty request, IWritableChannel responseStream, MethodCallContext context) { return _impl.AppLaunchedEventStream(request, responseStream, context); } } } } #endregion Designer generated code ================================================ FILE: desktop/src/Plexus.Interop.Apps.Manager/Internal/Generated/interop/Options.msg.g.cs ================================================ /** * Copyright 2017-2021 Plexus Interop Deutsche Bank AG * SPDX-License-Identifier: Apache-2.0 * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ // // Generated by the protocol buffer compiler. DO NOT EDIT! // source: interop/options.proto // #pragma warning disable 1591, 0612, 3021 #region Designer generated code using pb = global::Google.Protobuf; using pbc = global::Google.Protobuf.Collections; using pbr = global::Google.Protobuf.Reflection; using scg = global::System.Collections.Generic; namespace Plexus.Interop.Apps.Internal.Generated { /// Holder for reflection information generated from interop/options.proto internal static partial class OptionsReflection { #region Descriptor /// File descriptor for interop/options.proto public static pbr::FileDescriptor Descriptor { get { return descriptor; } } private static pbr::FileDescriptor descriptor; static OptionsReflection() { byte[] descriptorData = global::System.Convert.FromBase64String( string.Concat( "ChVpbnRlcm9wL29wdGlvbnMucHJvdG8SB2ludGVyb3AaIGdvb2dsZS9wcm90", "b2J1Zi9kZXNjcmlwdG9yLnByb3RvOjQKCm1lc3NhZ2VfaWQSHy5nb29nbGUu", "cHJvdG9idWYuTWVzc2FnZU9wdGlvbnMYsksgASgJOjQKCnNlcnZpY2VfaWQS", "Hy5nb29nbGUucHJvdG9idWYuU2VydmljZU9wdGlvbnMYsksgASgJOjIKCW1l", "dGhvZF9pZBIeLmdvb2dsZS5wcm90b2J1Zi5NZXRob2RPcHRpb25zGLJLIAEo", "CUIpqgImUGxleHVzLkludGVyb3AuQXBwcy5JbnRlcm5hbC5HZW5lcmF0ZWRi", "BnByb3RvMw==")); descriptor = pbr::FileDescriptor.FromGeneratedCode(descriptorData, new pbr::FileDescriptor[] { global::Google.Protobuf.Reflection.DescriptorReflection.Descriptor, }, new pbr::GeneratedClrTypeInfo(null, new pb::Extension[] { OptionsExtensions.MessageId, OptionsExtensions.ServiceId, OptionsExtensions.MethodId }, null)); } #endregion } /// Holder for extension identifiers generated from the top level of interop/options.proto internal static partial class OptionsExtensions { public static readonly pb::Extension MessageId = new pb::Extension(9650, pb::FieldCodec.ForString(77202, "")); public static readonly pb::Extension ServiceId = new pb::Extension(9650, pb::FieldCodec.ForString(77202, "")); public static readonly pb::Extension MethodId = new pb::Extension(9650, pb::FieldCodec.ForString(77202, "")); } } #endregion Designer generated code ================================================ FILE: desktop/src/Plexus.Interop.Apps.Manager/Internal/Generated/interop/UniqueId.msg.g.cs ================================================ /** * Copyright 2017-2021 Plexus Interop Deutsche Bank AG * SPDX-License-Identifier: Apache-2.0 * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ // // Generated by the protocol buffer compiler. DO NOT EDIT! // source: interop/unique_id.proto // #pragma warning disable 1591, 0612, 3021 #region Designer generated code using pb = global::Google.Protobuf; using pbc = global::Google.Protobuf.Collections; using pbr = global::Google.Protobuf.Reflection; using scg = global::System.Collections.Generic; namespace Plexus.Interop.Apps.Internal.Generated { /// Holder for reflection information generated from interop/unique_id.proto internal static partial class UniqueIdReflection { #region Descriptor /// File descriptor for interop/unique_id.proto public static pbr::FileDescriptor Descriptor { get { return descriptor; } } private static pbr::FileDescriptor descriptor; static UniqueIdReflection() { byte[] descriptorData = global::System.Convert.FromBase64String( string.Concat( "ChdpbnRlcm9wL3VuaXF1ZV9pZC5wcm90bxIHaW50ZXJvcBoVaW50ZXJvcC9v", "cHRpb25zLnByb3RvIjgKCFVuaXF1ZUlkEgoKAmxvGAEgASgGEgoKAmhpGAIg", "ASgGOhSS2wQQaW50ZXJvcC5VbmlxdWVJZEIpqgImUGxleHVzLkludGVyb3Au", "QXBwcy5JbnRlcm5hbC5HZW5lcmF0ZWRiBnByb3RvMw==")); descriptor = pbr::FileDescriptor.FromGeneratedCode(descriptorData, new pbr::FileDescriptor[] { global::Plexus.Interop.Apps.Internal.Generated.OptionsReflection.Descriptor, }, new pbr::GeneratedClrTypeInfo(null, null, new pbr::GeneratedClrTypeInfo[] { new pbr::GeneratedClrTypeInfo(typeof(global::Plexus.Interop.Apps.Internal.Generated.UniqueId), global::Plexus.Interop.Apps.Internal.Generated.UniqueId.Parser, new[]{ "Lo", "Hi" }, null, null, null, null) })); } #endregion } #region Messages /// /// Stores UUID in little-endian format (i.e. reversed). /// To convert to bytes on little-endian systems (most common case): concat (toBytes(hi), toBytes(lo)) /// To convert to bytes on big-endian systems need to additionally reverse "hi" and "lo" parts: concat( reverse(toBytes(hi)), reverse(toBytes(lo)) ) /// internal sealed partial class UniqueId : pb::IMessage #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE , pb::IBufferMessage #endif { private static readonly pb::MessageParser _parser = new pb::MessageParser(() => new UniqueId()); private pb::UnknownFieldSet _unknownFields; [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public static pb::MessageParser Parser { get { return _parser; } } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public static pbr::MessageDescriptor Descriptor { get { return global::Plexus.Interop.Apps.Internal.Generated.UniqueIdReflection.Descriptor.MessageTypes[0]; } } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] pbr::MessageDescriptor pb::IMessage.Descriptor { get { return Descriptor; } } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public UniqueId() { OnConstruction(); } partial void OnConstruction(); [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public UniqueId(UniqueId other) : this() { lo_ = other.lo_; hi_ = other.hi_; _unknownFields = pb::UnknownFieldSet.Clone(other._unknownFields); } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public UniqueId Clone() { return new UniqueId(this); } /// Field number for the "lo" field. public const int LoFieldNumber = 1; private ulong lo_; [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public ulong Lo { get { return lo_; } set { lo_ = value; } } /// Field number for the "hi" field. public const int HiFieldNumber = 2; private ulong hi_; [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public ulong Hi { get { return hi_; } set { hi_ = value; } } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public override bool Equals(object other) { return Equals(other as UniqueId); } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public bool Equals(UniqueId other) { if (ReferenceEquals(other, null)) { return false; } if (ReferenceEquals(other, this)) { return true; } if (Lo != other.Lo) return false; if (Hi != other.Hi) return false; return Equals(_unknownFields, other._unknownFields); } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public override int GetHashCode() { int hash = 1; if (Lo != 0UL) hash ^= Lo.GetHashCode(); if (Hi != 0UL) hash ^= Hi.GetHashCode(); if (_unknownFields != null) { hash ^= _unknownFields.GetHashCode(); } return hash; } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public override string ToString() { return pb::JsonFormatter.ToDiagnosticString(this); } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public void WriteTo(pb::CodedOutputStream output) { #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE output.WriteRawMessage(this); #else if (Lo != 0UL) { output.WriteRawTag(9); output.WriteFixed64(Lo); } if (Hi != 0UL) { output.WriteRawTag(17); output.WriteFixed64(Hi); } if (_unknownFields != null) { _unknownFields.WriteTo(output); } #endif } #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] void pb::IBufferMessage.InternalWriteTo(ref pb::WriteContext output) { if (Lo != 0UL) { output.WriteRawTag(9); output.WriteFixed64(Lo); } if (Hi != 0UL) { output.WriteRawTag(17); output.WriteFixed64(Hi); } if (_unknownFields != null) { _unknownFields.WriteTo(ref output); } } #endif [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public int CalculateSize() { int size = 0; if (Lo != 0UL) { size += 1 + 8; } if (Hi != 0UL) { size += 1 + 8; } if (_unknownFields != null) { size += _unknownFields.CalculateSize(); } return size; } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public void MergeFrom(UniqueId other) { if (other == null) { return; } if (other.Lo != 0UL) { Lo = other.Lo; } if (other.Hi != 0UL) { Hi = other.Hi; } _unknownFields = pb::UnknownFieldSet.MergeFrom(_unknownFields, other._unknownFields); } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public void MergeFrom(pb::CodedInputStream input) { #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE input.ReadRawMessage(this); #else uint tag; while ((tag = input.ReadTag()) != 0) { switch(tag) { default: _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input); break; case 9: { Lo = input.ReadFixed64(); break; } case 17: { Hi = input.ReadFixed64(); break; } } } #endif } #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] void pb::IBufferMessage.InternalMergeFrom(ref pb::ParseContext input) { uint tag; while ((tag = input.ReadTag()) != 0) { switch(tag) { default: _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, ref input); break; case 9: { Lo = input.ReadFixed64(); break; } case 17: { Hi = input.ReadFixed64(); break; } } } } #endif } #endregion } #endregion Designer generated code ================================================ FILE: desktop/src/Plexus.Interop.Apps.Manager/Internal/IAppLaunchedEventProvider.cs ================================================ /** * Copyright 2017-2021 Plexus Interop Deutsche Bank AG * SPDX-License-Identifier: Apache-2.0 * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ namespace Plexus.Interop.Apps.Internal { using System; using Plexus.Interop.Apps.Internal.Generated; internal interface IAppLaunchedEventProvider { IObservable AppLaunchedStream { get; } } } ================================================ FILE: desktop/src/Plexus.Interop.Apps.Manager/Internal/IAppLifecycleManagerClientClientRepository.cs ================================================ /** * Copyright 2017-2021 Plexus Interop Deutsche Bank AG * SPDX-License-Identifier: Apache-2.0 * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ namespace Plexus.Interop.Apps.Internal { using System; using System.Threading.Tasks; using Plexus.Interop.Apps.Internal.Generated; internal interface IAppLifecycleManagerClientClientRepository { IObservable GetClientObservable(); Task GetClientAsync(); } } ================================================ FILE: desktop/src/Plexus.Interop.Apps.Manager/Internal/IAppRegistryProvider.cs ================================================ /** * Copyright 2017-2021 Plexus Interop Deutsche Bank AG * SPDX-License-Identifier: Apache-2.0 * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ namespace Plexus.Interop.Apps.Internal { using System; internal interface IAppRegistryProvider { AppRegistry Current { get; } event Action Updated; } } ================================================ FILE: desktop/src/Plexus.Interop.Apps.Manager/Internal/InteropContext.cs ================================================ /** * Copyright 2017-2021 Plexus Interop Deutsche Bank AG * SPDX-License-Identifier: Apache-2.0 * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ namespace Plexus.Interop.Apps.Internal { using System.IO; using System.Threading.Tasks; using Plexus.Interop.Apps.Internal.Generated; using Plexus.Interop.Apps.Internal.Services; using Plexus.Interop.Metamodel; using Plexus.Processes; using IContextLinkageManager = Plexus.Interop.Apps.IContextLinkageManager; internal class InteropContext : ProcessBase, IInteropContext { public IRegistryProvider RegistryProvider { get; } public IAppLifecycleManager AppLifecycleManager => _appLifecycleManager; public IInvocationEventProvider InvocationEventProvider => _appLifecycleService; public IContextLinkageManager ContextLinkageManager => _contextLinkageService; private readonly NativeAppLauncherClient _nativeAppLauncherClient; private readonly AppLifecycleManager _appLifecycleManager; private readonly AppLifecycleServiceImpl _appLifecycleService; private readonly ContextLinkageServiceImpl _contextLinkageService; private AppLaunchedEventSubscriber _appLaunchedEventSubscriber; private readonly AppMetadataServiceImpl _appMetadataService; private readonly AppRegistrationServiceImpl _appRegistrationService; private readonly AppLifecycleManagerClientClientRepository _appLifecycleManagerClientClientRepository; public InteropContext(Plexus.UniqueId trustedLauncherId, string metadataDir, IRegistryProvider registryProvider) { RegistryProvider = registryProvider; var appRegistryProvider = new JsonFileAppRegistryProvider(Path.Combine(metadataDir, "apps.json")); _appLifecycleManagerClientClientRepository = new AppLifecycleManagerClientClientRepository(); var appLaunchedEventProvider = new AppLaunchedEventProvider(); _appLifecycleManager = new AppLifecycleManager(appRegistryProvider, appLaunchedEventProvider, _appLifecycleManagerClientClientRepository); _appLifecycleManager.RegisterAppInstance(trustedLauncherId); _appLaunchedEventSubscriber = new AppLaunchedEventSubscriber(_appLifecycleManager, registryProvider, appLaunchedEventProvider, _appLifecycleManagerClientClientRepository); var nativeLauncherInstanceId = Plexus.UniqueId.Generate(); _appLifecycleManager.RegisterAppInstanceConnection(Generated.NativeAppLauncherClient.Id, nativeLauncherInstanceId); _nativeAppLauncherClient = new NativeAppLauncherClient(metadataDir, nativeLauncherInstanceId); _appMetadataService = new AppMetadataServiceImpl(appRegistryProvider, registryProvider); _appLifecycleService = new AppLifecycleServiceImpl(_appLifecycleManager); _contextLinkageService = new ContextLinkageServiceImpl(registryProvider, _appLifecycleManager, appLaunchedEventProvider); _appRegistrationService = new AppRegistrationServiceImpl(_appLifecycleManager); OnStop(_nativeAppLauncherClient.Stop); OnStop(_appLifecycleManagerClientClientRepository.Stop); } protected override ILogger Log { get; } = LogManager.GetLogger(); protected override Task StartCoreAsync() { var clientsCompletionTask = Task.WhenAll(_appLifecycleManagerClientClientRepository.Start(CreateAppLifecycleManagerClient), StartNativeAppLauncherClient()); return Task.FromResult(clientsCompletionTask); } private async Task StartNativeAppLauncherClient() { await _nativeAppLauncherClient.StartAsync(); await _nativeAppLauncherClient.Completion; } private AppLifecycleManagerClient CreateAppLifecycleManagerClient() { var id = Plexus.UniqueId.Generate(); _appLifecycleManager.RegisterAppInstanceConnection(AppLifecycleManagerClient.Id, id); return new AppLifecycleManagerClient( _appLifecycleService, _appMetadataService, _contextLinkageService, _appRegistrationService, s => s.WithAppInstanceId(id).WithBrokerWorkingDir(Directory.GetCurrentDirectory())); } } } ================================================ FILE: desktop/src/Plexus.Interop.Apps.Manager/Internal/InteropContextFactory.cs ================================================ /** * Copyright 2017-2021 Plexus Interop Deutsche Bank AG * SPDX-License-Identifier: Apache-2.0 * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ namespace Plexus.Interop.Apps.Internal { using Plexus.Interop.Metamodel; public sealed class InteropContextFactory { public static readonly InteropContextFactory Instance = new InteropContextFactory(); public IInteropContext Create(UniqueId trustedLauncherId, string metadataDir, IRegistryProvider registryProvider) { return new InteropContext(trustedLauncherId, metadataDir, registryProvider); } } } ================================================ FILE: desktop/src/Plexus.Interop.Apps.Manager/Internal/JsonFileAppRegistryProvider.cs ================================================ /** * Copyright 2017-2021 Plexus Interop Deutsche Bank AG * SPDX-License-Identifier: Apache-2.0 * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ namespace Plexus.Interop.Apps.Internal { using System.Linq; internal sealed class JsonFileAppRegistryProvider : BaseJsonFileRegistryProvider, IAppRegistryProvider { public JsonFileAppRegistryProvider(string jsonFileName) : base(jsonFileName) { } public override AppRegistry ParseRegistry(string registryContent) { var dto = AppsDto.FromContent(registryContent); var registry = new AppRegistry(dto.Apps.Select(x => new AppInfo(x.Id, x.DisplayName, x.LauncherId, x.LauncherParams))); return registry; } } } ================================================ FILE: desktop/src/Plexus.Interop.Apps.Manager/Internal/NativeAppLauncherClient.cs ================================================ /** * Copyright 2017-2021 Plexus Interop Deutsche Bank AG * SPDX-License-Identifier: Apache-2.0 * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ namespace Plexus.Interop.Apps.Internal { using Plexus.Interop.Apps.Internal.Generated; using Plexus.Processes; using System.IO; using System.Reactive.Linq; using System.Reactive.Subjects; using System.Threading.Tasks; using Google.Protobuf.WellKnownTypes; using Plexus.Channels; internal sealed class NativeAppLauncherClient : ProcessBase, Generated.NativeAppLauncherClient.IAppLauncherServiceImpl { private readonly SubProcessLauncher _subProcessLauncher; private readonly string _cmdBasePath; private readonly Subject<(AppLaunchRequest request, Plexus.UniqueId id)> _appLaunchedSubject = new Subject<(AppLaunchRequest request, Plexus.UniqueId id)>(); private INativeAppLauncherClient _client; public Plexus.UniqueId Id { get; } public NativeAppLauncherClient(string cmdBasePath, Plexus.UniqueId id) { Id = id; _cmdBasePath = cmdBasePath; _subProcessLauncher = new SubProcessLauncher(); } protected override ILogger Log { get; } = LogManager.GetLogger(); protected override async Task StartCoreAsync() { _client = new Generated.NativeAppLauncherClient( this, s => s.WithAppInstanceId(Id).WithBrokerWorkingDir(Directory.GetCurrentDirectory())); await _client.ConnectAsync().ConfigureAwait(false); Log.Debug("Connected"); return ProcessAsync(); } Task AppLauncherService.ILaunchImpl.Launch(AppLaunchRequest request, MethodCallContext context) { Log.Debug("Launch request received: {0}", request); var paramsDto = JsonConvert.Deserialize(request.LaunchParamsJson); var cmd = Path.Combine(_cmdBasePath, paramsDto.Cmd); var id = _subProcessLauncher.Launch(cmd, paramsDto.Args); _appLaunchedSubject.OnNext((request, id)); Log.Trace("Launched app instance {0} by request: {1}", id, request); return Task.FromResult(new AppLaunchResponse { AppInstanceId = id.ToProto(), }); } Task AppLauncherService.IAppLaunchedEventStreamImpl.AppLaunchedEventStream(Empty request, IWritableChannel responseStream, MethodCallContext callContext) { return _appLaunchedSubject.Select(launchEvent => new AppLaunchedEvent { AppInstanceId = launchEvent.id.ToProto(), AppIds = { launchEvent.request.AppId }, Referrer = new AppLaunchReferrer { AppInstanceId = launchEvent.request.Referrer.AppInstanceId, ConnectionId = launchEvent.request.Referrer.ConnectionId, AppId = launchEvent.request.Referrer.AppId, } }).PipeAsync(responseStream, callContext.CancellationToken); } private async Task ProcessAsync() { await _client.Completion.ConfigureAwait(false); } } } ================================================ FILE: desktop/src/Plexus.Interop.Apps.Manager/Internal/NativeAppLauncherParamsDto.cs ================================================ /** * Copyright 2017-2021 Plexus Interop Deutsche Bank AG * SPDX-License-Identifier: Apache-2.0 * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ namespace Plexus.Interop.Apps.Internal { using System.Runtime.Serialization; [DataContract] internal sealed class NativeAppLauncherParamsDto { [DataMember(Name = "cmd")] public string Cmd { get; set; } [DataMember(Name = "args")] public string Args { get; set; } } } ================================================ FILE: desktop/src/Plexus.Interop.Apps.Manager/Internal/ObservableExtensions.cs ================================================ /** * Copyright 2017-2021 Plexus Interop Deutsche Bank AG * SPDX-License-Identifier: Apache-2.0 * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ namespace Plexus.Interop.Apps.Internal { using System; using System.Reactive; using System.Reactive.Linq; using System.Reactive.Threading.Tasks; using System.Threading; using System.Threading.Tasks; using Plexus.Channels; public static class ObservableExtensions { public static Task PipeAsync( this IObservable observable, IWritableChannel writableChannel, CancellationToken cancellationToken = default(CancellationToken), TimeSpan sendTimeout = default(TimeSpan)) { return observable .SelectMany(arg => WriteAsync(writableChannel, arg, cancellationToken, sendTimeout).ToObservable()) .Concat(Observable.Return(Unit.Default)) .ToTask(cancellationToken); } private static async Task WriteAsync( IWritableChannel channel, T arg, CancellationToken cancellationToken, TimeSpan sendTimeout) { using (var timeoutCancellation = CancellationTokenSource.CreateLinkedTokenSource(cancellationToken)) { if (sendTimeout > TimeSpan.Zero) { // Cancel sending after timeout timeoutCancellation.CancelAfter(sendTimeout); } await channel.WriteAsync(arg, timeoutCancellation.Token).ConfigureAwait(false); } } public static Task PipeAsync( this IReadableChannel readableChannel, IObserver observer, CancellationToken cancellationToken = default(CancellationToken), bool sendCompete = false, bool sendException = false) { return readableChannel.ConsumeAsync(obj => observer.OnNext(obj), cancellationToken, () => { if (sendCompete) { observer.OnCompleted(); } return TaskHelper.CompletedTask; }, exception => { if (sendException) { observer.OnError(exception); } return TaskHelper.FromException(exception); }); } } } ================================================ FILE: desktop/src/Plexus.Interop.Apps.Manager/Internal/ProtobufHelper.cs ================================================ /** * Copyright 2017-2021 Plexus Interop Deutsche Bank AG * SPDX-License-Identifier: Apache-2.0 * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ namespace Plexus.Interop.Apps.Internal { using System; using UniqueId = Plexus.UniqueId; internal static class ProtobufHelper { public static UniqueId ToUniqueId(this Generated.UniqueId uniqueId) { if (uniqueId is null) { return UniqueId.Empty; } return UniqueId.FromHiLo(uniqueId.Hi, uniqueId.Lo); } public static Generated.UniqueId ToProto(this UniqueId id) { return new Generated.UniqueId { Hi = id.Hi, Lo = id.Lo }; } public static Generated.TransportType ToProto(this TransportType transportType) { switch (transportType) { case TransportType.Pipe: return Generated.TransportType.Pipe; case TransportType.Ws: return Generated.TransportType.Ws; case TransportType.Wss: return Generated.TransportType.Wss; default: return Generated.TransportType.Unknown; } } public static Generated.AppConnectionDescriptor ToProto(this AppConnectionDescriptor info) { return new Generated.AppConnectionDescriptor { AppId = info.ApplicationId, AppInstanceId = info.ApplicationInstanceId.ToProto(), ConnectionId = info.ConnectionId.ToProto(), TransportType = info.TransportType.ToProto() }; } public static Generated.InvocationDescriptor ToProto(this InvocationDescriptor info) { return new Generated.InvocationDescriptor { Source = info.SourceConnection.ToProto(), Target = info.TargetConnection.ToProto(), MethodId = info.MethodId, ServiceId = info.ServiceId, ServiceAliasId = info.ServiceAlias ?? string.Empty }; } public static Generated.InvocationResult ToProto(this InvocationResult info) { switch (info) { case InvocationResult.Succeeded: return Generated.InvocationResult.Succeeded; case InvocationResult.Canceled: return Generated.InvocationResult.Canceled; case InvocationResult.Failed: return Generated.InvocationResult.Failed; default: throw new ArgumentOutOfRangeException(nameof(info), info, null); } } } } ================================================ FILE: desktop/src/Plexus.Interop.Apps.Manager/Internal/Services/AppLifecycleServiceImpl.cs ================================================ /** * Copyright 2017-2021 Plexus Interop Deutsche Bank AG * SPDX-License-Identifier: Apache-2.0 * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ namespace Plexus.Interop.Apps.Internal.Services { using System; using System.Collections.Generic; using System.Linq; using System.Reactive.Concurrency; using System.Reactive.Linq; using System.Reactive.Subjects; using System.Threading.Tasks; using Google.Protobuf.WellKnownTypes; using Plexus.Channels; using Plexus.Interop.Apps.Internal.Generated; using AppConnectionDescriptor = Plexus.AppConnectionDescriptor; using UniqueId = Plexus.UniqueId; internal class AppLifecycleServiceImpl : IAppLifecycleService { private ILogger Log { get; } = LogManager.GetLogger(); private readonly IAppLifecycleManager _appLifecycleManager; private readonly Subject _appLifecycleEventBroadcaster = new Subject(); private readonly Subject _invocationEventBroadcaster = new Subject(); public AppLifecycleServiceImpl(IAppLifecycleManager appLifecycleManager) { _appLifecycleManager = appLifecycleManager; _appLifecycleManager.ConnectionEventsStream.Subscribe(BroadcastConnectionEvents); } public void OnInvocationStarted(InvocationStartedEventDescriptor eventData) { _invocationEventBroadcaster.OnNext(new InvocationEvent { InvocationStarted = new InvocationStartedEvent { InvocationDescriptor = eventData.InvocationDescriptor.ToProto() } }); } public void OnInvocationFinished(InvocationFinishedEventDescriptor eventData) { _invocationEventBroadcaster.OnNext(new InvocationEvent { InvocationFinished = new InvocationFinishedEvent { InvocationDescriptor = eventData.MethodCallDescriptor.ToProto(), Result = eventData.Result.ToProto(), DurationMs = eventData.DurationMs } }); } private void BroadcastConnectionEvents(AppConnectionEvent connectionEvent) { var lifecycleEvent = new AppLifecycleEvent(); switch (connectionEvent.Type) { case ConnectionEventType.AppConnected: lifecycleEvent.Connected = new AppConnectedEvent { ConnectionDescriptor = connectionEvent.Connection.ToProto() }; break; case ConnectionEventType.AppDisconnected: lifecycleEvent.Disconnected = new AppDisconnectedEvent { ConnectionDescriptor = connectionEvent.Connection.ToProto() }; break; case ConnectionEventType.AppConnectionError: lifecycleEvent.Error = new AppConnectionErrorEvent { ConnectionDescriptor = connectionEvent.Connection.ToProto() }; break; default: Log.Error($"Unknown connection event type {connectionEvent.Type}"); return; }; _appLifecycleEventBroadcaster.OnNext(lifecycleEvent); } public async Task ResolveApp(ResolveAppRequest request, MethodCallContext context) { Log.Info("Resolving app by request {{{0}}} from {{{1}}}", request, context); var referrerConnectionInfo = new AppConnectionDescriptor( context.ConsumerConnectionId, context.ConsumerApplicationId, context.ConsumerApplicationInstanceId, context.ConsumerTransportType); var resolveMode = Convert(request.AppResolveMode); if (resolveMode == ResolveMode.SingleInstance) { var connection = _appLifecycleManager.GetOnlineConnections().FirstOrDefault(c => c.Info.ApplicationId.Equals(request.AppId)); Log.Debug("Resolved connection for app {0} with mode {1} to online instance {{{2}}}", connection, resolveMode, connection); if (connection != null) { return new ResolveAppResponse { AppInstanceId = connection.Info.ApplicationInstanceId.ToProto(), AppConnectionId = connection.Info.ConnectionId.ToProto(), IsNewInstanceLaunched = false, }; } } var resolvedConnection = await _appLifecycleManager.LaunchAndConnectAsync( request.AppId, resolveMode, referrerConnectionInfo).ConfigureAwait(false); var info = resolvedConnection.AppConnection.Info; Log.Info("App connection {{{0}}} resolved by request from {{{1}}}", resolvedConnection, context); var response = new ResolveAppResponse { AppConnectionId = info.ConnectionId.ToProto(), AppInstanceId = info.ApplicationInstanceId.ToProto(), IsNewInstanceLaunched = resolvedConnection.IsNewInstance }; return response; } public Task GetLifecycleEventStream(Empty request, IWritableChannel responseStream, MethodCallContext context) { return _appLifecycleEventBroadcaster.ObserveOn(TaskPoolScheduler.Default).PipeAsync(responseStream, context.CancellationToken); } public Task GetInvocationEventStream(Empty request, IWritableChannel responseStream, MethodCallContext context) { return _invocationEventBroadcaster.ObserveOn(TaskPoolScheduler.Default).PipeAsync(responseStream, context.CancellationToken); } private static ResolveMode Convert(AppLaunchMode launchMode) { switch (launchMode) { case AppLaunchMode.SingleInstance: return ResolveMode.SingleInstance; case AppLaunchMode.MultiInstance: return ResolveMode.MultiInstance; default: throw new ArgumentOutOfRangeException(nameof(launchMode), launchMode, null); } } public Task GetConnections(GetConnectionsRequest request, MethodCallContext context) { var response = CreateConnectionsResponse(GetOnlineConnections(request)); if (response.Connections.Count == 0 && IsSingleConnectionRequest(request)) { if (IsSpecificConnectionId(request, out var connectionId)) { throw new InvalidOperationException($"No connection with {connectionId} is found"); } if (IsSpecificAppIdWithInstanceId(request, out var appId, out var appInstanceId)) { throw new InvalidOperationException($"No connection with for {appInstanceId} application instance id with {appId} app id is found"); } } return Task.FromResult(response); } public async Task GetConnectionsStream(GetConnectionsRequest request, IWritableChannel responseStream, MethodCallContext context) { await _appLifecycleManager.ConnectionEventsStream .Where(e => IsEventFitRequest(request, e.Connection)) .Select(e => CreateGetConnectionsEvent(request, e)) .Where(e => e != null) .StartWith(CreateInitialGetConnectionsEvent(request)) .PipeAsync(responseStream); } private GetConnectionsEvent CreateInitialGetConnectionsEvent(GetConnectionsRequest request) { return new GetConnectionsEvent() { Connections = { GetOnlineConnections(request).Select(c => c.Info.ToProto()) } }; } private GetConnectionsEvent CreateGetConnectionsEvent(GetConnectionsRequest request, AppConnectionEvent appConnectionEvent) { var response = CreateInitialGetConnectionsEvent(request); switch (appConnectionEvent.Type) { case ConnectionEventType.AppConnected: response.NewConnection = appConnectionEvent.Connection.ToProto(); return response; case ConnectionEventType.AppDisconnected: response.ClosedConnection = appConnectionEvent.Connection.ToProto(); return response; default: return null; } } private static bool IsEventFitRequest(GetConnectionsRequest request, AppConnectionDescriptor connection) { var connectionId = request.ConnectionId.ToUniqueId(); if (connectionId != UniqueId.Empty) { return connectionId.Equals(connection.ConnectionId); } var appId = request.ApplicationId; var appInstanceId = request.AppInstanceId.ToUniqueId(); if (appInstanceId != UniqueId.Empty && !connection.ApplicationInstanceId.Equals(appInstanceId)) { return false; } if (!string.IsNullOrEmpty(appId) && !connection.ApplicationId.Equals(appId)) { return false; } return true; } private static bool IsSingleConnectionRequest(GetConnectionsRequest request) { return IsSpecificConnectionId(request, out _) || IsSpecificAppIdWithInstanceId(request, out _, out _); } private static bool IsSpecificConnectionId(GetConnectionsRequest request, out UniqueId connectionId) { connectionId = request.ConnectionId.ToUniqueId(); var isSpecificConnectionId = connectionId != UniqueId.Empty; return isSpecificConnectionId; } private static bool IsSpecificAppIdWithInstanceId(GetConnectionsRequest request, out string appId, out UniqueId appInstanceId) { appId = request.ApplicationId; appInstanceId = request.AppInstanceId.ToUniqueId(); var isSpecificAppIdWithInstanceId = !string.IsNullOrEmpty(appId) && appInstanceId != UniqueId.Empty; return isSpecificAppIdWithInstanceId; } private IEnumerable GetOnlineConnections(GetConnectionsRequest request) { var connectionId = request.ConnectionId.ToUniqueId(); if (connectionId != UniqueId.Empty) { if (_appLifecycleManager.TryGetOnlineConnection(connectionId, out var connectionInfo)) { return new[] { connectionInfo }; } return Enumerable.Empty(); } var appId = request.ApplicationId; var appInstanceId = request.AppInstanceId.ToUniqueId(); if (appInstanceId != UniqueId.Empty) { if (!string.IsNullOrEmpty(appId)) { if (_appLifecycleManager.TryGetOnlineConnection(appInstanceId, appId, out var connection)) { return new[] { connection }; } } return _appLifecycleManager.GetAppInstanceConnections(appInstanceId); } if (!string.IsNullOrEmpty(appId)) { return _appLifecycleManager.GetAppConnections(appId); } return _appLifecycleManager.GetOnlineConnections(); } private static GetConnectionsResponse CreateConnectionsResponse(IEnumerable connectionDescriptors) { return new GetConnectionsResponse() { Connections = { connectionDescriptors.Select(descriptor => descriptor.Info.ToProto()) } }; } } } ================================================ FILE: desktop/src/Plexus.Interop.Apps.Manager/Internal/Services/AppMetadataServiceImpl.cs ================================================ /** * Copyright 2017-2021 Plexus Interop Deutsche Bank AG * SPDX-License-Identifier: Apache-2.0 * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ namespace Plexus.Interop.Apps.Internal.Services { using System; using System.Linq; using System.Reactive.Linq; using System.Reactive.Subjects; using System.Threading.Tasks; using Google.Protobuf.WellKnownTypes; using Plexus.Channels; using Plexus.Interop.Apps.Internal.Generated; using Plexus.Interop.Metamodel; internal class AppMetadataServiceImpl : IAppMetadataService { private readonly BehaviorSubject _metamodelSubject; private readonly BehaviorSubject _appRegistrySubject; public AppMetadataServiceImpl(IAppRegistryProvider appRegistryProvider, IRegistryProvider registryProvider) { _appRegistrySubject = new BehaviorSubject(appRegistryProvider.Current); appRegistryProvider.Updated += registry => _appRegistrySubject.OnNext(registry); _metamodelSubject = new BehaviorSubject(registryProvider.Current); registryProvider.Updated += registry => _metamodelSubject.OnNext(registry); } public async Task GetAppMetadataChangedEventStream(Empty request, IWritableChannel responseStream, MethodCallContext context) { await _appRegistrySubject.Select(ConvertToAppRegistryChangedEvent).PipeAsync(responseStream).ConfigureAwait(false); } public async Task GetMetamodelChangedEventStream(Empty request, IWritableChannel responseStream, MethodCallContext context) { await _metamodelSubject.Select(ConvertToMetamodelChangedEvent).PipeAsync(responseStream).ConfigureAwait(false); } private static AppMetadataChangedEvent ConvertToAppRegistryChangedEvent(AppRegistry registry) { return new AppMetadataChangedEvent { Apps = { registry.Apps.Select(appInfo => new AppMetadataInfo { Id = appInfo.Id, DisplayName = appInfo.DisplayName, LauncherId = appInfo.LauncherId, LauncherParams = { appInfo.LauncherParams.Select(pair => new OptionParameter {Key = pair.Key, Value = pair.Value.ToString() })} })} }; } private MetamodelChangedEvent ConvertToMetamodelChangedEvent(IRegistry registry) { return new MetamodelChangedEvent { Applications = { registry.Applications.Values.Select(ConvertToAppMetamodelInfo) }, Services = { registry.Services.Values.Select(service => new Service { Id = service.Id, Methods = { service.Methods.Values.Select(method => new MethodInfo { Name = method.Name, Type = ConvertToMethodType(method.Type), RequestMessageId = method.InputMessage.Id, ResponseMessageId = method.OutputMessage.Id, })} })} }; } internal static AppMetamodelInfo ConvertToAppMetamodelInfo(IApplication appInfo) { return new AppMetamodelInfo { Id = appInfo.Id, ConsumedServices = { appInfo.ConsumedServices.Select(service => new ConsumedService { ServiceId = service.Service.Id, Alias = service.Alias.GetValueOrDefault(string.Empty), Methods = { service.Methods.Values.Select(method => new ConsumedMethod { Name = method.Method.Name })} }) }, ProvidedServices = { appInfo.ProvidedServices.Select(service => new ProvidedService { ServiceId = service.Service.Id, Alias = service.Alias.GetValueOrDefault(string.Empty), Methods = { service.Methods.Values.Select(method => new ProvidedMethod { Name = method.Method.Name, LaunchMode = ConvertLaunchMode(method.LaunchMode), Title = method.Title.GetValueOrDefault(string.Empty), TimeoutMs = method.TimeoutMs, Options = { method.Options.Select(option => new OptionParameter { Key = option.Id, Value = option.Value})} })} }) }, }; } private MethodInfo.Types.MethodType ConvertToMethodType(Metamodel.MethodType methodType) { switch (methodType) { case MethodType.Unary: return MethodInfo.Types.MethodType.Unary; case MethodType.ServerStreaming: return MethodInfo.Types.MethodType.ServerStreaming; case MethodType.ClientStreaming: return MethodInfo.Types.MethodType.ClientStreaming; case MethodType.DuplexStreaming: return MethodInfo.Types.MethodType.DuplexStreaming; default: throw new ArgumentOutOfRangeException(nameof(methodType), methodType, null); } } private static ProvidedMethod.Types.MetamodelLaunchMode ConvertLaunchMode(Maybe methodLaunchMode) { switch (methodLaunchMode.GetValueOrDefault(LaunchMode.None)) { case LaunchMode.None: return ProvidedMethod.Types.MetamodelLaunchMode.None; case LaunchMode.SingleInstance: return ProvidedMethod.Types.MetamodelLaunchMode.SingleInstance; case LaunchMode.MultiInstance: return ProvidedMethod.Types.MetamodelLaunchMode.MultiInstance; default: throw new ArgumentOutOfRangeException(); } } } } ================================================ FILE: desktop/src/Plexus.Interop.Apps.Manager/Internal/Services/AppRegistrationServiceImpl.cs ================================================ /** * Copyright 2017-2021 Plexus Interop Deutsche Bank AG * SPDX-License-Identifier: Apache-2.0 * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ namespace Plexus.Interop.Apps.Internal.Services { using System.Threading.Tasks; using Plexus.Interop; using Plexus.Interop.Apps.Internal.Generated; internal class AppRegistrationServiceImpl : AppLifecycleManagerClient.IAppRegistrationServiceImpl { private readonly IAppLifecycleManager _appLifecycleManager; public AppRegistrationServiceImpl(IAppLifecycleManager appLifecycleManager) { _appLifecycleManager = appLifecycleManager; } public Task RegisterInstanceId(RegisterInstanceIdRequest request, MethodCallContext context) { RegisterInstanceId(request.AppInstanceId.ToUniqueId()); return Task.FromResult(new RegisterInstanceIdResponse()); } public Task RequestInstanceId(RequestInstanceIdRequest request, MethodCallContext context) { var appInstanceId = Plexus.UniqueId.Generate(); RegisterInstanceId(appInstanceId); return Task.FromResult(appInstanceId.ToProto()); } private void RegisterInstanceId(Plexus.UniqueId appInstanceId) => _appLifecycleManager.RegisterAppInstance(appInstanceId); } } ================================================ FILE: desktop/src/Plexus.Interop.Apps.Manager/Internal/Services/ContextLinkage/AppConnectionsSet.cs ================================================ /** * Copyright 2017-2021 Plexus Interop Deutsche Bank AG * SPDX-License-Identifier: Apache-2.0 * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ /** * Copyright 2017-2021 Plexus Interop Deutsche Bank AG * SPDX-License-Identifier: Apache-2.0 * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ namespace Plexus.Interop.Apps.Internal.Services.ContextLinkage { using System; using System.Collections.Generic; using System.Linq; using System.Reactive; using System.Reactive.Concurrency; using System.Reactive.Linq; using System.Reactive.Subjects; internal class AppConnectionsSet { private readonly UniqueId _appInstanceId; private readonly object _lock = new object(); private readonly HashSet _loadingApps = new HashSet(); private readonly Dictionary _appConnectionMap = new Dictionary(); private readonly BehaviorSubject _updatedSubject = new BehaviorSubject(Unit.Default); public AppConnectionsSet(UniqueId appInstanceId) { _appInstanceId = appInstanceId; UpdatedEventStream = _updatedSubject.ObserveOn(TaskPoolScheduler.Default); } public IObservable UpdatedEventStream { get; } public void AppLaunched(IEnumerable appIds) { var updated = false; lock (_lock) { foreach (var appId in appIds) { if (!_appConnectionMap.ContainsKey(appId)) { updated |= _loadingApps.Add(appId); } } } if (updated) { _updatedSubject.OnNext(Unit.Default); } } public void AppConnected(AppConnectionDescriptor appConnection) { var updated = false; lock (_lock) { var appId = appConnection.ApplicationId; if (!_appConnectionMap.TryGetValue(appId, out var existingAppConnection) || !Equals(appConnection, existingAppConnection)) { _appConnectionMap[appId] = appConnection; updated = true; } updated |= _loadingApps.Remove(appId); } if (updated) { _updatedSubject.OnNext(Unit.Default); } } public void AppDisconnected(AppConnectionDescriptor appConnection) { var updated = false; lock (_lock) { var appId = appConnection.ApplicationId; updated |= _appConnectionMap.Remove(appId); updated |= _loadingApps.Remove(appId); } if (updated) { _updatedSubject.OnNext(Unit.Default); } } public IReadOnlyCollection GetOnlineConnections() { lock (_lock) { return _appConnectionMap.Values.Where(descriptor => descriptor != null).ToArray(); } } public bool HasLoadingApps { get { lock (_lock) { return _loadingApps.Any(); } } } public IReadOnlyCollection<(UniqueId AppInstanceId, string AppId, Maybe ConnectionId)> GetConnections(bool online) { lock (_lock) { var connections = online ? _appConnectionMap.Select(pair => (_appInstanceId, pair.Value.ApplicationId, new Maybe(pair.Value.ConnectionId))) : _loadingApps.Select(appId => (_appInstanceId, appId, Maybe.Nothing)); return connections.Distinct().ToArray(); } } } } ================================================ FILE: desktop/src/Plexus.Interop.Apps.Manager/Internal/Services/ContextLinkage/AppContextBindingEvent.cs ================================================ /** * Copyright 2017-2021 Plexus Interop Deutsche Bank AG * SPDX-License-Identifier: Apache-2.0 * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ namespace Plexus.Interop.Apps.Internal.Services.ContextLinkage { internal class AppContextBindingEvent { public AppContextBindingEvent(Context context, UniqueId appInstanceId) { Context = context; AppInstanceId = appInstanceId; } public Context Context { get; } public UniqueId AppInstanceId { get; } } } ================================================ FILE: desktop/src/Plexus.Interop.Apps.Manager/Internal/Services/ContextLinkage/Context.cs ================================================ /** * Copyright 2017-2021 Plexus Interop Deutsche Bank AG * SPDX-License-Identifier: Apache-2.0 * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ /** * Copyright 2017-2021 Plexus Interop Deutsche Bank AG * SPDX-License-Identifier: Apache-2.0 * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ namespace Plexus.Interop.Apps.Internal.Services.ContextLinkage { using System; using System.Collections.Generic; using System.Linq; using System.Reactive; using System.Reactive.Subjects; internal class Context { private readonly IAppLifecycleManager _appLifecycleManager; public string Id { get; } = Guid.NewGuid().ToString(); public string Kind { get; } public UniqueId OwnerAppInstanceId { get; } private readonly object _lock = new object(); private readonly Dictionary _appInstanceIdsToConnections = new Dictionary(); private readonly Subject _bindingSubject = new Subject(); private readonly BehaviorSubject _contextUpdatedSubject = new BehaviorSubject(Unit.Default); public IObservable AppContextBindings => _bindingSubject; public IObservable ContextUpdatedEventStream => _contextUpdatedSubject; public Context(IAppLifecycleManager appLifecycleManager, string kind, UniqueId ownerAppInstanceId) { _appLifecycleManager = appLifecycleManager; Kind = string.IsNullOrEmpty(kind) ? Guid.NewGuid().ToString() : kind; OwnerAppInstanceId = ownerAppInstanceId; } public void AppLaunched(UniqueId appInstanceId, IEnumerable appIds) { _bindingSubject.OnNext(new AppContextBindingEvent(this, appInstanceId)); var appConnectionsSet = GetOrCreateAppConnectionsSet(appInstanceId); appConnectionsSet.AppLaunched(appIds); foreach (var appConnection in _appLifecycleManager.GetAppInstanceConnections(appInstanceId)) { AppConnected(appConnection.Info); } } public void AppConnected(AppConnectionDescriptor appConnection) { _bindingSubject.OnNext(new AppContextBindingEvent(this, appConnection.ApplicationInstanceId)); var appConnectionsSet = GetOrCreateAppConnectionsSet(appConnection.ApplicationInstanceId); appConnectionsSet.AppConnected(appConnection); } public void AppDisconnected(AppConnectionDescriptor appConnection) { lock (_lock) { if (_appInstanceIdsToConnections.TryGetValue(appConnection.ApplicationInstanceId, out var appConnectionsSet)) { appConnectionsSet.AppDisconnected(appConnection); } } } private AppConnectionsSet GetOrCreateAppConnectionsSet(UniqueId appInstanceId) { AppConnectionsSet appConnectionsSet; lock (_lock) { if (!_appInstanceIdsToConnections.TryGetValue(appInstanceId, out appConnectionsSet)) { appConnectionsSet = new AppConnectionsSet(appInstanceId); appConnectionsSet.UpdatedEventStream.Subscribe(AppConnectionUpdated); _appInstanceIdsToConnections[appInstanceId] = appConnectionsSet; } } return appConnectionsSet; } private void AppConnectionUpdated(Unit unit) { _contextUpdatedSubject.OnNext(unit); } public IReadOnlyCollection GetConnectedApps() { lock (_lock) { return _appInstanceIdsToConnections.Values.SelectMany(connections => connections.GetOnlineConnections()).ToArray(); } } public bool IsLoading { get { lock (_lock) { return _appInstanceIdsToConnections.Values.Any(connectionsSet => connectionsSet.HasLoadingApps); } } } public IReadOnlyCollection<(UniqueId AppInstanceId, string AppId, Maybe ConnectionId)> GetAppsInContext(bool online) { lock (_lock) { return _appInstanceIdsToConnections.Values.SelectMany(set => set.GetConnections(online)).ToArray(); } } } } ================================================ FILE: desktop/src/Plexus.Interop.Apps.Manager/Internal/Services/ContextLinkage/ContextsSet.cs ================================================ /** * Copyright 2017-2021 Plexus Interop Deutsche Bank AG * SPDX-License-Identifier: Apache-2.0 * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ /** * Copyright 2017-2021 Plexus Interop Deutsche Bank AG * SPDX-License-Identifier: Apache-2.0 * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ namespace Plexus.Interop.Apps.Internal.Services.ContextLinkage { using System; using System.Collections.Generic; using System.Linq; using System.Reactive.Concurrency; using System.Reactive.Linq; using System.Reactive.Subjects; internal class ContextsSet { private readonly IAppLifecycleManager _appLifecycleManager; private readonly Subject _appContextBindingSubject = new Subject(); private readonly object _lock = new object(); private readonly Dictionary> _contextsOfAppInstance = new Dictionary>(); private readonly Dictionary _contexts = new Dictionary(); public IObservable AppContextBindingEvents { get; } public ContextsSet(IAppLifecycleManager appLifecycleManager) { _appLifecycleManager = appLifecycleManager; AppContextBindingEvents = _appContextBindingSubject.ObserveOn(TaskPoolScheduler.Default); } public Context CreateContext(string kind, UniqueId ownerAppInstanceId) { var context = new Context(_appLifecycleManager, kind, ownerAppInstanceId); _contexts[context.Id] = context; context.AppContextBindings.Subscribe(BindContext); return context; } public IReadOnlyCollection GetContextsOf(UniqueId appInstanceId) { lock (_lock) { if (_contextsOfAppInstance.TryGetValue(appInstanceId, out var contexts)) { return contexts.ToArray(); } } return new Context[0]; } public Context GetContext(string contextId) { lock (_lock) { _contexts.TryGetValue(contextId, out var context); return context; } } private void BindContext(AppContextBindingEvent bindingEvent) { var appInstanceId = bindingEvent.AppInstanceId; var context = bindingEvent.Context; lock (_lock) { if (!_contextsOfAppInstance.TryGetValue(appInstanceId, out var contexts)) { contexts = new HashSet(); _contextsOfAppInstance[appInstanceId] = contexts; } contexts.RemoveWhere(x => x.Kind == context.Kind); if (contexts.Add(context)) { _appContextBindingSubject.OnNext(bindingEvent); } } } public IReadOnlyCollection GetAllContexts() { lock (_lock) { return _contexts.Values.ToArray(); } } } } ================================================ FILE: desktop/src/Plexus.Interop.Apps.Manager/Internal/Services/ContextLinkageServiceImpl.cs ================================================ /** * Copyright 2017-2021 Plexus Interop Deutsche Bank AG * SPDX-License-Identifier: Apache-2.0 * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ namespace Plexus.Interop.Apps.Internal.Services { using System; using System.Collections.Generic; using System.Diagnostics; using System.Linq; using System.Reactive; using System.Reactive.Concurrency; using System.Reactive.Linq; using System.Threading.Tasks; using Google.Protobuf.WellKnownTypes; using Plexus.Channels; using Plexus.Interop.Apps.Internal.Generated; using Plexus.Interop.Apps.Internal.Services.ContextLinkage; using Plexus.Interop.Metamodel; using Plexus.Interop.Protocol; using AppConnectionDescriptor = Plexus.AppConnectionDescriptor; using Context = Plexus.Interop.Apps.Internal.Services.ContextLinkage.Context; using ContextDto = Generated.Context; using UniqueId = Plexus.UniqueId; internal class ContextLinkageServiceImpl : AppLifecycleManagerClient.IContextLinkageServiceImpl, IContextLinkageManager { private ILogger Log { get; } = LogManager.GetLogger(); private readonly IRegistryProvider _appRegistryProvider; private readonly IAppLifecycleManager _appLifecycleManager; private readonly ContextsSet _contextsSet; public ContextLinkageServiceImpl(IRegistryProvider appRegistryProvider, IAppLifecycleManager appLifecycleManager, IAppLaunchedEventProvider appLaunchedEventProvider) { _appRegistryProvider = appRegistryProvider; _appLifecycleManager = appLifecycleManager; _contextsSet = new ContextsSet(appLifecycleManager); appLaunchedEventProvider.AppLaunchedStream.Subscribe(OnAppLaunched); appLifecycleManager.ConnectionEventsStream.Subscribe(OnAppConnectedOrDisconnected); } public Task CreateContext(Empty request, MethodCallContext callContext) => CreateContext2(new CreateContextRequest(), callContext); public Task CreateContext2(CreateContextRequest request, MethodCallContext callContext) { return Task.Factory.StartNew(() => { var newContext = _contextsSet.CreateContext(request.Kind, callContext.ConsumerApplicationInstanceId); foreach (var appConnection in _appLifecycleManager.GetAppInstanceConnections(callContext.ConsumerApplicationInstanceId)) { newContext.AppConnected(appConnection.Info); } return ConvertContextToProto(newContext, callContext.ConsumerApplicationInstanceId); }); } private void OnAppLaunched(AppLaunchedEvent appLaunchedEvent) { if (appLaunchedEvent.AppIds.Count == 0) { return; } var refererAppContexts = _contextsSet.GetContextsOf(appLaunchedEvent.Referrer.AppInstanceId.ToUniqueId()); if (!refererAppContexts.Any()) { return; } var appInstanceId = appLaunchedEvent.AppInstanceId.ToUniqueId(); foreach (var refererContext in refererAppContexts) { refererContext.AppLaunched(appInstanceId, appLaunchedEvent.AppIds); } } private void OnAppConnectedOrDisconnected(AppConnectionEvent connectionEvent) { var connection = connectionEvent.Connection; var contextsOfApp = _contextsSet.GetContextsOf(connection.ApplicationInstanceId); foreach (var context in contextsOfApp) { switch (connectionEvent.Type) { case ConnectionEventType.AppConnected: context.AppConnected(connection); break; case ConnectionEventType.AppDisconnected: context.AppDisconnected(connection); break; } } } public Task JoinContext(ContextDto request, MethodCallContext callContext) { return Task.Factory.StartNew(() => { var context = _contextsSet.GetContext(request.Id); if (context == null) { throw new Exception($"There is no context with {request.Id} id"); } foreach (var appConnection in _appLifecycleManager.GetAppInstanceConnections(callContext.ConsumerApplicationInstanceId)) { context.AppConnected(appConnection.Info); } return new Empty(); }); } public Task GetContexts(Empty request, MethodCallContext callContext) { return Task.Factory.StartNew(() => { var allContexts = _contextsSet.GetContextsOf(callContext.ConsumerApplicationInstanceId); return new ContextsList { Contexts = { allContexts.Select(context => ConvertContextToProto(context, callContext.ConsumerApplicationInstanceId)) } }; }); } public Task GetLinkedInvocations(ContextDto request, MethodCallContext callContext) { return Task.Factory.StartNew(() => { var context = _contextsSet.GetContext(request.Id); if (context == null) { throw new Exception($"There is no context with {request.Id} id"); } return CreateInvocationsList(context); }); } public Task GetAllLinkedInvocations(Empty request, MethodCallContext callContext) { return Task.Factory.StartNew(() => { var allContexts = _contextsSet.GetAllContexts(); return new ContextToInvocationsList { Contexts = { allContexts.Select(context => new ContextToInvocations { Context = ConvertContextToProto(context, callContext.ConsumerApplicationInstanceId), Invocations = CreateInvocationsList(context), })} }; }); } public async Task ContextLoadedStream(ContextDto request, IWritableChannel responseStream, MethodCallContext callContext) { var context = _contextsSet.GetContext(request.Id); if (context == null) { throw new Exception($"There is no context with {request.Id} id"); } await Observable.Return(Unit.Default) .Merge(context.ContextUpdatedEventStream) .ObserveOn(TaskPoolScheduler.Default) .Throttle(TimeSpan.FromMilliseconds(200)) .Select(_ => new ContextLoadingUpdate { LoadedAppDescriptors = { context.GetConnectedApps().Select(ConvertToProto) }, Status = context.IsLoading ? ContextLoadingStatus.InProgress : ContextLoadingStatus.Finished, }) .DistinctUntilChanged() .Do(update => { Log.Debug( $"Sending context linkage update for context {context.Id}: LoadedAppDescriptorsCount={update.LoadedAppDescriptors.Count}"); }) .PipeAsync(responseStream, callContext.CancellationToken); } private InvocationsList CreateInvocationsList(Context context) { return new InvocationsList { Invocations = { context.GetConnectedApps().Select(connection => new InvocationRef { Target = ConvertToProto(connection), AppInfo = GetAppInfo(connection.ApplicationId), }) } }; } private static Generated.AppConnectionDescriptor ConvertToProto(AppConnectionDescriptor connection) { return new Generated.AppConnectionDescriptor { AppInstanceId = connection.ApplicationInstanceId.ToProto(), AppId = connection.ApplicationId, ConnectionId = connection.ConnectionId.ToProto(), }; } private AppMetamodelInfo GetAppInfo(string appId) { var appInfo = _appRegistryProvider.Current.Applications[appId]; return AppMetadataServiceImpl.ConvertToAppMetamodelInfo(appInfo); } public bool IsContextShouldBeConsidered(IContextLinkageOptions contextLinkageOptions, IAppConnection sourceConnection) { return contextLinkageOptions != null && contextLinkageOptions.Mode != ContextLinkageDiscoveryMode.None && GetApplicationContexts(contextLinkageOptions, sourceConnection).Any(); } public IReadOnlyCollection<(UniqueId AppInstanceId, string AppId, Maybe ConnectionId)> GetAppsInContexts(IContextLinkageOptions contextLinkageOptions, IAppConnection sourceConnection, bool online) { return GetApplicationContexts(contextLinkageOptions, sourceConnection) .Select(id => _contextsSet.GetContext(id)) .Where(context => context != null) .SelectMany(context => context.GetAppsInContext(online)) .Distinct().ToArray(); } private IReadOnlyCollection GetApplicationContexts(IContextLinkageOptions contextLinkageOptions, IAppConnection sourceConnection) { switch (contextLinkageOptions.Mode) { case ContextLinkageDiscoveryMode.CurrentContext: return _contextsSet.GetContextsOf(sourceConnection.Info.ApplicationInstanceId) .Select(context => context.Id).ToArray(); case ContextLinkageDiscoveryMode.SpecificContext when contextLinkageOptions.SpecificContext.HasValue: return new[] { contextLinkageOptions.SpecificContext.Value }; default: return new string[0]; } } public Task AppJoinedContextStream(Empty request, IWritableChannel responseStream, MethodCallContext callContext) { return _contextsSet.AppContextBindingEvents .Select(ev => new AppJoinedContextEvent { AppInstanceId = ev.AppInstanceId.ToProto(), Context = ConvertContextToProto(ev.Context, ev.AppInstanceId) }) .PipeAsync(responseStream, callContext.CancellationToken); } public Task RestoreContextsLinkage(RestoreContextsLinkageRequest request, MethodCallContext callContext) { return Task.Factory.StartNew(() => { var newCreatedContexts = new Dictionary(); var contextsOwners = request.Apps .SelectMany(app => app.Contexts .Where(ctx => ctx.Own) .Select(ctx => new { app.AppInstanceId, ContextId = ctx.Id })) .GroupBy(x => x.ContextId) .ToDictionary(xs => xs.Key, xs => xs.First().AppInstanceId.ToUniqueId()); foreach (var restoringAppInstance in request.Apps) { var contexts = restoringAppInstance.Contexts.Count > 0 ? restoringAppInstance.Contexts : restoringAppInstance.ContextIds.Select(id => new ContextDto { Id = id }); foreach (var context in contexts) { if (!newCreatedContexts.TryGetValue(context.Id, out var newContext)) { if (!contextsOwners.TryGetValue(context.Id, out var ownerAppInstanceId)) ownerAppInstanceId = default; newContext = _contextsSet.CreateContext(context.Kind, ownerAppInstanceId); newCreatedContexts[context.Id] = newContext; } newContext.AppLaunched(restoringAppInstance.AppInstanceId.ToUniqueId(), restoringAppInstance.AppIds); } } var response = new RestoreContextsLinkageResponse(); foreach (var pair in newCreatedContexts) { response.CreatedContextsMap[pair.Key] = ConvertContextToProto(pair.Value, callContext.ConsumerApplicationInstanceId); } return response; }); } private static ContextDto ConvertContextToProto(Context context, UniqueId appInstanceId) => new ContextDto { Id = context.Id, Own = context.OwnerAppInstanceId == appInstanceId, Kind = context.Kind }; } } ================================================ FILE: desktop/src/Plexus.Interop.Apps.Manager/Internal/Services/IAppLifecycleService.cs ================================================ /** * Copyright 2017-2021 Plexus Interop Deutsche Bank AG * SPDX-License-Identifier: Apache-2.0 * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ namespace Plexus.Interop.Apps.Internal.Services { using Plexus.Interop.Apps.Internal.Generated; internal interface IAppLifecycleService : IInvocationEventProvider, AppLifecycleManagerClient.IAppLifecycleServiceImpl { } } ================================================ FILE: desktop/src/Plexus.Interop.Apps.Manager/Internal/Services/IAppMetadataService.cs ================================================ /** * Copyright 2017-2021 Plexus Interop Deutsche Bank AG * SPDX-License-Identifier: Apache-2.0 * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ namespace Plexus.Interop.Apps.Internal.Services { using Plexus.Interop.Apps.Internal.Generated; internal interface IAppMetadataService : AppLifecycleManagerClient.IAppMetadataServiceImpl { } } ================================================ FILE: desktop/src/Plexus.Interop.Apps.Manager/Internal/SubProcessLauncher.cs ================================================ /** * Copyright 2017-2021 Plexus Interop Deutsche Bank AG * SPDX-License-Identifier: Apache-2.0 * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ namespace Plexus.Interop.Apps.Internal { using System; using System.Diagnostics; using System.IO; internal sealed class SubProcessLauncher { private static readonly ILogger Log = LogManager.GetLogger(); private readonly string _curPid = Process.GetCurrentProcess().Id.ToString(); public UniqueId Launch(string cmd, string args, string workingDir = null) { Log.Debug("Launching process: {0} {1}", cmd, args); cmd = Path.GetFullPath(cmd); workingDir = workingDir ?? Path.GetDirectoryName(cmd); var process = new Process { StartInfo = new ProcessStartInfo(cmd) { WorkingDirectory = workingDir, Arguments = args, RedirectStandardOutput = false, RedirectStandardInput = false, RedirectStandardError = false, CreateNoWindow = true, UseShellExecute = false, } }; var appInstanceId = UniqueId.Generate(); #if NETSTANDARD2_0 process.StartInfo.Environment[EnvironmentHelper.ParentProcessIdVarName] = _curPid; process.StartInfo.Environment[EnvironmentHelper.BrokerWorkingDirVarName] = Directory.GetCurrentDirectory(); process.StartInfo.Environment[EnvironmentHelper.AppInstanceIdVarName] = appInstanceId.ToString(); #else process.StartInfo.EnvironmentVariables[EnvironmentHelper.ParentProcessIdVarName] = _curPid; process.StartInfo.EnvironmentVariables[EnvironmentHelper.BrokerWorkingDirVarName] = Directory.GetCurrentDirectory(); process.StartInfo.EnvironmentVariables[EnvironmentHelper.AppInstanceIdVarName] = appInstanceId.ToString(); #endif if (!process.Start()) { throw new InvalidOperationException($"Process {cmd} failed to start"); } return appInstanceId; } } } ================================================ FILE: desktop/src/Plexus.Interop.Apps.Manager/Plexus.Interop.Apps.Manager.csproj ================================================ netstandard2.0;net45 net45 netstandard2.0 Plexus.Interop.Apps false 3.1.1 ================================================ FILE: desktop/src/Plexus.Interop.Apps.Manager.Contracts/AppConnectionEvent.cs ================================================ /** * Copyright 2017-2021 Plexus Interop Deutsche Bank AG * SPDX-License-Identifier: Apache-2.0 * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ namespace Plexus.Interop.Apps { public class AppConnectionEvent { public AppConnectionEvent(AppConnectionDescriptor connection, ConnectionEventType type) { Connection = connection; Type = type; } public AppConnectionDescriptor Connection { get; } public ConnectionEventType Type { get; } } } ================================================ FILE: desktop/src/Plexus.Interop.Apps.Manager.Contracts/ConnectionEventType.cs ================================================ /** * Copyright 2017-2021 Plexus Interop Deutsche Bank AG * SPDX-License-Identifier: Apache-2.0 * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ namespace Plexus.Interop.Apps { public enum ConnectionEventType { AppConnected = 0, AppDisconnected = 1, AppConnectionError = 2, } } ================================================ FILE: desktop/src/Plexus.Interop.Apps.Manager.Contracts/IAppConnectedEventProvider.cs ================================================ /** * Copyright 2017-2021 Plexus Interop Deutsche Bank AG * SPDX-License-Identifier: Apache-2.0 * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ namespace Plexus.Interop.Apps { using System; public interface IAppConnectedEventProvider { IObservable ConnectionEventsStream { get; } } } ================================================ FILE: desktop/src/Plexus.Interop.Apps.Manager.Contracts/IAppConnection.cs ================================================ /** * Copyright 2017-2021 Plexus Interop Deutsche Bank AG * SPDX-License-Identifier: Apache-2.0 * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ namespace Plexus.Interop.Apps { using Plexus.Channels; using Plexus.Interop.Transport; using System; using System.Threading.Tasks; public interface IAppConnection { UniqueId Id { get; } Task Completion { get; } AppConnectionDescriptor Info { get; } ValueTask CreateChannelAsync(); IReadableChannel IncomingChannels { get; } } } ================================================ FILE: desktop/src/Plexus.Interop.Apps.Manager.Contracts/IAppLifecycleManager.cs ================================================ /** * Copyright 2017-2021 Plexus Interop Deutsche Bank AG * SPDX-License-Identifier: Apache-2.0 * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ namespace Plexus.Interop.Apps { using System.Collections.Generic; using System.Threading.Tasks; using Plexus.Interop.Transport; public interface IAppLifecycleManager : IAppConnectedEventProvider { IAppConnection AcceptConnection(ITransportConnection connection, AppConnectionDescriptor connectionInfo); bool TryRemoveConnection(IAppConnection connection); void ReportConnectionError(AppConnectionDescriptor connectionInfo); bool TryGetOnlineConnection(UniqueId connectionId, out IAppConnection connection); bool TryGetOnlineConnection(UniqueId appInstanceId, string app, out IAppConnection connection); IReadOnlyCollection GetOnlineConnections(); IEnumerable FilterCanBeLaunched(IEnumerable appIds); bool CanBeLaunched(string appId); Task LaunchAndConnectAsync(string appId, ResolveMode mode, AppConnectionDescriptor referrerConnectionInfo); IReadOnlyCollection GetAppInstanceConnections(UniqueId appInstanceId); IReadOnlyCollection GetAppConnections(string appId); bool TryGetConnectionInProgress(UniqueId appInstanceId, string appId, out Task appConnection); void RegisterAppInstanceConnection(string appId, UniqueId appInstanceId); void RegisterAppInstance(UniqueId appInstanceId); bool IsAppInstanceRegistered(UniqueId appInstanceId); } } ================================================ FILE: desktop/src/Plexus.Interop.Apps.Manager.Contracts/IContextLinkageManager.cs ================================================ /** * Copyright 2017-2021 Plexus Interop Deutsche Bank AG * SPDX-License-Identifier: Apache-2.0 * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ namespace Plexus.Interop.Apps { using System.Collections.Generic; using Plexus.Interop.Protocol; public interface IContextLinkageManager { bool IsContextShouldBeConsidered(IContextLinkageOptions contextLinkageOptions, IAppConnection sourceConnection); IReadOnlyCollection<(UniqueId AppInstanceId, string AppId, Maybe ConnectionId)> GetAppsInContexts(IContextLinkageOptions contextLinkageOptions, IAppConnection sourceConnection, bool online); } } ================================================ FILE: desktop/src/Plexus.Interop.Apps.Manager.Contracts/IInteropContext.cs ================================================ /** * Copyright 2017-2021 Plexus Interop Deutsche Bank AG * SPDX-License-Identifier: Apache-2.0 * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ namespace Plexus.Interop.Apps { using System.Threading.Tasks; using Plexus.Interop.Metamodel; public interface IInteropContext { Task StartAsync(); Task StopAsync(); IRegistryProvider RegistryProvider { get; } IAppLifecycleManager AppLifecycleManager { get; } IInvocationEventProvider InvocationEventProvider { get; } IContextLinkageManager ContextLinkageManager { get; } } } ================================================ FILE: desktop/src/Plexus.Interop.Apps.Manager.Contracts/IInvocationEventProvider.cs ================================================ /** * Copyright 2017-2021 Plexus Interop Deutsche Bank AG * SPDX-License-Identifier: Apache-2.0 * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ namespace Plexus.Interop.Apps { public interface IInvocationEventProvider { void OnInvocationStarted(InvocationStartedEventDescriptor eventData); void OnInvocationFinished(InvocationFinishedEventDescriptor eventData); } } ================================================ FILE: desktop/src/Plexus.Interop.Apps.Manager.Contracts/InvocationDescriptor.cs ================================================ /** * Copyright 2017-2021 Plexus Interop Deutsche Bank AG * SPDX-License-Identifier: Apache-2.0 * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ namespace Plexus.Interop.Apps { public sealed class InvocationDescriptor { public InvocationDescriptor( AppConnectionDescriptor sourceConnection, AppConnectionDescriptor targetConnection, string serviceId, string serviceAlias, string methodId) { SourceConnection = sourceConnection; TargetConnection = targetConnection; ServiceId = serviceId; ServiceAlias = serviceAlias; MethodId = methodId; } public AppConnectionDescriptor SourceConnection { get; } public AppConnectionDescriptor TargetConnection { get; } public string ServiceId { get; } public string ServiceAlias { get; } public string MethodId { get; } public override string ToString() { return $"{nameof(SourceConnection)}: {SourceConnection}, {nameof(TargetConnection)}: {TargetConnection}, {nameof(ServiceId)}: {ServiceId}, {nameof(ServiceAlias)}: {ServiceAlias}, {nameof(MethodId)}: {MethodId}"; } } } ================================================ FILE: desktop/src/Plexus.Interop.Apps.Manager.Contracts/InvocationFinishedEventDescriptor.cs ================================================ /** * Copyright 2017-2021 Plexus Interop Deutsche Bank AG * SPDX-License-Identifier: Apache-2.0 * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ namespace Plexus.Interop.Apps { public sealed class InvocationFinishedEventDescriptor { public InvocationFinishedEventDescriptor( InvocationDescriptor methodCallDescriptor, InvocationResult result, long durationMs) { MethodCallDescriptor = methodCallDescriptor; Result = result; DurationMs = durationMs; } public InvocationDescriptor MethodCallDescriptor { get; } public InvocationResult Result { get; } public long DurationMs { get; } public override string ToString() { return $"{nameof(MethodCallDescriptor)}: {MethodCallDescriptor}, {nameof(Result)}: {Result}, {nameof(DurationMs)}: {DurationMs}"; } } } ================================================ FILE: desktop/src/Plexus.Interop.Apps.Manager.Contracts/InvocationResult.cs ================================================ /** * Copyright 2017-2021 Plexus Interop Deutsche Bank AG * SPDX-License-Identifier: Apache-2.0 * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ namespace Plexus.Interop.Apps { public enum InvocationResult { Succeeded, Canceled, Failed } } ================================================ FILE: desktop/src/Plexus.Interop.Apps.Manager.Contracts/InvocationStartedEventDescriptor.cs ================================================ /** * Copyright 2017-2021 Plexus Interop Deutsche Bank AG * SPDX-License-Identifier: Apache-2.0 * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ namespace Plexus.Interop.Apps { public sealed class InvocationStartedEventDescriptor { public InvocationStartedEventDescriptor(InvocationDescriptor invocationDescriptor) { InvocationDescriptor = invocationDescriptor; } public InvocationDescriptor InvocationDescriptor { get; } public override string ToString() { return $"{nameof(InvocationDescriptor)}: {{{InvocationDescriptor}}}"; } } } ================================================ FILE: desktop/src/Plexus.Interop.Apps.Manager.Contracts/Plexus.Interop.Apps.Manager.Contracts.csproj ================================================ netstandard2.0;net45 net45 netstandard2.0 Plexus.Interop.Apps.Manager.Contracts Plexus.Interop.Apps false ================================================ FILE: desktop/src/Plexus.Interop.Apps.Manager.Contracts/ResolveMode.cs ================================================ /** * Copyright 2017-2021 Plexus Interop Deutsche Bank AG * SPDX-License-Identifier: Apache-2.0 * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ namespace Plexus.Interop.Apps { public enum ResolveMode { SingleInstance, MultiInstance } } ================================================ FILE: desktop/src/Plexus.Interop.Apps.Manager.Contracts/ResolvedConnection.cs ================================================ /** * Copyright 2017-2021 Plexus Interop Deutsche Bank AG * SPDX-License-Identifier: Apache-2.0 * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ namespace Plexus.Interop.Apps { public struct ResolvedConnection { public ResolvedConnection(IAppConnection appConnection, bool isNewInstance) { AppConnection = appConnection; IsNewInstance = isNewInstance; } public IAppConnection AppConnection { get; } public bool IsNewInstance { get; } } } ================================================ FILE: desktop/src/Plexus.Interop.Broker/BrokerFactory.cs ================================================ /** * Copyright 2017-2021 Plexus Interop Deutsche Bank AG * SPDX-License-Identifier: Apache-2.0 * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ namespace Plexus.Interop { using Plexus.Interop.Metamodel; public sealed class BrokerFactory { public static BrokerFactory Instance = new BrokerFactory(); public IBroker Create(BrokerOptions options, IRegistryProvider registryProvider = null) { return new Internal.Broker(options, registryProvider); } } } ================================================ FILE: desktop/src/Plexus.Interop.Broker/BrokerIsAlreadyRunningException.cs ================================================ /** * Copyright 2017-2021 Plexus Interop Deutsche Bank AG * SPDX-License-Identifier: Apache-2.0 * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ namespace Plexus.Interop { using System; [Serializable] public class BrokerIsAlreadyRunningException : Exception { public BrokerIsAlreadyRunningException(string workingDir) : base($"Another broker instance is already running in directory {workingDir}") { } } } ================================================ FILE: desktop/src/Plexus.Interop.Broker/BrokerOptions.cs ================================================ /** * Copyright 2017-2021 Plexus Interop Deutsche Bank AG * SPDX-License-Identifier: Apache-2.0 * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ namespace Plexus.Interop { public sealed class BrokerOptions { public string MetadataDir { get; } public uint Port { get; } public uint WssPort { get; } public BrokerOptions( string metadataDir, uint port, uint wssPort) { MetadataDir = metadataDir; Port = port; WssPort = wssPort; } public override string ToString() => string.Join(", ", $"{nameof(MetadataDir)}: {MetadataDir}", $"{nameof(Port)}: {Port}", $"{nameof(WssPort)}: {WssPort}"); } } ================================================ FILE: desktop/src/Plexus.Interop.Broker/IBroker.cs ================================================ /** * Copyright 2017-2021 Plexus Interop Deutsche Bank AG * SPDX-License-Identifier: Apache-2.0 * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ namespace Plexus.Interop { using System.Threading.Tasks; public interface IBroker { Task Completion { get; } Task StartAsync(); void Stop(); } } ================================================ FILE: desktop/src/Plexus.Interop.Broker/Internal/Broker.cs ================================================ /** * Copyright 2017-2021 Plexus Interop Deutsche Bank AG * SPDX-License-Identifier: Apache-2.0 * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ namespace Plexus.Interop.Internal { using Plexus.Interop.Apps; using Plexus.Interop.Broker; using Plexus.Interop.Metamodel; using Plexus.Interop.Metamodel.Json; using Plexus.Interop.Protocol.Protobuf; using Plexus.Interop.Transport; using Plexus.Interop.Transport.Protocol.Protobuf; using Plexus.Interop.Transport.Transmission.Pipes; using Plexus.Interop.Transport.Transmission.WebSockets.Server; using Plexus.Processes; using System.Collections.Generic; using System.Diagnostics; using System.IO; using System.Linq; using System.Reflection; using System.Security.Cryptography.X509Certificates; using System.Threading.Tasks; using Plexus.Interop.Apps.Internal; using ILogger = Plexus.ILogger; using LogManager = Plexus.LogManager; using System; internal sealed class Broker : ProcessBase, IBroker { private static readonly ProtobufTransportProtocolSerializationProvider DefaultTransportSerializationProvider = new ProtobufTransportProtocolSerializationProvider(); private static readonly ProtobufProtocolSerializerFactory DefaultProtocolSerializationProvider = new ProtobufProtocolSerializerFactory(); private readonly BrokerFeatures _features; private readonly string _workingDir; private readonly ServerConnectionListener _connectionListener; private readonly IBrokerProcessor _brokerProcessor; private readonly IReadOnlyCollection _transportServers; private readonly IInteropContext _interopContext; protected override ILogger Log { get; } = LogManager.GetLogger(); public Broker(BrokerOptions options, IRegistryProvider registryProvider = null) { _features = EnvironmentHelper.GetBrokerFeatures(); Log.Info($"Broker features: {_features}"); var trustedLauncherId = EnvironmentHelper.GetLauncherAppInstanceId(); Log.Info($"App launcher application instance id: {trustedLauncherId}"); if (_features.HasFlag(BrokerFeatures.CheckAppInstanceId) && trustedLauncherId == null) throw new BrokerException($"{EnvironmentHelper.LauncherId} must be defined if {BrokerFeatures.CheckAppInstanceId} set."); _workingDir = Directory.GetCurrentDirectory(); var binDir = Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location); var studioDir = Path.Combine(binDir, "studio"); Log.Info("Studio dir: {0}", studioDir); var metadataDir = Path.GetFullPath(options.MetadataDir ?? Path.Combine(_workingDir, "metadata")); Log.Info("Metadata dir: {0}", metadataDir); var metadataFile = Path.Combine(metadataDir, "interop.json"); IReadOnlyDictionary staticFileMapping = new Dictionary { {"/metadata/interop", metadataFile}, {"/studio", studioDir} }; var webSocketTransmissionServerOptions = new WebSocketTransmissionServerOptions(_workingDir, options.Port, staticFileMapping); var transportServers = new List { TransportServerFactory.Instance.Create( TransportType.Pipe, PipeTransmissionServerFactory.Instance.Create(_workingDir), DefaultTransportSerializationProvider), TransportServerFactory.Instance.Create( TransportType.Ws, WebSocketTransmissionServerFactory.Instance.Create(webSocketTransmissionServerOptions), DefaultTransportSerializationProvider), }; if (_features.HasFlag(BrokerFeatures.UseWSS)) { var certificate = GetCertificate(); if (certificate != null) { var wssTransmissionServerOptions = new WebSocketTransmissionServerOptions(_workingDir, options.WssPort, staticFileMapping); var sslProtocols = EnvironmentHelper.GetSslProtocols(); Log.Info($"{EnvironmentHelper.SslProtocols}={sslProtocols}"); transportServers.Add(TransportServerFactory.Instance.Create( TransportType.Wss, WebSocketTransmissionServerFactory.Instance.CreateSecure(wssTransmissionServerOptions, certificate, sslProtocols), DefaultTransportSerializationProvider)); } } _transportServers = transportServers; _connectionListener = new ServerConnectionListener(_transportServers); registryProvider = registryProvider ?? new JsonRegistryProvider(Path.Combine(metadataDir, "interop.json")); _interopContext = InteropContextFactory.Instance.Create(trustedLauncherId ?? default, metadataDir, registryProvider); _brokerProcessor = BrokerProcessorFactory.Instance.Create( _connectionListener.In, DefaultProtocolSerializationProvider, _interopContext, _features); OnStop(_connectionListener.Stop); } private X509Certificate2 GetCertificate() { try { var certificatePath = EnvironmentHelper.GetCertificatePath(); if (string.IsNullOrEmpty(certificatePath)) throw new BrokerException($"{EnvironmentHelper.CertificatePath} must be defined if {BrokerFeatures.UseWSS} set."); var certificatePassword = EnvironmentHelper.GetCertificatePassword(); if (string.IsNullOrEmpty(certificatePassword)) { Log.Info($"{EnvironmentHelper.CertificatePassword} is empty, try open certificate without password."); return new X509Certificate2(certificatePath); } var flags = EnvironmentHelper.GetCertificateKeyStorageFlags(); Log.Info($"{EnvironmentHelper.CertificateKeyStorageFlags}={flags}"); return new X509Certificate2(certificatePath, certificatePassword, flags); } catch (Exception ex) { Log.Error(ex, "Exception occured while creating certificate"); return null; } } protected override async Task StartCoreAsync() { Log.Info("Starting broker in directory {0}", _workingDir); await Task .WhenAll( _connectionListener.StartAsync(), _brokerProcessor.StartAsync(), _interopContext.StartAsync()) .ConfigureAwait(false); Log.Info("Broker started in directory {0}", _workingDir); return ProcessAsync(); } private async Task ProcessAsync() { try { await _brokerProcessor.Completion.ConfigureAwait(false); } finally { await _interopContext.StopAsync().IgnoreExceptions().ConfigureAwait(false); await Task.WhenAll(_transportServers.Select(x => x.StopAsync())).ConfigureAwait(false); } } } } ================================================ FILE: desktop/src/Plexus.Interop.Broker/Internal/ServerConnectionListener.cs ================================================ /** * Copyright 2017-2021 Plexus Interop Deutsche Bank AG * SPDX-License-Identifier: Apache-2.0 * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ namespace Plexus.Interop.Internal { using System; using System.Collections.Generic; using System.Linq; using System.Threading.Tasks; using Plexus.Channels; using Plexus.Interop.Transport; using Plexus.Processes; internal sealed class ServerConnectionListener : ProcessBase { private readonly IReadOnlyCollection _servers; private readonly IChannel _buffer = new BufferedChannel(3); public ServerConnectionListener(IEnumerable servers) { _servers = servers.ToList(); } public IReadableChannel In => _buffer.In; protected override ILogger Log { get; } = LogManager.GetLogger(); protected override async Task StartCoreAsync() { var startTasks = _servers.Select(StartServerAsync).ToArray(); await Task.WhenAll(startTasks).IgnoreExceptions().ConfigureAwait(false); var servers = startTasks.Where(t => t.Status == TaskStatus.RanToCompletion).Select(t => t.GetResult()); OnStop(() => _buffer.Out.TryComplete()); return ProcessAsync(servers); } private async Task StartServerAsync(ITransportServer server) { try { OnStop(server.Stop); await server.StartAsync().ConfigureAwait(false); return server; } catch (Exception ex) { Log.Error(ex, "Server failed to start: {{{0}}}", server); throw; } } private async Task ProcessAsync(IEnumerable servers) { await Task.WhenAll(servers.Select(ProcessAsync)).IgnoreExceptions().ConfigureAwait(false); Log.Debug("All servers stopped"); _buffer.Out.TryComplete(); } private async Task ProcessAsync(ITransportServer server) { try { await server.In.ConsumeAsync(ProcessAsync).ConfigureAwait(false); Log.Debug("Server completed: {{{0}}}", server); } catch (OperationCanceledException) when (CancellationToken.IsCancellationRequested) { Log.Debug("Server stopped: {{{0}}}", server); } catch (Exception ex) { Log.Error(ex, "Exception on server listening: {{{0}}}", server); } } private async Task ProcessAsync(ITransportConnection connection) { try { await _buffer.Out.WriteAsync(connection).ConfigureAwait(false); } catch (Exception ex) { connection.TryTerminate(ex); throw; } } } } ================================================ FILE: desktop/src/Plexus.Interop.Broker/Plexus.Interop.Broker.csproj ================================================  netstandard2.0;net45 net45 netstandard2.0 Plexus.Interop false ================================================ FILE: desktop/src/Plexus.Interop.Broker.Core/BrokerException.cs ================================================ /** * Copyright 2017-2021 Plexus Interop Deutsche Bank AG * SPDX-License-Identifier: Apache-2.0 * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ using System; namespace Plexus.Interop.Broker { public sealed class BrokerException : Exception { public BrokerException(string message, Exception innerException = null) : base(message, innerException) { } } } ================================================ FILE: desktop/src/Plexus.Interop.Broker.Core/BrokerProcessorFactory.cs ================================================ /** * Copyright 2017-2021 Plexus Interop Deutsche Bank AG * SPDX-License-Identifier: Apache-2.0 * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ namespace Plexus.Interop.Broker { using Plexus.Channels; using Plexus.Interop.Apps; using Plexus.Interop.Broker.Internal; using Plexus.Interop.Protocol; using Plexus.Interop.Transport; public sealed class BrokerProcessorFactory { public static BrokerProcessorFactory Instance = new BrokerProcessorFactory(); public IBrokerProcessor Create( IReadableChannel incomingConnections, IProtocolSerializerFactory protocolSerializerFactory, IInteropContext interopContext, BrokerFeatures features) { return new BrokerProcessor( incomingConnections, protocolSerializerFactory, interopContext, features); } } } ================================================ FILE: desktop/src/Plexus.Interop.Broker.Core/Generate.cmd ================================================ plexus gen-json-meta -b ..\..\..\dsl\interop-lang\src\main\resources -o Internal -v ================================================ FILE: desktop/src/Plexus.Interop.Broker.Core/IBrokerProcessor.cs ================================================ /** * Copyright 2017-2021 Plexus Interop Deutsche Bank AG * SPDX-License-Identifier: Apache-2.0 * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ namespace Plexus.Interop.Broker { using System.Threading.Tasks; public interface IBrokerProcessor { Task Completion { get; } Task StartAsync(); } } ================================================ FILE: desktop/src/Plexus.Interop.Broker.Core/Internal/AppConnectionProcessor.cs ================================================ /** * Copyright 2017-2021 Plexus Interop Deutsche Bank AG * SPDX-License-Identifier: Apache-2.0 * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ namespace Plexus.Interop.Broker.Internal { using Plexus.Channels; using Plexus.Interop.Transport; using System; using System.Collections.Generic; using System.Linq; using System.Threading.Tasks; using Plexus.Interop.Apps; internal sealed class AppConnectionProcessor : IAppConnectionProcessor { private readonly ILogger _log; private readonly IAppConnection _connection; private readonly IClientRequestHandler _clientRequestHandler; private readonly Dictionary _handleChannelTasks = new Dictionary(); public AppConnectionProcessor(IAppConnection connection, IClientRequestHandler clientRequestHandler) { _connection = connection; Id = _connection.Id; _log = LogManager.GetLogger(Id.ToString()); _clientRequestHandler = clientRequestHandler; } public UniqueId Id { get; } public async Task ProcessAsync(Action connectionCompletedAction) { _log.Debug("Listening for incoming channels: {0}", _connection); var listenChannelTask = _connection.IncomingChannels.ConsumeAsync((Action)HandleChannel).IgnoreExceptions(); await listenChannelTask.ConfigureAwait(false); _log.Debug($"Listening for incoming channels completed: {_connection}"); connectionCompletedAction(); await _connection.Completion.ConfigureAwait(false); _log.Debug($"Connection completed: {_connection}"); Task completion; lock (_handleChannelTasks) { completion = Task.WhenAll(_handleChannelTasks.Values); _log.Debug($"Waiting to completion of {_handleChannelTasks.Count} running channels ({string.Join(", ", _handleChannelTasks.Keys.Select(channel => channel.Id))}) tasks of {_connection}"); } await completion.ConfigureAwait(false); _log.Debug($"Completed processing running tasks of connection {_connection}"); } private void HandleChannel(ITransportChannel channel) { _log.Debug("Processing new channel {0} from connection {1}", channel.Id, _connection); var task = TaskRunner.RunInBackground(HandleChannelAsync, channel); lock (_handleChannelTasks) { _handleChannelTasks.Add(channel, task); } task.ContinueWithSynchronously((Action)OnTaskCompleted, channel); } private async Task HandleChannelAsync(object state) { ITransportChannel channel = null; try { channel = (ITransportChannel)state; await _clientRequestHandler.HandleChannelAsync(_connection, channel).ConfigureAwait(false); _log.Debug("Channel {0} completed", channel.Id); } catch (Exception ex) { _log.Warn(ex, "Exception on handling channel {0}", channel?.Id); } } private void OnTaskCompleted(Task task, object state) { var channel = (ITransportChannel)state; _log.Debug($"Completed processing of channel {channel.Id} from connection {_connection} in state {task.Status}"); lock (_handleChannelTasks) { _handleChannelTasks.Remove(channel); } } } } ================================================ FILE: desktop/src/Plexus.Interop.Broker.Core/Internal/AuthenticationHandler.cs ================================================ /** * Copyright 2017-2021 Plexus Interop Deutsche Bank AG * SPDX-License-Identifier: Apache-2.0 * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ namespace Plexus.Interop.Broker.Internal { using Plexus.Channels; using Plexus.Interop.Protocol.Connect; using Plexus.Interop.Transport; using System.Threading.Tasks; using Plexus.Interop.Apps; using Plexus.Interop.Protocol; internal sealed class AuthenticationHandler : IAuthenticationHandler { private static readonly ILogger Log = LogManager.GetLogger(); private readonly IAppLifecycleManager _connectionTracker; private readonly IConnectProtocolMessageFactory _messageFactory; private readonly IConnectProtocolSerializer _serializer; private readonly IRegistryService _registryService; private readonly BrokerFeatures _features; public AuthenticationHandler( IAppLifecycleManager connectionTracker, IProtocolImplementation protocol, IRegistryService registryService, BrokerFeatures features) { _messageFactory = protocol.MessageFactory; _serializer = protocol.Serializer; _connectionTracker = connectionTracker; _registryService = registryService; _features = features; } public async Task AuthenticateAsync(ITransportConnection connection) { Log.Trace("Accepting new connection {0}", connection.Id); var channel = await connection.IncomingChannels.ReadAsync().ConfigureAwait(false); var frame = await channel.In.ReadAsync().ConfigureAwait(false); using (var payload = frame.Payload) using (var connectRequest = _serializer.DeserializeConnectRequest(payload)) { if (!_registryService.IsApplicationDefined(connectRequest.ApplicationId)) { throw new BrokerException($"Connection rejected because application id is unknown to broker: {connectRequest.ApplicationId}"); } if (!_connectionTracker.IsAppInstanceRegistered(connectRequest.ApplicationInstanceId)) { Log.Debug("Connection with unknown application instance id: " + $"ApplicationInstanceId={connectRequest.ApplicationInstanceId}, ApplicationId={connectRequest.ApplicationId}"); _connectionTracker.ReportConnectionError(new AppConnectionDescriptor( UniqueId.Empty, connectRequest.ApplicationId, connectRequest.ApplicationInstanceId, connection.TransportType)); if (_features.HasFlag(BrokerFeatures.CheckAppInstanceId)) { throw new BrokerException("Connection rejected because application instance id is unknown to broker: " + $"ApplicationInstanceId={connectRequest.ApplicationInstanceId}, ApplicationId={connectRequest.ApplicationId}"); } } using (var connectResponse = _messageFactory.CreateConnectResponse(connection.Id)) { var serializedResponse = _serializer.Serialize(connectResponse); try { Log.Trace("Sending connect response ({0} bytes): {1}", connectResponse, serializedResponse.Count); await channel.Out.WriteAsync(new TransportMessageFrame(serializedResponse)).ConfigureAwait(false); } catch { serializedResponse.Dispose(); throw; } channel.Out.TryComplete(); await channel.Completion.ConfigureAwait(false); return new AppConnectionDescriptor( connectResponse.ConnectionId, connectRequest.ApplicationId, connectRequest.ApplicationInstanceId, connection.TransportType); } } } } } ================================================ FILE: desktop/src/Plexus.Interop.Broker.Core/Internal/BrokerProcessor.cs ================================================ /** * Copyright 2017-2021 Plexus Interop Deutsche Bank AG * SPDX-License-Identifier: Apache-2.0 * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ namespace Plexus.Interop.Broker.Internal { using System; using System.Collections.Concurrent; using System.Linq; using System.Threading.Tasks; using Plexus.Channels; using Plexus.Interop.Apps; using Plexus.Interop.Protocol; using Plexus.Interop.Transport; using Plexus.Processes; internal sealed class BrokerProcessor : ProcessBase, IBrokerProcessor { private static readonly IProtocolMessageFactory DefaultProtocolMessageFactory = ProtocolMessagePool.Instance; private readonly ConcurrentDictionary _activeConnections = new ConcurrentDictionary(); private readonly IReadableChannel _incomingConnections; private readonly IAppLifecycleManager _appLifecycleManager; private readonly AuthenticationHandler _authenticationHandler; private readonly ClientRequestHandler _clientRequestHandler; public BrokerProcessor( IReadableChannel incomingConnections, IProtocolSerializerFactory serializerFactory, IInteropContext interopContext, BrokerFeatures features) { _incomingConnections = incomingConnections; var registryService = new RegistryService(interopContext.RegistryProvider); var protocol = new ProtocolImplementation(DefaultProtocolMessageFactory, serializerFactory); _appLifecycleManager = interopContext.AppLifecycleManager; _authenticationHandler = new AuthenticationHandler(interopContext.AppLifecycleManager, protocol, registryService, features); _clientRequestHandler = new ClientRequestHandler(interopContext.AppLifecycleManager, protocol, registryService, interopContext.InvocationEventProvider, interopContext.ContextLinkageManager); } protected override ILogger Log { get; } = LogManager.GetLogger(); protected override Task StartCoreAsync() { return Task.FromResult(ProcessAsync()); } private async Task ProcessAsync() { try { while (true) { var transportConnectionResult = await _incomingConnections.TryReadAsync().ConfigureAwait(false); if (transportConnectionResult.HasValue) { var transportConnection = transportConnectionResult.Value; _activeConnections.TryAdd(transportConnection.Id, transportConnection); TaskRunner .RunInBackground(ProcessConnectionAsync, transportConnection) .ContinueWithSynchronously((Action)OnConnectionProcessed, transportConnection) .IgnoreAwait(Log); } else { Log.Trace("Transport connection listening completed"); break; } } } catch (Exception ex) { var activeConnections = _activeConnections.Values.ToArray(); _activeConnections.Clear(); foreach (var activeConnection in activeConnections) { activeConnection.TryTerminate(ex); } throw; } finally { var activeConnections = _activeConnections.Values.ToArray(); _activeConnections.Clear(); if (activeConnections.Length > 0) { Log.Info("Terminating {0} active connections", activeConnections.Length); foreach (var activeConnection in activeConnections) { Log.Trace("Terminating connection {0}", activeConnection); activeConnection.TryTerminate(); } await Task.WhenAll(activeConnections.Select(x => x.Completion.IgnoreExceptions())).ConfigureAwait(false); Log.Info("Terminated {0} active connections", activeConnections.Length); } } } private async Task ProcessConnectionAsync(object state) { var transportConnection = (ITransportConnection) state; Log.Debug("Accepting new incoming connection {0}", transportConnection.Id); var appConnectionDescriptor = await _authenticationHandler.AuthenticateAsync(transportConnection).ConfigureAwait(false); Log.Debug("New connection authenticated: {0}", appConnectionDescriptor); var clientConnection = _appLifecycleManager.AcceptConnection(transportConnection, appConnectionDescriptor); try { Log.Info("New connection accepted: {0}", clientConnection); var clientConnectionProcessor = new AppConnectionProcessor(clientConnection, _clientRequestHandler); await clientConnectionProcessor.ProcessAsync(() => _appLifecycleManager.TryRemoveConnection(clientConnection)).ConfigureAwait(false); } finally { _appLifecycleManager.TryRemoveConnection(clientConnection); } } private void OnConnectionProcessed(Task completion, object state) { var connection = (ITransportConnection)state; if (completion.IsCanceled) { Log.Info("Connection {0} canceled", connection.Id); connection.TryTerminate(); } else if (completion.IsFaulted) { Log.Warn(completion.Exception.ExtractInner(), "Connection {0} failed", connection.Id); connection.TryTerminate(completion.Exception.ExtractInner()); } else { Log.Info("Connection {0} completed", connection.Id); connection.TryComplete(); } _activeConnections.TryRemove(connection.Id, out _); connection.IncomingChannels.ConsumeAsync(_ => { }).IgnoreExceptions().IgnoreAwait(Log); } } } ================================================ FILE: desktop/src/Plexus.Interop.Broker.Core/Internal/BrokerRegistryProvider.cs ================================================ /** * Copyright 2017-2021 Plexus Interop Deutsche Bank AG * SPDX-License-Identifier: Apache-2.0 * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ namespace Plexus.Interop.Broker.Internal { using Plexus.Interop.Metamodel; using Plexus.Interop.Metamodel.Json; using System; using System.Reflection; internal sealed class BrokerRegistryProvider : IRegistryProvider, IDisposable { private readonly IRegistryProvider _baseRegistryProvider; private readonly IRegistry _embeddedRegistry; public BrokerRegistryProvider(IRegistryProvider baseRegistryProvider) { _baseRegistryProvider = baseRegistryProvider; var type = typeof(BrokerRegistryProvider); _embeddedRegistry = JsonRegistry.LoadRegistry(type.GetTypeInfo().Assembly.GetManifestResourceStream(type.Namespace + ".interop.json")); Current = _embeddedRegistry.MergeWith(baseRegistryProvider.Current); _baseRegistryProvider.Updated += OnUpdated; } public IRegistry Current { get; private set; } public event Action Updated = registry => { }; private void OnUpdated(IRegistry registry) { Current = _embeddedRegistry.MergeWith(registry); Updated(Current); } public void Dispose() { _baseRegistryProvider.Updated -= OnUpdated; } } } ================================================ FILE: desktop/src/Plexus.Interop.Broker.Core/Internal/ClientRequestHandler.cs ================================================ /** * Copyright 2017-2021 Plexus Interop Deutsche Bank AG * SPDX-License-Identifier: Apache-2.0 * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ namespace Plexus.Interop.Broker.Internal { using Plexus.Channels; using Plexus.Interop.Protocol; using Plexus.Interop.Protocol.Discovery; using Plexus.Interop.Protocol.Invocation; using Plexus.Interop.Transport; using System; using System.Threading.Tasks; using Plexus.Interop.Apps; internal sealed class ClientRequestHandler : IClientRequestHandler { private static readonly ILogger Log = LogManager.GetLogger(); private readonly IProtocolSerializer _protocolSerializer; private readonly ClientToBrokerRequestHandler _clientToBrokerRequestHandler; private readonly IDiscoveryRequestHandler _discoveryRequestHandler; private readonly IInvocationRequestHandler _invocationRequestHandler; public ClientRequestHandler( IAppLifecycleManager appLifecycleManager, IProtocolImplementation protocol, IRegistryService registryService, IInvocationEventProvider invocationEventProvider, IContextLinkageManager contextLinkageManager) { _protocolSerializer = protocol.Serializer; _discoveryRequestHandler = new DiscoveryRequestHandler(appLifecycleManager, protocol, registryService, contextLinkageManager); _invocationRequestHandler = new InvocationRequestHandler(appLifecycleManager, protocol, registryService, invocationEventProvider, contextLinkageManager); _clientToBrokerRequestHandler = new ClientToBrokerRequestHandler( HandleInvocationAsync, HandleDiscoveryAsync, HandleDiscoveryAsync); } public async Task HandleChannelAsync(IAppConnection connection, ITransportChannel channel) { try { Log.Debug("Starting processing new request {0} from {1}", channel, connection); var frame = await channel.In.ReadAsync().ConfigureAwait(false); var request = _protocolSerializer.DeserializeClientToBrokerRequest(frame.Payload); await request.Handle(_clientToBrokerRequestHandler, (connection, channel)).ConfigureAwait(false); channel.Out.TryComplete(); } catch (Exception ex) { channel.Out.TryTerminate(ex); } finally { await channel.Completion.ConfigureAwait(false); } } private async Task HandleDiscoveryAsync( IServiceDiscoveryRequest request, (IAppConnection SourceConnection, ITransportChannel SourceChannel) args) { var (sourceConnection, sourceChannel) = args; await _discoveryRequestHandler.HandleAsync(request, sourceConnection, sourceChannel).ConfigureAwait(false); } private async Task HandleDiscoveryAsync(IMethodDiscoveryRequest request, (IAppConnection, ITransportChannel) args) { var (sourceConnection, sourceChannel) = args; await _discoveryRequestHandler.HandleAsync(request, sourceConnection, sourceChannel).ConfigureAwait(false); } private async Task HandleInvocationAsync( IInvocationStart request, (IAppConnection SourceConnection, ITransportChannel SourceChannel) args) { var (sourceConnection, sourceChannel) = args; await _invocationRequestHandler.HandleAsync(request, sourceConnection, sourceChannel).ConfigureAwait(false); } } } ================================================ FILE: desktop/src/Plexus.Interop.Broker.Core/Internal/DiscoveryRequestHandler.cs ================================================ /** * Copyright 2017-2021 Plexus Interop Deutsche Bank AG * SPDX-License-Identifier: Apache-2.0 * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ namespace Plexus.Interop.Broker.Internal { using Plexus.Channels; using Plexus.Interop.Apps; using Plexus.Interop.Metamodel; using Plexus.Interop.Protocol; using Plexus.Interop.Protocol.Discovery; using Plexus.Interop.Transport; using System; using System.Collections.Generic; using System.Linq; using System.Threading.Tasks; using MethodType = Plexus.Interop.Protocol.Discovery.MethodType; internal sealed class DiscoveryRequestHandler : IDiscoveryRequestHandler { private static readonly ILogger Log = LogManager.GetLogger(); private readonly IProtocolImplementation _protocol; private readonly IRegistryService _registryService; private readonly IContextLinkageManager _contextLinkageManager; private readonly IAppLifecycleManager _appLifecycleManager; public DiscoveryRequestHandler( IAppLifecycleManager appLifecycleManager, IProtocolImplementation protocol, IRegistryService registryService, IContextLinkageManager contextLinkageManager) { _appLifecycleManager = appLifecycleManager; _protocol = protocol; _registryService = registryService; _contextLinkageManager = contextLinkageManager; } public async Task HandleAsync( IServiceDiscoveryRequest request, IAppConnection sourceConnection, ITransportChannel sourceChannel) { IReadOnlyCollection<(IConsumedMethod Consumed, IProvidedMethod Provided)> methodMatches; if (request.ConsumedService.HasValue) { methodMatches = _registryService.GetMethodMatches( sourceConnection.Info.ApplicationId, request.ConsumedService.Value); } else { methodMatches = _registryService.GetMethodMatches(sourceConnection.Info.ApplicationId); } IEnumerable ConnectionId, Maybe ApplicationInstanceId), IProvidedMethod>> groupedMethods; var online = request.DiscoveryMode == DiscoveryMode.Online; if (_contextLinkageManager.IsContextShouldBeConsidered(request.ContextLinkageOptions, sourceConnection)) { groupedMethods = _contextLinkageManager.GetAppsInContexts(request.ContextLinkageOptions, sourceConnection, online) .Join(methodMatches, x => x.AppId, y => y.Provided.ProvidedService.Service.Id, (x, y) => (y.Consumed, y.Provided, x.AppInstanceId, x.ConnectionId)) .GroupBy(x => (x.Consumed.ConsumedService, x.Provided.ProvidedService, x.ConnectionId, new Maybe(x.AppInstanceId)), x => x.Provided); } else { if (online) { var onlineConnections = _appLifecycleManager.GetOnlineConnections(); groupedMethods = methodMatches .Join(onlineConnections, x => x.Provided.ProvidedService.Application.Id, y => y.Info.ApplicationId, (x, y) => (Match: x, ConnectionId: y.Id, y.Info.ApplicationInstanceId)) .GroupBy( x => ( x.Match.Consumed.ConsumedService, x.Match.Provided.ProvidedService, new Maybe(x.ConnectionId), new Maybe(x.ApplicationInstanceId)), x => x.Match.Provided); } else { var providerApps = methodMatches.Select(x => x.Provided.ProvidedService.Application.Id).Distinct() .ToArray(); var availableProviderApps = FilterAvailableApps(providerApps); groupedMethods = methodMatches .Join( availableProviderApps, x => x.Provided.ProvidedService.Application.Id, y => y, (x, y) => x) .GroupBy( x => ( x.Consumed.ConsumedService, x.Provided.ProvidedService, ConnectionId: Maybe.Nothing, ApplicationInstanceId: Maybe.Nothing), x => x.Provided); } } var discoveredServices = from s in groupedMethods let consumedService = s.Key.ConsumedService let providedService = s.Key.ProvidedService let connectionId = s.Key.ConnectionId let applicationInstanceId = s.Key.ApplicationInstanceId select _protocol.MessageFactory.CreateDiscoveredService( _protocol.MessageFactory.CreateConsumedServiceReference( consumedService.Service.Id, consumedService.Alias), _protocol.MessageFactory.CreateProvidedServiceReference( providedService.Service.Id, providedService.Alias, providedService.Application.Id, connectionId, applicationInstanceId), s.Key.ProvidedService.Title, s.Select(m => _protocol.MessageFactory.CreateDiscoveredServiceMethod( m.Method.Name, m.Title, m.Method.InputMessage.Id, m.Method.OutputMessage.Id, Convert(m.Method.Type), m.Options.Select(o => _protocol.MessageFactory.CreateOption(o.Id, o.Value)).ToList())) .ToList()); using (var response = _protocol.MessageFactory.CreateServiceDiscoveryResponse(discoveredServices.ToList())) { Log.Info("Completed service discovery request {{{0}}} from {{{1}}}: {2}", request, sourceConnection, response); var serializedResponse = _protocol.Serializer.Serialize(response); try { await sourceChannel.Out .WriteAsync(new TransportMessageFrame(serializedResponse)) .ConfigureAwait(false); } catch { serializedResponse.Dispose(); throw; } } } public async Task HandleAsync( IMethodDiscoveryRequest request, IAppConnection sourceConnection, ITransportChannel sourceChannel) { Log.Info("Handling method discovery request {{{0}}} from {{{1}}}", request, sourceConnection); var appId = sourceConnection.Info.ApplicationId; IEnumerable matchingProvidedMethods = request.ConsumedMethod.HasValue ? _registryService.GetMatchingProvidedMethods(appId, request.ConsumedMethod.Value) : _registryService.GetMatchingProvidedMethods(appId); if (request.InputMessageId.HasValue) { matchingProvidedMethods = matchingProvidedMethods .Where(x => string.Equals(x.Method.InputMessage.Id, request.InputMessageId.Value)); } if (request.OutputMessageId.HasValue) { matchingProvidedMethods = matchingProvidedMethods .Where(x => string.Equals(x.Method.OutputMessage.Id, request.OutputMessageId.Value)); } IEnumerable discoveredMethods; bool online = request.DiscoveryMode == DiscoveryMode.Online; if (_contextLinkageManager.IsContextShouldBeConsidered(request.ContextLinkageOptions, sourceConnection)) { discoveredMethods = _contextLinkageManager.GetAppsInContexts(request.ContextLinkageOptions, sourceConnection, online) .Join(matchingProvidedMethods, x => x.AppId, y => y.ProvidedService.Application.Id, (connection, method) => (method, connection)) .Select(pm => Convert(pm.method, pm.connection.ConnectionId, new Maybe(pm.connection.AppInstanceId))); } else { if (online) { var onlineConnections = _appLifecycleManager.GetOnlineConnections(); discoveredMethods = matchingProvidedMethods .Join( onlineConnections, x => x.ProvidedService.Application.Id, y => y.Info.ApplicationId, (method, connection) => (method, connection)) .Select(pm => Convert(pm.method, pm.connection.Id, pm.connection.Info.ApplicationInstanceId)); } else { var providedMethods = matchingProvidedMethods.ToArray(); var providerApps = providedMethods.Select(x => x.ProvidedService.Application.Id).Distinct().ToArray(); var availableProviderApps = FilterAvailableApps(providerApps); discoveredMethods = providedMethods .Join(availableProviderApps, x => x.ProvidedService.Application.Id, y => y, (x, y) => x) .Select(pm => Convert(pm, Maybe.Nothing, Maybe.Nothing)); } } using (var response = _protocol.MessageFactory.CreateMethodDiscoveryResponse(discoveredMethods.ToList())) { Log.Info("Completed method discovery request {{{0}}} from {{{1}}}: {2}", request, sourceConnection, response); var serializedResponse = _protocol.Serializer.Serialize(response); try { await sourceChannel.Out .WriteAsync(new TransportMessageFrame(serializedResponse)) .ConfigureAwait(false); } catch { serializedResponse.Dispose(); throw; } } } private IDiscoveredMethod Convert(IProvidedMethod pm, Maybe connectionId, Maybe appInstanceId) { return _protocol.MessageFactory.CreateDiscoveredMethod( _protocol.MessageFactory.CreateProvidedMethodReference( _protocol.MessageFactory.CreateProvidedServiceReference( pm.ProvidedService.Service.Id, pm.ProvidedService.Alias, pm.ProvidedService.Application.Id, connectionId, appInstanceId), pm.Method.Name), pm.Title, pm.Method.InputMessage.Id, pm.Method.OutputMessage.Id, Convert(pm.Method.Type), pm.Options.Select(x => _protocol.MessageFactory.CreateOption(x.Id, x.Value)).ToList() ); } private static MethodType Convert(Metamodel.MethodType methodType) { switch (methodType) { case Metamodel.MethodType.Unary: return MethodType.Unary; case Metamodel.MethodType.ServerStreaming: return MethodType.ServerStreaming; case Metamodel.MethodType.ClientStreaming: return MethodType.ClientStreaming; case Metamodel.MethodType.DuplexStreaming: return MethodType.DuplexStreaming; default: throw new ArgumentOutOfRangeException(nameof(methodType), methodType, null); } } private IEnumerable FilterAvailableApps(string[] providerApps) { var launchableProviderApps = _appLifecycleManager.FilterCanBeLaunched(providerApps); var onlineApps = _appLifecycleManager.GetOnlineConnections().Select(x => x.Info.ApplicationId).Distinct(); var onlineProviderApps = providerApps.Intersect(onlineApps); var availableProviderApps = launchableProviderApps.Union(onlineProviderApps); return availableProviderApps; } } } ================================================ FILE: desktop/src/Plexus.Interop.Broker.Core/Internal/IAppConnectionProcessor.cs ================================================ /** * Copyright 2017-2021 Plexus Interop Deutsche Bank AG * SPDX-License-Identifier: Apache-2.0 * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ namespace Plexus.Interop.Broker.Internal { using System; using System.Threading.Tasks; internal interface IAppConnectionProcessor { UniqueId Id { get; } Task ProcessAsync(Action connectionCompletedAction); } } ================================================ FILE: desktop/src/Plexus.Interop.Broker.Core/Internal/IAuthenticationHandler.cs ================================================ /** * Copyright 2017-2021 Plexus Interop Deutsche Bank AG * SPDX-License-Identifier: Apache-2.0 * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ namespace Plexus.Interop.Broker.Internal { using System.Threading.Tasks; using Plexus.Interop.Transport; internal interface IAuthenticationHandler { Task AuthenticateAsync(ITransportConnection connection); } } ================================================ FILE: desktop/src/Plexus.Interop.Broker.Core/Internal/IClientRequestHandler.cs ================================================ /** * Copyright 2017-2021 Plexus Interop Deutsche Bank AG * SPDX-License-Identifier: Apache-2.0 * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ namespace Plexus.Interop.Broker.Internal { using Plexus.Interop.Transport; using System.Threading.Tasks; using Plexus.Interop.Apps; internal interface IClientRequestHandler { Task HandleChannelAsync(IAppConnection connection, ITransportChannel channel); } } ================================================ FILE: desktop/src/Plexus.Interop.Broker.Core/Internal/IDiscoveryRequestHandler.cs ================================================ /** * Copyright 2017-2021 Plexus Interop Deutsche Bank AG * SPDX-License-Identifier: Apache-2.0 * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ namespace Plexus.Interop.Broker.Internal { using Plexus.Interop.Protocol.Discovery; using Plexus.Interop.Transport; using System.Threading.Tasks; using Plexus.Interop.Apps; internal interface IDiscoveryRequestHandler { Task HandleAsync( IServiceDiscoveryRequest request, IAppConnection sourceConnection, ITransportChannel sourceChannel); Task HandleAsync( IMethodDiscoveryRequest request, IAppConnection sourceConnection, ITransportChannel sourceChannel); } } ================================================ FILE: desktop/src/Plexus.Interop.Broker.Core/Internal/IInvocationRequestHandler.cs ================================================ /** * Copyright 2017-2021 Plexus Interop Deutsche Bank AG * SPDX-License-Identifier: Apache-2.0 * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ namespace Plexus.Interop.Broker.Internal { using Plexus.Interop.Protocol.Invocation; using Plexus.Interop.Transport; using System.Threading.Tasks; using Plexus.Interop.Apps; internal interface IInvocationRequestHandler { Task HandleAsync(IInvocationStart request, IAppConnection sourceConnection, ITransportChannel sourceChannel); } } ================================================ FILE: desktop/src/Plexus.Interop.Broker.Core/Internal/IRegistryService.cs ================================================ /** * Copyright 2017-2021 Plexus Interop Deutsche Bank AG * SPDX-License-Identifier: Apache-2.0 * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ namespace Plexus.Interop.Broker.Internal { using Plexus.Interop.Metamodel; using Plexus.Interop.Protocol; using System.Collections.Generic; internal interface IRegistryService { IApplication GetApplication(string appId); IConsumedService GetConsumedService(string appId, IConsumedServiceReference reference); IConsumedMethod GetConsumedMethod(string appId, IConsumedMethodReference reference); IProvidedService GetProvidedService(IProvidedServiceReference reference); IProvidedMethod GetProvidedMethod(IProvidedMethodReference reference); IReadOnlyCollection GetMatchingProvidedMethods(IConsumedMethod consumedMethod); IReadOnlyCollection GetMatchingProvidedMethods(string appId, IConsumedMethodReference reference); IReadOnlyCollection GetMatchingProvidedMethods(IApplication application); IReadOnlyCollection GetMatchingProvidedMethods(string appId); bool IsApplicationDefined(string appId); IReadOnlyCollection<(IConsumedMethod Consumed, IProvidedMethod Provided)> GetMethodMatches( string appId, IConsumedServiceReference consumedServiceReference); IReadOnlyCollection<(IConsumedMethod Consumed, IProvidedMethod Provided)> GetMethodMatches(string appId); } } ================================================ FILE: desktop/src/Plexus.Interop.Broker.Core/Internal/InvocationRequestHandler.cs ================================================ /** * Copyright 2017-2021 Plexus Interop Deutsche Bank AG * SPDX-License-Identifier: Apache-2.0 * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ namespace Plexus.Interop.Broker.Internal { using Plexus.Channels; using Plexus.Interop.Apps; using Plexus.Interop.Metamodel; using Plexus.Interop.Protocol; using Plexus.Interop.Protocol.Invocation; using Plexus.Interop.Transport; using System; using System.Collections.Generic; using System.Diagnostics; using System.Linq; using System.Threading; using System.Threading.Tasks; internal sealed class InvocationRequestHandler : IInvocationRequestHandler { private static readonly ILogger Log = LogManager.GetLogger(); private readonly Stopwatch _stopwatch = new Stopwatch(); private readonly IAppLifecycleManager _appLifecycleManager; private readonly IRegistryService _registryService; private readonly IInvocationEventProvider _invocationEventProvider; private readonly IContextLinkageManager _contextLinkageManager; private readonly IProtocolMessageFactory _protocolMessageFactory; private readonly IProtocolSerializer _protocolSerializer; private readonly InvocationTargetHandler _createRequestHandler; private readonly InvocationTargetHandler, IAppConnection, ITransportChannel, IContextLinkageOptions> _resolveTargetConnectionHandler; private readonly object _resolveConnectionSync = new object(); public InvocationRequestHandler( IAppLifecycleManager appLifecycleManager, IProtocolImplementation protocol, IRegistryService registryService, IInvocationEventProvider invocationEventProvider, IContextLinkageManager contextLinkageManager) { _appLifecycleManager = appLifecycleManager; _protocolMessageFactory = protocol.MessageFactory; _protocolSerializer = protocol.Serializer; _registryService = registryService; _invocationEventProvider = invocationEventProvider; _contextLinkageManager = contextLinkageManager; _createRequestHandler = new InvocationTargetHandler(CreateInvocationTarget, CreateInvocationTarget); _resolveTargetConnectionHandler = new InvocationTargetHandler, IAppConnection, ITransportChannel, IContextLinkageOptions>(ResolveTargetConnectionAsync, ResolveTargetConnectionAsync); _stopwatch.Start(); } public async Task HandleAsync(IInvocationStart request, IAppConnection sourceConnection, ITransportChannel sourceChannel) { IAppConnection targetConnection = null; ITransportChannel targetChannel = null; InvocationDescriptor callDescriptor = null; var startMs = _stopwatch.ElapsedMilliseconds; try { Log.Info("Handling invocation {0} from {{{1}}}: {{{2}}}", sourceChannel.Id, sourceConnection, request); targetConnection = await request.Target.Handle(_resolveTargetConnectionHandler, sourceConnection, sourceChannel, request.ContextLinkageOptions).ConfigureAwait(false); Log.Debug($"Resolved target connection {targetConnection} for invocation {sourceChannel.Id} from {{{sourceConnection}}}: {{{request}}}"); targetChannel = await targetConnection.CreateChannelAsync().ConfigureAwait(false); Log.Debug("Created channel {0} for invocation {1} from {{{2}}} to {{{3}}}: {{{4}}}", targetChannel.Id, sourceChannel.Id, sourceConnection, targetConnection, request); using (var invocationStarting = _protocolMessageFactory.CreateInvocationStarting()) { var serialized = _protocolSerializer.Serialize(invocationStarting); try { await sourceChannel.Out.WriteAsync(new TransportMessageFrame(serialized)).ConfigureAwait(false); Log.Debug($"Sent starting event for invocation {sourceChannel.Id}"); } catch { serialized.Dispose(); throw; } } using (var invocationRequested = request.Target.Handle(_createRequestHandler, sourceConnection)) { startMs = _stopwatch.ElapsedMilliseconds; callDescriptor = new InvocationDescriptor( sourceConnection.Info, targetConnection.Info, invocationRequested.ServiceId, invocationRequested.ServiceAlias.GetValueOrDefault(), invocationRequested.MethodId); _invocationEventProvider.OnInvocationStarted(new InvocationStartedEventDescriptor(callDescriptor)); var serialized = _protocolSerializer.Serialize(invocationRequested); try { await targetChannel.Out.WriteAsync(new TransportMessageFrame(serialized)).ConfigureAwait(false); Log.Debug($"Sent requested event for invocation {targetChannel.Id} to {targetConnection} (for invocation {sourceChannel.Id})"); } catch { serialized.Dispose(); throw; } } var fromSourceToTarget = TaskRunner.RunInBackground(() => PropagateAsync(sourceChannel, targetChannel)); var fromTargetToSource = TaskRunner.RunInBackground(() => PropagateAsync(targetChannel, sourceChannel)); await Task.WhenAll(fromSourceToTarget, fromTargetToSource).ConfigureAwait(false); } catch (Exception ex) { sourceChannel.Out.TryTerminate(ex); targetChannel?.Out.TryTerminate(ex); throw; } finally { try { await Task .WhenAll( targetChannel?.In.ConsumeAsync((Action)DisposeFrame).IgnoreExceptions() ?? TaskConstants.Completed, sourceChannel.In.ConsumeAsync((Action)DisposeFrame).IgnoreExceptions(), targetChannel?.Completion ?? TaskConstants.Completed, sourceChannel.Completion) .ConfigureAwait(false); Log.Info("Completed invocation {0} from {{{1}}} to {{{2}}}: {{{3}}}", sourceChannel.Id, sourceConnection, targetConnection, request); OnActionFinished(callDescriptor, InvocationResult.Succeeded, startMs); } catch (OperationCanceledException) { Log.Info("Canceled invocation {0} from {{{1}}} to {{{2}}}: {{{3}}}", sourceChannel.Id, sourceConnection, targetConnection, request); OnActionFinished(callDescriptor, InvocationResult.Canceled, startMs); throw; } catch (Exception ex) { Log.Warn("Failed invocation {0} from {{{1}}} to {{{2}}}: {{{3}}}. Error: {4}", sourceChannel.Id, sourceConnection, targetConnection, request, ex.FormatTypeAndMessage()); OnActionFinished(callDescriptor, InvocationResult.Failed, startMs); throw; } } } private void OnActionFinished(InvocationDescriptor callDescriptor, InvocationResult callResult, long startMs) { if (callDescriptor == null) { return; } _invocationEventProvider.OnInvocationFinished( new InvocationFinishedEventDescriptor( callDescriptor, callResult, _stopwatch.ElapsedMilliseconds - startMs)); } private async ValueTask ResolveTargetConnectionAsync( IProvidedMethodReference methodReference, IAppConnection source, ITransportChannel sourceChannel, IContextLinkageOptions contextLinkageOptions) { if (methodReference.ProvidedService.ConnectionId.HasValue) { var connectionId = methodReference.ProvidedService.ConnectionId.Value; if (!_appLifecycleManager.TryGetOnlineConnection(connectionId, out var connection)) { throw new InvalidOperationException($"The requested connection {connectionId} is not online"); } return connection; } var appId = methodReference.ProvidedService.ApplicationId; if (methodReference.ProvidedService.ApplicationInstanceId.HasValue) { var appInstanceId = methodReference.ProvidedService.ApplicationInstanceId.Value; if (appId.HasValue && _appLifecycleManager.TryGetConnectionInProgress(appInstanceId, appId.Value, out var connectionInProgress)) { return await connectionInProgress; } var connections = _appLifecycleManager.GetAppInstanceConnections(appInstanceId).ToList(); if (connections.Count == 0) { throw new InvalidOperationException($"App instance {appInstanceId} is doesn't have online connections"); } if (appId.HasValue) { var connection = connections.FirstOrDefault(c => c.Info.ApplicationId.Equals(appId.Value)); if (connection == null) { throw new InvalidOperationException($"App instance {appInstanceId} is doesn't have connection with {appId.Value} application id"); } return connection; } if (connections.Count == 1) { return connections.Single(); } throw new InvalidOperationException($"App instance {appInstanceId} has several connections, you need to specify ApplicationId to make call to specific connection"); } if (!appId.HasValue) { throw new InvalidOperationException($"AppId is required to resolve target connection for {methodReference} provided method reference"); } var appIdValue = appId.Value; var method = _registryService.GetProvidedMethod(methodReference); var launchMode = GetLaunchMode(method); Task resolveTask; lock (_resolveConnectionSync) { if (launchMode != LaunchMode.MultiInstance) { var onlineConnections = _appLifecycleManager .GetOnlineConnections() .Where(x => x.Info.ApplicationId.Equals(appIdValue) && !x.Id.Equals(source.Id)).ToArray(); if (_contextLinkageManager.IsContextShouldBeConsidered(contextLinkageOptions, source)) { onlineConnections = _contextLinkageManager .GetAppsInContexts(contextLinkageOptions, source, true) .Join(onlineConnections, x => x.ConnectionId.Value, y => y.Id, (x, y) => y) .ToArray(); } if (onlineConnections.Any()) { return onlineConnections.First(); } } if (launchMode == LaunchMode.None || !_appLifecycleManager.CanBeLaunched(appIdValue)) { throw new InvalidOperationException( $"The requested app {appIdValue} is not online and cannot be launched"); } var resolveMode = ConvertToResolveMode(launchMode); resolveTask = _appLifecycleManager.LaunchAndConnectAsync(appIdValue, resolveMode, source.Info); } var resolvedConnection = await resolveTask.ConfigureAwait(false); return resolvedConnection.AppConnection; } private async ValueTask ResolveTargetConnectionAsync( IConsumedMethodReference method, IAppConnection source, ITransportChannel sourceChannel, IContextLinkageOptions contextLinkageOptions) { Log.Debug("Resolving target connection for call {{{0}}} from {{{1}}} for {2} invocation", method, source, sourceChannel.Id); string appId; ResolveMode resolveMode; var targetMethods = _registryService.GetMatchingProvidedMethods(source.Info.ApplicationId, method); var onlineProvidedMethods = _appLifecycleManager .GetOnlineConnections() .Where(x => !x.Id.Equals(source.Id)) .Join( targetMethods.Where(x => GetLaunchMode(x) != LaunchMode.MultiInstance), x => x.Info.ApplicationId, y => y.ProvidedService.Application.Id, (x, y) => (Method: y, AppConnection: x)) .ToArray(); if (_contextLinkageManager.IsContextShouldBeConsidered(contextLinkageOptions, source)) { onlineProvidedMethods = _contextLinkageManager.GetAppsInContexts(contextLinkageOptions, source, true) .Join(onlineProvidedMethods, x => x.ConnectionId.Value, y => y.AppConnection.Id, (x, y) => y).ToArray(); } if (onlineProvidedMethods.Any()) { var connection = onlineProvidedMethods.First().AppConnection; Log.Debug("Resolved target connection for call {{{0}}} from {{{1}}} to online connection {{{2}}} for {3} invocation", method, source, connection, sourceChannel.Id); return connection; } lock (_resolveConnectionSync) { Log.Debug("Resolving target connection for call {{{0}}} (invocation {2}) from {{{1}}} to offline connection", method, source, sourceChannel.Id); var appIds = _appLifecycleManager.FilterCanBeLaunched( targetMethods.Select(x => x.ProvidedService.Application.Id).Distinct()); targetMethods = targetMethods.Join(appIds, x => x.ProvidedService.Application.Id, y => y, (x, y) => x).ToArray(); var singleInstanceMethods = targetMethods.Where(x => GetLaunchMode(x) == LaunchMode.SingleInstance).ToArray(); var onlineConnections = new HashSet(_appLifecycleManager.GetOnlineConnections().Select(connection => connection.Info.ApplicationId)); var candidate = singleInstanceMethods.FirstOrDefault(x => !x.ProvidedService.Application.Id.Equals(source.Info.ApplicationId) && !onlineConnections.Contains(x.ProvidedService.Application.Id)); resolveMode = ResolveMode.SingleInstance; if (candidate == null) { candidate = singleInstanceMethods.FirstOrDefault(x => !onlineConnections.Contains(x.ProvidedService.Application.Id)); resolveMode = ResolveMode.SingleInstance; } if (candidate == null) { candidate = targetMethods.FirstOrDefault(x => GetLaunchMode(x) == LaunchMode.MultiInstance); resolveMode = ResolveMode.MultiInstance; } if (candidate == null) { candidate = targetMethods.FirstOrDefault(x => GetLaunchMode(x) != LaunchMode.None); resolveMode = ResolveMode.MultiInstance; } if (candidate == null) { throw new InvalidOperationException($"Cannot resolve target for invocation {{{method}}} from {{{source}}} for {sourceChannel.Id} invocation"); } Log.Debug("Resolved target connection for call {{{0}}} from {{{1}}} to provided method {{{2}}} for {3} invocation", method, source, candidate, sourceChannel.Id); appId = candidate.ProvidedService.Application.Id; } var launchAppTask = _appLifecycleManager.LaunchAndConnectAsync(appId, resolveMode, source.Info); var completedTask = await Task.WhenAny(launchAppTask, source.IncomingChannels.Completion).ConfigureAwait(false); if (completedTask == launchAppTask) { var resolvedConnection = await launchAppTask.ConfigureAwait(false); return resolvedConnection.AppConnection; } throw new TaskCanceledException($"Launch of application {appId} canceled because source connection {source.Info} is completed"); } private static ResolveMode ConvertToResolveMode(LaunchMode launchMode) { switch (launchMode) { case LaunchMode.SingleInstance: return ResolveMode.SingleInstance; case LaunchMode.MultiInstance: return ResolveMode.MultiInstance; default: throw new ArgumentOutOfRangeException(nameof(launchMode), launchMode, null); } } private static LaunchMode GetLaunchMode(IProvidedMethod method) { return method.LaunchMode.HasValue ? method.LaunchMode.Value : method.ProvidedService.LaunchMode.HasValue ? method.ProvidedService.LaunchMode.Value : method.ProvidedService.Application.LaunchMode.HasValue ? method.ProvidedService.Application.LaunchMode.Value : LaunchMode.SingleInstance; } private IInvocationStartRequested CreateInvocationTarget(IProvidedMethodReference reference, IAppConnection sourceConnection) { return _protocolMessageFactory.CreateInvocationStartRequested( reference.ProvidedService.ServiceId, reference.MethodId, reference.ProvidedService.ServiceAlias, sourceConnection.Info.ApplicationId, sourceConnection.Info.ApplicationInstanceId, sourceConnection.Id); } private IInvocationStartRequested CreateInvocationTarget(IConsumedMethodReference reference, IAppConnection sourceConnection) { return _protocolMessageFactory.CreateInvocationStartRequested( reference.ConsumedService.ServiceId, reference.MethodId, reference.ConsumedService.ServiceAlias, sourceConnection.Info.ApplicationId, sourceConnection.Info.ApplicationInstanceId, sourceConnection.Id); } private static void DisposeFrame(TransportMessageFrame frame) { frame.Dispose(); } private static async Task PropagateAsync(ITransportChannel source, ITransportChannel target, CancellationToken cancellationToken = default) { int propagatedMessageCount = 0; var targetId = target.Id; var sourceId = source.Id; bool exceptionLogged = false; try { while (true) { Log.Trace($"Waiting for TransportMessageFrame from {sourceId} to propagate to {targetId}"); Maybe result; try { result = await source.In.TryReadAsync(cancellationToken).ConfigureAwait(false); } catch (Exception ex) { Log.Warn(ex, $"Caught exception during attempt to read TransportMessageFrame from source channel {sourceId} to propagate it to {targetId} channel. Total {propagatedMessageCount} messages propagated"); exceptionLogged = true; throw; } if (!result.HasValue) { Log.Trace($"Received empty TransportMessageFrame from {sourceId}. Will complete {targetId} channel"); break; } var messageFrame = result.Value; Log.Trace($"Received TransportMessageFrame {messageFrame} from {sourceId}. Will try to propagate it to {targetId} channel"); try { await target.Out.WriteAsync(messageFrame, cancellationToken).ConfigureAwait(false); } catch (Exception ex) { Log.Warn(ex, $"Caught exception during attempt to write TransportMessageFrame to target channel {targetId} to propagate it from {sourceId} channel. Total {propagatedMessageCount} messages propagated"); exceptionLogged = true; throw; } propagatedMessageCount++; Log.Trace($"TransportMessageFrame {messageFrame} successfully propagated to {targetId} (received from {sourceId})"); } target.Out.TryComplete(); Log.Trace($"Successfully completed TransportMessageFrame propagation from {sourceId} to {targetId}. Total {propagatedMessageCount} messages propagated"); } catch (Exception ex) { if (!exceptionLogged) { Log.Warn(ex, $"Caught exception during attempt to propagate TransportMessageFrame from {sourceId} to {targetId}. Total {propagatedMessageCount} messages propagated"); } target.Out.TryTerminate(ex); } } } } ================================================ FILE: desktop/src/Plexus.Interop.Broker.Core/Internal/RegistryService.cs ================================================ /** * Copyright 2017-2021 Plexus Interop Deutsche Bank AG * SPDX-License-Identifier: Apache-2.0 * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ namespace Plexus.Interop.Broker.Internal { using Plexus.Interop.Metamodel; using Plexus.Interop.Protocol; using System; using System.Collections.Concurrent; using System.Collections.Generic; using System.Linq; using System.Threading; using Plexus.Interop.Transport.Protocol; internal sealed class RegistryService : IRegistryService, IDisposable { private static readonly ILogger Log = LogManager.GetLogger(); private readonly ReaderWriterLockSlim _registryLock = new ReaderWriterLockSlim(LockRecursionPolicy.SupportsRecursion); private readonly ConcurrentDictionary> _matchingProvidedMethodsCache = new ConcurrentDictionary>(); private readonly ConcurrentDictionary> _matchingConsumedMethodsCache = new ConcurrentDictionary>(); private IRegistry _registry; private readonly BrokerRegistryProvider _registryProvider; public RegistryService(IRegistryProvider registryProvider) { _registryProvider = new BrokerRegistryProvider(registryProvider); _registryProvider.Updated += OnUpdated; if (_registry == null) { OnUpdated(_registryProvider.Current); } } private void OnUpdated(IRegistry registry) { _registryLock.EnterWriteLock(); try { Log.Info("Metadata changed. Reloading."); _registry = registry; _matchingProvidedMethodsCache.Clear(); } finally { _registryLock.ExitWriteLock(); } } internal IRegistry Registry => _registryProvider.Current; public IApplication GetApplication(string appId) { _registryLock.EnterReadLock(); try { if (_registry.Applications.TryGetValue(appId, out var application)) { return application; } throw new MetadataViolationException($"Application {appId} do not exist in metadata. Available applications: {string.Join(", ", _registry.Applications.Keys)}"); } finally { _registryLock.ExitReadLock(); } } public IConsumedService GetConsumedService(string appId, IConsumedServiceReference reference) { _registryLock.EnterReadLock(); try { var application = GetApplication(appId); var consumedService = application.ConsumedServices .FirstOrDefault(service => Equals(service.Service.Id, reference.ServiceId) && Equals(service.Alias, reference.ServiceAlias)); if (consumedService != null) { return consumedService; } throw new MetadataViolationException($"Service {reference.ServiceId} with alias {reference.ServiceAlias} do not exist or is not consumed by {appId} application. Available services: {string.Join(", ", application.ConsumedServices.Select(service => service.Service.Id))}"); } finally { _registryLock.ExitReadLock(); } } public IConsumedMethod GetConsumedMethod(string appId, IConsumedMethodReference reference) { _registryLock.EnterReadLock(); try { var methodId = reference.MethodId; var service = GetConsumedService(appId, reference.ConsumedService); if (service.Methods.TryGetValue(methodId, out var consumedMethod)) { return consumedMethod; } throw new MetadataViolationException($"Method {methodId} do not exist in service {service.Service.Id} or is not consumed by {appId} application. Available methods: {string.Join(", ", service.Methods.Keys)}"); } finally { _registryLock.ExitReadLock(); } } public IProvidedService GetProvidedService(IProvidedServiceReference reference) { _registryLock.EnterReadLock(); if (!reference.ApplicationId.HasValue) { throw new InvalidOperationException($"Can't find provided services of unspecified application id ({reference})"); } try { return _registry.Applications[reference.ApplicationId.Value].ProvidedServices .FirstOrDefault(x => Equals(x.Alias, reference.ServiceAlias) && Equals(x.Service.Id, reference.ServiceId)); } finally { _registryLock.ExitReadLock(); } } public IProvidedMethod GetProvidedMethod(IProvidedMethodReference reference) { _registryLock.EnterReadLock(); try { return GetProvidedService(reference.ProvidedService).Methods[reference.MethodId]; } finally { _registryLock.ExitReadLock(); } } public IReadOnlyCollection GetMatchingProvidedMethods(IConsumedMethod consumedMethod) { _registryLock.EnterReadLock(); try { return GetMethodMatchesByConsumedService(consumedMethod.ConsumedService) .Where(x => Equals(x.Method, consumedMethod.Method)) .ToList(); } finally { _registryLock.ExitReadLock(); } } public IReadOnlyCollection GetMatchingProvidedMethods(string appId, IConsumedMethodReference reference) { _registryLock.EnterReadLock(); try { return GetMatchingProvidedMethods(GetConsumedMethod(appId, reference)); } finally { _registryLock.ExitReadLock(); } } public IReadOnlyCollection GetMatchingProvidedMethods(IApplication application) { IReadOnlyCollection GetMatchingProvidedMethodsInternal(IApplication a) { Log.Debug("Retrieving the methods visible for {0}", application.Id); var all = _registry.Applications.Values.SelectMany(x => x.ProvidedServices); var matched = application.ConsumedServices .Join(all, x => x.Service, y => y.Service, (consumed, provided) => (consumed, provided)) .Where(x => x.provided.To.IsMatch(x.consumed.Application.Id) && x.consumed.From.IsMatch(x.provided.Application.Id)) .SelectMany(x => x.consumed.Methods.Values .Join(x.provided.Methods.Values, c => c.Method, p => p.Method, (c, p) => p)) .Distinct() .ToList(); Log.Debug("Retrieved {0} methods visible for {1}", matched.Count, application.Id); return matched; } _registryLock.EnterReadLock(); try { return _matchingProvidedMethodsCache.GetOrAdd(application, GetMatchingProvidedMethodsInternal); } finally { _registryLock.ExitReadLock(); } } public IReadOnlyCollection GetMatchingProvidedMethods(string appId) { _registryLock.EnterReadLock(); try { return GetMatchingProvidedMethods(GetApplication(appId)); } finally { _registryLock.ExitReadLock(); } } public bool IsApplicationDefined(string appId) { return _registry.Applications.ContainsKey(appId); } public IReadOnlyCollection GetMatchingConsumedMethods(IApplication application) { IReadOnlyCollection GetMatchingConsumedMethodsInternal(IApplication a) { var all = _registry.Applications.Values.SelectMany(x => x.ConsumedServices); var matched = a.ProvidedServices .Join(all, x => x.Service, y => y.Service, (provided, consumed) => (provided, consumed)) .Where(x => x.consumed.From.IsMatch(x.provided.Application.Id) && x.provided.To.IsMatch(x.consumed.Application.Id)) .SelectMany(x => x.consumed.Methods.Values .Join(x.provided.Methods.Values, c => c.Method, p => p.Method, (c, p) => c)) .Distinct(); return matched.ToList(); } _registryLock.EnterReadLock(); try { return _matchingConsumedMethodsCache.GetOrAdd(application, GetMatchingConsumedMethodsInternal); } finally { _registryLock.ExitReadLock(); } } public IReadOnlyCollection<(IConsumedMethod Consumed, IProvidedMethod Provided)> GetMethodMatches(string appId, IConsumedServiceReference consumedServiceReference) { _registryLock.EnterReadLock(); try { var consumedService = GetConsumedService(appId, consumedServiceReference); return GetMethodMatchesByConsumedService(consumedService) .Join(consumedService.Methods.Values, x => x.Method, y => y.Method, (x, y) => (y, x)) .Distinct() .ToList(); } finally { _registryLock.ExitReadLock(); } } private IEnumerable GetMethodMatchesByConsumedService(IConsumedService consumedService) => GetMatchingProvidedMethods(consumedService.Application) .Where(providedMethod => consumedService.From.IsMatch(providedMethod.ProvidedService.Application.Id)); public IReadOnlyCollection<(IConsumedMethod Consumed, IProvidedMethod Provided)> GetMethodMatches(string appId) { _registryLock.EnterReadLock(); try { var app = GetApplication(appId); var consumedMethods = app.ConsumedServices.SelectMany(x => x.Methods.Values); return GetMatchingProvidedMethods(appId) .Join(consumedMethods, x => x.Method, y => y.Method, (x, y) => (y, x)) .Distinct() .ToList(); } finally { _registryLock.ExitReadLock(); } } public void Dispose() { _registryProvider.Updated -= OnUpdated; _registryProvider.Dispose(); } } } ================================================ FILE: desktop/src/Plexus.Interop.Broker.Core/Internal/interop.json ================================================ { "messages": { "nested": { "google": { "nested": { "protobuf": { "options": { "go_package": "github.com/golang/protobuf/ptypes/empty", "java_package": "com.google.protobuf", "java_outer_classname": "EmptyProto", "csharp_namespace": "Google.Protobuf.WellKnownTypes", "objc_class_prefix": "GPB", "optimize_for": "SPEED", "java_multiple_files": true, "cc_enable_arenas": true }, "nested": { "FileDescriptorSet": { "fields": { "file": { "rule": "repeated", "type": "FileDescriptorProto", "id": 1 } } }, "FileDescriptorProto": { "fields": { "name": { "type": "string", "id": 1 }, "package": { "type": "string", "id": 2 }, "dependency": { "rule": "repeated", "type": "string", "id": 3 }, "publicDependency": { "rule": "repeated", "type": "int32", "id": 10, "options": { "packed": false } }, "weakDependency": { "rule": "repeated", "type": "int32", "id": 11, "options": { "packed": false } }, "messageType": { "rule": "repeated", "type": "DescriptorProto", "id": 4 }, "enumType": { "rule": "repeated", "type": "EnumDescriptorProto", "id": 5 }, "service": { "rule": "repeated", "type": "ServiceDescriptorProto", "id": 6 }, "extension": { "rule": "repeated", "type": "FieldDescriptorProto", "id": 7 }, "options": { "type": "FileOptions", "id": 8 }, "sourceCodeInfo": { "type": "SourceCodeInfo", "id": 9 }, "syntax": { "type": "string", "id": 12 } } }, "DescriptorProto": { "fields": { "name": { "type": "string", "id": 1 }, "field": { "rule": "repeated", "type": "FieldDescriptorProto", "id": 2 }, "extension": { "rule": "repeated", "type": "FieldDescriptorProto", "id": 6 }, "nestedType": { "rule": "repeated", "type": "DescriptorProto", "id": 3 }, "enumType": { "rule": "repeated", "type": "EnumDescriptorProto", "id": 4 }, "extensionRange": { "rule": "repeated", "type": "ExtensionRange", "id": 5 }, "oneofDecl": { "rule": "repeated", "type": "OneofDescriptorProto", "id": 8 }, "options": { "type": "MessageOptions", "id": 7 }, "reservedRange": { "rule": "repeated", "type": "ReservedRange", "id": 9 }, "reservedName": { "rule": "repeated", "type": "string", "id": 10 } }, "nested": { "ExtensionRange": { "fields": { "start": { "type": "int32", "id": 1 }, "end": { "type": "int32", "id": 2 }, "options": { "type": "ExtensionRangeOptions", "id": 3 } } }, "ReservedRange": { "fields": { "start": { "type": "int32", "id": 1 }, "end": { "type": "int32", "id": 2 } } } } }, "ExtensionRangeOptions": { "fields": { "uninterpretedOption": { "rule": "repeated", "type": "UninterpretedOption", "id": 999 } }, "extensions": [ [ 1000, 536870911 ] ] }, "FieldDescriptorProto": { "fields": { "name": { "type": "string", "id": 1 }, "number": { "type": "int32", "id": 3 }, "label": { "type": "Label", "id": 4 }, "type": { "type": "Type", "id": 5 }, "typeName": { "type": "string", "id": 6 }, "extendee": { "type": "string", "id": 2 }, "defaultValue": { "type": "string", "id": 7 }, "oneofIndex": { "type": "int32", "id": 9 }, "jsonName": { "type": "string", "id": 10 }, "options": { "type": "FieldOptions", "id": 8 } }, "nested": { "Type": { "values": { "TYPE_DOUBLE": 1, "TYPE_FLOAT": 2, "TYPE_INT64": 3, "TYPE_UINT64": 4, "TYPE_INT32": 5, "TYPE_FIXED64": 6, "TYPE_FIXED32": 7, "TYPE_BOOL": 8, "TYPE_STRING": 9, "TYPE_GROUP": 10, "TYPE_MESSAGE": 11, "TYPE_BYTES": 12, "TYPE_UINT32": 13, "TYPE_ENUM": 14, "TYPE_SFIXED32": 15, "TYPE_SFIXED64": 16, "TYPE_SINT32": 17, "TYPE_SINT64": 18 } }, "Label": { "values": { "LABEL_OPTIONAL": 1, "LABEL_REQUIRED": 2, "LABEL_REPEATED": 3 } } } }, "OneofDescriptorProto": { "fields": { "name": { "type": "string", "id": 1 }, "options": { "type": "OneofOptions", "id": 2 } } }, "EnumDescriptorProto": { "fields": { "name": { "type": "string", "id": 1 }, "value": { "rule": "repeated", "type": "EnumValueDescriptorProto", "id": 2 }, "options": { "type": "EnumOptions", "id": 3 } } }, "EnumValueDescriptorProto": { "fields": { "name": { "type": "string", "id": 1 }, "number": { "type": "int32", "id": 2 }, "options": { "type": "EnumValueOptions", "id": 3 } } }, "ServiceDescriptorProto": { "fields": { "name": { "type": "string", "id": 1 }, "method": { "rule": "repeated", "type": "MethodDescriptorProto", "id": 2 }, "options": { "type": "ServiceOptions", "id": 3 } } }, "MethodDescriptorProto": { "fields": { "name": { "type": "string", "id": 1 }, "inputType": { "type": "string", "id": 2 }, "outputType": { "type": "string", "id": 3 }, "options": { "type": "MethodOptions", "id": 4 }, "clientStreaming": { "type": "bool", "id": 5, "options": { "default": false } }, "serverStreaming": { "type": "bool", "id": 6, "options": { "default": false } } } }, "FileOptions": { "fields": { "javaPackage": { "type": "string", "id": 1 }, "javaOuterClassname": { "type": "string", "id": 8 }, "javaMultipleFiles": { "type": "bool", "id": 10, "options": { "default": false } }, "javaGenerateEqualsAndHash": { "type": "bool", "id": 20, "options": { "deprecated": true } }, "javaStringCheckUtf8": { "type": "bool", "id": 27, "options": { "default": false } }, "optimizeFor": { "type": "OptimizeMode", "id": 9, "options": { "default": "SPEED" } }, "goPackage": { "type": "string", "id": 11 }, "ccGenericServices": { "type": "bool", "id": 16, "options": { "default": false } }, "javaGenericServices": { "type": "bool", "id": 17, "options": { "default": false } }, "pyGenericServices": { "type": "bool", "id": 18, "options": { "default": false } }, "phpGenericServices": { "type": "bool", "id": 19, "options": { "default": false } }, "deprecated": { "type": "bool", "id": 23, "options": { "default": false } }, "ccEnableArenas": { "type": "bool", "id": 31, "options": { "default": false } }, "objcClassPrefix": { "type": "string", "id": 36 }, "csharpNamespace": { "type": "string", "id": 37 }, "swiftPrefix": { "type": "string", "id": 39 }, "phpClassPrefix": { "type": "string", "id": 40 }, "phpNamespace": { "type": "string", "id": 41 }, "uninterpretedOption": { "rule": "repeated", "type": "UninterpretedOption", "id": 999 } }, "extensions": [ [ 1000, 536870911 ] ], "reserved": [ [ 38, 38 ] ], "nested": { "OptimizeMode": { "values": { "SPEED": 1, "CODE_SIZE": 2, "LITE_RUNTIME": 3 } } } }, "MessageOptions": { "fields": { "messageSetWireFormat": { "type": "bool", "id": 1, "options": { "default": false } }, "noStandardDescriptorAccessor": { "type": "bool", "id": 2, "options": { "default": false } }, "deprecated": { "type": "bool", "id": 3, "options": { "default": false } }, "mapEntry": { "type": "bool", "id": 7 }, "uninterpretedOption": { "rule": "repeated", "type": "UninterpretedOption", "id": 999 } }, "extensions": [ [ 1000, 536870911 ] ], "reserved": [ [ 8, 8 ], [ 9, 9 ] ] }, "FieldOptions": { "fields": { "ctype": { "type": "CType", "id": 1, "options": { "default": "STRING" } }, "packed": { "type": "bool", "id": 2 }, "jstype": { "type": "JSType", "id": 6, "options": { "default": "JS_NORMAL" } }, "lazy": { "type": "bool", "id": 5, "options": { "default": false } }, "deprecated": { "type": "bool", "id": 3, "options": { "default": false } }, "weak": { "type": "bool", "id": 10, "options": { "default": false } }, "uninterpretedOption": { "rule": "repeated", "type": "UninterpretedOption", "id": 999 } }, "extensions": [ [ 1000, 536870911 ] ], "reserved": [ [ 4, 4 ] ], "nested": { "CType": { "values": { "STRING": 0, "CORD": 1, "STRING_PIECE": 2 } }, "JSType": { "values": { "JS_NORMAL": 0, "JS_STRING": 1, "JS_NUMBER": 2 } } } }, "OneofOptions": { "fields": { "uninterpretedOption": { "rule": "repeated", "type": "UninterpretedOption", "id": 999 } }, "extensions": [ [ 1000, 536870911 ] ] }, "EnumOptions": { "fields": { "allowAlias": { "type": "bool", "id": 2 }, "deprecated": { "type": "bool", "id": 3, "options": { "default": false } }, "uninterpretedOption": { "rule": "repeated", "type": "UninterpretedOption", "id": 999 } }, "extensions": [ [ 1000, 536870911 ] ], "reserved": [ [ 5, 5 ] ] }, "EnumValueOptions": { "fields": { "deprecated": { "type": "bool", "id": 1, "options": { "default": false } }, "uninterpretedOption": { "rule": "repeated", "type": "UninterpretedOption", "id": 999 } }, "extensions": [ [ 1000, 536870911 ] ] }, "ServiceOptions": { "fields": { "deprecated": { "type": "bool", "id": 33, "options": { "default": false } }, "uninterpretedOption": { "rule": "repeated", "type": "UninterpretedOption", "id": 999 } }, "extensions": [ [ 1000, 536870911 ] ] }, "MethodOptions": { "fields": { "deprecated": { "type": "bool", "id": 33, "options": { "default": false } }, "idempotencyLevel": { "type": "IdempotencyLevel", "id": 34, "options": { "default": "IDEMPOTENCY_UNKNOWN" } }, "uninterpretedOption": { "rule": "repeated", "type": "UninterpretedOption", "id": 999 } }, "extensions": [ [ 1000, 536870911 ] ], "nested": { "IdempotencyLevel": { "values": { "IDEMPOTENCY_UNKNOWN": 0, "NO_SIDE_EFFECTS": 1, "IDEMPOTENT": 2 } } } }, "UninterpretedOption": { "fields": { "name": { "rule": "repeated", "type": "NamePart", "id": 2 }, "identifierValue": { "type": "string", "id": 3 }, "positiveIntValue": { "type": "uint64", "id": 4 }, "negativeIntValue": { "type": "int64", "id": 5 }, "doubleValue": { "type": "double", "id": 6 }, "stringValue": { "type": "bytes", "id": 7 }, "aggregateValue": { "type": "string", "id": 8 } }, "nested": { "NamePart": { "fields": { "namePart": { "rule": "required", "type": "string", "id": 1 }, "isExtension": { "rule": "required", "type": "bool", "id": 2 } } } } }, "SourceCodeInfo": { "fields": { "location": { "rule": "repeated", "type": "Location", "id": 1 } }, "nested": { "Location": { "fields": { "path": { "rule": "repeated", "type": "int32", "id": 1 }, "span": { "rule": "repeated", "type": "int32", "id": 2 }, "leadingComments": { "type": "string", "id": 3 }, "trailingComments": { "type": "string", "id": 4 }, "leadingDetachedComments": { "rule": "repeated", "type": "string", "id": 6 } } } } }, "GeneratedCodeInfo": { "fields": { "annotation": { "rule": "repeated", "type": "Annotation", "id": 1 } }, "nested": { "Annotation": { "fields": { "path": { "rule": "repeated", "type": "int32", "id": 1 }, "sourceFile": { "type": "string", "id": 2 }, "begin": { "type": "int32", "id": 3 }, "end": { "type": "int32", "id": 4 } } } } }, "Empty": { "fields": {} } } } } }, "interop": { "options": { "csharp_namespace": "plexus" }, "nested": { "AppConnectionDescriptor": { "options": { "(.interop.message_id)": "interop.AppConnectionDescriptor" }, "fields": { "connectionId": { "type": "UniqueId", "id": 1 }, "appId": { "type": "string", "id": 2 }, "appInstanceId": { "type": "UniqueId", "id": 3 }, "transportType": { "type": "TransportType", "id": 4 } } }, "TransportType": { "values": { "Unknown": 0, "Pipe": 1, "Ws": 2, "Wss": 3 } }, "AppLaunchMode": { "values": { "SINGLE_INSTANCE": 0, "MULTI_INSTANCE": 1 } }, "AppLauncherService": { "options": { "(.interop.service_id)": "interop.AppLauncherService" }, "methods": { "Launch": { "requestType": "AppLaunchRequest", "responseType": "AppLaunchResponse" }, "AppLaunchedEventStream": { "requestType": ".google.protobuf.Empty", "responseType": "AppLaunchedEvent", "responseStream": true } } }, "AppLaunchRequest": { "options": { "(.interop.message_id)": "interop.AppLaunchRequest" }, "fields": { "appId": { "type": "string", "id": 1 }, "launchParamsJson": { "type": "string", "id": 2 }, "launchMode": { "type": "AppLaunchMode", "id": 3 }, "suggestedAppInstanceId": { "type": "UniqueId", "id": 4 }, "referrer": { "type": "AppLaunchReferrer", "id": 5 } } }, "AppLaunchReferrer": { "options": { "(.interop.message_id)": "interop.AppLaunchReferrer" }, "fields": { "appId": { "type": "string", "id": 1 }, "appInstanceId": { "type": "UniqueId", "id": 2 }, "connectionId": { "type": "UniqueId", "id": 3 } } }, "AppLaunchResponse": { "options": { "(.interop.message_id)": "interop.AppLaunchResponse" }, "fields": { "appInstanceId": { "type": "UniqueId", "id": 1 } } }, "AppLaunchedEvent": { "options": { "(.interop.message_id)": "interop.AppLaunchedEvent" }, "fields": { "appInstanceId": { "type": "UniqueId", "id": 1 }, "appIds": { "rule": "repeated", "type": "string", "id": 2 }, "referrer": { "type": "AppLaunchReferrer", "id": 3 } } }, "AppLifecycleService": { "options": { "(.interop.service_id)": "interop.AppLifecycleService" }, "methods": { "ResolveApp": { "requestType": "ResolveAppRequest", "responseType": "ResolveAppResponse" }, "GetLifecycleEventStream": { "requestType": "google.protobuf.Empty", "responseType": "AppLifecycleEvent", "responseStream": true }, "GetInvocationEventStream": { "requestType": "google.protobuf.Empty", "responseType": "InvocationEvent", "responseStream": true }, "GetConnections": { "requestType": "GetConnectionsRequest", "responseType": "GetConnectionsResponse" }, "GetConnectionsStream": { "requestType": "GetConnectionsRequest", "responseType": "GetConnectionsEvent", "responseStream": true } } }, "ResolveAppRequest": { "options": { "(.interop.message_id)": "interop.ResolveAppRequest" }, "fields": { "appId": { "type": "string", "id": 1 }, "appResolveMode": { "type": "AppLaunchMode", "id": 2 } } }, "ResolveAppResponse": { "options": { "(.interop.message_id)": "interop.ResolveAppResponse" }, "fields": { "appInstanceId": { "type": "UniqueId", "id": 1 }, "appConnectionId": { "type": "UniqueId", "id": 2 }, "isNewInstanceLaunched": { "type": "bool", "id": 3 } } }, "AppLifecycleEvent": { "options": { "(.interop.message_id)": "interop.AppLifecycleEvent" }, "oneofs": { "event": { "oneof": [ "connected", "disconnected", "error" ] } }, "fields": { "connected": { "type": "AppConnectedEvent", "id": 1 }, "disconnected": { "type": "AppDisconnectedEvent", "id": 2 }, "error": { "type": "AppConnectionErrorEvent", "id": 3 } } }, "InvocationEvent": { "options": { "(.interop.message_id)": "interop.InvocationEvent" }, "oneofs": { "event": { "oneof": [ "invocationStarted", "invocationFinished" ] } }, "fields": { "invocationStarted": { "type": "InvocationStartedEvent", "id": 1 }, "invocationFinished": { "type": "InvocationFinishedEvent", "id": 2 } } }, "AppConnectedEvent": { "options": { "(.interop.message_id)": "interop.AppConnectedEvent" }, "fields": { "connectionDescriptor": { "type": "AppConnectionDescriptor", "id": 1 } } }, "AppDisconnectedEvent": { "options": { "(.interop.message_id)": "interop.AppDisconnectedEvent" }, "fields": { "connectionDescriptor": { "type": "AppConnectionDescriptor", "id": 1 } } }, "AppConnectionErrorEvent": { "options": { "(.interop.message_id)": "interop.AppConnectionErrorEvent" }, "fields": { "connectionDescriptor": { "type": "AppConnectionDescriptor", "id": 1 } } }, "InvocationStartedEvent": { "options": { "(.interop.message_id)": "interop.InvocationStartedEvent" }, "fields": { "invocationDescriptor": { "type": "InvocationDescriptor", "id": 1 } } }, "InvocationFinishedEvent": { "options": { "(.interop.message_id)": "interop.InvocationFinishedEvent" }, "fields": { "invocationDescriptor": { "type": "InvocationDescriptor", "id": 1 }, "result": { "type": "InvocationResult", "id": 2 }, "durationMs": { "type": "int64", "id": 3 } } }, "InvocationResult": { "values": { "Succeeded": 0, "Canceled": 1, "Failed": 2 } }, "GetConnectionsRequest": { "options": { "(.interop.message_id)": "interop.GetConnectionsRequest" }, "fields": { "applicationId": { "type": "string", "id": 1 }, "appInstanceId": { "type": "UniqueId", "id": 2 }, "connectionId": { "type": "UniqueId", "id": 3 } } }, "GetConnectionsResponse": { "options": { "(.interop.message_id)": "interop.GetConnectionsResponse" }, "fields": { "connections": { "rule": "repeated", "type": "AppConnectionDescriptor", "id": 1 } } }, "GetConnectionsEvent": { "options": { "(.interop.message_id)": "interop.GetConnectionsEvent" }, "oneofs": { "event": { "oneof": [ "newConnection", "closedConnection" ] } }, "fields": { "connections": { "rule": "repeated", "type": "AppConnectionDescriptor", "id": 1 }, "newConnection": { "type": "AppConnectionDescriptor", "id": 2 }, "closedConnection": { "type": "AppConnectionDescriptor", "id": 3 } } }, "AppMetadataService": { "options": { "(.interop.service_id)": "interop.AppMetadataService" }, "methods": { "GetAppMetadataChangedEventStream": { "requestType": "google.protobuf.Empty", "responseType": "AppMetadataChangedEvent", "responseStream": true }, "GetMetamodelChangedEventStream": { "requestType": "google.protobuf.Empty", "responseType": "MetamodelChangedEvent", "responseStream": true } } }, "AppMetadataChangedEvent": { "options": { "(.interop.message_id)": "interop.AppMetadataChangedEvent" }, "fields": { "apps": { "rule": "repeated", "type": "AppMetadataInfo", "id": 1 } } }, "AppMetadataInfo": { "options": { "(.interop.message_id)": "interop.AppMetadataInfo" }, "fields": { "id": { "type": "string", "id": 1 }, "displayName": { "type": "string", "id": 2 }, "launcherId": { "type": "string", "id": 3 }, "launcherParams": { "rule": "repeated", "type": "OptionParameter", "id": 4 } } }, "MetamodelChangedEvent": { "options": { "(.interop.message_id)": "interop.MetamodelChangedEvent" }, "fields": { "applications": { "rule": "repeated", "type": ".interop.AppMetamodelInfo", "id": 1 }, "services": { "rule": "repeated", "type": "Service", "id": 2 } } }, "AppMetamodelInfo": { "options": { "(.interop.message_id)": "interop.AppMetamodelInfo" }, "fields": { "id": { "type": "string", "id": 1 }, "consumedServices": { "rule": "repeated", "type": "ConsumedService", "id": 2 }, "providedServices": { "rule": "repeated", "type": "ProvidedService", "id": 3 } } }, "ProvidedService": { "options": { "(.interop.message_id)": "interop.ProvidedService" }, "fields": { "serviceId": { "type": "string", "id": 1 }, "alias": { "type": "string", "id": 2 }, "methods": { "rule": "repeated", "type": "ProvidedMethod", "id": 3 } } }, "ConsumedService": { "options": { "(.interop.message_id)": "interop.ConsumedService" }, "fields": { "serviceId": { "type": "string", "id": 1 }, "alias": { "type": "string", "id": 2 }, "methods": { "rule": "repeated", "type": "ConsumedMethod", "id": 3 } } }, "ConsumedMethod": { "options": { "(.interop.message_id)": "interop.ConsumedMethod" }, "fields": { "name": { "type": "string", "id": 1 } } }, "ProvidedMethod": { "options": { "(.interop.message_id)": "interop.ProvidedMethod" }, "fields": { "name": { "type": "string", "id": 1 }, "title": { "type": "string", "id": 2 }, "launchMode": { "type": "MetamodelLaunchMode", "id": 3 }, "timeoutMs": { "type": "int32", "id": 4 }, "options": { "rule": "repeated", "type": "OptionParameter", "id": 5 } }, "nested": { "MetamodelLaunchMode": { "values": { "None": 0, "SingleInstance": 1, "MultiInstance": 2 } } } }, "Service": { "options": { "(.interop.message_id)": "interop.Service" }, "fields": { "id": { "type": "string", "id": 1 }, "methods": { "rule": "repeated", "type": "MethodInfo", "id": 2 }, "options": { "rule": "repeated", "type": "OptionParameter", "id": 3 } } }, "MethodInfo": { "options": { "(.interop.message_id)": "interop.MethodInfo" }, "fields": { "name": { "type": "string", "id": 1 }, "requestMessageId": { "type": "string", "id": 3 }, "responseMessageId": { "type": "string", "id": 4 }, "type": { "type": "MethodType", "id": 5 } }, "nested": { "MethodType": { "values": { "Unary": 0, "ServerStreaming": 1, "ClientStreaming": 2, "DuplexStreaming": 3 } } } }, "OptionParameter": { "options": { "(.interop.message_id)": "interop.OptionParameter" }, "fields": { "key": { "type": "string", "id": 1 }, "value": { "type": "string", "id": 2 } } }, "AppRegistrationService": { "options": { "(.interop.service_id)": "interop.AppRegistrationService" }, "methods": { "RequestInstanceId": { "requestType": "RequestInstanceIdRequest", "responseType": "UniqueId" }, "RegisterInstanceId": { "requestType": "RegisterInstanceIdRequest", "responseType": "RegisterInstanceIdResponse" } } }, "RequestInstanceIdRequest": { "options": { "(.interop.message_id)": "interop.RequestInstanceIdRequest" }, "fields": {} }, "RegisterInstanceIdRequest": { "options": { "(.interop.message_id)": "interop.RegisterInstanceIdRequest" }, "fields": { "appInstanceId": { "type": "UniqueId", "id": 1 } } }, "RegisterInstanceIdResponse": { "options": { "(.interop.message_id)": "interop.RegisterInstanceIdResponse" }, "fields": {} }, "Context": { "options": { "(.interop.message_id)": "interop.Context" }, "fields": { "id": { "type": "string", "id": 1 }, "own": { "type": "bool", "id": 2 }, "kind": { "type": "string", "id": 3 } } }, "ContextsList": { "options": { "(.interop.message_id)": "interop.ContextsList" }, "fields": { "contexts": { "rule": "repeated", "type": "Context", "id": 1 } } }, "CreateContextRequest": { "options": { "(.interop.message_id)": "interop.CreateContextRequest" }, "fields": { "kind": { "type": "string", "id": 1 } } }, "ContextLoadingStatus": { "values": { "IN_PROGRESS": 0, "FAILED": 1, "FINISHED": 2 } }, "ContextLoadingUpdate": { "options": { "(.interop.message_id)": "interop.ContextLoadingUpdate" }, "fields": { "status": { "type": "ContextLoadingStatus", "id": 1 }, "loadedAppDescriptors": { "rule": "repeated", "type": "interop.AppConnectionDescriptor", "id": 2 }, "failedAppDescriptors": { "rule": "repeated", "type": "interop.AppConnectionDescriptor", "id": 3 } } }, "InvocationRef": { "options": { "(.interop.message_id)": "interop.InvocationRef" }, "fields": { "appInfo": { "type": "interop.AppMetamodelInfo", "id": 1 }, "target": { "type": "interop.AppConnectionDescriptor", "id": 2 } } }, "InvocationsList": { "options": { "(.interop.message_id)": "interop.InvocationsList" }, "fields": { "invocations": { "rule": "repeated", "type": "InvocationRef", "id": 1 } } }, "ContextToInvocations": { "options": { "(.interop.message_id)": "interop.ContextToInvocations" }, "fields": { "context": { "type": "Context", "id": 1 }, "invocations": { "type": "InvocationsList", "id": 2 } } }, "ContextToInvocationsList": { "options": { "(.interop.message_id)": "interop.ContextToInvocationsList" }, "fields": { "contexts": { "rule": "repeated", "type": "ContextToInvocations", "id": 1 } } }, "AppJoinedContextEvent": { "options": { "(.interop.message_id)": "interop.AppJoinedContextEvent" }, "fields": { "context": { "type": "Context", "id": 1 }, "appInstanceId": { "type": "UniqueId", "id": 2 } } }, "RestoreContextsLinkageRequest": { "options": { "(.interop.message_id)": "interop.RestoreContextsLinkageRequest" }, "fields": { "apps": { "rule": "repeated", "type": "RestoringAppInstance", "id": 1 } } }, "RestoringAppInstance": { "options": { "(.interop.message_id)": "interop.RestoringAppInstance" }, "fields": { "appInstanceId": { "type": "UniqueId", "id": 1 }, "appIds": { "rule": "repeated", "type": "string", "id": 2 }, "contextIds": { "rule": "repeated", "type": "string", "id": 3, "options": { "deprecated": true } }, "contexts": { "rule": "repeated", "type": "Context", "id": 4 } } }, "RestoreContextsLinkageResponse": { "options": { "(.interop.message_id)": "interop.RestoreContextsLinkageResponse" }, "fields": { "createdContextsMap": { "keyType": "string", "type": "Context", "id": 1 } } }, "ContextLinkageService": { "options": { "(.interop.service_id)": "interop.ContextLinkageService" }, "methods": { "ContextLoadedStream": { "requestType": "Context", "responseType": "ContextLoadingUpdate", "responseStream": true }, "CreateContext": { "requestType": "google.protobuf.Empty", "responseType": "Context", "options": { "deprecated": true }, "parsedOptions": [ { "deprecated": true } ] }, "CreateContext2": { "requestType": "CreateContextRequest", "responseType": "Context" }, "JoinContext": { "requestType": "Context", "responseType": "google.protobuf.Empty" }, "GetContexts": { "requestType": "google.protobuf.Empty", "responseType": "ContextsList" }, "GetLinkedInvocations": { "requestType": "Context", "responseType": "InvocationsList" }, "GetAllLinkedInvocations": { "requestType": "google.protobuf.Empty", "responseType": "ContextToInvocationsList" }, "AppJoinedContextStream": { "requestType": "google.protobuf.Empty", "responseType": "AppJoinedContextEvent", "responseStream": true }, "RestoreContextsLinkage": { "requestType": "RestoreContextsLinkageRequest", "responseType": "RestoreContextsLinkageResponse" } } }, "ApplicationOptions": { "fields": { "title": { "type": "string", "id": 1 }, "launchOnCall": { "type": "ApplicationLaunchOnCallMode", "id": 2 } }, "extensions": [ [ 1000, 536870911 ] ] }, "ProvidedServiceOptions": { "fields": { "title": { "type": "string", "id": 1 }, "launchOnCall": { "type": "ApplicationLaunchOnCallMode", "id": 2 } }, "extensions": [ [ 1000, 536870911 ] ] }, "ConsumedServiceOptions": { "fields": {}, "extensions": [ [ 1000, 536870911 ] ] }, "ProvidedMethodOptions": { "fields": { "title": { "type": "string", "id": 1 }, "launchOnCall": { "type": "ApplicationLaunchOnCallMode", "id": 2 }, "timeoutMs": { "type": "uint32", "id": 3 } }, "extensions": [ [ 1000, 536870911 ] ] }, "ConsumedMethodOptions": { "fields": {}, "extensions": [ [ 1000, 536870911 ] ] }, "ApplicationLaunchOnCallMode": { "options": { "allow_alias": true }, "values": { "IF_NOT_LAUNCHED": 0, "DEFAULT": 0, "ALWAYS": 1, "ENABLED": 1, "NEVER": 2, "DISABLED": 2 } }, "InvocationDescriptor": { "options": { "(.interop.message_id)": "interop.InvocationDescriptor" }, "fields": { "serviceId": { "type": "string", "id": 1 }, "serviceAliasId": { "type": "string", "id": 2 }, "methodId": { "type": "string", "id": 3 }, "source": { "type": "AppConnectionDescriptor", "id": 4 }, "target": { "type": "AppConnectionDescriptor", "id": 5 } } }, "messageId": { "type": "string", "id": 9650, "extend": "google.protobuf.MessageOptions" }, "serviceId": { "type": "string", "id": 9650, "extend": "google.protobuf.ServiceOptions" }, "methodId": { "type": "string", "id": 9650, "extend": "google.protobuf.MethodOptions" }, "testing": { "options": { "csharp_namespace": "plexus" }, "nested": { "stringOption": { "type": "string", "id": 1500, "extend": ".interop.ProvidedMethodOptions" }, "enumOption": { "type": "EchoRequest.SubEnum", "id": 1501, "extend": ".interop.ProvidedMethodOptions" }, "EchoService": { "options": { "(.interop.service_id)": "interop.testing.EchoService" }, "methods": { "Unary": { "requestType": "EchoRequest", "responseType": "EchoRequest" }, "ServerStreaming": { "requestType": "EchoRequest", "responseType": "EchoRequest", "responseStream": true }, "ClientStreaming": { "requestType": "EchoRequest", "requestStream": true, "responseType": "EchoRequest" }, "DuplexStreaming": { "requestType": "EchoRequest", "requestStream": true, "responseType": "EchoRequest", "responseStream": true } } }, "EchoRequest": { "options": { "(.interop.message_id)": "interop.testing.EchoRequest" }, "fields": { "stringField": { "type": "string", "id": 1 }, "int64Field": { "type": "int64", "id": 2 }, "uint32Field": { "type": "uint32", "id": 3 }, "repeatedDoubleField": { "rule": "repeated", "type": "double", "id": 4 }, "enumField": { "type": "SubEnum", "id": 5 }, "subMessageField": { "type": "SubMessage", "id": 6 }, "repeatedSubMessageField": { "rule": "repeated", "type": "SubMessage", "id": 7 } }, "nested": { "SubMessage": { "options": { "(.interop.message_id)": "interop.testing.EchoRequest.SubMessage" }, "fields": { "bytesField": { "type": "bytes", "id": 1 }, "stringField": { "type": "string", "id": 2 } } }, "SubEnum": { "values": { "VALUE_ONE": 0, "VALUE_TWO": 1 } } } }, "GreetingService": { "options": { "(.interop.service_id)": "interop.testing.GreetingService" }, "methods": { "Hello": { "requestType": "GreetingRequest", "responseType": "GreetingResponse" } } }, "GreetingRequest": { "options": { "(.interop.message_id)": "interop.testing.GreetingRequest" }, "fields": { "name": { "type": "string", "id": 1 } } }, "GreetingResponse": { "options": { "(.interop.message_id)": "interop.testing.GreetingResponse" }, "fields": { "greeting": { "type": "string", "id": 1 } } } } }, "UniqueId": { "options": { "(.interop.message_id)": "interop.UniqueId" }, "fields": { "lo": { "type": "fixed64", "id": 1 }, "hi": { "type": "fixed64", "id": 2 } } } } } } } , "services": [ { "id": "interop.AppLauncherService", "methods": [ { "name": "Launch", "request": "interop.AppLaunchRequest", "response": "interop.AppLaunchResponse", "type": "Unary" }, { "name": "AppLaunchedEventStream", "request": "google.protobuf.Empty", "response": "interop.AppLaunchedEvent", "type": "ServerStreaming" } ], "options": [ { "id": "interop.service_id", "value": "interop.AppLauncherService" } ] }, { "id": "interop.AppLifecycleService", "methods": [ { "name": "ResolveApp", "request": "interop.ResolveAppRequest", "response": "interop.ResolveAppResponse", "type": "Unary" }, { "name": "GetLifecycleEventStream", "request": "google.protobuf.Empty", "response": "interop.AppLifecycleEvent", "type": "ServerStreaming" }, { "name": "GetInvocationEventStream", "request": "google.protobuf.Empty", "response": "interop.InvocationEvent", "type": "ServerStreaming" }, { "name": "GetConnections", "request": "interop.GetConnectionsRequest", "response": "interop.GetConnectionsResponse", "type": "Unary" }, { "name": "GetConnectionsStream", "request": "interop.GetConnectionsRequest", "response": "interop.GetConnectionsEvent", "type": "ServerStreaming" } ], "options": [ { "id": "interop.service_id", "value": "interop.AppLifecycleService" } ] }, { "id": "interop.AppMetadataService", "methods": [ { "name": "GetAppMetadataChangedEventStream", "request": "google.protobuf.Empty", "response": "interop.AppMetadataChangedEvent", "type": "ServerStreaming" }, { "name": "GetMetamodelChangedEventStream", "request": "google.protobuf.Empty", "response": "interop.MetamodelChangedEvent", "type": "ServerStreaming" } ], "options": [ { "id": "interop.service_id", "value": "interop.AppMetadataService" } ] }, { "id": "interop.ContextLinkageService", "methods": [ { "name": "ContextLoadedStream", "request": "interop.Context", "response": "interop.ContextLoadingUpdate", "type": "ServerStreaming" }, { "name": "CreateContext", "request": "google.protobuf.Empty", "response": "interop.Context", "type": "Unary", "options": [ { "id": "google.protobuf.MethodOptions.deprecated", "value": "true" } ] }, { "name": "CreateContext2", "request": "interop.CreateContextRequest", "response": "interop.Context", "type": "Unary" }, { "name": "JoinContext", "request": "interop.Context", "response": "google.protobuf.Empty", "type": "Unary" }, { "name": "GetContexts", "request": "google.protobuf.Empty", "response": "interop.ContextsList", "type": "Unary" }, { "name": "GetLinkedInvocations", "request": "interop.Context", "response": "interop.InvocationsList", "type": "Unary" }, { "name": "GetAllLinkedInvocations", "request": "google.protobuf.Empty", "response": "interop.ContextToInvocationsList", "type": "Unary" }, { "name": "AppJoinedContextStream", "request": "google.protobuf.Empty", "response": "interop.AppJoinedContextEvent", "type": "ServerStreaming" }, { "name": "RestoreContextsLinkage", "request": "interop.RestoreContextsLinkageRequest", "response": "interop.RestoreContextsLinkageResponse", "type": "Unary" } ], "options": [ { "id": "interop.service_id", "value": "interop.ContextLinkageService" } ] }, { "id": "interop.AppRegistrationService", "methods": [ { "name": "RequestInstanceId", "request": "interop.RequestInstanceIdRequest", "response": "interop.UniqueId", "type": "Unary" }, { "name": "RegisterInstanceId", "request": "interop.RegisterInstanceIdRequest", "response": "interop.RegisterInstanceIdResponse", "type": "Unary" } ], "options": [ { "id": "interop.service_id", "value": "interop.AppRegistrationService" } ] }, { "id": "interop.testing.EchoService", "methods": [ { "name": "Unary", "request": "interop.testing.EchoRequest", "response": "interop.testing.EchoRequest", "type": "Unary" }, { "name": "ServerStreaming", "request": "interop.testing.EchoRequest", "response": "interop.testing.EchoRequest", "type": "ServerStreaming" }, { "name": "ClientStreaming", "request": "interop.testing.EchoRequest", "response": "interop.testing.EchoRequest", "type": "ClientStreaming" }, { "name": "DuplexStreaming", "request": "interop.testing.EchoRequest", "response": "interop.testing.EchoRequest", "type": "DuplexStreaming" } ], "options": [ { "id": "interop.service_id", "value": "interop.testing.EchoService" } ] }, { "id": "interop.testing.GreetingService", "methods": [ { "name": "Hello", "request": "interop.testing.GreetingRequest", "response": "interop.testing.GreetingResponse", "type": "Unary" } ], "options": [ { "id": "interop.service_id", "value": "interop.testing.GreetingService" } ] } ], "applications": [ { "id": "interop.AppLifecycleManager", "consumes": [ { "service": "interop.AppLauncherService", "methods": [ { "name": "Launch" }, { "name": "AppLaunchedEventStream" } ] } ], "provides": [ { "service": "interop.AppLifecycleService", "methods": [ { "name": "ResolveApp" }, { "name": "GetLifecycleEventStream" }, { "name": "GetInvocationEventStream" }, { "name": "GetConnections" }, { "name": "GetConnectionsStream" } ] }, { "service": "interop.AppMetadataService", "methods": [ { "name": "GetAppMetadataChangedEventStream" }, { "name": "GetMetamodelChangedEventStream" } ] }, { "service": "interop.ContextLinkageService", "methods": [ { "name": "ContextLoadedStream" }, { "name": "CreateContext" }, { "name": "CreateContext2" }, { "name": "JoinContext" }, { "name": "GetContexts" }, { "name": "GetLinkedInvocations" }, { "name": "GetAllLinkedInvocations" }, { "name": "AppJoinedContextStream" }, { "name": "RestoreContextsLinkage" } ] }, { "service": "interop.AppRegistrationService", "methods": [ { "name": "RequestInstanceId" }, { "name": "RegisterInstanceId" } ] } ] }, { "id": "interop.CommandLineTool", "consumes": [ { "service": "interop.AppLifecycleService", "methods": [ { "name": "ResolveApp" } ], "from": [ "interop.AppLifecycleManager" ] } ] }, { "id": "interop.NativeAppLauncher", "provides": [ { "service": "interop.AppLauncherService", "methods": [ { "name": "Launch" }, { "name": "AppLaunchedEventStream" } ], "to": [ "plexus.interop.AppLifecycleManager" ] } ] }, { "id": "interop.testing.EchoClient", "consumes": [ { "service": "interop.testing.EchoService", "methods": [ { "name": "Unary" }, { "name": "ServerStreaming" }, { "name": "ClientStreaming" }, { "name": "DuplexStreaming" } ], "from": [ "interop.testing.*" ] }, { "service": "interop.testing.GreetingService", "methods": [ { "name": "Hello" } ], "from": [ "interop.testing.*" ] }, { "service": "interop.AppLifecycleService", "methods": [ { "name": "GetConnections" }, { "name": "GetConnectionsStream" } ], "from": [ "interop.AppLifecycleManager" ] }, { "service": "interop.ContextLinkageService", "methods": [ { "name": "ContextLoadedStream" }, { "name": "CreateContext2" }, { "name": "JoinContext" }, { "name": "GetContexts" }, { "name": "GetLinkedInvocations" }, { "name": "GetAllLinkedInvocations" } ] } ] }, { "id": "interop.testing.EchoServer", "consumes": [ { "service": "interop.testing.EchoService", "methods": [ { "name": "Unary" }, { "name": "ServerStreaming" }, { "name": "ClientStreaming" }, { "name": "DuplexStreaming" } ], "from": [ "interop.testing.*" ] }, { "service": "interop.testing.GreetingService", "methods": [ { "name": "Hello" } ], "from": [ "interop.testing.*" ] } ], "provides": [ { "service": "interop.testing.EchoService", "methods": [ { "name": "Unary", "options": [ { "id": "interop.ProvidedMethodOptions.title", "value": "Sample Unary Method" }, { "id": "interop.testing.string_option", "value": "some string" }, { "id": "interop.testing.enum_option", "value": "VALUE_TWO" } ] }, { "name": "ServerStreaming", "options": [ { "id": "interop.ProvidedMethodOptions.title", "value": "Sample Server Streaming Method" } ] }, { "name": "ClientStreaming", "options": [ { "id": "interop.ProvidedMethodOptions.title", "value": "Sample Client Streaming Method" } ] }, { "name": "DuplexStreaming", "options": [ { "id": "interop.ProvidedMethodOptions.title", "value": "Sample Duplex Streaming Method" } ] } ], "to": [ "interop.testing.*" ], "options": [ { "id": "interop.ProvidedServiceOptions.title", "value": "Sample Echo Service" } ] }, { "service": "interop.testing.GreetingService", "methods": [ { "name": "Hello" } ], "to": [ "interop.testing.*" ] }, { "service": "interop.testing.GreetingService", "methods": [ { "name": "Hello", "options": [ { "id": "interop.ProvidedMethodOptions.launch_on_call", "value": "ALWAYS" } ] } ], "alias": "AlwaysLaunchGreetingService", "to": [ "interop.testing.*" ] }, { "service": "interop.testing.GreetingService", "methods": [ { "name": "Hello", "options": [ { "id": "interop.ProvidedMethodOptions.launch_on_call", "value": "NEVER" } ] } ], "alias": "NeverLaunchGreetingService", "to": [ "interop.testing.*" ] } ] }, { "id": "interop.testing.TestAppLauncher", "consumes": [ { "service": "interop.ContextLinkageService", "methods": [ { "name": "ContextLoadedStream" }, { "name": "CreateContext" }, { "name": "JoinContext" }, { "name": "GetContexts" }, { "name": "GetLinkedInvocations" }, { "name": "GetAllLinkedInvocations" } ] }, { "service": "interop.AppLifecycleService", "methods": [ { "name": "GetLifecycleEventStream" }, { "name": "GetInvocationEventStream" } ], "from": [ "interop.AppLifecycleManager" ] }, { "service": "interop.AppRegistrationService", "methods": [ { "name": "RequestInstanceId" }, { "name": "RegisterInstanceId" } ] } ], "provides": [ { "service": "interop.AppLauncherService", "methods": [ { "name": "Launch" }, { "name": "AppLaunchedEventStream" } ], "to": [ "interop.AppLifecycleManager" ] } ] } ] } ================================================ FILE: desktop/src/Plexus.Interop.Broker.Core/Plexus.Interop.Broker.Core.csproj ================================================ netstandard2.0;net45 net45 netstandard2.0 Plexus.Interop.Broker false PreserveNewest ================================================ FILE: desktop/src/Plexus.Interop.Broker.Core/Properties/AsseblyInfo.cs ================================================ /** * Copyright 2017-2021 Plexus Interop Deutsche Bank AG * SPDX-License-Identifier: Apache-2.0 * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ using System.Runtime.CompilerServices; [assembly:InternalsVisibleTo("Plexus.Interop.Broker.Core.Tests")] ================================================ FILE: desktop/src/Plexus.Interop.Broker.Core.Tests/Plexus.Interop.Broker.Core.Tests.csproj ================================================  netcoreapp2.1;net452 net452 netcoreapp2.1 Plexus.Interop.Broker.Core false all runtime; build; native; contentfiles; analyzers all runtime; build; native; contentfiles; analyzers Always ================================================ FILE: desktop/src/Plexus.Interop.Broker.Core.Tests/RegistryServiceTests.cs ================================================ /** * Copyright 2017-2021 Plexus Interop Deutsche Bank AG * SPDX-License-Identifier: Apache-2.0 * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ namespace Plexus.Interop.Broker.Core { using System.Linq; using Plexus.Interop.Broker.Internal; using Plexus.Interop.Metamodel.Json; using Shouldly; using Xunit; public sealed class RegistryServiceTests : TestsSuite { private readonly RegistryService _sut; public RegistryServiceTests() { _sut = new RegistryService(new JsonRegistryProvider("RegistryServiceTests.interop.json")); } [Fact] public void CanResolveEmbeddedMethods() { var methods = _sut.GetMatchingProvidedMethods("plexus.tests.App1"); methods.Count.ShouldBe(1); var method = methods.First(); method.ProvidedService.Application.Id.ShouldBe("interop.AppLifecycleManager"); method.ProvidedService.Service.Id.ShouldBe("interop.AppLifecycleService"); method.Method.Name.ShouldBe("GetLifecycleEventStream"); } } } ================================================ FILE: desktop/src/Plexus.Interop.Broker.Core.Tests/RegistryServiceTests.interop.json ================================================ { "services": [ { "id": "interop.AppLauncherService", "methods": [ { "name": "Launch", "request": "interop.AppLaunchRequest", "response": "interop.AppLaunchResponse", "type": "Unary" } ] }, { "id": "interop.AppLifecycleService", "methods": [ { "name": "ResolveApp", "request": "interop.ResolveAppRequest", "response": "interop.ResolveAppResponse", "type": "Unary" }, { "name": "GetLifecycleEventStream", "request": "google.protobuf.Empty", "response": "interop.AppLifecycleEvent", "type": "ServerStreaming" } ] } ], "applications": [ { "id": "plexus.tests.App1", "consumes": [ { "service": "interop.AppLifecycleService", "methods": [ { "name": "GetLifecycleEventStream" } ], "from": [ "interop.*" ] } ] }, { "id": "plexus.tests.Launcher1", "provides": [ { "service": "interop.AppLauncherService", "methods": [ { "name": "Launch" } ], "to": [ "interop.AppLifecycleManager" ] } ] }, { "id": "interop.AppLifecycleManager", "consumes": [ { "service": "interop.AppLauncherService", "methods": [ { "name": "Launch" } ] } ], "provides": [ { "service": "interop.AppLifecycleService", "methods": [ { "name": "ResolveApp" }, { "name": "GetLifecycleEventStream" } ] } ] } ] } ================================================ FILE: desktop/src/Plexus.Interop.Client/ClientBase.cs ================================================ /** * Copyright 2017-2021 Plexus Interop Deutsche Bank AG * SPDX-License-Identifier: Apache-2.0 * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ namespace Plexus.Interop { using System.Threading.Tasks; public abstract class ClientBase : IClient { private readonly IClient _client; protected ClientBase(ClientOptions options) { _client = ClientFactory.Instance.Create(options); } public IClientCallInvoker CallInvoker => _client.CallInvoker; public IClientDiscoveryInvoker DiscoveryInvoker => _client.DiscoveryInvoker; public string ApplicationId => _client.ApplicationId; public UniqueId ApplicationInstanceId => _client.ApplicationInstanceId; public UniqueId ConnectionId => _client.ConnectionId; public Task Completion => _client.Completion; public void Dispose() { _client.Dispose(); } public Task ConnectAsync() { return _client.ConnectAsync(); } public void Disconnect() { _client.Disconnect(); } public Task DisconnectAsync() { return _client.DisconnectAsync(); } } } ================================================ FILE: desktop/src/Plexus.Interop.Client/ClientOptionsBuilderExtensions.cs ================================================ /** * Copyright 2017-2021 Plexus Interop Deutsche Bank AG * SPDX-License-Identifier: Apache-2.0 * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ namespace Plexus.Interop { using Plexus.Interop.Protocol; using Plexus.Interop.Protocol.Protobuf; using Plexus.Interop.Transport; using Plexus.Interop.Transport.Protocol.Protobuf; using Plexus.Interop.Transport.Transmission.Pipes; public static class ClientOptionsBuilderExtensions { public static ClientOptionsBuilder WithDefaultConfiguration(this ClientOptionsBuilder builder) { return builder .WithMarshaller( new ProtobufMarshallerProvider()) .WithProtocol( new ProtocolImplementation( ProtocolMessagePool.Instance, new ProtobufProtocolSerializerFactory())) .WithTransport( TransportClientFactory.Instance.Create( TransportType.Pipe, PipeTransmissionClientFactory.Instance.Create(), new ProtobufTransportProtocolSerializationProvider())); } } } ================================================ FILE: desktop/src/Plexus.Interop.Client/Plexus.Interop.Client.csproj ================================================ netstandard2.0;net45 net45 netstandard2.0 Plexus.Interop ================================================ FILE: desktop/src/Plexus.Interop.Client.Core/ClientDiscoveryInvokerExtensions.cs ================================================ /** * Copyright 2017-2021 Plexus Interop Deutsche Bank AG * SPDX-License-Identifier: Apache-2.0 * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ namespace Plexus.Interop { using System.Collections.Generic; using System.Linq; using System.Threading.Tasks; public static class ClientDiscoveryInvokerExtensions { public static Task>> DiscoverAsync( this IClientDiscoveryInvoker invoker) { return invoker.DiscoverAsync(MethodDiscoveryQuery.Create()); } public static Task>> DiscoverOnlineAsync( this IClientDiscoveryInvoker invoker) { return invoker.DiscoverAsync(MethodDiscoveryQuery.Create()); } public static Task>> DiscoverAsync( this IClientDiscoveryInvoker invoker) { return invoker.DiscoverAsync(MethodDiscoveryQuery.Create()); } public static Task>> DiscoverOnlineAsync( this IClientDiscoveryInvoker invoker) { return invoker.DiscoverOnlineAsync(MethodDiscoveryQuery.Create()); } public static async Task>> DiscoverAsync( this IClientDiscoveryInvoker invoker, UnaryMethodDiscoveryQuery query) { var discoveryResult = await invoker .DiscoverAsync(query) .ConfigureAwait(false); return discoveryResult.Select(x => new DiscoveredUnaryMethod(x)).ToList(); } public static Task>> DiscoverAsync( this IClientDiscoveryInvoker invoker, UnaryMethod method) { return DiscoverAsync(invoker, MethodDiscoveryQuery.Create(method)); } public static async Task>> DiscoverOnlineAsync( this IClientDiscoveryInvoker invoker, UnaryMethodDiscoveryQuery query) { var discoveryResult = await invoker .DiscoverOnlineAsync(query) .ConfigureAwait(false); return discoveryResult.Select(x => new DiscoveredOnlineUnaryMethod(x)).ToList(); } public static Task>> DiscoverOnlineAsync( this IClientDiscoveryInvoker invoker, UnaryMethod method) { return DiscoverOnlineAsync(invoker, MethodDiscoveryQuery.Create(method)); } public static async Task>> DiscoverInCurrentContextAsync( this IClientDiscoveryInvoker invoker, UnaryMethod method) { return (await invoker.DiscoverInCurrentContextAsync(MethodDiscoveryQuery.Create(method))) .Select(x => new DiscoveredOnlineUnaryMethod(x)).ToList(); } public static async Task>> DiscoverAsync( this IClientDiscoveryInvoker invoker, ServerStreamingMethodDiscoveryQuery query) { var discoveryResult = await invoker .DiscoverAsync(query) .ConfigureAwait(false); return discoveryResult.Select(x => new DiscoveredServerStreamingMethod(x)).ToList(); } public static Task>> DiscoverAsync( this IClientDiscoveryInvoker invoker, ServerStreamingMethod method) { return DiscoverAsync(invoker, MethodDiscoveryQuery.Create(method)); } public static async Task>> DiscoverOnlineAsync( this IClientDiscoveryInvoker invoker, ServerStreamingMethodDiscoveryQuery query) { var discoveryResult = await invoker .DiscoverOnlineAsync(query) .ConfigureAwait(false); return discoveryResult.Select(x => new DiscoveredOnlineServerStreamingMethod(x)).ToList(); } public static Task>> DiscoverOnlineAsync( this IClientDiscoveryInvoker invoker, ServerStreamingMethod method) { return DiscoverOnlineAsync(invoker, MethodDiscoveryQuery.Create(method)); } public static async Task>> DiscoverAsync( this IClientDiscoveryInvoker invoker, ClientStreamingMethodDiscoveryQuery query) { var discoveryResult = await invoker .DiscoverAsync(query) .ConfigureAwait(false); return discoveryResult.Select(x => new DiscoveredClientStreamingMethod(x)).ToList(); } public static Task>> DiscoverAsync( this IClientDiscoveryInvoker invoker, ClientStreamingMethod method) { return DiscoverAsync(invoker, MethodDiscoveryQuery.Create(method)); } public static async Task>> DiscoverOnlineAsync( this IClientDiscoveryInvoker invoker, ClientStreamingMethodDiscoveryQuery query) { var discoveryResult = await invoker .DiscoverOnlineAsync(query) .ConfigureAwait(false); return discoveryResult.Select(x => new DiscoveredOnlineClientStreamingMethod(x)).ToList(); } public static Task>> DiscoverOnlineAsync( this IClientDiscoveryInvoker invoker, ClientStreamingMethod method) { return DiscoverOnlineAsync(invoker, MethodDiscoveryQuery.Create(method)); } public static async Task>> DiscoverAsync( this IClientDiscoveryInvoker invoker, DuplexStreamingMethodDiscoveryQuery query) { var discoveryResult = await invoker .DiscoverAsync(query) .ConfigureAwait(false); return discoveryResult.Select(x => new DiscoveredDuplexStreamingMethod(x)).ToList(); } public static Task>> DiscoverAsync( this IClientDiscoveryInvoker invoker, DuplexStreamingMethod method) { return DiscoverAsync(invoker, MethodDiscoveryQuery.Create(method)); } public static async Task>> DiscoverOnlineAsync( this IClientDiscoveryInvoker invoker, DuplexStreamingMethodDiscoveryQuery query) { var discoveryResult = await invoker .DiscoverOnlineAsync(query) .ConfigureAwait(false); return discoveryResult.Select(x => new DiscoveredOnlineDuplexStreamingMethod(x)).ToList(); } public static Task>> DiscoverOnlineAsync( this IClientDiscoveryInvoker invoker, DuplexStreamingMethod method) { return DiscoverOnlineAsync(invoker, MethodDiscoveryQuery.Create(method)); } } } ================================================ FILE: desktop/src/Plexus.Interop.Client.Core/ClientFactory.cs ================================================ /** * Copyright 2017-2021 Plexus Interop Deutsche Bank AG * SPDX-License-Identifier: Apache-2.0 * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ namespace Plexus.Interop { using System; using Plexus.Interop.Internal; using Plexus.Interop.Protocol; using Plexus.Interop.Transport; public sealed class ClientFactory : IClientFactory { public static readonly IClientFactory Instance = new ClientFactory(); public IClient Create(ClientOptions options) { return new Client(options); } public IClient Create( string appId, ITransportClient transport, IProtocolImplementation protocol, IMarshallerProvider marshaller, Func setup = default) { var builder = new ClientOptionsBuilder() .WithApplicationId(appId) .WithMarshaller(marshaller) .WithProtocol(protocol) .WithTransport(transport); if (setup != default) { builder = setup(builder); } return new Client(builder.Build()); } } } ================================================ FILE: desktop/src/Plexus.Interop.Client.Core/ClientOptions.cs ================================================ /** * Copyright 2017-2021 Plexus Interop Deutsche Bank AG * SPDX-License-Identifier: Apache-2.0 * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ namespace Plexus.Interop { using Plexus.Interop.Protocol; using Plexus.Interop.Transport; using System.Collections.Generic; using System.Linq; public sealed class ClientOptions { internal ClientOptions( string brokerWorkingDir, string applicationId, UniqueId applicationInstanceId, ITransportClient transport, IProtocolImplementation protocol, IMarshallerProvider marshaller, IEnumerable services) { BrokerWorkingDir = brokerWorkingDir; ApplicationId = applicationId; ApplicationInstanceId = applicationInstanceId; Transport = transport; Marshaller = marshaller; Protocol = protocol; Services = new List(services); ServicesDictionary = Services.ToDictionary(x => x.Id, x => x); } public string BrokerWorkingDir { get; } public string ApplicationId { get; } public UniqueId ApplicationInstanceId { get; } public ITransportClient Transport { get; } public IProtocolImplementation Protocol { get; } public IMarshallerProvider Marshaller { get; } public IReadOnlyCollection Services { get; } internal IReadOnlyDictionary ServicesDictionary { get; } public override string ToString() { return $"{nameof(BrokerWorkingDir)}: {BrokerWorkingDir}, {nameof(ApplicationId)}: {ApplicationId}, {nameof(ApplicationInstanceId)}: {ApplicationInstanceId}, {nameof(Transport)}: {Transport}, {nameof(Protocol)}: {Protocol}, {nameof(Marshaller)}: {Marshaller}, {nameof(Services)}: {Services.FormatEnumerableObjects()}"; } } } ================================================ FILE: desktop/src/Plexus.Interop.Client.Core/ClientOptionsBuilder.cs ================================================ /** * Copyright 2017-2021 Plexus Interop Deutsche Bank AG * SPDX-License-Identifier: Apache-2.0 * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ namespace Plexus.Interop { using Plexus.Interop.Internal.ClientProtocol.Invocations; using Plexus.Interop.Protocol; using Plexus.Interop.Transport; using System; using System.Collections.Generic; public sealed class ClientOptionsBuilder { private static readonly ILogger Log = LogManager.GetLogger(); private readonly List<(string Name, Maybe Alias, Func Setup)> _serviceFactories = new List<(string, Maybe, Func)>(); public string BrokerWorkingDir { get; private set; } public string ApplicationId { get; private set; } public UniqueId ApplicationInstanceId { get; private set; } public ITransportClient Transport { get; private set; } public IProtocolImplementation Protocol { get; private set; } public IMarshallerProvider Marshaller { get; private set; } public ClientOptionsBuilder WithBrokerWorkingDir(string brokerWorkingDir) { BrokerWorkingDir = brokerWorkingDir; return this; } public ClientOptionsBuilder WithApplicationId(string applicationId) { ApplicationId = applicationId; return this; } public ClientOptionsBuilder WithAppInstanceId(UniqueId instanceId) { ApplicationInstanceId = instanceId; return this; } public ClientOptionsBuilder WithTransport(ITransportClient transport) { Transport = transport; return this; } public ClientOptionsBuilder WithProtocol(IProtocolImplementation protocol) { Protocol = protocol; return this; } public ClientOptionsBuilder WithMarshaller(IMarshallerProvider marshallerProvider) { Marshaller = marshallerProvider; return this; } public ClientOptionsBuilder WithProvidedService(string name, Func setup) { _serviceFactories.Add((name, default, setup)); return this; } public ClientOptionsBuilder WithProvidedService(string name, string alias, Func setup) { _serviceFactories.Add((name, alias, setup)); return this; } public ClientOptions Build() { if (BrokerWorkingDir == null) { BrokerWorkingDir = EnvironmentHelper.GetBrokerWorkingDir(); if (BrokerWorkingDir == null) { throw new ArgumentException($"Broker working directory must be specified either explicitly or through environment variable {EnvironmentHelper.BrokerWorkingDirVarName}"); } } if (string.IsNullOrEmpty(ApplicationId)) { throw new ArgumentException("Application ID must be specified"); } if (Transport == null) { throw new ArgumentException("Transport implementation must be specified"); } if (Protocol == null) { throw new ArgumentException("Protocol implementation must be specified"); } if (Marshaller == null) { throw new ArgumentException("Marshaller implementation must be specified"); } if (ApplicationInstanceId == default) { try { var instanceIdVar = EnvironmentHelper.GetAppInstanceId(); ApplicationInstanceId = instanceIdVar == null ? UniqueId.Generate() : UniqueId.FromString(instanceIdVar); } catch (Exception exception) { Log.Warn(exception, "Exception while reading app instance id from environment variable {0}. Generating new unique id as fallback...", EnvironmentHelper.AppInstanceIdVarName); ApplicationInstanceId = UniqueId.Generate(); } } var incomingInvocationFactory = new IncomingInvocationFactory(Protocol, Marshaller); return new ClientOptions( BrokerWorkingDir, ApplicationId, ApplicationInstanceId, Transport, Protocol, Marshaller, GetServiceDefinitions()); IEnumerable GetServiceDefinitions() { foreach (var serviceFactory in _serviceFactories) { var builder = new ProvidedServiceDefinition.Builder(serviceFactory.Name, serviceFactory.Alias, incomingInvocationFactory); yield return serviceFactory.Setup(builder).Build(); } } } } } ================================================ FILE: desktop/src/Plexus.Interop.Client.Core/ContextLinkageOptions.cs ================================================ /** * Copyright 2017-2021 Plexus Interop Deutsche Bank AG * SPDX-License-Identifier: Apache-2.0 * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ namespace Plexus.Interop { using Plexus.Interop.Protocol; public sealed class ContextLinkageOptions { public ContextLinkageOptions(string specifiedContextId) { SpecifiedContextId = new Maybe(specifiedContextId); Mode = ContextLinkageDiscoveryMode.SpecificContext; } private ContextLinkageOptions(ContextLinkageDiscoveryMode mode) { Mode = mode; SpecifiedContextId = Maybe.Nothing; } public static ContextLinkageOptions WithCurrentContext() => new ContextLinkageOptions(ContextLinkageDiscoveryMode.CurrentContext); public ContextLinkageDiscoveryMode Mode { get; } public Maybe SpecifiedContextId { get; } } public static class ContextLinkageConvertor { public static IContextLinkageOptions Convert(this ContextLinkageOptions options, IProtocolMessageFactory messageFactory) { if (options == null) { return messageFactory.CreateContextLinkageOptions(ContextLinkageDiscoveryMode.None, Maybe.Nothing); } return messageFactory.CreateContextLinkageOptions(options.Mode, options.SpecifiedContextId); } public static IContextLinkageOptions Convert(this Maybe options, IProtocolMessageFactory messageFactory) { if (!options.HasValue) { return CreateDefaultContextLinkageOptions(messageFactory); } return options.Value.Convert(messageFactory); } private static IContextLinkageOptions CreateDefaultContextLinkageOptions(IProtocolMessageFactory messageFactory) { return messageFactory.CreateContextLinkageOptions(ContextLinkageDiscoveryMode.None, Maybe.Nothing); } } } ================================================ FILE: desktop/src/Plexus.Interop.Client.Core/DiscoveredMethod.cs ================================================ /** * Copyright 2017-2021 Plexus Interop Deutsche Bank AG * SPDX-License-Identifier: Apache-2.0 * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ namespace Plexus.Interop { using System.Collections.Generic; public class DiscoveredMethod : IMethod { internal DiscoveredMethod( ProvidedMethodReference providedMethod, Maybe title, string inputMessageId, string outputMessageId, MethodType type, IReadOnlyCollection