From 5e375f6d3dffbd50ffe731c9f0e3c5b761b2885f Mon Sep 17 00:00:00 2001 From: Joseph Doherty Date: Wed, 20 May 2026 03:42:38 -0400 Subject: [PATCH] Add bulk read/write command family across worker, gateway, and clients MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Adds five new MXAccess command kinds (WriteBulk, Write2Bulk, WriteSecuredBulk, WriteSecured2Bulk, ReadBulk) that ride the existing "one round-trip, per-entry results" bulk shape used by AddItemBulk and SubscribeBulk today. MXAccess COM has no native bulk API; the worker runs each bulk operation as a sequential loop on its STA, returning one BulkWriteResult / BulkReadResult per requested entry so per-item MXAccess failures surface as was_successful=false rather than throwing. ReadBulk has no MXAccess analogue. The worker satisfies it by: - Returning the last cached OnDataChange payload (was_cached=true) when the requested tag is already in the session''s item registry AND advised — the existing subscription is NOT touched, since the caller did not create it. - Otherwise taking the AddItem + Advise + wait-for-OnDataChange + UnAdvise + RemoveItem snapshot lifecycle itself (was_cached=false) and leaving the session exactly as it was. The wait pumps Windows messages on the STA so the inbound MXAccess event can dispatch while the executor still holds the thread. The new MxAccessValueCache lives on each MxAccessSession, shared with MxAccessBaseEventSink which populates it on every OnDataChange after the event clears the outbound queue. Eviction on RemoveItem keeps reused MXAccess handles from serving stale values from a previous lifetime. Gateway-side authorization wires WriteBulk/Write2Bulk to invoke:write, WriteSecuredBulk/WriteSecured2Bulk to invoke:secure, ReadBulk to invoke:read. The constraint-filter pipeline is refactored from a single BulkConstraintPlan record into an abstract base plus three concretes (SubscribeBulk, WriteBulk, ReadBulk), each owning its own denied-entry merge so the dispatch site never branches on reply shape. A new FilterWriteBulkAsync generic over the four write-entry shapes runs CheckWriteHandleAsync per entry; denied entries surface as the BulkWriteResult shape, preserving original-index order. All five language clients (.NET, Go, Rust, Python, Java) gained the five new methods following their existing bulk pattern, with regenerated protobufs. Tests added: - MxAccessValueCacheTests (6 cases) — Set/TryGet, Remove resets the version, TryWaitForUpdate signals on Set, pump step fires each poll. - MxAccessBaseEventSinkTests — OnDataChange populates the cache, ValueCache property exposes the bound instance. - MxAccessCommandExecutorTests — four bulk-write variants (per-entry success/failure, value+timestamp forwarding, secured user ids), ReadBulk snapshot lifecycle on uncached tag (timeout surfaces as was_successful=false), invalid-payload reply. - GatewayGrpcScopeResolverTests — five new MxCommandKind cases. - SessionManagerTests — WriteBulk and ReadBulk forwarding through FakeWorkerHarness; ReadBulk forwards timeout_ms. - Per-client (.NET, Go, Rust, Python, Java) — WriteBulk builds the right command and returns per-entry results, ReadBulk forwards the timeout and unpacks the was_cached flag. Cross-language e2e CLI subcommands for the new bulks are deliberately scoped out of this change (each of the five client CLIs would need five new subcommands plus matching phases in scripts/run-client-e2e-tests.ps1); coverage equivalent to the existing bulk-subscribe coverage is provided by worker + gateway + per-client unit tests. Docs updated in the same commit: gateway.md (Public MXAccess Command Surface), docs/DesignDecisions.md (new "Bulk Command Family" section with the ReadBulk cache-then-snapshot rationale), and every client README. Co-Authored-By: Claude Opus 4.7 (1M context) --- .../MxGatewayClientSessionTests.cs | 90 + .../MxGateway.Client/MxGatewaySession.cs | 136 + clients/dotnet/README.md | 42 + clients/go/README.md | 11 +- .../internal/generated/mxaccess_gateway.pb.go | 2424 ++- clients/go/mxgateway/client_session_test.go | 81 + clients/go/mxgateway/session.go | 136 + clients/go/mxgateway/types.go | 36 + clients/java/README.md | 12 + .../mxgateway/client/MxGatewaySession.java | 109 + .../client/MxGatewayClientSessionTests.java | 88 + .../mxaccess_gateway/v1/MxaccessGateway.java | 15281 +++++++++++++++- clients/python/README.md | 11 + .../generated/galaxy_repository_pb2_grpc.py | 27 +- .../generated/mxaccess_gateway_pb2.py | 344 +- .../generated/mxaccess_gateway_pb2_grpc.py | 27 +- clients/python/src/mxgateway/session.py | 132 + clients/python/tests/test_client_session.py | 73 + clients/rust/README.md | 10 + clients/rust/src/session.rs | 185 +- clients/rust/tests/client_behavior.rs | 139 +- docs/DesignDecisions.md | 51 + gateway.md | 38 + .../Generated/MxaccessGateway.cs | 5149 +++++- .../Protos/mxaccess_gateway.proto | 130 + .../Grpc/MxAccessGatewayService.cs | 440 +- .../Grpc/MxAccessGrpcRequestValidator.cs | 5 + .../Authorization/GatewayGrpcScopeResolver.cs | 6 +- .../Sessions/GatewaySession.cs | 142 +- .../Gateway/Sessions/SessionManagerTests.cs | 113 + .../GatewayGrpcScopeResolverTests.cs | 5 + .../MxAccess/AlarmCommandExecutorTests.cs | 5 + .../MxAccess/MxAccessBaseEventSinkTests.cs | 47 + .../MxAccess/MxAccessCommandExecutorTests.cs | 361 +- .../MxAccess/MxAccessValueCacheTests.cs | 168 + .../MxAccess/MxAccessBaseEventSink.cs | 85 +- .../MxAccess/MxAccessCommandExecutor.cs | 204 +- .../MxAccess/MxAccessSession.cs | 413 + .../MxAccess/MxAccessStaSession.cs | 8 +- .../MxAccess/MxAccessValueCache.cs | 190 + src/MxGateway.Worker/Sta/StaRuntime.cs | 9 + 41 files changed, 25624 insertions(+), 1339 deletions(-) create mode 100644 src/MxGateway.Worker.Tests/MxAccess/MxAccessValueCacheTests.cs create mode 100644 src/MxGateway.Worker/MxAccess/MxAccessValueCache.cs diff --git a/clients/dotnet/MxGateway.Client.Tests/MxGatewayClientSessionTests.cs b/clients/dotnet/MxGateway.Client.Tests/MxGatewayClientSessionTests.cs index db222b6..6c9dc99 100644 --- a/clients/dotnet/MxGateway.Client.Tests/MxGatewayClientSessionTests.cs +++ b/clients/dotnet/MxGateway.Client.Tests/MxGatewayClientSessionTests.cs @@ -184,6 +184,96 @@ public sealed class MxGatewayClientSessionTests Assert.Equal(["Area001.Pump001.Speed"], request.Command.SubscribeBulk.TagAddresses); } + /// + /// Verifies that WriteBulk builds one command carrying the entry list verbatim + /// and returns the per-entry BulkWriteResult list without throwing on per-entry + /// failures. + /// + [Fact] + public async Task WriteBulkAsync_BuildsOneBulkCommandAndReturnsPerEntryResults() + { + FakeGatewayTransport transport = CreateTransport(); + transport.AddInvokeReply(new MxCommandReply + { + SessionId = "session-fixture", + Kind = MxCommandKind.WriteBulk, + ProtocolStatus = new ProtocolStatus { Code = ProtocolStatusCode.Ok }, + WriteBulk = new BulkWriteReply + { + Results = + { + new BulkWriteResult { ServerHandle = 12, ItemHandle = 901, WasSuccessful = true }, + new BulkWriteResult { ServerHandle = 12, ItemHandle = 902, WasSuccessful = false, ErrorMessage = "Invalid handle" }, + }, + }, + }); + await using MxGatewayClient client = CreateClient(transport); + MxGatewaySession session = await client.OpenSessionAsync(); + + IReadOnlyList results = await session.WriteBulkAsync( + 12, + new[] + { + new WriteBulkEntry { ItemHandle = 901, UserId = 5, Value = new MxValue { DataType = MxDataType.Integer, Int32Value = 11 } }, + new WriteBulkEntry { ItemHandle = 902, UserId = 5, Value = new MxValue { DataType = MxDataType.Integer, Int32Value = 22 } }, + }); + + Assert.Equal(2, results.Count); + Assert.True(results[0].WasSuccessful); + Assert.False(results[1].WasSuccessful); + MxCommandRequest request = Assert.Single(transport.InvokeCalls).Request; + Assert.Equal(MxCommandKind.WriteBulk, request.Command.Kind); + Assert.Equal(12, request.Command.WriteBulk.ServerHandle); + Assert.Equal(2, request.Command.WriteBulk.Entries.Count); + Assert.Equal(901, request.Command.WriteBulk.Entries[0].ItemHandle); + } + + /// + /// Verifies that ReadBulk forwards the timeout to the gateway as milliseconds + /// and unpacks the BulkReadReply payload's was_cached / value fields. + /// + [Fact] + public async Task ReadBulkAsync_ForwardsTimeoutAndUnpacksCachedFlag() + { + FakeGatewayTransport transport = CreateTransport(); + transport.AddInvokeReply(new MxCommandReply + { + SessionId = "session-fixture", + Kind = MxCommandKind.ReadBulk, + ProtocolStatus = new ProtocolStatus { Code = ProtocolStatusCode.Ok }, + ReadBulk = new BulkReadReply + { + Results = + { + new BulkReadResult + { + ServerHandle = 12, + TagAddress = "Area001.Pump001.Speed", + ItemHandle = 901, + WasSuccessful = true, + WasCached = true, + Value = new MxValue { DataType = MxDataType.Integer, Int32Value = 99 }, + }, + }, + }, + }); + await using MxGatewayClient client = CreateClient(transport); + MxGatewaySession session = await client.OpenSessionAsync(); + + IReadOnlyList results = await session.ReadBulkAsync( + 12, + ["Area001.Pump001.Speed"], + TimeSpan.FromMilliseconds(750)); + + BulkReadResult result = Assert.Single(results); + Assert.True(result.WasCached); + Assert.Equal(99, result.Value.Int32Value); + MxCommandRequest request = Assert.Single(transport.InvokeCalls).Request; + Assert.Equal(MxCommandKind.ReadBulk, request.Command.Kind); + Assert.Equal(750u, request.Command.ReadBulk.TimeoutMs); + Assert.Equal(["Area001.Pump001.Speed"], request.Command.ReadBulk.TagAddresses); + } + /// Verifies that stream events yields events in the order received from the gateway. [Fact] public async Task StreamEventsAsync_YieldsEventsInGatewayOrder() diff --git a/clients/dotnet/MxGateway.Client/MxGatewaySession.cs b/clients/dotnet/MxGateway.Client/MxGatewaySession.cs index 9876071..7e5f4a6 100644 --- a/clients/dotnet/MxGateway.Client/MxGatewaySession.cs +++ b/clients/dotnet/MxGateway.Client/MxGatewaySession.cs @@ -527,6 +527,142 @@ public sealed class MxGatewaySession : IAsyncDisposable return reply.UnsubscribeBulk?.Results.ToArray() ?? []; } + /// + /// Bulk Write — sequential MXAccess Write per entry on the worker's STA. + /// Per-item failures appear as BulkWriteResult entries with + /// WasSuccessful = false; the call never throws on per-item errors. + /// Protocol-level failures still throw via EnsureProtocolSuccess. + /// + public async Task> WriteBulkAsync( + int serverHandle, + IReadOnlyList entries, + CancellationToken cancellationToken = default) + { + ArgumentNullException.ThrowIfNull(entries); + + WriteBulkCommand command = new() { ServerHandle = serverHandle }; + command.Entries.Add(entries); + + MxCommandReply reply = await InvokeCommandAsync( + new MxCommand + { + Kind = MxCommandKind.WriteBulk, + WriteBulk = command, + }, + cancellationToken) + .ConfigureAwait(false); + reply.EnsureProtocolSuccess().EnsureMxAccessSuccess(); + return reply.WriteBulk?.Results.ToArray() ?? []; + } + + /// Bulk Write2 — sequential MXAccess Write2 (timestamped) per entry. + public async Task> Write2BulkAsync( + int serverHandle, + IReadOnlyList entries, + CancellationToken cancellationToken = default) + { + ArgumentNullException.ThrowIfNull(entries); + + Write2BulkCommand command = new() { ServerHandle = serverHandle }; + command.Entries.Add(entries); + + MxCommandReply reply = await InvokeCommandAsync( + new MxCommand + { + Kind = MxCommandKind.Write2Bulk, + Write2Bulk = command, + }, + cancellationToken) + .ConfigureAwait(false); + reply.EnsureProtocolSuccess().EnsureMxAccessSuccess(); + return reply.Write2Bulk?.Results.ToArray() ?? []; + } + + /// + /// Bulk WriteSecured — sequential MXAccess WriteSecured per entry. + /// Credential-sensitive values must never reach logs; the client mirrors + /// the single-item WriteSecured redaction contract. + /// + public async Task> WriteSecuredBulkAsync( + int serverHandle, + IReadOnlyList entries, + CancellationToken cancellationToken = default) + { + ArgumentNullException.ThrowIfNull(entries); + + WriteSecuredBulkCommand command = new() { ServerHandle = serverHandle }; + command.Entries.Add(entries); + + MxCommandReply reply = await InvokeCommandAsync( + new MxCommand + { + Kind = MxCommandKind.WriteSecuredBulk, + WriteSecuredBulk = command, + }, + cancellationToken) + .ConfigureAwait(false); + reply.EnsureProtocolSuccess().EnsureMxAccessSuccess(); + return reply.WriteSecuredBulk?.Results.ToArray() ?? []; + } + + /// Bulk WriteSecured2 — sequential MXAccess WriteSecured2 (timestamped) per entry. + public async Task> WriteSecured2BulkAsync( + int serverHandle, + IReadOnlyList entries, + CancellationToken cancellationToken = default) + { + ArgumentNullException.ThrowIfNull(entries); + + WriteSecured2BulkCommand command = new() { ServerHandle = serverHandle }; + command.Entries.Add(entries); + + MxCommandReply reply = await InvokeCommandAsync( + new MxCommand + { + Kind = MxCommandKind.WriteSecured2Bulk, + WriteSecured2Bulk = command, + }, + cancellationToken) + .ConfigureAwait(false); + reply.EnsureProtocolSuccess().EnsureMxAccessSuccess(); + return reply.WriteSecured2Bulk?.Results.ToArray() ?? []; + } + + /// + /// Bulk Read — snapshot the current value for each requested tag. + /// Returns the cached OnDataChange value when the tag is already advised + /// (was_cached = true), otherwise the worker takes the full AddItem + + /// Advise + wait + UnAdvise + RemoveItem snapshot lifecycle. Per-tag + /// failures (timeout, invalid tag) appear as BulkReadResult entries with + /// WasSuccessful = false; the call never throws on per-tag errors. + /// + public async Task> ReadBulkAsync( + int serverHandle, + IReadOnlyList tagAddresses, + TimeSpan timeout, + CancellationToken cancellationToken = default) + { + ArgumentNullException.ThrowIfNull(tagAddresses); + + ReadBulkCommand command = new() + { + ServerHandle = serverHandle, + TimeoutMs = timeout <= TimeSpan.Zero ? 0u : (uint)Math.Min(timeout.TotalMilliseconds, uint.MaxValue), + }; + command.TagAddresses.Add(tagAddresses); + + MxCommandReply reply = await InvokeCommandAsync( + new MxCommand + { + Kind = MxCommandKind.ReadBulk, + ReadBulk = command, + }, + cancellationToken) + .ConfigureAwait(false); + reply.EnsureProtocolSuccess().EnsureMxAccessSuccess(); + return reply.ReadBulk?.Results.ToArray() ?? []; + } + /// /// Writes a value to an item on the MXAccess server. /// diff --git a/clients/dotnet/README.md b/clients/dotnet/README.md index c4183f7..2a6e47f 100644 --- a/clients/dotnet/README.md +++ b/clients/dotnet/README.md @@ -84,6 +84,48 @@ messages. `MxGatewaySession.OpenSessionReply` keeps the raw session-open reply available, and command helpers have `*RawAsync` variants when callers need the complete `MxCommandReply`. +### Bulk Commands + +The session exposes bulk variants for every command family that has one +upstream — they all carry a list of entries in one gRPC round-trip, the worker +runs the per-item MXAccess calls sequentially on its STA, and the reply +returns one result per requested entry. Per-entry failures populate +`WasSuccessful = false` with the underlying HRESULT and never throw; only +protocol-level failures throw via `EnsureProtocolSuccess`. + +```csharp +// Subscribe + Unsubscribe to a batch of tags in one round-trip +IReadOnlyList subResults = await session.SubscribeBulkAsync( + serverHandle, + new[] { "Area001.Pump001.Speed", "Area001.Pump001.RunHours" }); +int[] itemHandles = subResults.Where(r => r.WasSuccessful).Select(r => r.ItemHandle).ToArray(); +await session.UnsubscribeBulkAsync(serverHandle, itemHandles); + +// Bulk Write — sequential MXAccess Write per entry. +IReadOnlyList writeResults = await session.WriteBulkAsync( + serverHandle, + new[] + { + new WriteBulkEntry { ItemHandle = h1, UserId = 0, Value = 1.0.ToMxValue() }, + new WriteBulkEntry { ItemHandle = h2, UserId = 0, Value = 2.0.ToMxValue() }, + }); +foreach (BulkWriteResult r in writeResults.Where(r => !r.WasSuccessful)) +{ + Console.Error.WriteLine($"item {r.ItemHandle}: {r.ErrorMessage}"); +} + +// Bulk Read — returns the cached OnDataChange value when the tag is already +// advised (was_cached = true) or takes a one-shot snapshot otherwise. +IReadOnlyList readResults = await session.ReadBulkAsync( + serverHandle, + new[] { "Area001.Pump001.Speed", "Area001.Pump002.Speed" }, + timeout: TimeSpan.FromMilliseconds(750)); +``` + +`Write2BulkAsync`, `WriteSecuredBulkAsync`, and `WriteSecured2BulkAsync` follow +the same shape; the secured variants additionally carry `CurrentUserId` and +`VerifierUserId` per entry and require `invoke:secure` scope. + `MxGatewaySession.CloseAsync` is explicit and idempotent. Repeated calls return the first `CloseSessionReply` instead of sending another close request. diff --git a/clients/go/README.md b/clients/go/README.md index 5b0783d..534cf86 100644 --- a/clients/go/README.md +++ b/clients/go/README.md @@ -76,7 +76,16 @@ client, err := mxgateway.Dial(ctx, mxgateway.Options{ ``` `Client.OpenSession` returns a `Session` with helpers for `Register`, -`AddItem`, `AddItem2`, `Advise`, `Write`, `Events`, and `Close`. Prefer +`AddItem`, `AddItem2`, `Advise`, `Write`, the full bulk family +(`AddItemBulk`, `AdviseItemBulk`, `RemoveItemBulk`, `UnAdviseItemBulk`, +`SubscribeBulk`, `UnsubscribeBulk`, `WriteBulk`, `Write2Bulk`, +`WriteSecuredBulk`, `WriteSecured2Bulk`, `ReadBulk`), `Events`, and +`Close`. Bulk variants carry a list of entries in one round-trip and +return one result per entry; per-entry MXAccess failures appear as +`was_successful = false` and never return as Go errors. `ReadBulk` accepts +a `time.Duration` per-tag timeout and returns cached `OnDataChange` +values when the tag is already advised (`WasCached = true`) without +touching the existing subscription. Prefer `SubscribeEvents` or `SubscribeEventsAfter` for long-running streams because the returned subscription owns cancellation and exposes `Close` for deterministic goroutine cleanup. `Events` and `EventsAfter` are a compatibility shim with a diff --git a/clients/go/internal/generated/mxaccess_gateway.pb.go b/clients/go/internal/generated/mxaccess_gateway.pb.go index fca5085..ca5bb70 100644 --- a/clients/go/internal/generated/mxaccess_gateway.pb.go +++ b/clients/go/internal/generated/mxaccess_gateway.pb.go @@ -51,6 +51,16 @@ const ( MxCommandKind_MX_COMMAND_KIND_UN_ADVISE_ITEM_BULK MxCommandKind = 22 MxCommandKind_MX_COMMAND_KIND_SUBSCRIBE_BULK MxCommandKind = 23 MxCommandKind_MX_COMMAND_KIND_UNSUBSCRIBE_BULK MxCommandKind = 24 + MxCommandKind_MX_COMMAND_KIND_SUBSCRIBE_ALARMS MxCommandKind = 25 + MxCommandKind_MX_COMMAND_KIND_UNSUBSCRIBE_ALARMS MxCommandKind = 26 + MxCommandKind_MX_COMMAND_KIND_ACKNOWLEDGE_ALARM MxCommandKind = 27 + MxCommandKind_MX_COMMAND_KIND_QUERY_ACTIVE_ALARMS MxCommandKind = 28 + MxCommandKind_MX_COMMAND_KIND_ACKNOWLEDGE_ALARM_BY_NAME MxCommandKind = 29 + MxCommandKind_MX_COMMAND_KIND_WRITE_BULK MxCommandKind = 30 + MxCommandKind_MX_COMMAND_KIND_WRITE2_BULK MxCommandKind = 31 + MxCommandKind_MX_COMMAND_KIND_WRITE_SECURED_BULK MxCommandKind = 32 + MxCommandKind_MX_COMMAND_KIND_WRITE_SECURED2_BULK MxCommandKind = 33 + MxCommandKind_MX_COMMAND_KIND_READ_BULK MxCommandKind = 34 MxCommandKind_MX_COMMAND_KIND_PING MxCommandKind = 100 MxCommandKind_MX_COMMAND_KIND_GET_SESSION_STATE MxCommandKind = 101 MxCommandKind_MX_COMMAND_KIND_GET_WORKER_INFO MxCommandKind = 102 @@ -86,6 +96,16 @@ var ( 22: "MX_COMMAND_KIND_UN_ADVISE_ITEM_BULK", 23: "MX_COMMAND_KIND_SUBSCRIBE_BULK", 24: "MX_COMMAND_KIND_UNSUBSCRIBE_BULK", + 25: "MX_COMMAND_KIND_SUBSCRIBE_ALARMS", + 26: "MX_COMMAND_KIND_UNSUBSCRIBE_ALARMS", + 27: "MX_COMMAND_KIND_ACKNOWLEDGE_ALARM", + 28: "MX_COMMAND_KIND_QUERY_ACTIVE_ALARMS", + 29: "MX_COMMAND_KIND_ACKNOWLEDGE_ALARM_BY_NAME", + 30: "MX_COMMAND_KIND_WRITE_BULK", + 31: "MX_COMMAND_KIND_WRITE2_BULK", + 32: "MX_COMMAND_KIND_WRITE_SECURED_BULK", + 33: "MX_COMMAND_KIND_WRITE_SECURED2_BULK", + 34: "MX_COMMAND_KIND_READ_BULK", 100: "MX_COMMAND_KIND_PING", 101: "MX_COMMAND_KIND_GET_SESSION_STATE", 102: "MX_COMMAND_KIND_GET_WORKER_INFO", @@ -118,6 +138,16 @@ var ( "MX_COMMAND_KIND_UN_ADVISE_ITEM_BULK": 22, "MX_COMMAND_KIND_SUBSCRIBE_BULK": 23, "MX_COMMAND_KIND_UNSUBSCRIBE_BULK": 24, + "MX_COMMAND_KIND_SUBSCRIBE_ALARMS": 25, + "MX_COMMAND_KIND_UNSUBSCRIBE_ALARMS": 26, + "MX_COMMAND_KIND_ACKNOWLEDGE_ALARM": 27, + "MX_COMMAND_KIND_QUERY_ACTIVE_ALARMS": 28, + "MX_COMMAND_KIND_ACKNOWLEDGE_ALARM_BY_NAME": 29, + "MX_COMMAND_KIND_WRITE_BULK": 30, + "MX_COMMAND_KIND_WRITE2_BULK": 31, + "MX_COMMAND_KIND_WRITE_SECURED_BULK": 32, + "MX_COMMAND_KIND_WRITE_SECURED2_BULK": 33, + "MX_COMMAND_KIND_READ_BULK": 34, "MX_COMMAND_KIND_PING": 100, "MX_COMMAND_KIND_GET_SESSION_STATE": 101, "MX_COMMAND_KIND_GET_WORKER_INFO": 102, @@ -1119,6 +1149,16 @@ type MxCommand struct { // *MxCommand_UnAdviseItemBulk // *MxCommand_SubscribeBulk // *MxCommand_UnsubscribeBulk + // *MxCommand_SubscribeAlarms + // *MxCommand_UnsubscribeAlarms + // *MxCommand_AcknowledgeAlarmCommand + // *MxCommand_QueryActiveAlarmsCommand + // *MxCommand_AcknowledgeAlarmByNameCommand + // *MxCommand_WriteBulk + // *MxCommand_Write2Bulk + // *MxCommand_WriteSecuredBulk + // *MxCommand_WriteSecured2Bulk + // *MxCommand_ReadBulk // *MxCommand_Ping // *MxCommand_GetSessionState // *MxCommand_GetWorkerInfo @@ -1389,6 +1429,96 @@ func (x *MxCommand) GetUnsubscribeBulk() *UnsubscribeBulkCommand { return nil } +func (x *MxCommand) GetSubscribeAlarms() *SubscribeAlarmsCommand { + if x != nil { + if x, ok := x.Payload.(*MxCommand_SubscribeAlarms); ok { + return x.SubscribeAlarms + } + } + return nil +} + +func (x *MxCommand) GetUnsubscribeAlarms() *UnsubscribeAlarmsCommand { + if x != nil { + if x, ok := x.Payload.(*MxCommand_UnsubscribeAlarms); ok { + return x.UnsubscribeAlarms + } + } + return nil +} + +func (x *MxCommand) GetAcknowledgeAlarmCommand() *AcknowledgeAlarmCommand { + if x != nil { + if x, ok := x.Payload.(*MxCommand_AcknowledgeAlarmCommand); ok { + return x.AcknowledgeAlarmCommand + } + } + return nil +} + +func (x *MxCommand) GetQueryActiveAlarmsCommand() *QueryActiveAlarmsCommand { + if x != nil { + if x, ok := x.Payload.(*MxCommand_QueryActiveAlarmsCommand); ok { + return x.QueryActiveAlarmsCommand + } + } + return nil +} + +func (x *MxCommand) GetAcknowledgeAlarmByNameCommand() *AcknowledgeAlarmByNameCommand { + if x != nil { + if x, ok := x.Payload.(*MxCommand_AcknowledgeAlarmByNameCommand); ok { + return x.AcknowledgeAlarmByNameCommand + } + } + return nil +} + +func (x *MxCommand) GetWriteBulk() *WriteBulkCommand { + if x != nil { + if x, ok := x.Payload.(*MxCommand_WriteBulk); ok { + return x.WriteBulk + } + } + return nil +} + +func (x *MxCommand) GetWrite2Bulk() *Write2BulkCommand { + if x != nil { + if x, ok := x.Payload.(*MxCommand_Write2Bulk); ok { + return x.Write2Bulk + } + } + return nil +} + +func (x *MxCommand) GetWriteSecuredBulk() *WriteSecuredBulkCommand { + if x != nil { + if x, ok := x.Payload.(*MxCommand_WriteSecuredBulk); ok { + return x.WriteSecuredBulk + } + } + return nil +} + +func (x *MxCommand) GetWriteSecured2Bulk() *WriteSecured2BulkCommand { + if x != nil { + if x, ok := x.Payload.(*MxCommand_WriteSecured2Bulk); ok { + return x.WriteSecured2Bulk + } + } + return nil +} + +func (x *MxCommand) GetReadBulk() *ReadBulkCommand { + if x != nil { + if x, ok := x.Payload.(*MxCommand_ReadBulk); ok { + return x.ReadBulk + } + } + return nil +} + func (x *MxCommand) GetPing() *PingCommand { if x != nil { if x, ok := x.Payload.(*MxCommand_Ping); ok { @@ -1534,6 +1664,46 @@ type MxCommand_UnsubscribeBulk struct { UnsubscribeBulk *UnsubscribeBulkCommand `protobuf:"bytes,33,opt,name=unsubscribe_bulk,json=unsubscribeBulk,proto3,oneof"` } +type MxCommand_SubscribeAlarms struct { + SubscribeAlarms *SubscribeAlarmsCommand `protobuf:"bytes,34,opt,name=subscribe_alarms,json=subscribeAlarms,proto3,oneof"` +} + +type MxCommand_UnsubscribeAlarms struct { + UnsubscribeAlarms *UnsubscribeAlarmsCommand `protobuf:"bytes,35,opt,name=unsubscribe_alarms,json=unsubscribeAlarms,proto3,oneof"` +} + +type MxCommand_AcknowledgeAlarmCommand struct { + AcknowledgeAlarmCommand *AcknowledgeAlarmCommand `protobuf:"bytes,36,opt,name=acknowledge_alarm_command,json=acknowledgeAlarmCommand,proto3,oneof"` +} + +type MxCommand_QueryActiveAlarmsCommand struct { + QueryActiveAlarmsCommand *QueryActiveAlarmsCommand `protobuf:"bytes,37,opt,name=query_active_alarms_command,json=queryActiveAlarmsCommand,proto3,oneof"` +} + +type MxCommand_AcknowledgeAlarmByNameCommand struct { + AcknowledgeAlarmByNameCommand *AcknowledgeAlarmByNameCommand `protobuf:"bytes,38,opt,name=acknowledge_alarm_by_name_command,json=acknowledgeAlarmByNameCommand,proto3,oneof"` +} + +type MxCommand_WriteBulk struct { + WriteBulk *WriteBulkCommand `protobuf:"bytes,39,opt,name=write_bulk,json=writeBulk,proto3,oneof"` +} + +type MxCommand_Write2Bulk struct { + Write2Bulk *Write2BulkCommand `protobuf:"bytes,40,opt,name=write2_bulk,json=write2Bulk,proto3,oneof"` +} + +type MxCommand_WriteSecuredBulk struct { + WriteSecuredBulk *WriteSecuredBulkCommand `protobuf:"bytes,41,opt,name=write_secured_bulk,json=writeSecuredBulk,proto3,oneof"` +} + +type MxCommand_WriteSecured2Bulk struct { + WriteSecured2Bulk *WriteSecured2BulkCommand `protobuf:"bytes,42,opt,name=write_secured2_bulk,json=writeSecured2Bulk,proto3,oneof"` +} + +type MxCommand_ReadBulk struct { + ReadBulk *ReadBulkCommand `protobuf:"bytes,43,opt,name=read_bulk,json=readBulk,proto3,oneof"` +} + type MxCommand_Ping struct { Ping *PingCommand `protobuf:"bytes,100,opt,name=ping,proto3,oneof"` } @@ -1602,6 +1772,26 @@ func (*MxCommand_SubscribeBulk) isMxCommand_Payload() {} func (*MxCommand_UnsubscribeBulk) isMxCommand_Payload() {} +func (*MxCommand_SubscribeAlarms) isMxCommand_Payload() {} + +func (*MxCommand_UnsubscribeAlarms) isMxCommand_Payload() {} + +func (*MxCommand_AcknowledgeAlarmCommand) isMxCommand_Payload() {} + +func (*MxCommand_QueryActiveAlarmsCommand) isMxCommand_Payload() {} + +func (*MxCommand_AcknowledgeAlarmByNameCommand) isMxCommand_Payload() {} + +func (*MxCommand_WriteBulk) isMxCommand_Payload() {} + +func (*MxCommand_Write2Bulk) isMxCommand_Payload() {} + +func (*MxCommand_WriteSecuredBulk) isMxCommand_Payload() {} + +func (*MxCommand_WriteSecured2Bulk) isMxCommand_Payload() {} + +func (*MxCommand_ReadBulk) isMxCommand_Payload() {} + func (*MxCommand_Ping) isMxCommand_Payload() {} func (*MxCommand_GetSessionState) isMxCommand_Payload() {} @@ -2918,6 +3108,340 @@ func (x *SubscribeBulkCommand) GetTagAddresses() []string { return nil } +// Subscribe the worker's alarm consumer to an AVEVA alarm provider. +// Subscription expression follows the canonical +// `\\\Galaxy!` format (literal "Galaxy" provider). The +// worker spins up a wnwrapConsumer-backed subscription on its STA on +// first call; subsequent calls are an error (use UnsubscribeAlarms then +// SubscribeAlarms to reconfigure). +type SubscribeAlarmsCommand struct { + state protoimpl.MessageState `protogen:"open.v1"` + SubscriptionExpression string `protobuf:"bytes,1,opt,name=subscription_expression,json=subscriptionExpression,proto3" json:"subscription_expression,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *SubscribeAlarmsCommand) Reset() { + *x = SubscribeAlarmsCommand{} + mi := &file_mxaccess_gateway_proto_msgTypes[30] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *SubscribeAlarmsCommand) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*SubscribeAlarmsCommand) ProtoMessage() {} + +func (x *SubscribeAlarmsCommand) ProtoReflect() protoreflect.Message { + mi := &file_mxaccess_gateway_proto_msgTypes[30] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use SubscribeAlarmsCommand.ProtoReflect.Descriptor instead. +func (*SubscribeAlarmsCommand) Descriptor() ([]byte, []int) { + return file_mxaccess_gateway_proto_rawDescGZIP(), []int{30} +} + +func (x *SubscribeAlarmsCommand) GetSubscriptionExpression() string { + if x != nil { + return x.SubscriptionExpression + } + return "" +} + +// Tear down the worker's alarm consumer. No-op if no subscription is +// currently active. +type UnsubscribeAlarmsCommand struct { + state protoimpl.MessageState `protogen:"open.v1"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *UnsubscribeAlarmsCommand) Reset() { + *x = UnsubscribeAlarmsCommand{} + mi := &file_mxaccess_gateway_proto_msgTypes[31] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *UnsubscribeAlarmsCommand) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*UnsubscribeAlarmsCommand) ProtoMessage() {} + +func (x *UnsubscribeAlarmsCommand) ProtoReflect() protoreflect.Message { + mi := &file_mxaccess_gateway_proto_msgTypes[31] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use UnsubscribeAlarmsCommand.ProtoReflect.Descriptor instead. +func (*UnsubscribeAlarmsCommand) Descriptor() ([]byte, []int) { + return file_mxaccess_gateway_proto_rawDescGZIP(), []int{31} +} + +// Acknowledge a single alarm by its GUID. Operator identity fields are +// recorded atomically with the ack transition in the alarm-history log. +// The reply's hresult / native_status surfaces AVEVA's +// AlarmAckByGUID return code. +type AcknowledgeAlarmCommand struct { + state protoimpl.MessageState `protogen:"open.v1"` + // Canonical 8-4-4-4-12 GUID string (e.g. "BCC47053-9542-4D65-BDAA-BCDEA6A32A73"). + AlarmGuid string `protobuf:"bytes,1,opt,name=alarm_guid,json=alarmGuid,proto3" json:"alarm_guid,omitempty"` + Comment string `protobuf:"bytes,2,opt,name=comment,proto3" json:"comment,omitempty"` + OperatorUser string `protobuf:"bytes,3,opt,name=operator_user,json=operatorUser,proto3" json:"operator_user,omitempty"` + OperatorNode string `protobuf:"bytes,4,opt,name=operator_node,json=operatorNode,proto3" json:"operator_node,omitempty"` + OperatorDomain string `protobuf:"bytes,5,opt,name=operator_domain,json=operatorDomain,proto3" json:"operator_domain,omitempty"` + OperatorFullName string `protobuf:"bytes,6,opt,name=operator_full_name,json=operatorFullName,proto3" json:"operator_full_name,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *AcknowledgeAlarmCommand) Reset() { + *x = AcknowledgeAlarmCommand{} + mi := &file_mxaccess_gateway_proto_msgTypes[32] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *AcknowledgeAlarmCommand) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*AcknowledgeAlarmCommand) ProtoMessage() {} + +func (x *AcknowledgeAlarmCommand) ProtoReflect() protoreflect.Message { + mi := &file_mxaccess_gateway_proto_msgTypes[32] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use AcknowledgeAlarmCommand.ProtoReflect.Descriptor instead. +func (*AcknowledgeAlarmCommand) Descriptor() ([]byte, []int) { + return file_mxaccess_gateway_proto_rawDescGZIP(), []int{32} +} + +func (x *AcknowledgeAlarmCommand) GetAlarmGuid() string { + if x != nil { + return x.AlarmGuid + } + return "" +} + +func (x *AcknowledgeAlarmCommand) GetComment() string { + if x != nil { + return x.Comment + } + return "" +} + +func (x *AcknowledgeAlarmCommand) GetOperatorUser() string { + if x != nil { + return x.OperatorUser + } + return "" +} + +func (x *AcknowledgeAlarmCommand) GetOperatorNode() string { + if x != nil { + return x.OperatorNode + } + return "" +} + +func (x *AcknowledgeAlarmCommand) GetOperatorDomain() string { + if x != nil { + return x.OperatorDomain + } + return "" +} + +func (x *AcknowledgeAlarmCommand) GetOperatorFullName() string { + if x != nil { + return x.OperatorFullName + } + return "" +} + +// Snapshot the currently-active alarm set. Optional filter prefix scopes +// the snapshot to alarms whose alarm_full_reference starts with the +// supplied string (matches QueryActiveAlarmsRequest.alarm_filter_prefix). +type QueryActiveAlarmsCommand struct { + state protoimpl.MessageState `protogen:"open.v1"` + AlarmFilterPrefix string `protobuf:"bytes,1,opt,name=alarm_filter_prefix,json=alarmFilterPrefix,proto3" json:"alarm_filter_prefix,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *QueryActiveAlarmsCommand) Reset() { + *x = QueryActiveAlarmsCommand{} + mi := &file_mxaccess_gateway_proto_msgTypes[33] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *QueryActiveAlarmsCommand) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*QueryActiveAlarmsCommand) ProtoMessage() {} + +func (x *QueryActiveAlarmsCommand) ProtoReflect() protoreflect.Message { + mi := &file_mxaccess_gateway_proto_msgTypes[33] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use QueryActiveAlarmsCommand.ProtoReflect.Descriptor instead. +func (*QueryActiveAlarmsCommand) Descriptor() ([]byte, []int) { + return file_mxaccess_gateway_proto_rawDescGZIP(), []int{33} +} + +func (x *QueryActiveAlarmsCommand) GetAlarmFilterPrefix() string { + if x != nil { + return x.AlarmFilterPrefix + } + return "" +} + +// Acknowledge a single alarm by its (name, provider, group) tuple. Used +// when the public RPC's AlarmFullReference (Provider!Group.Tag) cannot +// be resolved to a GUID directly. The worker invokes +// wwAlarmConsumerClass.AlarmAckByName which reaches the same alarm +// history path as AlarmAckByGUID. +type AcknowledgeAlarmByNameCommand struct { + state protoimpl.MessageState `protogen:"open.v1"` + // Tag/alarm name (e.g. "TestMachine_001.TestAlarm001"). Tag itself + // may contain dots; the gateway-side parser splits on the first dot + // after the '!' separator. + AlarmName string `protobuf:"bytes,1,opt,name=alarm_name,json=alarmName,proto3" json:"alarm_name,omitempty"` + // AVEVA alarm-provider name (literal "Galaxy" for ArchestrA Galaxies). + ProviderName string `protobuf:"bytes,2,opt,name=provider_name,json=providerName,proto3" json:"provider_name,omitempty"` + // Area/group name (e.g. "TestArea"). + GroupName string `protobuf:"bytes,3,opt,name=group_name,json=groupName,proto3" json:"group_name,omitempty"` + Comment string `protobuf:"bytes,4,opt,name=comment,proto3" json:"comment,omitempty"` + OperatorUser string `protobuf:"bytes,5,opt,name=operator_user,json=operatorUser,proto3" json:"operator_user,omitempty"` + OperatorNode string `protobuf:"bytes,6,opt,name=operator_node,json=operatorNode,proto3" json:"operator_node,omitempty"` + OperatorDomain string `protobuf:"bytes,7,opt,name=operator_domain,json=operatorDomain,proto3" json:"operator_domain,omitempty"` + OperatorFullName string `protobuf:"bytes,8,opt,name=operator_full_name,json=operatorFullName,proto3" json:"operator_full_name,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *AcknowledgeAlarmByNameCommand) Reset() { + *x = AcknowledgeAlarmByNameCommand{} + mi := &file_mxaccess_gateway_proto_msgTypes[34] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *AcknowledgeAlarmByNameCommand) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*AcknowledgeAlarmByNameCommand) ProtoMessage() {} + +func (x *AcknowledgeAlarmByNameCommand) ProtoReflect() protoreflect.Message { + mi := &file_mxaccess_gateway_proto_msgTypes[34] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use AcknowledgeAlarmByNameCommand.ProtoReflect.Descriptor instead. +func (*AcknowledgeAlarmByNameCommand) Descriptor() ([]byte, []int) { + return file_mxaccess_gateway_proto_rawDescGZIP(), []int{34} +} + +func (x *AcknowledgeAlarmByNameCommand) GetAlarmName() string { + if x != nil { + return x.AlarmName + } + return "" +} + +func (x *AcknowledgeAlarmByNameCommand) GetProviderName() string { + if x != nil { + return x.ProviderName + } + return "" +} + +func (x *AcknowledgeAlarmByNameCommand) GetGroupName() string { + if x != nil { + return x.GroupName + } + return "" +} + +func (x *AcknowledgeAlarmByNameCommand) GetComment() string { + if x != nil { + return x.Comment + } + return "" +} + +func (x *AcknowledgeAlarmByNameCommand) GetOperatorUser() string { + if x != nil { + return x.OperatorUser + } + return "" +} + +func (x *AcknowledgeAlarmByNameCommand) GetOperatorNode() string { + if x != nil { + return x.OperatorNode + } + return "" +} + +func (x *AcknowledgeAlarmByNameCommand) GetOperatorDomain() string { + if x != nil { + return x.OperatorDomain + } + return "" +} + +func (x *AcknowledgeAlarmByNameCommand) GetOperatorFullName() string { + if x != nil { + return x.OperatorFullName + } + return "" +} + type UnsubscribeBulkCommand struct { state protoimpl.MessageState `protogen:"open.v1"` ServerHandle int32 `protobuf:"varint,1,opt,name=server_handle,json=serverHandle,proto3" json:"server_handle,omitempty"` @@ -2928,7 +3452,7 @@ type UnsubscribeBulkCommand struct { func (x *UnsubscribeBulkCommand) Reset() { *x = UnsubscribeBulkCommand{} - mi := &file_mxaccess_gateway_proto_msgTypes[30] + mi := &file_mxaccess_gateway_proto_msgTypes[35] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2940,7 +3464,7 @@ func (x *UnsubscribeBulkCommand) String() string { func (*UnsubscribeBulkCommand) ProtoMessage() {} func (x *UnsubscribeBulkCommand) ProtoReflect() protoreflect.Message { - mi := &file_mxaccess_gateway_proto_msgTypes[30] + mi := &file_mxaccess_gateway_proto_msgTypes[35] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2953,7 +3477,7 @@ func (x *UnsubscribeBulkCommand) ProtoReflect() protoreflect.Message { // Deprecated: Use UnsubscribeBulkCommand.ProtoReflect.Descriptor instead. func (*UnsubscribeBulkCommand) Descriptor() ([]byte, []int) { - return file_mxaccess_gateway_proto_rawDescGZIP(), []int{30} + return file_mxaccess_gateway_proto_rawDescGZIP(), []int{35} } func (x *UnsubscribeBulkCommand) GetServerHandle() int32 { @@ -2970,6 +3494,569 @@ func (x *UnsubscribeBulkCommand) GetItemHandles() []int32 { return nil } +// Bulk Write — sequential MXAccess Write per entry, on the worker's STA. +// MXAccess has no native bulk write; each entry round-trips through the same +// single-item Write path the gateway uses today. Per-item failures appear as +// BulkWriteResult entries with `was_successful = false` and never throw. +type WriteBulkCommand struct { + state protoimpl.MessageState `protogen:"open.v1"` + ServerHandle int32 `protobuf:"varint,1,opt,name=server_handle,json=serverHandle,proto3" json:"server_handle,omitempty"` + Entries []*WriteBulkEntry `protobuf:"bytes,2,rep,name=entries,proto3" json:"entries,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *WriteBulkCommand) Reset() { + *x = WriteBulkCommand{} + mi := &file_mxaccess_gateway_proto_msgTypes[36] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *WriteBulkCommand) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*WriteBulkCommand) ProtoMessage() {} + +func (x *WriteBulkCommand) ProtoReflect() protoreflect.Message { + mi := &file_mxaccess_gateway_proto_msgTypes[36] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use WriteBulkCommand.ProtoReflect.Descriptor instead. +func (*WriteBulkCommand) Descriptor() ([]byte, []int) { + return file_mxaccess_gateway_proto_rawDescGZIP(), []int{36} +} + +func (x *WriteBulkCommand) GetServerHandle() int32 { + if x != nil { + return x.ServerHandle + } + return 0 +} + +func (x *WriteBulkCommand) GetEntries() []*WriteBulkEntry { + if x != nil { + return x.Entries + } + return nil +} + +type WriteBulkEntry struct { + state protoimpl.MessageState `protogen:"open.v1"` + ItemHandle int32 `protobuf:"varint,1,opt,name=item_handle,json=itemHandle,proto3" json:"item_handle,omitempty"` + Value *MxValue `protobuf:"bytes,2,opt,name=value,proto3" json:"value,omitempty"` + UserId int32 `protobuf:"varint,3,opt,name=user_id,json=userId,proto3" json:"user_id,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *WriteBulkEntry) Reset() { + *x = WriteBulkEntry{} + mi := &file_mxaccess_gateway_proto_msgTypes[37] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *WriteBulkEntry) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*WriteBulkEntry) ProtoMessage() {} + +func (x *WriteBulkEntry) ProtoReflect() protoreflect.Message { + mi := &file_mxaccess_gateway_proto_msgTypes[37] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use WriteBulkEntry.ProtoReflect.Descriptor instead. +func (*WriteBulkEntry) Descriptor() ([]byte, []int) { + return file_mxaccess_gateway_proto_rawDescGZIP(), []int{37} +} + +func (x *WriteBulkEntry) GetItemHandle() int32 { + if x != nil { + return x.ItemHandle + } + return 0 +} + +func (x *WriteBulkEntry) GetValue() *MxValue { + if x != nil { + return x.Value + } + return nil +} + +func (x *WriteBulkEntry) GetUserId() int32 { + if x != nil { + return x.UserId + } + return 0 +} + +// Bulk Write2 — sequential MXAccess Write2 (timestamped) per entry. +type Write2BulkCommand struct { + state protoimpl.MessageState `protogen:"open.v1"` + ServerHandle int32 `protobuf:"varint,1,opt,name=server_handle,json=serverHandle,proto3" json:"server_handle,omitempty"` + Entries []*Write2BulkEntry `protobuf:"bytes,2,rep,name=entries,proto3" json:"entries,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *Write2BulkCommand) Reset() { + *x = Write2BulkCommand{} + mi := &file_mxaccess_gateway_proto_msgTypes[38] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *Write2BulkCommand) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*Write2BulkCommand) ProtoMessage() {} + +func (x *Write2BulkCommand) ProtoReflect() protoreflect.Message { + mi := &file_mxaccess_gateway_proto_msgTypes[38] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use Write2BulkCommand.ProtoReflect.Descriptor instead. +func (*Write2BulkCommand) Descriptor() ([]byte, []int) { + return file_mxaccess_gateway_proto_rawDescGZIP(), []int{38} +} + +func (x *Write2BulkCommand) GetServerHandle() int32 { + if x != nil { + return x.ServerHandle + } + return 0 +} + +func (x *Write2BulkCommand) GetEntries() []*Write2BulkEntry { + if x != nil { + return x.Entries + } + return nil +} + +type Write2BulkEntry struct { + state protoimpl.MessageState `protogen:"open.v1"` + ItemHandle int32 `protobuf:"varint,1,opt,name=item_handle,json=itemHandle,proto3" json:"item_handle,omitempty"` + Value *MxValue `protobuf:"bytes,2,opt,name=value,proto3" json:"value,omitempty"` + TimestampValue *MxValue `protobuf:"bytes,3,opt,name=timestamp_value,json=timestampValue,proto3" json:"timestamp_value,omitempty"` + UserId int32 `protobuf:"varint,4,opt,name=user_id,json=userId,proto3" json:"user_id,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *Write2BulkEntry) Reset() { + *x = Write2BulkEntry{} + mi := &file_mxaccess_gateway_proto_msgTypes[39] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *Write2BulkEntry) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*Write2BulkEntry) ProtoMessage() {} + +func (x *Write2BulkEntry) ProtoReflect() protoreflect.Message { + mi := &file_mxaccess_gateway_proto_msgTypes[39] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use Write2BulkEntry.ProtoReflect.Descriptor instead. +func (*Write2BulkEntry) Descriptor() ([]byte, []int) { + return file_mxaccess_gateway_proto_rawDescGZIP(), []int{39} +} + +func (x *Write2BulkEntry) GetItemHandle() int32 { + if x != nil { + return x.ItemHandle + } + return 0 +} + +func (x *Write2BulkEntry) GetValue() *MxValue { + if x != nil { + return x.Value + } + return nil +} + +func (x *Write2BulkEntry) GetTimestampValue() *MxValue { + if x != nil { + return x.TimestampValue + } + return nil +} + +func (x *Write2BulkEntry) GetUserId() int32 { + if x != nil { + return x.UserId + } + return 0 +} + +// Bulk WriteSecured — sequential MXAccess WriteSecured per entry. +// Credential-sensitive values (`value`) MUST be kept out of logs, metrics +// labels, command lines, and diagnostics — same redaction rules as the +// single-item WriteSecured contract. +type WriteSecuredBulkCommand struct { + state protoimpl.MessageState `protogen:"open.v1"` + ServerHandle int32 `protobuf:"varint,1,opt,name=server_handle,json=serverHandle,proto3" json:"server_handle,omitempty"` + Entries []*WriteSecuredBulkEntry `protobuf:"bytes,2,rep,name=entries,proto3" json:"entries,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *WriteSecuredBulkCommand) Reset() { + *x = WriteSecuredBulkCommand{} + mi := &file_mxaccess_gateway_proto_msgTypes[40] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *WriteSecuredBulkCommand) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*WriteSecuredBulkCommand) ProtoMessage() {} + +func (x *WriteSecuredBulkCommand) ProtoReflect() protoreflect.Message { + mi := &file_mxaccess_gateway_proto_msgTypes[40] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use WriteSecuredBulkCommand.ProtoReflect.Descriptor instead. +func (*WriteSecuredBulkCommand) Descriptor() ([]byte, []int) { + return file_mxaccess_gateway_proto_rawDescGZIP(), []int{40} +} + +func (x *WriteSecuredBulkCommand) GetServerHandle() int32 { + if x != nil { + return x.ServerHandle + } + return 0 +} + +func (x *WriteSecuredBulkCommand) GetEntries() []*WriteSecuredBulkEntry { + if x != nil { + return x.Entries + } + return nil +} + +type WriteSecuredBulkEntry struct { + state protoimpl.MessageState `protogen:"open.v1"` + ItemHandle int32 `protobuf:"varint,1,opt,name=item_handle,json=itemHandle,proto3" json:"item_handle,omitempty"` + CurrentUserId int32 `protobuf:"varint,2,opt,name=current_user_id,json=currentUserId,proto3" json:"current_user_id,omitempty"` + VerifierUserId int32 `protobuf:"varint,3,opt,name=verifier_user_id,json=verifierUserId,proto3" json:"verifier_user_id,omitempty"` + Value *MxValue `protobuf:"bytes,4,opt,name=value,proto3" json:"value,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *WriteSecuredBulkEntry) Reset() { + *x = WriteSecuredBulkEntry{} + mi := &file_mxaccess_gateway_proto_msgTypes[41] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *WriteSecuredBulkEntry) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*WriteSecuredBulkEntry) ProtoMessage() {} + +func (x *WriteSecuredBulkEntry) ProtoReflect() protoreflect.Message { + mi := &file_mxaccess_gateway_proto_msgTypes[41] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use WriteSecuredBulkEntry.ProtoReflect.Descriptor instead. +func (*WriteSecuredBulkEntry) Descriptor() ([]byte, []int) { + return file_mxaccess_gateway_proto_rawDescGZIP(), []int{41} +} + +func (x *WriteSecuredBulkEntry) GetItemHandle() int32 { + if x != nil { + return x.ItemHandle + } + return 0 +} + +func (x *WriteSecuredBulkEntry) GetCurrentUserId() int32 { + if x != nil { + return x.CurrentUserId + } + return 0 +} + +func (x *WriteSecuredBulkEntry) GetVerifierUserId() int32 { + if x != nil { + return x.VerifierUserId + } + return 0 +} + +func (x *WriteSecuredBulkEntry) GetValue() *MxValue { + if x != nil { + return x.Value + } + return nil +} + +// Bulk WriteSecured2 — sequential MXAccess WriteSecured2 (timestamped) per +// entry. Same redaction rules apply. +type WriteSecured2BulkCommand struct { + state protoimpl.MessageState `protogen:"open.v1"` + ServerHandle int32 `protobuf:"varint,1,opt,name=server_handle,json=serverHandle,proto3" json:"server_handle,omitempty"` + Entries []*WriteSecured2BulkEntry `protobuf:"bytes,2,rep,name=entries,proto3" json:"entries,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *WriteSecured2BulkCommand) Reset() { + *x = WriteSecured2BulkCommand{} + mi := &file_mxaccess_gateway_proto_msgTypes[42] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *WriteSecured2BulkCommand) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*WriteSecured2BulkCommand) ProtoMessage() {} + +func (x *WriteSecured2BulkCommand) ProtoReflect() protoreflect.Message { + mi := &file_mxaccess_gateway_proto_msgTypes[42] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use WriteSecured2BulkCommand.ProtoReflect.Descriptor instead. +func (*WriteSecured2BulkCommand) Descriptor() ([]byte, []int) { + return file_mxaccess_gateway_proto_rawDescGZIP(), []int{42} +} + +func (x *WriteSecured2BulkCommand) GetServerHandle() int32 { + if x != nil { + return x.ServerHandle + } + return 0 +} + +func (x *WriteSecured2BulkCommand) GetEntries() []*WriteSecured2BulkEntry { + if x != nil { + return x.Entries + } + return nil +} + +type WriteSecured2BulkEntry struct { + state protoimpl.MessageState `protogen:"open.v1"` + ItemHandle int32 `protobuf:"varint,1,opt,name=item_handle,json=itemHandle,proto3" json:"item_handle,omitempty"` + CurrentUserId int32 `protobuf:"varint,2,opt,name=current_user_id,json=currentUserId,proto3" json:"current_user_id,omitempty"` + VerifierUserId int32 `protobuf:"varint,3,opt,name=verifier_user_id,json=verifierUserId,proto3" json:"verifier_user_id,omitempty"` + Value *MxValue `protobuf:"bytes,4,opt,name=value,proto3" json:"value,omitempty"` + TimestampValue *MxValue `protobuf:"bytes,5,opt,name=timestamp_value,json=timestampValue,proto3" json:"timestamp_value,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *WriteSecured2BulkEntry) Reset() { + *x = WriteSecured2BulkEntry{} + mi := &file_mxaccess_gateway_proto_msgTypes[43] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *WriteSecured2BulkEntry) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*WriteSecured2BulkEntry) ProtoMessage() {} + +func (x *WriteSecured2BulkEntry) ProtoReflect() protoreflect.Message { + mi := &file_mxaccess_gateway_proto_msgTypes[43] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use WriteSecured2BulkEntry.ProtoReflect.Descriptor instead. +func (*WriteSecured2BulkEntry) Descriptor() ([]byte, []int) { + return file_mxaccess_gateway_proto_rawDescGZIP(), []int{43} +} + +func (x *WriteSecured2BulkEntry) GetItemHandle() int32 { + if x != nil { + return x.ItemHandle + } + return 0 +} + +func (x *WriteSecured2BulkEntry) GetCurrentUserId() int32 { + if x != nil { + return x.CurrentUserId + } + return 0 +} + +func (x *WriteSecured2BulkEntry) GetVerifierUserId() int32 { + if x != nil { + return x.VerifierUserId + } + return 0 +} + +func (x *WriteSecured2BulkEntry) GetValue() *MxValue { + if x != nil { + return x.Value + } + return nil +} + +func (x *WriteSecured2BulkEntry) GetTimestampValue() *MxValue { + if x != nil { + return x.TimestampValue + } + return nil +} + +// Bulk Read — snapshot the current value for each requested tag. MXAccess COM +// has no synchronous Read; the worker implements ReadBulk as: +// - If the tag is already in the session's item registry AND that item is +// currently advised AND the worker has a cached OnDataChange for it, the +// reply returns the cached value WITHOUT modifying the existing +// subscription (was_cached = true). +// - Otherwise the worker takes the snapshot lifecycle itself: AddItem + +// Advise, wait up to `timeout_ms` for the first OnDataChange, then +// UnAdvise + RemoveItem before returning. The session is left exactly +// as it was before the call (was_cached = false). +// +// `timeout_ms == 0` uses the gateway-configured default (1000 ms). +type ReadBulkCommand struct { + state protoimpl.MessageState `protogen:"open.v1"` + ServerHandle int32 `protobuf:"varint,1,opt,name=server_handle,json=serverHandle,proto3" json:"server_handle,omitempty"` + TagAddresses []string `protobuf:"bytes,2,rep,name=tag_addresses,json=tagAddresses,proto3" json:"tag_addresses,omitempty"` + TimeoutMs uint32 `protobuf:"varint,3,opt,name=timeout_ms,json=timeoutMs,proto3" json:"timeout_ms,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *ReadBulkCommand) Reset() { + *x = ReadBulkCommand{} + mi := &file_mxaccess_gateway_proto_msgTypes[44] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *ReadBulkCommand) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ReadBulkCommand) ProtoMessage() {} + +func (x *ReadBulkCommand) ProtoReflect() protoreflect.Message { + mi := &file_mxaccess_gateway_proto_msgTypes[44] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use ReadBulkCommand.ProtoReflect.Descriptor instead. +func (*ReadBulkCommand) Descriptor() ([]byte, []int) { + return file_mxaccess_gateway_proto_rawDescGZIP(), []int{44} +} + +func (x *ReadBulkCommand) GetServerHandle() int32 { + if x != nil { + return x.ServerHandle + } + return 0 +} + +func (x *ReadBulkCommand) GetTagAddresses() []string { + if x != nil { + return x.TagAddresses + } + return nil +} + +func (x *ReadBulkCommand) GetTimeoutMs() uint32 { + if x != nil { + return x.TimeoutMs + } + return 0 +} + type PingCommand struct { state protoimpl.MessageState `protogen:"open.v1"` Message string `protobuf:"bytes,1,opt,name=message,proto3" json:"message,omitempty"` @@ -2979,7 +4066,7 @@ type PingCommand struct { func (x *PingCommand) Reset() { *x = PingCommand{} - mi := &file_mxaccess_gateway_proto_msgTypes[31] + mi := &file_mxaccess_gateway_proto_msgTypes[45] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2991,7 +4078,7 @@ func (x *PingCommand) String() string { func (*PingCommand) ProtoMessage() {} func (x *PingCommand) ProtoReflect() protoreflect.Message { - mi := &file_mxaccess_gateway_proto_msgTypes[31] + mi := &file_mxaccess_gateway_proto_msgTypes[45] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3004,7 +4091,7 @@ func (x *PingCommand) ProtoReflect() protoreflect.Message { // Deprecated: Use PingCommand.ProtoReflect.Descriptor instead. func (*PingCommand) Descriptor() ([]byte, []int) { - return file_mxaccess_gateway_proto_rawDescGZIP(), []int{31} + return file_mxaccess_gateway_proto_rawDescGZIP(), []int{45} } func (x *PingCommand) GetMessage() string { @@ -3022,7 +4109,7 @@ type GetSessionStateCommand struct { func (x *GetSessionStateCommand) Reset() { *x = GetSessionStateCommand{} - mi := &file_mxaccess_gateway_proto_msgTypes[32] + mi := &file_mxaccess_gateway_proto_msgTypes[46] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3034,7 +4121,7 @@ func (x *GetSessionStateCommand) String() string { func (*GetSessionStateCommand) ProtoMessage() {} func (x *GetSessionStateCommand) ProtoReflect() protoreflect.Message { - mi := &file_mxaccess_gateway_proto_msgTypes[32] + mi := &file_mxaccess_gateway_proto_msgTypes[46] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3047,7 +4134,7 @@ func (x *GetSessionStateCommand) ProtoReflect() protoreflect.Message { // Deprecated: Use GetSessionStateCommand.ProtoReflect.Descriptor instead. func (*GetSessionStateCommand) Descriptor() ([]byte, []int) { - return file_mxaccess_gateway_proto_rawDescGZIP(), []int{32} + return file_mxaccess_gateway_proto_rawDescGZIP(), []int{46} } type GetWorkerInfoCommand struct { @@ -3058,7 +4145,7 @@ type GetWorkerInfoCommand struct { func (x *GetWorkerInfoCommand) Reset() { *x = GetWorkerInfoCommand{} - mi := &file_mxaccess_gateway_proto_msgTypes[33] + mi := &file_mxaccess_gateway_proto_msgTypes[47] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3070,7 +4157,7 @@ func (x *GetWorkerInfoCommand) String() string { func (*GetWorkerInfoCommand) ProtoMessage() {} func (x *GetWorkerInfoCommand) ProtoReflect() protoreflect.Message { - mi := &file_mxaccess_gateway_proto_msgTypes[33] + mi := &file_mxaccess_gateway_proto_msgTypes[47] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3083,7 +4170,7 @@ func (x *GetWorkerInfoCommand) ProtoReflect() protoreflect.Message { // Deprecated: Use GetWorkerInfoCommand.ProtoReflect.Descriptor instead. func (*GetWorkerInfoCommand) Descriptor() ([]byte, []int) { - return file_mxaccess_gateway_proto_rawDescGZIP(), []int{33} + return file_mxaccess_gateway_proto_rawDescGZIP(), []int{47} } type DrainEventsCommand struct { @@ -3095,7 +4182,7 @@ type DrainEventsCommand struct { func (x *DrainEventsCommand) Reset() { *x = DrainEventsCommand{} - mi := &file_mxaccess_gateway_proto_msgTypes[34] + mi := &file_mxaccess_gateway_proto_msgTypes[48] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3107,7 +4194,7 @@ func (x *DrainEventsCommand) String() string { func (*DrainEventsCommand) ProtoMessage() {} func (x *DrainEventsCommand) ProtoReflect() protoreflect.Message { - mi := &file_mxaccess_gateway_proto_msgTypes[34] + mi := &file_mxaccess_gateway_proto_msgTypes[48] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3120,7 +4207,7 @@ func (x *DrainEventsCommand) ProtoReflect() protoreflect.Message { // Deprecated: Use DrainEventsCommand.ProtoReflect.Descriptor instead. func (*DrainEventsCommand) Descriptor() ([]byte, []int) { - return file_mxaccess_gateway_proto_rawDescGZIP(), []int{34} + return file_mxaccess_gateway_proto_rawDescGZIP(), []int{48} } func (x *DrainEventsCommand) GetMaxEvents() uint32 { @@ -3139,7 +4226,7 @@ type ShutdownWorkerCommand struct { func (x *ShutdownWorkerCommand) Reset() { *x = ShutdownWorkerCommand{} - mi := &file_mxaccess_gateway_proto_msgTypes[35] + mi := &file_mxaccess_gateway_proto_msgTypes[49] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3151,7 +4238,7 @@ func (x *ShutdownWorkerCommand) String() string { func (*ShutdownWorkerCommand) ProtoMessage() {} func (x *ShutdownWorkerCommand) ProtoReflect() protoreflect.Message { - mi := &file_mxaccess_gateway_proto_msgTypes[35] + mi := &file_mxaccess_gateway_proto_msgTypes[49] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3164,7 +4251,7 @@ func (x *ShutdownWorkerCommand) ProtoReflect() protoreflect.Message { // Deprecated: Use ShutdownWorkerCommand.ProtoReflect.Descriptor instead. func (*ShutdownWorkerCommand) Descriptor() ([]byte, []int) { - return file_mxaccess_gateway_proto_rawDescGZIP(), []int{35} + return file_mxaccess_gateway_proto_rawDescGZIP(), []int{49} } func (x *ShutdownWorkerCommand) GetGracePeriod() *durationpb.Duration { @@ -3203,6 +4290,13 @@ type MxCommandReply struct { // *MxCommandReply_UnAdviseItemBulk // *MxCommandReply_SubscribeBulk // *MxCommandReply_UnsubscribeBulk + // *MxCommandReply_AcknowledgeAlarm + // *MxCommandReply_QueryActiveAlarms + // *MxCommandReply_WriteBulk + // *MxCommandReply_Write2Bulk + // *MxCommandReply_WriteSecuredBulk + // *MxCommandReply_WriteSecured2Bulk + // *MxCommandReply_ReadBulk // *MxCommandReply_SessionState // *MxCommandReply_WorkerInfo // *MxCommandReply_DrainEvents @@ -3213,7 +4307,7 @@ type MxCommandReply struct { func (x *MxCommandReply) Reset() { *x = MxCommandReply{} - mi := &file_mxaccess_gateway_proto_msgTypes[36] + mi := &file_mxaccess_gateway_proto_msgTypes[50] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3225,7 +4319,7 @@ func (x *MxCommandReply) String() string { func (*MxCommandReply) ProtoMessage() {} func (x *MxCommandReply) ProtoReflect() protoreflect.Message { - mi := &file_mxaccess_gateway_proto_msgTypes[36] + mi := &file_mxaccess_gateway_proto_msgTypes[50] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3238,7 +4332,7 @@ func (x *MxCommandReply) ProtoReflect() protoreflect.Message { // Deprecated: Use MxCommandReply.ProtoReflect.Descriptor instead. func (*MxCommandReply) Descriptor() ([]byte, []int) { - return file_mxaccess_gateway_proto_rawDescGZIP(), []int{36} + return file_mxaccess_gateway_proto_rawDescGZIP(), []int{50} } func (x *MxCommandReply) GetSessionId() string { @@ -3430,6 +4524,69 @@ func (x *MxCommandReply) GetUnsubscribeBulk() *BulkSubscribeReply { return nil } +func (x *MxCommandReply) GetAcknowledgeAlarm() *AcknowledgeAlarmReplyPayload { + if x != nil { + if x, ok := x.Payload.(*MxCommandReply_AcknowledgeAlarm); ok { + return x.AcknowledgeAlarm + } + } + return nil +} + +func (x *MxCommandReply) GetQueryActiveAlarms() *QueryActiveAlarmsReplyPayload { + if x != nil { + if x, ok := x.Payload.(*MxCommandReply_QueryActiveAlarms); ok { + return x.QueryActiveAlarms + } + } + return nil +} + +func (x *MxCommandReply) GetWriteBulk() *BulkWriteReply { + if x != nil { + if x, ok := x.Payload.(*MxCommandReply_WriteBulk); ok { + return x.WriteBulk + } + } + return nil +} + +func (x *MxCommandReply) GetWrite2Bulk() *BulkWriteReply { + if x != nil { + if x, ok := x.Payload.(*MxCommandReply_Write2Bulk); ok { + return x.Write2Bulk + } + } + return nil +} + +func (x *MxCommandReply) GetWriteSecuredBulk() *BulkWriteReply { + if x != nil { + if x, ok := x.Payload.(*MxCommandReply_WriteSecuredBulk); ok { + return x.WriteSecuredBulk + } + } + return nil +} + +func (x *MxCommandReply) GetWriteSecured2Bulk() *BulkWriteReply { + if x != nil { + if x, ok := x.Payload.(*MxCommandReply_WriteSecured2Bulk); ok { + return x.WriteSecured2Bulk + } + } + return nil +} + +func (x *MxCommandReply) GetReadBulk() *BulkReadReply { + if x != nil { + if x, ok := x.Payload.(*MxCommandReply_ReadBulk); ok { + return x.ReadBulk + } + } + return nil +} + func (x *MxCommandReply) GetSessionState() *SessionStateReply { if x != nil { if x, ok := x.Payload.(*MxCommandReply_SessionState); ok { @@ -3517,6 +4674,43 @@ type MxCommandReply_UnsubscribeBulk struct { UnsubscribeBulk *BulkSubscribeReply `protobuf:"bytes,33,opt,name=unsubscribe_bulk,json=unsubscribeBulk,proto3,oneof"` } +type MxCommandReply_AcknowledgeAlarm struct { + // Reply payload for BOTH MX_COMMAND_KIND_ACKNOWLEDGE_ALARM (by GUID) + // and MX_COMMAND_KIND_ACKNOWLEDGE_ALARM_BY_NAME. There is intentionally + // no by-name-specific reply case: the by-name ack carries no outcome + // detail beyond the native ack return code, so the worker reuses this + // `acknowledge_alarm` payload for both command kinds (the worker's + // MxAccessCommandExecutor sets `acknowledge_alarm` for the by-name arm + // too). Consumers must dispatch on MxCommandReply.kind, not on the + // payload case, to tell the two acks apart. The top-level `hresult` + // mirrors AcknowledgeAlarmReplyPayload.native_status and is preferred. + AcknowledgeAlarm *AcknowledgeAlarmReplyPayload `protobuf:"bytes,34,opt,name=acknowledge_alarm,json=acknowledgeAlarm,proto3,oneof"` +} + +type MxCommandReply_QueryActiveAlarms struct { + QueryActiveAlarms *QueryActiveAlarmsReplyPayload `protobuf:"bytes,35,opt,name=query_active_alarms,json=queryActiveAlarms,proto3,oneof"` +} + +type MxCommandReply_WriteBulk struct { + WriteBulk *BulkWriteReply `protobuf:"bytes,36,opt,name=write_bulk,json=writeBulk,proto3,oneof"` +} + +type MxCommandReply_Write2Bulk struct { + Write2Bulk *BulkWriteReply `protobuf:"bytes,37,opt,name=write2_bulk,json=write2Bulk,proto3,oneof"` +} + +type MxCommandReply_WriteSecuredBulk struct { + WriteSecuredBulk *BulkWriteReply `protobuf:"bytes,38,opt,name=write_secured_bulk,json=writeSecuredBulk,proto3,oneof"` +} + +type MxCommandReply_WriteSecured2Bulk struct { + WriteSecured2Bulk *BulkWriteReply `protobuf:"bytes,39,opt,name=write_secured2_bulk,json=writeSecured2Bulk,proto3,oneof"` +} + +type MxCommandReply_ReadBulk struct { + ReadBulk *BulkReadReply `protobuf:"bytes,40,opt,name=read_bulk,json=readBulk,proto3,oneof"` +} + type MxCommandReply_SessionState struct { SessionState *SessionStateReply `protobuf:"bytes,100,opt,name=session_state,json=sessionState,proto3,oneof"` } @@ -3557,6 +4751,20 @@ func (*MxCommandReply_SubscribeBulk) isMxCommandReply_Payload() {} func (*MxCommandReply_UnsubscribeBulk) isMxCommandReply_Payload() {} +func (*MxCommandReply_AcknowledgeAlarm) isMxCommandReply_Payload() {} + +func (*MxCommandReply_QueryActiveAlarms) isMxCommandReply_Payload() {} + +func (*MxCommandReply_WriteBulk) isMxCommandReply_Payload() {} + +func (*MxCommandReply_Write2Bulk) isMxCommandReply_Payload() {} + +func (*MxCommandReply_WriteSecuredBulk) isMxCommandReply_Payload() {} + +func (*MxCommandReply_WriteSecured2Bulk) isMxCommandReply_Payload() {} + +func (*MxCommandReply_ReadBulk) isMxCommandReply_Payload() {} + func (*MxCommandReply_SessionState) isMxCommandReply_Payload() {} func (*MxCommandReply_WorkerInfo) isMxCommandReply_Payload() {} @@ -3572,7 +4780,7 @@ type RegisterReply struct { func (x *RegisterReply) Reset() { *x = RegisterReply{} - mi := &file_mxaccess_gateway_proto_msgTypes[37] + mi := &file_mxaccess_gateway_proto_msgTypes[51] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3584,7 +4792,7 @@ func (x *RegisterReply) String() string { func (*RegisterReply) ProtoMessage() {} func (x *RegisterReply) ProtoReflect() protoreflect.Message { - mi := &file_mxaccess_gateway_proto_msgTypes[37] + mi := &file_mxaccess_gateway_proto_msgTypes[51] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3597,7 +4805,7 @@ func (x *RegisterReply) ProtoReflect() protoreflect.Message { // Deprecated: Use RegisterReply.ProtoReflect.Descriptor instead. func (*RegisterReply) Descriptor() ([]byte, []int) { - return file_mxaccess_gateway_proto_rawDescGZIP(), []int{37} + return file_mxaccess_gateway_proto_rawDescGZIP(), []int{51} } func (x *RegisterReply) GetServerHandle() int32 { @@ -3616,7 +4824,7 @@ type AddItemReply struct { func (x *AddItemReply) Reset() { *x = AddItemReply{} - mi := &file_mxaccess_gateway_proto_msgTypes[38] + mi := &file_mxaccess_gateway_proto_msgTypes[52] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3628,7 +4836,7 @@ func (x *AddItemReply) String() string { func (*AddItemReply) ProtoMessage() {} func (x *AddItemReply) ProtoReflect() protoreflect.Message { - mi := &file_mxaccess_gateway_proto_msgTypes[38] + mi := &file_mxaccess_gateway_proto_msgTypes[52] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3641,7 +4849,7 @@ func (x *AddItemReply) ProtoReflect() protoreflect.Message { // Deprecated: Use AddItemReply.ProtoReflect.Descriptor instead. func (*AddItemReply) Descriptor() ([]byte, []int) { - return file_mxaccess_gateway_proto_rawDescGZIP(), []int{38} + return file_mxaccess_gateway_proto_rawDescGZIP(), []int{52} } func (x *AddItemReply) GetItemHandle() int32 { @@ -3660,7 +4868,7 @@ type AddItem2Reply struct { func (x *AddItem2Reply) Reset() { *x = AddItem2Reply{} - mi := &file_mxaccess_gateway_proto_msgTypes[39] + mi := &file_mxaccess_gateway_proto_msgTypes[53] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3672,7 +4880,7 @@ func (x *AddItem2Reply) String() string { func (*AddItem2Reply) ProtoMessage() {} func (x *AddItem2Reply) ProtoReflect() protoreflect.Message { - mi := &file_mxaccess_gateway_proto_msgTypes[39] + mi := &file_mxaccess_gateway_proto_msgTypes[53] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3685,7 +4893,7 @@ func (x *AddItem2Reply) ProtoReflect() protoreflect.Message { // Deprecated: Use AddItem2Reply.ProtoReflect.Descriptor instead. func (*AddItem2Reply) Descriptor() ([]byte, []int) { - return file_mxaccess_gateway_proto_rawDescGZIP(), []int{39} + return file_mxaccess_gateway_proto_rawDescGZIP(), []int{53} } func (x *AddItem2Reply) GetItemHandle() int32 { @@ -3704,7 +4912,7 @@ type AddBufferedItemReply struct { func (x *AddBufferedItemReply) Reset() { *x = AddBufferedItemReply{} - mi := &file_mxaccess_gateway_proto_msgTypes[40] + mi := &file_mxaccess_gateway_proto_msgTypes[54] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3716,7 +4924,7 @@ func (x *AddBufferedItemReply) String() string { func (*AddBufferedItemReply) ProtoMessage() {} func (x *AddBufferedItemReply) ProtoReflect() protoreflect.Message { - mi := &file_mxaccess_gateway_proto_msgTypes[40] + mi := &file_mxaccess_gateway_proto_msgTypes[54] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3729,7 +4937,7 @@ func (x *AddBufferedItemReply) ProtoReflect() protoreflect.Message { // Deprecated: Use AddBufferedItemReply.ProtoReflect.Descriptor instead. func (*AddBufferedItemReply) Descriptor() ([]byte, []int) { - return file_mxaccess_gateway_proto_rawDescGZIP(), []int{40} + return file_mxaccess_gateway_proto_rawDescGZIP(), []int{54} } func (x *AddBufferedItemReply) GetItemHandle() int32 { @@ -3748,7 +4956,7 @@ type SuspendReply struct { func (x *SuspendReply) Reset() { *x = SuspendReply{} - mi := &file_mxaccess_gateway_proto_msgTypes[41] + mi := &file_mxaccess_gateway_proto_msgTypes[55] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3760,7 +4968,7 @@ func (x *SuspendReply) String() string { func (*SuspendReply) ProtoMessage() {} func (x *SuspendReply) ProtoReflect() protoreflect.Message { - mi := &file_mxaccess_gateway_proto_msgTypes[41] + mi := &file_mxaccess_gateway_proto_msgTypes[55] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3773,7 +4981,7 @@ func (x *SuspendReply) ProtoReflect() protoreflect.Message { // Deprecated: Use SuspendReply.ProtoReflect.Descriptor instead. func (*SuspendReply) Descriptor() ([]byte, []int) { - return file_mxaccess_gateway_proto_rawDescGZIP(), []int{41} + return file_mxaccess_gateway_proto_rawDescGZIP(), []int{55} } func (x *SuspendReply) GetStatus() *MxStatusProxy { @@ -3792,7 +5000,7 @@ type ActivateReply struct { func (x *ActivateReply) Reset() { *x = ActivateReply{} - mi := &file_mxaccess_gateway_proto_msgTypes[42] + mi := &file_mxaccess_gateway_proto_msgTypes[56] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3804,7 +5012,7 @@ func (x *ActivateReply) String() string { func (*ActivateReply) ProtoMessage() {} func (x *ActivateReply) ProtoReflect() protoreflect.Message { - mi := &file_mxaccess_gateway_proto_msgTypes[42] + mi := &file_mxaccess_gateway_proto_msgTypes[56] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3817,7 +5025,7 @@ func (x *ActivateReply) ProtoReflect() protoreflect.Message { // Deprecated: Use ActivateReply.ProtoReflect.Descriptor instead. func (*ActivateReply) Descriptor() ([]byte, []int) { - return file_mxaccess_gateway_proto_rawDescGZIP(), []int{42} + return file_mxaccess_gateway_proto_rawDescGZIP(), []int{56} } func (x *ActivateReply) GetStatus() *MxStatusProxy { @@ -3836,7 +5044,7 @@ type AuthenticateUserReply struct { func (x *AuthenticateUserReply) Reset() { *x = AuthenticateUserReply{} - mi := &file_mxaccess_gateway_proto_msgTypes[43] + mi := &file_mxaccess_gateway_proto_msgTypes[57] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3848,7 +5056,7 @@ func (x *AuthenticateUserReply) String() string { func (*AuthenticateUserReply) ProtoMessage() {} func (x *AuthenticateUserReply) ProtoReflect() protoreflect.Message { - mi := &file_mxaccess_gateway_proto_msgTypes[43] + mi := &file_mxaccess_gateway_proto_msgTypes[57] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3861,7 +5069,7 @@ func (x *AuthenticateUserReply) ProtoReflect() protoreflect.Message { // Deprecated: Use AuthenticateUserReply.ProtoReflect.Descriptor instead. func (*AuthenticateUserReply) Descriptor() ([]byte, []int) { - return file_mxaccess_gateway_proto_rawDescGZIP(), []int{43} + return file_mxaccess_gateway_proto_rawDescGZIP(), []int{57} } func (x *AuthenticateUserReply) GetUserId() int32 { @@ -3880,7 +5088,7 @@ type ArchestrAUserToIdReply struct { func (x *ArchestrAUserToIdReply) Reset() { *x = ArchestrAUserToIdReply{} - mi := &file_mxaccess_gateway_proto_msgTypes[44] + mi := &file_mxaccess_gateway_proto_msgTypes[58] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3892,7 +5100,7 @@ func (x *ArchestrAUserToIdReply) String() string { func (*ArchestrAUserToIdReply) ProtoMessage() {} func (x *ArchestrAUserToIdReply) ProtoReflect() protoreflect.Message { - mi := &file_mxaccess_gateway_proto_msgTypes[44] + mi := &file_mxaccess_gateway_proto_msgTypes[58] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3905,7 +5113,7 @@ func (x *ArchestrAUserToIdReply) ProtoReflect() protoreflect.Message { // Deprecated: Use ArchestrAUserToIdReply.ProtoReflect.Descriptor instead. func (*ArchestrAUserToIdReply) Descriptor() ([]byte, []int) { - return file_mxaccess_gateway_proto_rawDescGZIP(), []int{44} + return file_mxaccess_gateway_proto_rawDescGZIP(), []int{58} } func (x *ArchestrAUserToIdReply) GetUserId() int32 { @@ -3928,7 +5136,7 @@ type SubscribeResult struct { func (x *SubscribeResult) Reset() { *x = SubscribeResult{} - mi := &file_mxaccess_gateway_proto_msgTypes[45] + mi := &file_mxaccess_gateway_proto_msgTypes[59] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3940,7 +5148,7 @@ func (x *SubscribeResult) String() string { func (*SubscribeResult) ProtoMessage() {} func (x *SubscribeResult) ProtoReflect() protoreflect.Message { - mi := &file_mxaccess_gateway_proto_msgTypes[45] + mi := &file_mxaccess_gateway_proto_msgTypes[59] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3953,7 +5161,7 @@ func (x *SubscribeResult) ProtoReflect() protoreflect.Message { // Deprecated: Use SubscribeResult.ProtoReflect.Descriptor instead. func (*SubscribeResult) Descriptor() ([]byte, []int) { - return file_mxaccess_gateway_proto_rawDescGZIP(), []int{45} + return file_mxaccess_gateway_proto_rawDescGZIP(), []int{59} } func (x *SubscribeResult) GetServerHandle() int32 { @@ -4000,7 +5208,7 @@ type BulkSubscribeReply struct { func (x *BulkSubscribeReply) Reset() { *x = BulkSubscribeReply{} - mi := &file_mxaccess_gateway_proto_msgTypes[46] + mi := &file_mxaccess_gateway_proto_msgTypes[60] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4012,7 +5220,7 @@ func (x *BulkSubscribeReply) String() string { func (*BulkSubscribeReply) ProtoMessage() {} func (x *BulkSubscribeReply) ProtoReflect() protoreflect.Message { - mi := &file_mxaccess_gateway_proto_msgTypes[46] + mi := &file_mxaccess_gateway_proto_msgTypes[60] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4025,7 +5233,7 @@ func (x *BulkSubscribeReply) ProtoReflect() protoreflect.Message { // Deprecated: Use BulkSubscribeReply.ProtoReflect.Descriptor instead. func (*BulkSubscribeReply) Descriptor() ([]byte, []int) { - return file_mxaccess_gateway_proto_rawDescGZIP(), []int{46} + return file_mxaccess_gateway_proto_rawDescGZIP(), []int{60} } func (x *BulkSubscribeReply) GetResults() []*SubscribeResult { @@ -4035,6 +5243,303 @@ func (x *BulkSubscribeReply) GetResults() []*SubscribeResult { return nil } +// Per-item result for the four bulk write families. `item_handle` mirrors the +// request entry's item_handle so callers can correlate inputs to outputs even +// when the gateway's tag-allowlist filter dropped some entries before reaching +// the worker. Per-item failures populate `error_message` + `hresult` and never +// raise — callers iterate and inspect each entry. +type BulkWriteResult struct { + state protoimpl.MessageState `protogen:"open.v1"` + ServerHandle int32 `protobuf:"varint,1,opt,name=server_handle,json=serverHandle,proto3" json:"server_handle,omitempty"` + ItemHandle int32 `protobuf:"varint,2,opt,name=item_handle,json=itemHandle,proto3" json:"item_handle,omitempty"` + WasSuccessful bool `protobuf:"varint,3,opt,name=was_successful,json=wasSuccessful,proto3" json:"was_successful,omitempty"` + Hresult *int32 `protobuf:"varint,4,opt,name=hresult,proto3,oneof" json:"hresult,omitempty"` + Statuses []*MxStatusProxy `protobuf:"bytes,5,rep,name=statuses,proto3" json:"statuses,omitempty"` + ErrorMessage string `protobuf:"bytes,6,opt,name=error_message,json=errorMessage,proto3" json:"error_message,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *BulkWriteResult) Reset() { + *x = BulkWriteResult{} + mi := &file_mxaccess_gateway_proto_msgTypes[61] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *BulkWriteResult) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*BulkWriteResult) ProtoMessage() {} + +func (x *BulkWriteResult) ProtoReflect() protoreflect.Message { + mi := &file_mxaccess_gateway_proto_msgTypes[61] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use BulkWriteResult.ProtoReflect.Descriptor instead. +func (*BulkWriteResult) Descriptor() ([]byte, []int) { + return file_mxaccess_gateway_proto_rawDescGZIP(), []int{61} +} + +func (x *BulkWriteResult) GetServerHandle() int32 { + if x != nil { + return x.ServerHandle + } + return 0 +} + +func (x *BulkWriteResult) GetItemHandle() int32 { + if x != nil { + return x.ItemHandle + } + return 0 +} + +func (x *BulkWriteResult) GetWasSuccessful() bool { + if x != nil { + return x.WasSuccessful + } + return false +} + +func (x *BulkWriteResult) GetHresult() int32 { + if x != nil && x.Hresult != nil { + return *x.Hresult + } + return 0 +} + +func (x *BulkWriteResult) GetStatuses() []*MxStatusProxy { + if x != nil { + return x.Statuses + } + return nil +} + +func (x *BulkWriteResult) GetErrorMessage() string { + if x != nil { + return x.ErrorMessage + } + return "" +} + +type BulkWriteReply struct { + state protoimpl.MessageState `protogen:"open.v1"` + Results []*BulkWriteResult `protobuf:"bytes,1,rep,name=results,proto3" json:"results,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *BulkWriteReply) Reset() { + *x = BulkWriteReply{} + mi := &file_mxaccess_gateway_proto_msgTypes[62] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *BulkWriteReply) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*BulkWriteReply) ProtoMessage() {} + +func (x *BulkWriteReply) ProtoReflect() protoreflect.Message { + mi := &file_mxaccess_gateway_proto_msgTypes[62] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use BulkWriteReply.ProtoReflect.Descriptor instead. +func (*BulkWriteReply) Descriptor() ([]byte, []int) { + return file_mxaccess_gateway_proto_rawDescGZIP(), []int{62} +} + +func (x *BulkWriteReply) GetResults() []*BulkWriteResult { + if x != nil { + return x.Results + } + return nil +} + +// Per-tag result for ReadBulk. `was_cached` is true when the value came from +// an existing live subscription's last OnDataChange (the worker did not touch +// the subscription); false when the worker took the AddItem + Advise + wait + +// UnAdvise + RemoveItem snapshot lifecycle itself. +type BulkReadResult struct { + state protoimpl.MessageState `protogen:"open.v1"` + ServerHandle int32 `protobuf:"varint,1,opt,name=server_handle,json=serverHandle,proto3" json:"server_handle,omitempty"` + TagAddress string `protobuf:"bytes,2,opt,name=tag_address,json=tagAddress,proto3" json:"tag_address,omitempty"` + ItemHandle int32 `protobuf:"varint,3,opt,name=item_handle,json=itemHandle,proto3" json:"item_handle,omitempty"` + WasSuccessful bool `protobuf:"varint,4,opt,name=was_successful,json=wasSuccessful,proto3" json:"was_successful,omitempty"` + WasCached bool `protobuf:"varint,5,opt,name=was_cached,json=wasCached,proto3" json:"was_cached,omitempty"` + Value *MxValue `protobuf:"bytes,6,opt,name=value,proto3" json:"value,omitempty"` + Quality int32 `protobuf:"varint,7,opt,name=quality,proto3" json:"quality,omitempty"` + SourceTimestamp *timestamppb.Timestamp `protobuf:"bytes,8,opt,name=source_timestamp,json=sourceTimestamp,proto3" json:"source_timestamp,omitempty"` + Statuses []*MxStatusProxy `protobuf:"bytes,9,rep,name=statuses,proto3" json:"statuses,omitempty"` + ErrorMessage string `protobuf:"bytes,10,opt,name=error_message,json=errorMessage,proto3" json:"error_message,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *BulkReadResult) Reset() { + *x = BulkReadResult{} + mi := &file_mxaccess_gateway_proto_msgTypes[63] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *BulkReadResult) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*BulkReadResult) ProtoMessage() {} + +func (x *BulkReadResult) ProtoReflect() protoreflect.Message { + mi := &file_mxaccess_gateway_proto_msgTypes[63] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use BulkReadResult.ProtoReflect.Descriptor instead. +func (*BulkReadResult) Descriptor() ([]byte, []int) { + return file_mxaccess_gateway_proto_rawDescGZIP(), []int{63} +} + +func (x *BulkReadResult) GetServerHandle() int32 { + if x != nil { + return x.ServerHandle + } + return 0 +} + +func (x *BulkReadResult) GetTagAddress() string { + if x != nil { + return x.TagAddress + } + return "" +} + +func (x *BulkReadResult) GetItemHandle() int32 { + if x != nil { + return x.ItemHandle + } + return 0 +} + +func (x *BulkReadResult) GetWasSuccessful() bool { + if x != nil { + return x.WasSuccessful + } + return false +} + +func (x *BulkReadResult) GetWasCached() bool { + if x != nil { + return x.WasCached + } + return false +} + +func (x *BulkReadResult) GetValue() *MxValue { + if x != nil { + return x.Value + } + return nil +} + +func (x *BulkReadResult) GetQuality() int32 { + if x != nil { + return x.Quality + } + return 0 +} + +func (x *BulkReadResult) GetSourceTimestamp() *timestamppb.Timestamp { + if x != nil { + return x.SourceTimestamp + } + return nil +} + +func (x *BulkReadResult) GetStatuses() []*MxStatusProxy { + if x != nil { + return x.Statuses + } + return nil +} + +func (x *BulkReadResult) GetErrorMessage() string { + if x != nil { + return x.ErrorMessage + } + return "" +} + +type BulkReadReply struct { + state protoimpl.MessageState `protogen:"open.v1"` + Results []*BulkReadResult `protobuf:"bytes,1,rep,name=results,proto3" json:"results,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *BulkReadReply) Reset() { + *x = BulkReadReply{} + mi := &file_mxaccess_gateway_proto_msgTypes[64] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *BulkReadReply) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*BulkReadReply) ProtoMessage() {} + +func (x *BulkReadReply) ProtoReflect() protoreflect.Message { + mi := &file_mxaccess_gateway_proto_msgTypes[64] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use BulkReadReply.ProtoReflect.Descriptor instead. +func (*BulkReadReply) Descriptor() ([]byte, []int) { + return file_mxaccess_gateway_proto_rawDescGZIP(), []int{64} +} + +func (x *BulkReadReply) GetResults() []*BulkReadResult { + if x != nil { + return x.Results + } + return nil +} + type SessionStateReply struct { state protoimpl.MessageState `protogen:"open.v1"` State SessionState `protobuf:"varint,1,opt,name=state,proto3,enum=mxaccess_gateway.v1.SessionState" json:"state,omitempty"` @@ -4044,7 +5549,7 @@ type SessionStateReply struct { func (x *SessionStateReply) Reset() { *x = SessionStateReply{} - mi := &file_mxaccess_gateway_proto_msgTypes[47] + mi := &file_mxaccess_gateway_proto_msgTypes[65] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4056,7 +5561,7 @@ func (x *SessionStateReply) String() string { func (*SessionStateReply) ProtoMessage() {} func (x *SessionStateReply) ProtoReflect() protoreflect.Message { - mi := &file_mxaccess_gateway_proto_msgTypes[47] + mi := &file_mxaccess_gateway_proto_msgTypes[65] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4069,7 +5574,7 @@ func (x *SessionStateReply) ProtoReflect() protoreflect.Message { // Deprecated: Use SessionStateReply.ProtoReflect.Descriptor instead. func (*SessionStateReply) Descriptor() ([]byte, []int) { - return file_mxaccess_gateway_proto_rawDescGZIP(), []int{47} + return file_mxaccess_gateway_proto_rawDescGZIP(), []int{65} } func (x *SessionStateReply) GetState() SessionState { @@ -4091,7 +5596,7 @@ type WorkerInfoReply struct { func (x *WorkerInfoReply) Reset() { *x = WorkerInfoReply{} - mi := &file_mxaccess_gateway_proto_msgTypes[48] + mi := &file_mxaccess_gateway_proto_msgTypes[66] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4103,7 +5608,7 @@ func (x *WorkerInfoReply) String() string { func (*WorkerInfoReply) ProtoMessage() {} func (x *WorkerInfoReply) ProtoReflect() protoreflect.Message { - mi := &file_mxaccess_gateway_proto_msgTypes[48] + mi := &file_mxaccess_gateway_proto_msgTypes[66] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4116,7 +5621,7 @@ func (x *WorkerInfoReply) ProtoReflect() protoreflect.Message { // Deprecated: Use WorkerInfoReply.ProtoReflect.Descriptor instead. func (*WorkerInfoReply) Descriptor() ([]byte, []int) { - return file_mxaccess_gateway_proto_rawDescGZIP(), []int{48} + return file_mxaccess_gateway_proto_rawDescGZIP(), []int{66} } func (x *WorkerInfoReply) GetWorkerProcessId() int32 { @@ -4156,7 +5661,7 @@ type DrainEventsReply struct { func (x *DrainEventsReply) Reset() { *x = DrainEventsReply{} - mi := &file_mxaccess_gateway_proto_msgTypes[49] + mi := &file_mxaccess_gateway_proto_msgTypes[67] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4168,7 +5673,7 @@ func (x *DrainEventsReply) String() string { func (*DrainEventsReply) ProtoMessage() {} func (x *DrainEventsReply) ProtoReflect() protoreflect.Message { - mi := &file_mxaccess_gateway_proto_msgTypes[49] + mi := &file_mxaccess_gateway_proto_msgTypes[67] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4181,7 +5686,7 @@ func (x *DrainEventsReply) ProtoReflect() protoreflect.Message { // Deprecated: Use DrainEventsReply.ProtoReflect.Descriptor instead. func (*DrainEventsReply) Descriptor() ([]byte, []int) { - return file_mxaccess_gateway_proto_rawDescGZIP(), []int{49} + return file_mxaccess_gateway_proto_rawDescGZIP(), []int{67} } func (x *DrainEventsReply) GetEvents() []*MxEvent { @@ -4191,6 +5696,108 @@ func (x *DrainEventsReply) GetEvents() []*MxEvent { return nil } +// Reply payload for AcknowledgeAlarmCommand AND +// AcknowledgeAlarmByNameCommand — both ack command kinds reuse this +// payload case (`MxCommandReply.acknowledge_alarm`); there is no +// dedicated by-name reply case. Surfaces AVEVA's native ack return +// code (AlarmAckByGUID for the GUID arm, AlarmAckByName for the +// by-name arm); 0 means success. The MxCommandReply's hresult field +// carries the same value and is preferred for protocol consumers — +// this payload exists so the gateway-side WorkerAlarmRpcDispatcher +// can echo native_status into AcknowledgeAlarmReply.hresult without +// unpacking the outer envelope. +type AcknowledgeAlarmReplyPayload struct { + state protoimpl.MessageState `protogen:"open.v1"` + NativeStatus int32 `protobuf:"varint,1,opt,name=native_status,json=nativeStatus,proto3" json:"native_status,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *AcknowledgeAlarmReplyPayload) Reset() { + *x = AcknowledgeAlarmReplyPayload{} + mi := &file_mxaccess_gateway_proto_msgTypes[68] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *AcknowledgeAlarmReplyPayload) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*AcknowledgeAlarmReplyPayload) ProtoMessage() {} + +func (x *AcknowledgeAlarmReplyPayload) ProtoReflect() protoreflect.Message { + mi := &file_mxaccess_gateway_proto_msgTypes[68] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use AcknowledgeAlarmReplyPayload.ProtoReflect.Descriptor instead. +func (*AcknowledgeAlarmReplyPayload) Descriptor() ([]byte, []int) { + return file_mxaccess_gateway_proto_rawDescGZIP(), []int{68} +} + +func (x *AcknowledgeAlarmReplyPayload) GetNativeStatus() int32 { + if x != nil { + return x.NativeStatus + } + return 0 +} + +// Reply payload for QueryActiveAlarmsCommand. The worker walks +// IMxAccessAlarmConsumer.SnapshotActiveAlarms and packs each record as +// an ActiveAlarmSnapshot proto for the gateway-side ConditionRefresh +// stream. +type QueryActiveAlarmsReplyPayload struct { + state protoimpl.MessageState `protogen:"open.v1"` + Snapshots []*ActiveAlarmSnapshot `protobuf:"bytes,1,rep,name=snapshots,proto3" json:"snapshots,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *QueryActiveAlarmsReplyPayload) Reset() { + *x = QueryActiveAlarmsReplyPayload{} + mi := &file_mxaccess_gateway_proto_msgTypes[69] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *QueryActiveAlarmsReplyPayload) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*QueryActiveAlarmsReplyPayload) ProtoMessage() {} + +func (x *QueryActiveAlarmsReplyPayload) ProtoReflect() protoreflect.Message { + mi := &file_mxaccess_gateway_proto_msgTypes[69] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use QueryActiveAlarmsReplyPayload.ProtoReflect.Descriptor instead. +func (*QueryActiveAlarmsReplyPayload) Descriptor() ([]byte, []int) { + return file_mxaccess_gateway_proto_rawDescGZIP(), []int{69} +} + +func (x *QueryActiveAlarmsReplyPayload) GetSnapshots() []*ActiveAlarmSnapshot { + if x != nil { + return x.Snapshots + } + return nil +} + type MxEvent struct { state protoimpl.MessageState `protogen:"open.v1"` Family MxEventFamily `protobuf:"varint,1,opt,name=family,proto3,enum=mxaccess_gateway.v1.MxEventFamily" json:"family,omitempty"` @@ -4220,7 +5827,7 @@ type MxEvent struct { func (x *MxEvent) Reset() { *x = MxEvent{} - mi := &file_mxaccess_gateway_proto_msgTypes[50] + mi := &file_mxaccess_gateway_proto_msgTypes[70] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4232,7 +5839,7 @@ func (x *MxEvent) String() string { func (*MxEvent) ProtoMessage() {} func (x *MxEvent) ProtoReflect() protoreflect.Message { - mi := &file_mxaccess_gateway_proto_msgTypes[50] + mi := &file_mxaccess_gateway_proto_msgTypes[70] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4245,7 +5852,7 @@ func (x *MxEvent) ProtoReflect() protoreflect.Message { // Deprecated: Use MxEvent.ProtoReflect.Descriptor instead. func (*MxEvent) Descriptor() ([]byte, []int) { - return file_mxaccess_gateway_proto_rawDescGZIP(), []int{50} + return file_mxaccess_gateway_proto_rawDescGZIP(), []int{70} } func (x *MxEvent) GetFamily() MxEventFamily { @@ -4433,7 +6040,7 @@ type OnDataChangeEvent struct { func (x *OnDataChangeEvent) Reset() { *x = OnDataChangeEvent{} - mi := &file_mxaccess_gateway_proto_msgTypes[51] + mi := &file_mxaccess_gateway_proto_msgTypes[71] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4445,7 +6052,7 @@ func (x *OnDataChangeEvent) String() string { func (*OnDataChangeEvent) ProtoMessage() {} func (x *OnDataChangeEvent) ProtoReflect() protoreflect.Message { - mi := &file_mxaccess_gateway_proto_msgTypes[51] + mi := &file_mxaccess_gateway_proto_msgTypes[71] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4458,7 +6065,7 @@ func (x *OnDataChangeEvent) ProtoReflect() protoreflect.Message { // Deprecated: Use OnDataChangeEvent.ProtoReflect.Descriptor instead. func (*OnDataChangeEvent) Descriptor() ([]byte, []int) { - return file_mxaccess_gateway_proto_rawDescGZIP(), []int{51} + return file_mxaccess_gateway_proto_rawDescGZIP(), []int{71} } type OnWriteCompleteEvent struct { @@ -4469,7 +6076,7 @@ type OnWriteCompleteEvent struct { func (x *OnWriteCompleteEvent) Reset() { *x = OnWriteCompleteEvent{} - mi := &file_mxaccess_gateway_proto_msgTypes[52] + mi := &file_mxaccess_gateway_proto_msgTypes[72] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4481,7 +6088,7 @@ func (x *OnWriteCompleteEvent) String() string { func (*OnWriteCompleteEvent) ProtoMessage() {} func (x *OnWriteCompleteEvent) ProtoReflect() protoreflect.Message { - mi := &file_mxaccess_gateway_proto_msgTypes[52] + mi := &file_mxaccess_gateway_proto_msgTypes[72] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4494,7 +6101,7 @@ func (x *OnWriteCompleteEvent) ProtoReflect() protoreflect.Message { // Deprecated: Use OnWriteCompleteEvent.ProtoReflect.Descriptor instead. func (*OnWriteCompleteEvent) Descriptor() ([]byte, []int) { - return file_mxaccess_gateway_proto_rawDescGZIP(), []int{52} + return file_mxaccess_gateway_proto_rawDescGZIP(), []int{72} } type OperationCompleteEvent struct { @@ -4505,7 +6112,7 @@ type OperationCompleteEvent struct { func (x *OperationCompleteEvent) Reset() { *x = OperationCompleteEvent{} - mi := &file_mxaccess_gateway_proto_msgTypes[53] + mi := &file_mxaccess_gateway_proto_msgTypes[73] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4517,7 +6124,7 @@ func (x *OperationCompleteEvent) String() string { func (*OperationCompleteEvent) ProtoMessage() {} func (x *OperationCompleteEvent) ProtoReflect() protoreflect.Message { - mi := &file_mxaccess_gateway_proto_msgTypes[53] + mi := &file_mxaccess_gateway_proto_msgTypes[73] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4530,7 +6137,7 @@ func (x *OperationCompleteEvent) ProtoReflect() protoreflect.Message { // Deprecated: Use OperationCompleteEvent.ProtoReflect.Descriptor instead. func (*OperationCompleteEvent) Descriptor() ([]byte, []int) { - return file_mxaccess_gateway_proto_rawDescGZIP(), []int{53} + return file_mxaccess_gateway_proto_rawDescGZIP(), []int{73} } type OnBufferedDataChangeEvent struct { @@ -4545,7 +6152,7 @@ type OnBufferedDataChangeEvent struct { func (x *OnBufferedDataChangeEvent) Reset() { *x = OnBufferedDataChangeEvent{} - mi := &file_mxaccess_gateway_proto_msgTypes[54] + mi := &file_mxaccess_gateway_proto_msgTypes[74] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4557,7 +6164,7 @@ func (x *OnBufferedDataChangeEvent) String() string { func (*OnBufferedDataChangeEvent) ProtoMessage() {} func (x *OnBufferedDataChangeEvent) ProtoReflect() protoreflect.Message { - mi := &file_mxaccess_gateway_proto_msgTypes[54] + mi := &file_mxaccess_gateway_proto_msgTypes[74] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4570,7 +6177,7 @@ func (x *OnBufferedDataChangeEvent) ProtoReflect() protoreflect.Message { // Deprecated: Use OnBufferedDataChangeEvent.ProtoReflect.Descriptor instead. func (*OnBufferedDataChangeEvent) Descriptor() ([]byte, []int) { - return file_mxaccess_gateway_proto_rawDescGZIP(), []int{54} + return file_mxaccess_gateway_proto_rawDescGZIP(), []int{74} } func (x *OnBufferedDataChangeEvent) GetDataType() MxDataType { @@ -4652,7 +6259,7 @@ type OnAlarmTransitionEvent struct { func (x *OnAlarmTransitionEvent) Reset() { *x = OnAlarmTransitionEvent{} - mi := &file_mxaccess_gateway_proto_msgTypes[55] + mi := &file_mxaccess_gateway_proto_msgTypes[75] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4664,7 +6271,7 @@ func (x *OnAlarmTransitionEvent) String() string { func (*OnAlarmTransitionEvent) ProtoMessage() {} func (x *OnAlarmTransitionEvent) ProtoReflect() protoreflect.Message { - mi := &file_mxaccess_gateway_proto_msgTypes[55] + mi := &file_mxaccess_gateway_proto_msgTypes[75] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4677,7 +6284,7 @@ func (x *OnAlarmTransitionEvent) ProtoReflect() protoreflect.Message { // Deprecated: Use OnAlarmTransitionEvent.ProtoReflect.Descriptor instead. func (*OnAlarmTransitionEvent) Descriptor() ([]byte, []int) { - return file_mxaccess_gateway_proto_rawDescGZIP(), []int{55} + return file_mxaccess_gateway_proto_rawDescGZIP(), []int{75} } func (x *OnAlarmTransitionEvent) GetAlarmFullReference() string { @@ -4800,7 +6407,7 @@ type ActiveAlarmSnapshot struct { func (x *ActiveAlarmSnapshot) Reset() { *x = ActiveAlarmSnapshot{} - mi := &file_mxaccess_gateway_proto_msgTypes[56] + mi := &file_mxaccess_gateway_proto_msgTypes[76] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4812,7 +6419,7 @@ func (x *ActiveAlarmSnapshot) String() string { func (*ActiveAlarmSnapshot) ProtoMessage() {} func (x *ActiveAlarmSnapshot) ProtoReflect() protoreflect.Message { - mi := &file_mxaccess_gateway_proto_msgTypes[56] + mi := &file_mxaccess_gateway_proto_msgTypes[76] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4825,7 +6432,7 @@ func (x *ActiveAlarmSnapshot) ProtoReflect() protoreflect.Message { // Deprecated: Use ActiveAlarmSnapshot.ProtoReflect.Descriptor instead. func (*ActiveAlarmSnapshot) Descriptor() ([]byte, []int) { - return file_mxaccess_gateway_proto_rawDescGZIP(), []int{56} + return file_mxaccess_gateway_proto_rawDescGZIP(), []int{76} } func (x *ActiveAlarmSnapshot) GetAlarmFullReference() string { @@ -4936,7 +6543,7 @@ type AcknowledgeAlarmRequest struct { func (x *AcknowledgeAlarmRequest) Reset() { *x = AcknowledgeAlarmRequest{} - mi := &file_mxaccess_gateway_proto_msgTypes[57] + mi := &file_mxaccess_gateway_proto_msgTypes[77] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4948,7 +6555,7 @@ func (x *AcknowledgeAlarmRequest) String() string { func (*AcknowledgeAlarmRequest) ProtoMessage() {} func (x *AcknowledgeAlarmRequest) ProtoReflect() protoreflect.Message { - mi := &file_mxaccess_gateway_proto_msgTypes[57] + mi := &file_mxaccess_gateway_proto_msgTypes[77] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4961,7 +6568,7 @@ func (x *AcknowledgeAlarmRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use AcknowledgeAlarmRequest.ProtoReflect.Descriptor instead. func (*AcknowledgeAlarmRequest) Descriptor() ([]byte, []int) { - return file_mxaccess_gateway_proto_rawDescGZIP(), []int{57} + return file_mxaccess_gateway_proto_rawDescGZIP(), []int{77} } func (x *AcknowledgeAlarmRequest) GetSessionId() string { @@ -5004,9 +6611,18 @@ type AcknowledgeAlarmReply struct { SessionId string `protobuf:"bytes,1,opt,name=session_id,json=sessionId,proto3" json:"session_id,omitempty"` CorrelationId string `protobuf:"bytes,2,opt,name=correlation_id,json=correlationId,proto3" json:"correlation_id,omitempty"` ProtocolStatus *ProtocolStatus `protobuf:"bytes,3,opt,name=protocol_status,json=protocolStatus,proto3" json:"protocol_status,omitempty"` - // HRESULT captured from MXAccess if the ack failed at the COM layer. + // Native ack return code echoed from the worker. The worker carries the + // ack outcome as a single int32 (AcknowledgeAlarmReplyPayload.native_status, + // = AlarmAckByName / AlarmAckByGUID return code; 0 = success); the gateway's + // WorkerAlarmRpcDispatcher copies that value here. This is the authoritative + // ack-outcome field for the public RPC. Absent only when the worker reply + // omitted the value entirely (a protocol violation). Hresult *int32 `protobuf:"varint,4,opt,name=hresult,proto3,oneof" json:"hresult,omitempty"` - // Native MxAccess status describing the outcome of the ack. + // Reserved for a structured MxStatusProxy view of the ack outcome. The + // worker by-name/by-GUID ack path produces only the int32 return code + // (see `hresult`), so the current gateway leaves this field UNSET on every + // reply. Clients must read `hresult` (and `protocol_status`) for the ack + // result and must not depend on `status` being populated. Status *MxStatusProxy `protobuf:"bytes,5,opt,name=status,proto3" json:"status,omitempty"` DiagnosticMessage string `protobuf:"bytes,6,opt,name=diagnostic_message,json=diagnosticMessage,proto3" json:"diagnostic_message,omitempty"` unknownFields protoimpl.UnknownFields @@ -5015,7 +6631,7 @@ type AcknowledgeAlarmReply struct { func (x *AcknowledgeAlarmReply) Reset() { *x = AcknowledgeAlarmReply{} - mi := &file_mxaccess_gateway_proto_msgTypes[58] + mi := &file_mxaccess_gateway_proto_msgTypes[78] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -5027,7 +6643,7 @@ func (x *AcknowledgeAlarmReply) String() string { func (*AcknowledgeAlarmReply) ProtoMessage() {} func (x *AcknowledgeAlarmReply) ProtoReflect() protoreflect.Message { - mi := &file_mxaccess_gateway_proto_msgTypes[58] + mi := &file_mxaccess_gateway_proto_msgTypes[78] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -5040,7 +6656,7 @@ func (x *AcknowledgeAlarmReply) ProtoReflect() protoreflect.Message { // Deprecated: Use AcknowledgeAlarmReply.ProtoReflect.Descriptor instead. func (*AcknowledgeAlarmReply) Descriptor() ([]byte, []int) { - return file_mxaccess_gateway_proto_rawDescGZIP(), []int{58} + return file_mxaccess_gateway_proto_rawDescGZIP(), []int{78} } func (x *AcknowledgeAlarmReply) GetSessionId() string { @@ -5098,7 +6714,7 @@ type QueryActiveAlarmsRequest struct { func (x *QueryActiveAlarmsRequest) Reset() { *x = QueryActiveAlarmsRequest{} - mi := &file_mxaccess_gateway_proto_msgTypes[59] + mi := &file_mxaccess_gateway_proto_msgTypes[79] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -5110,7 +6726,7 @@ func (x *QueryActiveAlarmsRequest) String() string { func (*QueryActiveAlarmsRequest) ProtoMessage() {} func (x *QueryActiveAlarmsRequest) ProtoReflect() protoreflect.Message { - mi := &file_mxaccess_gateway_proto_msgTypes[59] + mi := &file_mxaccess_gateway_proto_msgTypes[79] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -5123,7 +6739,7 @@ func (x *QueryActiveAlarmsRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use QueryActiveAlarmsRequest.ProtoReflect.Descriptor instead. func (*QueryActiveAlarmsRequest) Descriptor() ([]byte, []int) { - return file_mxaccess_gateway_proto_rawDescGZIP(), []int{59} + return file_mxaccess_gateway_proto_rawDescGZIP(), []int{79} } func (x *QueryActiveAlarmsRequest) GetSessionId() string { @@ -5148,21 +6764,30 @@ func (x *QueryActiveAlarmsRequest) GetAlarmFilterPrefix() string { } type MxStatusProxy struct { - state protoimpl.MessageState `protogen:"open.v1"` - Success int32 `protobuf:"varint,1,opt,name=success,proto3" json:"success,omitempty"` - Category MxStatusCategory `protobuf:"varint,2,opt,name=category,proto3,enum=mxaccess_gateway.v1.MxStatusCategory" json:"category,omitempty"` - DetectedBy MxStatusSource `protobuf:"varint,3,opt,name=detected_by,json=detectedBy,proto3,enum=mxaccess_gateway.v1.MxStatusSource" json:"detected_by,omitempty"` - Detail int32 `protobuf:"varint,4,opt,name=detail,proto3" json:"detail,omitempty"` - RawCategory int32 `protobuf:"varint,5,opt,name=raw_category,json=rawCategory,proto3" json:"raw_category,omitempty"` - RawDetectedBy int32 `protobuf:"varint,6,opt,name=raw_detected_by,json=rawDetectedBy,proto3" json:"raw_detected_by,omitempty"` - DiagnosticText string `protobuf:"bytes,7,opt,name=diagnostic_text,json=diagnosticText,proto3" json:"diagnostic_text,omitempty"` + state protoimpl.MessageState `protogen:"open.v1"` + // Mirrors the `success` member of the MXAccess MXSTATUS_PROXY struct + // (a 16-bit signed value in the COM struct, widened to int32 on the + // wire). Despite the name it is NOT a boolean — it is the raw numeric + // indicator the worker reads off the COM struct without reinterpretation. + // It is carried verbatim for diagnostics; the authoritative success/ + // failure of the operation is `category` (MX_STATUS_CATEGORY_OK marks + // success), with `detail`, `diagnostic_text`, `raw_category`, and + // `raw_detected_by` describing any non-OK outcome. Clients should branch + // on `category`, not on a specific `success` value. + Success int32 `protobuf:"varint,1,opt,name=success,proto3" json:"success,omitempty"` + Category MxStatusCategory `protobuf:"varint,2,opt,name=category,proto3,enum=mxaccess_gateway.v1.MxStatusCategory" json:"category,omitempty"` + DetectedBy MxStatusSource `protobuf:"varint,3,opt,name=detected_by,json=detectedBy,proto3,enum=mxaccess_gateway.v1.MxStatusSource" json:"detected_by,omitempty"` + Detail int32 `protobuf:"varint,4,opt,name=detail,proto3" json:"detail,omitempty"` + RawCategory int32 `protobuf:"varint,5,opt,name=raw_category,json=rawCategory,proto3" json:"raw_category,omitempty"` + RawDetectedBy int32 `protobuf:"varint,6,opt,name=raw_detected_by,json=rawDetectedBy,proto3" json:"raw_detected_by,omitempty"` + DiagnosticText string `protobuf:"bytes,7,opt,name=diagnostic_text,json=diagnosticText,proto3" json:"diagnostic_text,omitempty"` unknownFields protoimpl.UnknownFields sizeCache protoimpl.SizeCache } func (x *MxStatusProxy) Reset() { *x = MxStatusProxy{} - mi := &file_mxaccess_gateway_proto_msgTypes[60] + mi := &file_mxaccess_gateway_proto_msgTypes[80] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -5174,7 +6799,7 @@ func (x *MxStatusProxy) String() string { func (*MxStatusProxy) ProtoMessage() {} func (x *MxStatusProxy) ProtoReflect() protoreflect.Message { - mi := &file_mxaccess_gateway_proto_msgTypes[60] + mi := &file_mxaccess_gateway_proto_msgTypes[80] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -5187,7 +6812,7 @@ func (x *MxStatusProxy) ProtoReflect() protoreflect.Message { // Deprecated: Use MxStatusProxy.ProtoReflect.Descriptor instead. func (*MxStatusProxy) Descriptor() ([]byte, []int) { - return file_mxaccess_gateway_proto_rawDescGZIP(), []int{60} + return file_mxaccess_gateway_proto_rawDescGZIP(), []int{80} } func (x *MxStatusProxy) GetSuccess() int32 { @@ -5264,7 +6889,7 @@ type MxValue struct { func (x *MxValue) Reset() { *x = MxValue{} - mi := &file_mxaccess_gateway_proto_msgTypes[61] + mi := &file_mxaccess_gateway_proto_msgTypes[81] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -5276,7 +6901,7 @@ func (x *MxValue) String() string { func (*MxValue) ProtoMessage() {} func (x *MxValue) ProtoReflect() protoreflect.Message { - mi := &file_mxaccess_gateway_proto_msgTypes[61] + mi := &file_mxaccess_gateway_proto_msgTypes[81] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -5289,7 +6914,7 @@ func (x *MxValue) ProtoReflect() protoreflect.Message { // Deprecated: Use MxValue.ProtoReflect.Descriptor instead. func (*MxValue) Descriptor() ([]byte, []int) { - return file_mxaccess_gateway_proto_rawDescGZIP(), []int{61} + return file_mxaccess_gateway_proto_rawDescGZIP(), []int{81} } func (x *MxValue) GetDataType() MxDataType { @@ -5497,7 +7122,7 @@ type MxArray struct { func (x *MxArray) Reset() { *x = MxArray{} - mi := &file_mxaccess_gateway_proto_msgTypes[62] + mi := &file_mxaccess_gateway_proto_msgTypes[82] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -5509,7 +7134,7 @@ func (x *MxArray) String() string { func (*MxArray) ProtoMessage() {} func (x *MxArray) ProtoReflect() protoreflect.Message { - mi := &file_mxaccess_gateway_proto_msgTypes[62] + mi := &file_mxaccess_gateway_proto_msgTypes[82] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -5522,7 +7147,7 @@ func (x *MxArray) ProtoReflect() protoreflect.Message { // Deprecated: Use MxArray.ProtoReflect.Descriptor instead. func (*MxArray) Descriptor() ([]byte, []int) { - return file_mxaccess_gateway_proto_rawDescGZIP(), []int{62} + return file_mxaccess_gateway_proto_rawDescGZIP(), []int{82} } func (x *MxArray) GetElementDataType() MxDataType { @@ -5700,7 +7325,7 @@ type BoolArray struct { func (x *BoolArray) Reset() { *x = BoolArray{} - mi := &file_mxaccess_gateway_proto_msgTypes[63] + mi := &file_mxaccess_gateway_proto_msgTypes[83] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -5712,7 +7337,7 @@ func (x *BoolArray) String() string { func (*BoolArray) ProtoMessage() {} func (x *BoolArray) ProtoReflect() protoreflect.Message { - mi := &file_mxaccess_gateway_proto_msgTypes[63] + mi := &file_mxaccess_gateway_proto_msgTypes[83] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -5725,7 +7350,7 @@ func (x *BoolArray) ProtoReflect() protoreflect.Message { // Deprecated: Use BoolArray.ProtoReflect.Descriptor instead. func (*BoolArray) Descriptor() ([]byte, []int) { - return file_mxaccess_gateway_proto_rawDescGZIP(), []int{63} + return file_mxaccess_gateway_proto_rawDescGZIP(), []int{83} } func (x *BoolArray) GetValues() []bool { @@ -5744,7 +7369,7 @@ type Int32Array struct { func (x *Int32Array) Reset() { *x = Int32Array{} - mi := &file_mxaccess_gateway_proto_msgTypes[64] + mi := &file_mxaccess_gateway_proto_msgTypes[84] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -5756,7 +7381,7 @@ func (x *Int32Array) String() string { func (*Int32Array) ProtoMessage() {} func (x *Int32Array) ProtoReflect() protoreflect.Message { - mi := &file_mxaccess_gateway_proto_msgTypes[64] + mi := &file_mxaccess_gateway_proto_msgTypes[84] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -5769,7 +7394,7 @@ func (x *Int32Array) ProtoReflect() protoreflect.Message { // Deprecated: Use Int32Array.ProtoReflect.Descriptor instead. func (*Int32Array) Descriptor() ([]byte, []int) { - return file_mxaccess_gateway_proto_rawDescGZIP(), []int{64} + return file_mxaccess_gateway_proto_rawDescGZIP(), []int{84} } func (x *Int32Array) GetValues() []int32 { @@ -5788,7 +7413,7 @@ type Int64Array struct { func (x *Int64Array) Reset() { *x = Int64Array{} - mi := &file_mxaccess_gateway_proto_msgTypes[65] + mi := &file_mxaccess_gateway_proto_msgTypes[85] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -5800,7 +7425,7 @@ func (x *Int64Array) String() string { func (*Int64Array) ProtoMessage() {} func (x *Int64Array) ProtoReflect() protoreflect.Message { - mi := &file_mxaccess_gateway_proto_msgTypes[65] + mi := &file_mxaccess_gateway_proto_msgTypes[85] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -5813,7 +7438,7 @@ func (x *Int64Array) ProtoReflect() protoreflect.Message { // Deprecated: Use Int64Array.ProtoReflect.Descriptor instead. func (*Int64Array) Descriptor() ([]byte, []int) { - return file_mxaccess_gateway_proto_rawDescGZIP(), []int{65} + return file_mxaccess_gateway_proto_rawDescGZIP(), []int{85} } func (x *Int64Array) GetValues() []int64 { @@ -5832,7 +7457,7 @@ type FloatArray struct { func (x *FloatArray) Reset() { *x = FloatArray{} - mi := &file_mxaccess_gateway_proto_msgTypes[66] + mi := &file_mxaccess_gateway_proto_msgTypes[86] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -5844,7 +7469,7 @@ func (x *FloatArray) String() string { func (*FloatArray) ProtoMessage() {} func (x *FloatArray) ProtoReflect() protoreflect.Message { - mi := &file_mxaccess_gateway_proto_msgTypes[66] + mi := &file_mxaccess_gateway_proto_msgTypes[86] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -5857,7 +7482,7 @@ func (x *FloatArray) ProtoReflect() protoreflect.Message { // Deprecated: Use FloatArray.ProtoReflect.Descriptor instead. func (*FloatArray) Descriptor() ([]byte, []int) { - return file_mxaccess_gateway_proto_rawDescGZIP(), []int{66} + return file_mxaccess_gateway_proto_rawDescGZIP(), []int{86} } func (x *FloatArray) GetValues() []float32 { @@ -5876,7 +7501,7 @@ type DoubleArray struct { func (x *DoubleArray) Reset() { *x = DoubleArray{} - mi := &file_mxaccess_gateway_proto_msgTypes[67] + mi := &file_mxaccess_gateway_proto_msgTypes[87] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -5888,7 +7513,7 @@ func (x *DoubleArray) String() string { func (*DoubleArray) ProtoMessage() {} func (x *DoubleArray) ProtoReflect() protoreflect.Message { - mi := &file_mxaccess_gateway_proto_msgTypes[67] + mi := &file_mxaccess_gateway_proto_msgTypes[87] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -5901,7 +7526,7 @@ func (x *DoubleArray) ProtoReflect() protoreflect.Message { // Deprecated: Use DoubleArray.ProtoReflect.Descriptor instead. func (*DoubleArray) Descriptor() ([]byte, []int) { - return file_mxaccess_gateway_proto_rawDescGZIP(), []int{67} + return file_mxaccess_gateway_proto_rawDescGZIP(), []int{87} } func (x *DoubleArray) GetValues() []float64 { @@ -5920,7 +7545,7 @@ type StringArray struct { func (x *StringArray) Reset() { *x = StringArray{} - mi := &file_mxaccess_gateway_proto_msgTypes[68] + mi := &file_mxaccess_gateway_proto_msgTypes[88] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -5932,7 +7557,7 @@ func (x *StringArray) String() string { func (*StringArray) ProtoMessage() {} func (x *StringArray) ProtoReflect() protoreflect.Message { - mi := &file_mxaccess_gateway_proto_msgTypes[68] + mi := &file_mxaccess_gateway_proto_msgTypes[88] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -5945,7 +7570,7 @@ func (x *StringArray) ProtoReflect() protoreflect.Message { // Deprecated: Use StringArray.ProtoReflect.Descriptor instead. func (*StringArray) Descriptor() ([]byte, []int) { - return file_mxaccess_gateway_proto_rawDescGZIP(), []int{68} + return file_mxaccess_gateway_proto_rawDescGZIP(), []int{88} } func (x *StringArray) GetValues() []string { @@ -5964,7 +7589,7 @@ type TimestampArray struct { func (x *TimestampArray) Reset() { *x = TimestampArray{} - mi := &file_mxaccess_gateway_proto_msgTypes[69] + mi := &file_mxaccess_gateway_proto_msgTypes[89] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -5976,7 +7601,7 @@ func (x *TimestampArray) String() string { func (*TimestampArray) ProtoMessage() {} func (x *TimestampArray) ProtoReflect() protoreflect.Message { - mi := &file_mxaccess_gateway_proto_msgTypes[69] + mi := &file_mxaccess_gateway_proto_msgTypes[89] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -5989,7 +7614,7 @@ func (x *TimestampArray) ProtoReflect() protoreflect.Message { // Deprecated: Use TimestampArray.ProtoReflect.Descriptor instead. func (*TimestampArray) Descriptor() ([]byte, []int) { - return file_mxaccess_gateway_proto_rawDescGZIP(), []int{69} + return file_mxaccess_gateway_proto_rawDescGZIP(), []int{89} } func (x *TimestampArray) GetValues() []*timestamppb.Timestamp { @@ -6008,7 +7633,7 @@ type RawArray struct { func (x *RawArray) Reset() { *x = RawArray{} - mi := &file_mxaccess_gateway_proto_msgTypes[70] + mi := &file_mxaccess_gateway_proto_msgTypes[90] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -6020,7 +7645,7 @@ func (x *RawArray) String() string { func (*RawArray) ProtoMessage() {} func (x *RawArray) ProtoReflect() protoreflect.Message { - mi := &file_mxaccess_gateway_proto_msgTypes[70] + mi := &file_mxaccess_gateway_proto_msgTypes[90] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -6033,7 +7658,7 @@ func (x *RawArray) ProtoReflect() protoreflect.Message { // Deprecated: Use RawArray.ProtoReflect.Descriptor instead. func (*RawArray) Descriptor() ([]byte, []int) { - return file_mxaccess_gateway_proto_rawDescGZIP(), []int{70} + return file_mxaccess_gateway_proto_rawDescGZIP(), []int{90} } func (x *RawArray) GetValues() [][]byte { @@ -6053,7 +7678,7 @@ type ProtocolStatus struct { func (x *ProtocolStatus) Reset() { *x = ProtocolStatus{} - mi := &file_mxaccess_gateway_proto_msgTypes[71] + mi := &file_mxaccess_gateway_proto_msgTypes[91] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -6065,7 +7690,7 @@ func (x *ProtocolStatus) String() string { func (*ProtocolStatus) ProtoMessage() {} func (x *ProtocolStatus) ProtoReflect() protoreflect.Message { - mi := &file_mxaccess_gateway_proto_msgTypes[71] + mi := &file_mxaccess_gateway_proto_msgTypes[91] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -6078,7 +7703,7 @@ func (x *ProtocolStatus) ProtoReflect() protoreflect.Message { // Deprecated: Use ProtocolStatus.ProtoReflect.Descriptor instead. func (*ProtocolStatus) Descriptor() ([]byte, []int) { - return file_mxaccess_gateway_proto_rawDescGZIP(), []int{71} + return file_mxaccess_gateway_proto_rawDescGZIP(), []int{91} } func (x *ProtocolStatus) GetCode() ProtocolStatusCode { @@ -6133,7 +7758,7 @@ const file_mxaccess_gateway_proto_rawDesc = "" + "\n" + "session_id\x18\x01 \x01(\tR\tsessionId\x122\n" + "\x15client_correlation_id\x18\x02 \x01(\tR\x13clientCorrelationId\x128\n" + - "\acommand\x18\x03 \x01(\v2\x1e.mxaccess_gateway.v1.MxCommandR\acommand\"\xe1\x12\n" + + "\acommand\x18\x03 \x01(\v2\x1e.mxaccess_gateway.v1.MxCommandR\acommand\"\x8e\x1a\n" + "\tMxCommand\x126\n" + "\x04kind\x18\x01 \x01(\x0e2\".mxaccess_gateway.v1.MxCommandKindR\x04kind\x12B\n" + "\bregister\x18\n" + @@ -6163,7 +7788,19 @@ const file_mxaccess_gateway_proto_rawDesc = "" + "\x10remove_item_bulk\x18\x1e \x01(\v2*.mxaccess_gateway.v1.RemoveItemBulkCommandH\x00R\x0eremoveItemBulk\x12]\n" + "\x13un_advise_item_bulk\x18\x1f \x01(\v2,.mxaccess_gateway.v1.UnAdviseItemBulkCommandH\x00R\x10unAdviseItemBulk\x12R\n" + "\x0esubscribe_bulk\x18 \x01(\v2).mxaccess_gateway.v1.SubscribeBulkCommandH\x00R\rsubscribeBulk\x12X\n" + - "\x10unsubscribe_bulk\x18! \x01(\v2+.mxaccess_gateway.v1.UnsubscribeBulkCommandH\x00R\x0funsubscribeBulk\x126\n" + + "\x10unsubscribe_bulk\x18! \x01(\v2+.mxaccess_gateway.v1.UnsubscribeBulkCommandH\x00R\x0funsubscribeBulk\x12X\n" + + "\x10subscribe_alarms\x18\" \x01(\v2+.mxaccess_gateway.v1.SubscribeAlarmsCommandH\x00R\x0fsubscribeAlarms\x12^\n" + + "\x12unsubscribe_alarms\x18# \x01(\v2-.mxaccess_gateway.v1.UnsubscribeAlarmsCommandH\x00R\x11unsubscribeAlarms\x12j\n" + + "\x19acknowledge_alarm_command\x18$ \x01(\v2,.mxaccess_gateway.v1.AcknowledgeAlarmCommandH\x00R\x17acknowledgeAlarmCommand\x12n\n" + + "\x1bquery_active_alarms_command\x18% \x01(\v2-.mxaccess_gateway.v1.QueryActiveAlarmsCommandH\x00R\x18queryActiveAlarmsCommand\x12~\n" + + "!acknowledge_alarm_by_name_command\x18& \x01(\v22.mxaccess_gateway.v1.AcknowledgeAlarmByNameCommandH\x00R\x1dacknowledgeAlarmByNameCommand\x12F\n" + + "\n" + + "write_bulk\x18' \x01(\v2%.mxaccess_gateway.v1.WriteBulkCommandH\x00R\twriteBulk\x12I\n" + + "\vwrite2_bulk\x18( \x01(\v2&.mxaccess_gateway.v1.Write2BulkCommandH\x00R\n" + + "write2Bulk\x12\\\n" + + "\x12write_secured_bulk\x18) \x01(\v2,.mxaccess_gateway.v1.WriteSecuredBulkCommandH\x00R\x10writeSecuredBulk\x12_\n" + + "\x13write_secured2_bulk\x18* \x01(\v2-.mxaccess_gateway.v1.WriteSecured2BulkCommandH\x00R\x11writeSecured2Bulk\x12C\n" + + "\tread_bulk\x18+ \x01(\v2$.mxaccess_gateway.v1.ReadBulkCommandH\x00R\breadBulk\x126\n" + "\x04ping\x18d \x01(\v2 .mxaccess_gateway.v1.PingCommandH\x00R\x04ping\x12Y\n" + "\x11get_session_state\x18e \x01(\v2+.mxaccess_gateway.v1.GetSessionStateCommandH\x00R\x0fgetSessionState\x12S\n" + "\x0fget_worker_info\x18f \x01(\v2).mxaccess_gateway.v1.GetWorkerInfoCommandH\x00R\rgetWorkerInfo\x12L\n" + @@ -6264,10 +7901,75 @@ const file_mxaccess_gateway_proto_rawDesc = "" + "\fitem_handles\x18\x02 \x03(\x05R\vitemHandles\"`\n" + "\x14SubscribeBulkCommand\x12#\n" + "\rserver_handle\x18\x01 \x01(\x05R\fserverHandle\x12#\n" + - "\rtag_addresses\x18\x02 \x03(\tR\ftagAddresses\"`\n" + + "\rtag_addresses\x18\x02 \x03(\tR\ftagAddresses\"Q\n" + + "\x16SubscribeAlarmsCommand\x127\n" + + "\x17subscription_expression\x18\x01 \x01(\tR\x16subscriptionExpression\"\x1a\n" + + "\x18UnsubscribeAlarmsCommand\"\xf3\x01\n" + + "\x17AcknowledgeAlarmCommand\x12\x1d\n" + + "\n" + + "alarm_guid\x18\x01 \x01(\tR\talarmGuid\x12\x18\n" + + "\acomment\x18\x02 \x01(\tR\acomment\x12#\n" + + "\roperator_user\x18\x03 \x01(\tR\foperatorUser\x12#\n" + + "\roperator_node\x18\x04 \x01(\tR\foperatorNode\x12'\n" + + "\x0foperator_domain\x18\x05 \x01(\tR\x0eoperatorDomain\x12,\n" + + "\x12operator_full_name\x18\x06 \x01(\tR\x10operatorFullName\"J\n" + + "\x18QueryActiveAlarmsCommand\x12.\n" + + "\x13alarm_filter_prefix\x18\x01 \x01(\tR\x11alarmFilterPrefix\"\xbd\x02\n" + + "\x1dAcknowledgeAlarmByNameCommand\x12\x1d\n" + + "\n" + + "alarm_name\x18\x01 \x01(\tR\talarmName\x12#\n" + + "\rprovider_name\x18\x02 \x01(\tR\fproviderName\x12\x1d\n" + + "\n" + + "group_name\x18\x03 \x01(\tR\tgroupName\x12\x18\n" + + "\acomment\x18\x04 \x01(\tR\acomment\x12#\n" + + "\roperator_user\x18\x05 \x01(\tR\foperatorUser\x12#\n" + + "\roperator_node\x18\x06 \x01(\tR\foperatorNode\x12'\n" + + "\x0foperator_domain\x18\a \x01(\tR\x0eoperatorDomain\x12,\n" + + "\x12operator_full_name\x18\b \x01(\tR\x10operatorFullName\"`\n" + "\x16UnsubscribeBulkCommand\x12#\n" + "\rserver_handle\x18\x01 \x01(\x05R\fserverHandle\x12!\n" + - "\fitem_handles\x18\x02 \x03(\x05R\vitemHandles\"'\n" + + "\fitem_handles\x18\x02 \x03(\x05R\vitemHandles\"v\n" + + "\x10WriteBulkCommand\x12#\n" + + "\rserver_handle\x18\x01 \x01(\x05R\fserverHandle\x12=\n" + + "\aentries\x18\x02 \x03(\v2#.mxaccess_gateway.v1.WriteBulkEntryR\aentries\"~\n" + + "\x0eWriteBulkEntry\x12\x1f\n" + + "\vitem_handle\x18\x01 \x01(\x05R\n" + + "itemHandle\x122\n" + + "\x05value\x18\x02 \x01(\v2\x1c.mxaccess_gateway.v1.MxValueR\x05value\x12\x17\n" + + "\auser_id\x18\x03 \x01(\x05R\x06userId\"x\n" + + "\x11Write2BulkCommand\x12#\n" + + "\rserver_handle\x18\x01 \x01(\x05R\fserverHandle\x12>\n" + + "\aentries\x18\x02 \x03(\v2$.mxaccess_gateway.v1.Write2BulkEntryR\aentries\"\xc6\x01\n" + + "\x0fWrite2BulkEntry\x12\x1f\n" + + "\vitem_handle\x18\x01 \x01(\x05R\n" + + "itemHandle\x122\n" + + "\x05value\x18\x02 \x01(\v2\x1c.mxaccess_gateway.v1.MxValueR\x05value\x12E\n" + + "\x0ftimestamp_value\x18\x03 \x01(\v2\x1c.mxaccess_gateway.v1.MxValueR\x0etimestampValue\x12\x17\n" + + "\auser_id\x18\x04 \x01(\x05R\x06userId\"\x84\x01\n" + + "\x17WriteSecuredBulkCommand\x12#\n" + + "\rserver_handle\x18\x01 \x01(\x05R\fserverHandle\x12D\n" + + "\aentries\x18\x02 \x03(\v2*.mxaccess_gateway.v1.WriteSecuredBulkEntryR\aentries\"\xbe\x01\n" + + "\x15WriteSecuredBulkEntry\x12\x1f\n" + + "\vitem_handle\x18\x01 \x01(\x05R\n" + + "itemHandle\x12&\n" + + "\x0fcurrent_user_id\x18\x02 \x01(\x05R\rcurrentUserId\x12(\n" + + "\x10verifier_user_id\x18\x03 \x01(\x05R\x0everifierUserId\x122\n" + + "\x05value\x18\x04 \x01(\v2\x1c.mxaccess_gateway.v1.MxValueR\x05value\"\x86\x01\n" + + "\x18WriteSecured2BulkCommand\x12#\n" + + "\rserver_handle\x18\x01 \x01(\x05R\fserverHandle\x12E\n" + + "\aentries\x18\x02 \x03(\v2+.mxaccess_gateway.v1.WriteSecured2BulkEntryR\aentries\"\x86\x02\n" + + "\x16WriteSecured2BulkEntry\x12\x1f\n" + + "\vitem_handle\x18\x01 \x01(\x05R\n" + + "itemHandle\x12&\n" + + "\x0fcurrent_user_id\x18\x02 \x01(\x05R\rcurrentUserId\x12(\n" + + "\x10verifier_user_id\x18\x03 \x01(\x05R\x0everifierUserId\x122\n" + + "\x05value\x18\x04 \x01(\v2\x1c.mxaccess_gateway.v1.MxValueR\x05value\x12E\n" + + "\x0ftimestamp_value\x18\x05 \x01(\v2\x1c.mxaccess_gateway.v1.MxValueR\x0etimestampValue\"z\n" + + "\x0fReadBulkCommand\x12#\n" + + "\rserver_handle\x18\x01 \x01(\x05R\fserverHandle\x12#\n" + + "\rtag_addresses\x18\x02 \x03(\tR\ftagAddresses\x12\x1d\n" + + "\n" + + "timeout_ms\x18\x03 \x01(\rR\ttimeoutMs\"'\n" + "\vPingCommand\x12\x18\n" + "\amessage\x18\x01 \x01(\tR\amessage\"\x18\n" + "\x16GetSessionStateCommand\"\x16\n" + @@ -6276,7 +7978,7 @@ const file_mxaccess_gateway_proto_rawDesc = "" + "\n" + "max_events\x18\x01 \x01(\rR\tmaxEvents\"U\n" + "\x15ShutdownWorkerCommand\x12<\n" + - "\fgrace_period\x18\x01 \x01(\v2\x19.google.protobuf.DurationR\vgracePeriod\"\xfb\r\n" + + "\fgrace_period\x18\x01 \x01(\v2\x19.google.protobuf.DurationR\vgracePeriod\"\xc0\x12\n" + "\x0eMxCommandReply\x12\x1d\n" + "\n" + "session_id\x18\x01 \x01(\tR\tsessionId\x12%\n" + @@ -6300,7 +8002,16 @@ const file_mxaccess_gateway_proto_rawDesc = "" + "\x10remove_item_bulk\x18\x1e \x01(\v2'.mxaccess_gateway.v1.BulkSubscribeReplyH\x00R\x0eremoveItemBulk\x12X\n" + "\x13un_advise_item_bulk\x18\x1f \x01(\v2'.mxaccess_gateway.v1.BulkSubscribeReplyH\x00R\x10unAdviseItemBulk\x12P\n" + "\x0esubscribe_bulk\x18 \x01(\v2'.mxaccess_gateway.v1.BulkSubscribeReplyH\x00R\rsubscribeBulk\x12T\n" + - "\x10unsubscribe_bulk\x18! \x01(\v2'.mxaccess_gateway.v1.BulkSubscribeReplyH\x00R\x0funsubscribeBulk\x12M\n" + + "\x10unsubscribe_bulk\x18! \x01(\v2'.mxaccess_gateway.v1.BulkSubscribeReplyH\x00R\x0funsubscribeBulk\x12`\n" + + "\x11acknowledge_alarm\x18\" \x01(\v21.mxaccess_gateway.v1.AcknowledgeAlarmReplyPayloadH\x00R\x10acknowledgeAlarm\x12d\n" + + "\x13query_active_alarms\x18# \x01(\v22.mxaccess_gateway.v1.QueryActiveAlarmsReplyPayloadH\x00R\x11queryActiveAlarms\x12D\n" + + "\n" + + "write_bulk\x18$ \x01(\v2#.mxaccess_gateway.v1.BulkWriteReplyH\x00R\twriteBulk\x12F\n" + + "\vwrite2_bulk\x18% \x01(\v2#.mxaccess_gateway.v1.BulkWriteReplyH\x00R\n" + + "write2Bulk\x12S\n" + + "\x12write_secured_bulk\x18& \x01(\v2#.mxaccess_gateway.v1.BulkWriteReplyH\x00R\x10writeSecuredBulk\x12U\n" + + "\x13write_secured2_bulk\x18' \x01(\v2#.mxaccess_gateway.v1.BulkWriteReplyH\x00R\x11writeSecured2Bulk\x12A\n" + + "\tread_bulk\x18( \x01(\v2\".mxaccess_gateway.v1.BulkReadReplyH\x00R\breadBulk\x12M\n" + "\rsession_state\x18d \x01(\v2&.mxaccess_gateway.v1.SessionStateReplyH\x00R\fsessionState\x12G\n" + "\vworker_info\x18e \x01(\v2$.mxaccess_gateway.v1.WorkerInfoReplyH\x00R\n" + "workerInfo\x12J\n" + @@ -6336,7 +8047,36 @@ const file_mxaccess_gateway_proto_rawDesc = "" + "\x0ewas_successful\x18\x04 \x01(\bR\rwasSuccessful\x12#\n" + "\rerror_message\x18\x05 \x01(\tR\ferrorMessage\"T\n" + "\x12BulkSubscribeReply\x12>\n" + - "\aresults\x18\x01 \x03(\v2$.mxaccess_gateway.v1.SubscribeResultR\aresults\"L\n" + + "\aresults\x18\x01 \x03(\v2$.mxaccess_gateway.v1.SubscribeResultR\aresults\"\x8e\x02\n" + + "\x0fBulkWriteResult\x12#\n" + + "\rserver_handle\x18\x01 \x01(\x05R\fserverHandle\x12\x1f\n" + + "\vitem_handle\x18\x02 \x01(\x05R\n" + + "itemHandle\x12%\n" + + "\x0ewas_successful\x18\x03 \x01(\bR\rwasSuccessful\x12\x1d\n" + + "\ahresult\x18\x04 \x01(\x05H\x00R\ahresult\x88\x01\x01\x12>\n" + + "\bstatuses\x18\x05 \x03(\v2\".mxaccess_gateway.v1.MxStatusProxyR\bstatuses\x12#\n" + + "\rerror_message\x18\x06 \x01(\tR\ferrorMessageB\n" + + "\n" + + "\b_hresult\"P\n" + + "\x0eBulkWriteReply\x12>\n" + + "\aresults\x18\x01 \x03(\v2$.mxaccess_gateway.v1.BulkWriteResultR\aresults\"\xb7\x03\n" + + "\x0eBulkReadResult\x12#\n" + + "\rserver_handle\x18\x01 \x01(\x05R\fserverHandle\x12\x1f\n" + + "\vtag_address\x18\x02 \x01(\tR\n" + + "tagAddress\x12\x1f\n" + + "\vitem_handle\x18\x03 \x01(\x05R\n" + + "itemHandle\x12%\n" + + "\x0ewas_successful\x18\x04 \x01(\bR\rwasSuccessful\x12\x1d\n" + + "\n" + + "was_cached\x18\x05 \x01(\bR\twasCached\x122\n" + + "\x05value\x18\x06 \x01(\v2\x1c.mxaccess_gateway.v1.MxValueR\x05value\x12\x18\n" + + "\aquality\x18\a \x01(\x05R\aquality\x12E\n" + + "\x10source_timestamp\x18\b \x01(\v2\x1a.google.protobuf.TimestampR\x0fsourceTimestamp\x12>\n" + + "\bstatuses\x18\t \x03(\v2\".mxaccess_gateway.v1.MxStatusProxyR\bstatuses\x12#\n" + + "\rerror_message\x18\n" + + " \x01(\tR\ferrorMessage\"N\n" + + "\rBulkReadReply\x12=\n" + + "\aresults\x18\x01 \x03(\v2#.mxaccess_gateway.v1.BulkReadResultR\aresults\"L\n" + "\x11SessionStateReply\x127\n" + "\x05state\x18\x01 \x01(\x0e2!.mxaccess_gateway.v1.SessionStateR\x05state\"\xb4\x01\n" + "\x0fWorkerInfoReply\x12*\n" + @@ -6345,7 +8085,11 @@ const file_mxaccess_gateway_proto_rawDesc = "" + "\x0fmxaccess_progid\x18\x03 \x01(\tR\x0emxaccessProgid\x12%\n" + "\x0emxaccess_clsid\x18\x04 \x01(\tR\rmxaccessClsid\"H\n" + "\x10DrainEventsReply\x124\n" + - "\x06events\x18\x01 \x03(\v2\x1c.mxaccess_gateway.v1.MxEventR\x06events\"\xe8\b\n" + + "\x06events\x18\x01 \x03(\v2\x1c.mxaccess_gateway.v1.MxEventR\x06events\"C\n" + + "\x1cAcknowledgeAlarmReplyPayload\x12#\n" + + "\rnative_status\x18\x01 \x01(\x05R\fnativeStatus\"g\n" + + "\x1dQueryActiveAlarmsReplyPayload\x12F\n" + + "\tsnapshots\x18\x01 \x03(\v2(.mxaccess_gateway.v1.ActiveAlarmSnapshotR\tsnapshots\"\xe8\b\n" + "\aMxEvent\x12:\n" + "\x06family\x18\x01 \x01(\x0e2\".mxaccess_gateway.v1.MxEventFamilyR\x06family\x12\x1d\n" + "\n" + @@ -6506,7 +8250,7 @@ const file_mxaccess_gateway_proto_rawDesc = "" + "\x06values\x18\x01 \x03(\fR\x06values\"g\n" + "\x0eProtocolStatus\x12;\n" + "\x04code\x18\x01 \x01(\x0e2'.mxaccess_gateway.v1.ProtocolStatusCodeR\x04code\x12\x18\n" + - "\amessage\x18\x02 \x01(\tR\amessage*\xa1\b\n" + + "\amessage\x18\x02 \x01(\tR\amessage*\x9f\v\n" + "\rMxCommandKind\x12\x1f\n" + "\x1bMX_COMMAND_KIND_UNSPECIFIED\x10\x00\x12\x1c\n" + "\x18MX_COMMAND_KIND_REGISTER\x10\x01\x12\x1e\n" + @@ -6533,7 +8277,17 @@ const file_mxaccess_gateway_proto_rawDesc = "" + " MX_COMMAND_KIND_REMOVE_ITEM_BULK\x10\x15\x12'\n" + "#MX_COMMAND_KIND_UN_ADVISE_ITEM_BULK\x10\x16\x12\"\n" + "\x1eMX_COMMAND_KIND_SUBSCRIBE_BULK\x10\x17\x12$\n" + - " MX_COMMAND_KIND_UNSUBSCRIBE_BULK\x10\x18\x12\x18\n" + + " MX_COMMAND_KIND_UNSUBSCRIBE_BULK\x10\x18\x12$\n" + + " MX_COMMAND_KIND_SUBSCRIBE_ALARMS\x10\x19\x12&\n" + + "\"MX_COMMAND_KIND_UNSUBSCRIBE_ALARMS\x10\x1a\x12%\n" + + "!MX_COMMAND_KIND_ACKNOWLEDGE_ALARM\x10\x1b\x12'\n" + + "#MX_COMMAND_KIND_QUERY_ACTIVE_ALARMS\x10\x1c\x12-\n" + + ")MX_COMMAND_KIND_ACKNOWLEDGE_ALARM_BY_NAME\x10\x1d\x12\x1e\n" + + "\x1aMX_COMMAND_KIND_WRITE_BULK\x10\x1e\x12\x1f\n" + + "\x1bMX_COMMAND_KIND_WRITE2_BULK\x10\x1f\x12&\n" + + "\"MX_COMMAND_KIND_WRITE_SECURED_BULK\x10 \x12'\n" + + "#MX_COMMAND_KIND_WRITE_SECURED2_BULK\x10!\x12\x1d\n" + + "\x19MX_COMMAND_KIND_READ_BULK\x10\"\x12\x18\n" + "\x14MX_COMMAND_KIND_PING\x10d\x12%\n" + "!MX_COMMAND_KIND_GET_SESSION_STATE\x10e\x12#\n" + "\x1fMX_COMMAND_KIND_GET_WORKER_INFO\x10f\x12 \n" + @@ -6645,7 +8399,7 @@ func file_mxaccess_gateway_proto_rawDescGZIP() []byte { } var file_mxaccess_gateway_proto_enumTypes = make([]protoimpl.EnumInfo, 9) -var file_mxaccess_gateway_proto_msgTypes = make([]protoimpl.MessageInfo, 72) +var file_mxaccess_gateway_proto_msgTypes = make([]protoimpl.MessageInfo, 92) var file_mxaccess_gateway_proto_goTypes = []any{ (MxCommandKind)(0), // 0: mxaccess_gateway.v1.MxCommandKind (MxEventFamily)(0), // 1: mxaccess_gateway.v1.MxEventFamily @@ -6686,57 +8440,77 @@ var file_mxaccess_gateway_proto_goTypes = []any{ (*RemoveItemBulkCommand)(nil), // 36: mxaccess_gateway.v1.RemoveItemBulkCommand (*UnAdviseItemBulkCommand)(nil), // 37: mxaccess_gateway.v1.UnAdviseItemBulkCommand (*SubscribeBulkCommand)(nil), // 38: mxaccess_gateway.v1.SubscribeBulkCommand - (*UnsubscribeBulkCommand)(nil), // 39: mxaccess_gateway.v1.UnsubscribeBulkCommand - (*PingCommand)(nil), // 40: mxaccess_gateway.v1.PingCommand - (*GetSessionStateCommand)(nil), // 41: mxaccess_gateway.v1.GetSessionStateCommand - (*GetWorkerInfoCommand)(nil), // 42: mxaccess_gateway.v1.GetWorkerInfoCommand - (*DrainEventsCommand)(nil), // 43: mxaccess_gateway.v1.DrainEventsCommand - (*ShutdownWorkerCommand)(nil), // 44: mxaccess_gateway.v1.ShutdownWorkerCommand - (*MxCommandReply)(nil), // 45: mxaccess_gateway.v1.MxCommandReply - (*RegisterReply)(nil), // 46: mxaccess_gateway.v1.RegisterReply - (*AddItemReply)(nil), // 47: mxaccess_gateway.v1.AddItemReply - (*AddItem2Reply)(nil), // 48: mxaccess_gateway.v1.AddItem2Reply - (*AddBufferedItemReply)(nil), // 49: mxaccess_gateway.v1.AddBufferedItemReply - (*SuspendReply)(nil), // 50: mxaccess_gateway.v1.SuspendReply - (*ActivateReply)(nil), // 51: mxaccess_gateway.v1.ActivateReply - (*AuthenticateUserReply)(nil), // 52: mxaccess_gateway.v1.AuthenticateUserReply - (*ArchestrAUserToIdReply)(nil), // 53: mxaccess_gateway.v1.ArchestrAUserToIdReply - (*SubscribeResult)(nil), // 54: mxaccess_gateway.v1.SubscribeResult - (*BulkSubscribeReply)(nil), // 55: mxaccess_gateway.v1.BulkSubscribeReply - (*SessionStateReply)(nil), // 56: mxaccess_gateway.v1.SessionStateReply - (*WorkerInfoReply)(nil), // 57: mxaccess_gateway.v1.WorkerInfoReply - (*DrainEventsReply)(nil), // 58: mxaccess_gateway.v1.DrainEventsReply - (*MxEvent)(nil), // 59: mxaccess_gateway.v1.MxEvent - (*OnDataChangeEvent)(nil), // 60: mxaccess_gateway.v1.OnDataChangeEvent - (*OnWriteCompleteEvent)(nil), // 61: mxaccess_gateway.v1.OnWriteCompleteEvent - (*OperationCompleteEvent)(nil), // 62: mxaccess_gateway.v1.OperationCompleteEvent - (*OnBufferedDataChangeEvent)(nil), // 63: mxaccess_gateway.v1.OnBufferedDataChangeEvent - (*OnAlarmTransitionEvent)(nil), // 64: mxaccess_gateway.v1.OnAlarmTransitionEvent - (*ActiveAlarmSnapshot)(nil), // 65: mxaccess_gateway.v1.ActiveAlarmSnapshot - (*AcknowledgeAlarmRequest)(nil), // 66: mxaccess_gateway.v1.AcknowledgeAlarmRequest - (*AcknowledgeAlarmReply)(nil), // 67: mxaccess_gateway.v1.AcknowledgeAlarmReply - (*QueryActiveAlarmsRequest)(nil), // 68: mxaccess_gateway.v1.QueryActiveAlarmsRequest - (*MxStatusProxy)(nil), // 69: mxaccess_gateway.v1.MxStatusProxy - (*MxValue)(nil), // 70: mxaccess_gateway.v1.MxValue - (*MxArray)(nil), // 71: mxaccess_gateway.v1.MxArray - (*BoolArray)(nil), // 72: mxaccess_gateway.v1.BoolArray - (*Int32Array)(nil), // 73: mxaccess_gateway.v1.Int32Array - (*Int64Array)(nil), // 74: mxaccess_gateway.v1.Int64Array - (*FloatArray)(nil), // 75: mxaccess_gateway.v1.FloatArray - (*DoubleArray)(nil), // 76: mxaccess_gateway.v1.DoubleArray - (*StringArray)(nil), // 77: mxaccess_gateway.v1.StringArray - (*TimestampArray)(nil), // 78: mxaccess_gateway.v1.TimestampArray - (*RawArray)(nil), // 79: mxaccess_gateway.v1.RawArray - (*ProtocolStatus)(nil), // 80: mxaccess_gateway.v1.ProtocolStatus - (*durationpb.Duration)(nil), // 81: google.protobuf.Duration - (*timestamppb.Timestamp)(nil), // 82: google.protobuf.Timestamp + (*SubscribeAlarmsCommand)(nil), // 39: mxaccess_gateway.v1.SubscribeAlarmsCommand + (*UnsubscribeAlarmsCommand)(nil), // 40: mxaccess_gateway.v1.UnsubscribeAlarmsCommand + (*AcknowledgeAlarmCommand)(nil), // 41: mxaccess_gateway.v1.AcknowledgeAlarmCommand + (*QueryActiveAlarmsCommand)(nil), // 42: mxaccess_gateway.v1.QueryActiveAlarmsCommand + (*AcknowledgeAlarmByNameCommand)(nil), // 43: mxaccess_gateway.v1.AcknowledgeAlarmByNameCommand + (*UnsubscribeBulkCommand)(nil), // 44: mxaccess_gateway.v1.UnsubscribeBulkCommand + (*WriteBulkCommand)(nil), // 45: mxaccess_gateway.v1.WriteBulkCommand + (*WriteBulkEntry)(nil), // 46: mxaccess_gateway.v1.WriteBulkEntry + (*Write2BulkCommand)(nil), // 47: mxaccess_gateway.v1.Write2BulkCommand + (*Write2BulkEntry)(nil), // 48: mxaccess_gateway.v1.Write2BulkEntry + (*WriteSecuredBulkCommand)(nil), // 49: mxaccess_gateway.v1.WriteSecuredBulkCommand + (*WriteSecuredBulkEntry)(nil), // 50: mxaccess_gateway.v1.WriteSecuredBulkEntry + (*WriteSecured2BulkCommand)(nil), // 51: mxaccess_gateway.v1.WriteSecured2BulkCommand + (*WriteSecured2BulkEntry)(nil), // 52: mxaccess_gateway.v1.WriteSecured2BulkEntry + (*ReadBulkCommand)(nil), // 53: mxaccess_gateway.v1.ReadBulkCommand + (*PingCommand)(nil), // 54: mxaccess_gateway.v1.PingCommand + (*GetSessionStateCommand)(nil), // 55: mxaccess_gateway.v1.GetSessionStateCommand + (*GetWorkerInfoCommand)(nil), // 56: mxaccess_gateway.v1.GetWorkerInfoCommand + (*DrainEventsCommand)(nil), // 57: mxaccess_gateway.v1.DrainEventsCommand + (*ShutdownWorkerCommand)(nil), // 58: mxaccess_gateway.v1.ShutdownWorkerCommand + (*MxCommandReply)(nil), // 59: mxaccess_gateway.v1.MxCommandReply + (*RegisterReply)(nil), // 60: mxaccess_gateway.v1.RegisterReply + (*AddItemReply)(nil), // 61: mxaccess_gateway.v1.AddItemReply + (*AddItem2Reply)(nil), // 62: mxaccess_gateway.v1.AddItem2Reply + (*AddBufferedItemReply)(nil), // 63: mxaccess_gateway.v1.AddBufferedItemReply + (*SuspendReply)(nil), // 64: mxaccess_gateway.v1.SuspendReply + (*ActivateReply)(nil), // 65: mxaccess_gateway.v1.ActivateReply + (*AuthenticateUserReply)(nil), // 66: mxaccess_gateway.v1.AuthenticateUserReply + (*ArchestrAUserToIdReply)(nil), // 67: mxaccess_gateway.v1.ArchestrAUserToIdReply + (*SubscribeResult)(nil), // 68: mxaccess_gateway.v1.SubscribeResult + (*BulkSubscribeReply)(nil), // 69: mxaccess_gateway.v1.BulkSubscribeReply + (*BulkWriteResult)(nil), // 70: mxaccess_gateway.v1.BulkWriteResult + (*BulkWriteReply)(nil), // 71: mxaccess_gateway.v1.BulkWriteReply + (*BulkReadResult)(nil), // 72: mxaccess_gateway.v1.BulkReadResult + (*BulkReadReply)(nil), // 73: mxaccess_gateway.v1.BulkReadReply + (*SessionStateReply)(nil), // 74: mxaccess_gateway.v1.SessionStateReply + (*WorkerInfoReply)(nil), // 75: mxaccess_gateway.v1.WorkerInfoReply + (*DrainEventsReply)(nil), // 76: mxaccess_gateway.v1.DrainEventsReply + (*AcknowledgeAlarmReplyPayload)(nil), // 77: mxaccess_gateway.v1.AcknowledgeAlarmReplyPayload + (*QueryActiveAlarmsReplyPayload)(nil), // 78: mxaccess_gateway.v1.QueryActiveAlarmsReplyPayload + (*MxEvent)(nil), // 79: mxaccess_gateway.v1.MxEvent + (*OnDataChangeEvent)(nil), // 80: mxaccess_gateway.v1.OnDataChangeEvent + (*OnWriteCompleteEvent)(nil), // 81: mxaccess_gateway.v1.OnWriteCompleteEvent + (*OperationCompleteEvent)(nil), // 82: mxaccess_gateway.v1.OperationCompleteEvent + (*OnBufferedDataChangeEvent)(nil), // 83: mxaccess_gateway.v1.OnBufferedDataChangeEvent + (*OnAlarmTransitionEvent)(nil), // 84: mxaccess_gateway.v1.OnAlarmTransitionEvent + (*ActiveAlarmSnapshot)(nil), // 85: mxaccess_gateway.v1.ActiveAlarmSnapshot + (*AcknowledgeAlarmRequest)(nil), // 86: mxaccess_gateway.v1.AcknowledgeAlarmRequest + (*AcknowledgeAlarmReply)(nil), // 87: mxaccess_gateway.v1.AcknowledgeAlarmReply + (*QueryActiveAlarmsRequest)(nil), // 88: mxaccess_gateway.v1.QueryActiveAlarmsRequest + (*MxStatusProxy)(nil), // 89: mxaccess_gateway.v1.MxStatusProxy + (*MxValue)(nil), // 90: mxaccess_gateway.v1.MxValue + (*MxArray)(nil), // 91: mxaccess_gateway.v1.MxArray + (*BoolArray)(nil), // 92: mxaccess_gateway.v1.BoolArray + (*Int32Array)(nil), // 93: mxaccess_gateway.v1.Int32Array + (*Int64Array)(nil), // 94: mxaccess_gateway.v1.Int64Array + (*FloatArray)(nil), // 95: mxaccess_gateway.v1.FloatArray + (*DoubleArray)(nil), // 96: mxaccess_gateway.v1.DoubleArray + (*StringArray)(nil), // 97: mxaccess_gateway.v1.StringArray + (*TimestampArray)(nil), // 98: mxaccess_gateway.v1.TimestampArray + (*RawArray)(nil), // 99: mxaccess_gateway.v1.RawArray + (*ProtocolStatus)(nil), // 100: mxaccess_gateway.v1.ProtocolStatus + (*durationpb.Duration)(nil), // 101: google.protobuf.Duration + (*timestamppb.Timestamp)(nil), // 102: google.protobuf.Timestamp } var file_mxaccess_gateway_proto_depIdxs = []int32{ - 81, // 0: mxaccess_gateway.v1.OpenSessionRequest.command_timeout:type_name -> google.protobuf.Duration - 81, // 1: mxaccess_gateway.v1.OpenSessionReply.default_command_timeout:type_name -> google.protobuf.Duration - 80, // 2: mxaccess_gateway.v1.OpenSessionReply.protocol_status:type_name -> mxaccess_gateway.v1.ProtocolStatus + 101, // 0: mxaccess_gateway.v1.OpenSessionRequest.command_timeout:type_name -> google.protobuf.Duration + 101, // 1: mxaccess_gateway.v1.OpenSessionReply.default_command_timeout:type_name -> google.protobuf.Duration + 100, // 2: mxaccess_gateway.v1.OpenSessionReply.protocol_status:type_name -> mxaccess_gateway.v1.ProtocolStatus 8, // 3: mxaccess_gateway.v1.CloseSessionReply.final_state:type_name -> mxaccess_gateway.v1.SessionState - 80, // 4: mxaccess_gateway.v1.CloseSessionReply.protocol_status:type_name -> mxaccess_gateway.v1.ProtocolStatus + 100, // 4: mxaccess_gateway.v1.CloseSessionReply.protocol_status:type_name -> mxaccess_gateway.v1.ProtocolStatus 15, // 5: mxaccess_gateway.v1.MxCommandRequest.command:type_name -> mxaccess_gateway.v1.MxCommand 0, // 6: mxaccess_gateway.v1.MxCommand.kind:type_name -> mxaccess_gateway.v1.MxCommandKind 16, // 7: mxaccess_gateway.v1.MxCommand.register:type_name -> mxaccess_gateway.v1.RegisterCommand @@ -6762,104 +8536,138 @@ var file_mxaccess_gateway_proto_depIdxs = []int32{ 36, // 27: mxaccess_gateway.v1.MxCommand.remove_item_bulk:type_name -> mxaccess_gateway.v1.RemoveItemBulkCommand 37, // 28: mxaccess_gateway.v1.MxCommand.un_advise_item_bulk:type_name -> mxaccess_gateway.v1.UnAdviseItemBulkCommand 38, // 29: mxaccess_gateway.v1.MxCommand.subscribe_bulk:type_name -> mxaccess_gateway.v1.SubscribeBulkCommand - 39, // 30: mxaccess_gateway.v1.MxCommand.unsubscribe_bulk:type_name -> mxaccess_gateway.v1.UnsubscribeBulkCommand - 40, // 31: mxaccess_gateway.v1.MxCommand.ping:type_name -> mxaccess_gateway.v1.PingCommand - 41, // 32: mxaccess_gateway.v1.MxCommand.get_session_state:type_name -> mxaccess_gateway.v1.GetSessionStateCommand - 42, // 33: mxaccess_gateway.v1.MxCommand.get_worker_info:type_name -> mxaccess_gateway.v1.GetWorkerInfoCommand - 43, // 34: mxaccess_gateway.v1.MxCommand.drain_events:type_name -> mxaccess_gateway.v1.DrainEventsCommand - 44, // 35: mxaccess_gateway.v1.MxCommand.shutdown_worker:type_name -> mxaccess_gateway.v1.ShutdownWorkerCommand - 70, // 36: mxaccess_gateway.v1.WriteCommand.value:type_name -> mxaccess_gateway.v1.MxValue - 70, // 37: mxaccess_gateway.v1.Write2Command.value:type_name -> mxaccess_gateway.v1.MxValue - 70, // 38: mxaccess_gateway.v1.Write2Command.timestamp_value:type_name -> mxaccess_gateway.v1.MxValue - 70, // 39: mxaccess_gateway.v1.WriteSecuredCommand.value:type_name -> mxaccess_gateway.v1.MxValue - 70, // 40: mxaccess_gateway.v1.WriteSecured2Command.value:type_name -> mxaccess_gateway.v1.MxValue - 70, // 41: mxaccess_gateway.v1.WriteSecured2Command.timestamp_value:type_name -> mxaccess_gateway.v1.MxValue - 81, // 42: mxaccess_gateway.v1.ShutdownWorkerCommand.grace_period:type_name -> google.protobuf.Duration - 0, // 43: mxaccess_gateway.v1.MxCommandReply.kind:type_name -> mxaccess_gateway.v1.MxCommandKind - 80, // 44: mxaccess_gateway.v1.MxCommandReply.protocol_status:type_name -> mxaccess_gateway.v1.ProtocolStatus - 70, // 45: mxaccess_gateway.v1.MxCommandReply.return_value:type_name -> mxaccess_gateway.v1.MxValue - 69, // 46: mxaccess_gateway.v1.MxCommandReply.statuses:type_name -> mxaccess_gateway.v1.MxStatusProxy - 46, // 47: mxaccess_gateway.v1.MxCommandReply.register:type_name -> mxaccess_gateway.v1.RegisterReply - 47, // 48: mxaccess_gateway.v1.MxCommandReply.add_item:type_name -> mxaccess_gateway.v1.AddItemReply - 48, // 49: mxaccess_gateway.v1.MxCommandReply.add_item2:type_name -> mxaccess_gateway.v1.AddItem2Reply - 49, // 50: mxaccess_gateway.v1.MxCommandReply.add_buffered_item:type_name -> mxaccess_gateway.v1.AddBufferedItemReply - 50, // 51: mxaccess_gateway.v1.MxCommandReply.suspend:type_name -> mxaccess_gateway.v1.SuspendReply - 51, // 52: mxaccess_gateway.v1.MxCommandReply.activate:type_name -> mxaccess_gateway.v1.ActivateReply - 52, // 53: mxaccess_gateway.v1.MxCommandReply.authenticate_user:type_name -> mxaccess_gateway.v1.AuthenticateUserReply - 53, // 54: mxaccess_gateway.v1.MxCommandReply.archestra_user_to_id:type_name -> mxaccess_gateway.v1.ArchestrAUserToIdReply - 55, // 55: mxaccess_gateway.v1.MxCommandReply.add_item_bulk:type_name -> mxaccess_gateway.v1.BulkSubscribeReply - 55, // 56: mxaccess_gateway.v1.MxCommandReply.advise_item_bulk:type_name -> mxaccess_gateway.v1.BulkSubscribeReply - 55, // 57: mxaccess_gateway.v1.MxCommandReply.remove_item_bulk:type_name -> mxaccess_gateway.v1.BulkSubscribeReply - 55, // 58: mxaccess_gateway.v1.MxCommandReply.un_advise_item_bulk:type_name -> mxaccess_gateway.v1.BulkSubscribeReply - 55, // 59: mxaccess_gateway.v1.MxCommandReply.subscribe_bulk:type_name -> mxaccess_gateway.v1.BulkSubscribeReply - 55, // 60: mxaccess_gateway.v1.MxCommandReply.unsubscribe_bulk:type_name -> mxaccess_gateway.v1.BulkSubscribeReply - 56, // 61: mxaccess_gateway.v1.MxCommandReply.session_state:type_name -> mxaccess_gateway.v1.SessionStateReply - 57, // 62: mxaccess_gateway.v1.MxCommandReply.worker_info:type_name -> mxaccess_gateway.v1.WorkerInfoReply - 58, // 63: mxaccess_gateway.v1.MxCommandReply.drain_events:type_name -> mxaccess_gateway.v1.DrainEventsReply - 69, // 64: mxaccess_gateway.v1.SuspendReply.status:type_name -> mxaccess_gateway.v1.MxStatusProxy - 69, // 65: mxaccess_gateway.v1.ActivateReply.status:type_name -> mxaccess_gateway.v1.MxStatusProxy - 54, // 66: mxaccess_gateway.v1.BulkSubscribeReply.results:type_name -> mxaccess_gateway.v1.SubscribeResult - 8, // 67: mxaccess_gateway.v1.SessionStateReply.state:type_name -> mxaccess_gateway.v1.SessionState - 59, // 68: mxaccess_gateway.v1.DrainEventsReply.events:type_name -> mxaccess_gateway.v1.MxEvent - 1, // 69: mxaccess_gateway.v1.MxEvent.family:type_name -> mxaccess_gateway.v1.MxEventFamily - 70, // 70: mxaccess_gateway.v1.MxEvent.value:type_name -> mxaccess_gateway.v1.MxValue - 82, // 71: mxaccess_gateway.v1.MxEvent.source_timestamp:type_name -> google.protobuf.Timestamp - 69, // 72: mxaccess_gateway.v1.MxEvent.statuses:type_name -> mxaccess_gateway.v1.MxStatusProxy - 82, // 73: mxaccess_gateway.v1.MxEvent.worker_timestamp:type_name -> google.protobuf.Timestamp - 82, // 74: mxaccess_gateway.v1.MxEvent.gateway_receive_timestamp:type_name -> google.protobuf.Timestamp - 60, // 75: mxaccess_gateway.v1.MxEvent.on_data_change:type_name -> mxaccess_gateway.v1.OnDataChangeEvent - 61, // 76: mxaccess_gateway.v1.MxEvent.on_write_complete:type_name -> mxaccess_gateway.v1.OnWriteCompleteEvent - 62, // 77: mxaccess_gateway.v1.MxEvent.operation_complete:type_name -> mxaccess_gateway.v1.OperationCompleteEvent - 63, // 78: mxaccess_gateway.v1.MxEvent.on_buffered_data_change:type_name -> mxaccess_gateway.v1.OnBufferedDataChangeEvent - 64, // 79: mxaccess_gateway.v1.MxEvent.on_alarm_transition:type_name -> mxaccess_gateway.v1.OnAlarmTransitionEvent - 6, // 80: mxaccess_gateway.v1.OnBufferedDataChangeEvent.data_type:type_name -> mxaccess_gateway.v1.MxDataType - 71, // 81: mxaccess_gateway.v1.OnBufferedDataChangeEvent.quality_values:type_name -> mxaccess_gateway.v1.MxArray - 71, // 82: mxaccess_gateway.v1.OnBufferedDataChangeEvent.timestamp_values:type_name -> mxaccess_gateway.v1.MxArray - 2, // 83: mxaccess_gateway.v1.OnAlarmTransitionEvent.transition_kind:type_name -> mxaccess_gateway.v1.AlarmTransitionKind - 82, // 84: mxaccess_gateway.v1.OnAlarmTransitionEvent.original_raise_timestamp:type_name -> google.protobuf.Timestamp - 82, // 85: mxaccess_gateway.v1.OnAlarmTransitionEvent.transition_timestamp:type_name -> google.protobuf.Timestamp - 70, // 86: mxaccess_gateway.v1.OnAlarmTransitionEvent.current_value:type_name -> mxaccess_gateway.v1.MxValue - 70, // 87: mxaccess_gateway.v1.OnAlarmTransitionEvent.limit_value:type_name -> mxaccess_gateway.v1.MxValue - 82, // 88: mxaccess_gateway.v1.ActiveAlarmSnapshot.original_raise_timestamp:type_name -> google.protobuf.Timestamp - 3, // 89: mxaccess_gateway.v1.ActiveAlarmSnapshot.current_state:type_name -> mxaccess_gateway.v1.AlarmConditionState - 82, // 90: mxaccess_gateway.v1.ActiveAlarmSnapshot.last_transition_timestamp:type_name -> google.protobuf.Timestamp - 70, // 91: mxaccess_gateway.v1.ActiveAlarmSnapshot.current_value:type_name -> mxaccess_gateway.v1.MxValue - 70, // 92: mxaccess_gateway.v1.ActiveAlarmSnapshot.limit_value:type_name -> mxaccess_gateway.v1.MxValue - 80, // 93: mxaccess_gateway.v1.AcknowledgeAlarmReply.protocol_status:type_name -> mxaccess_gateway.v1.ProtocolStatus - 69, // 94: mxaccess_gateway.v1.AcknowledgeAlarmReply.status:type_name -> mxaccess_gateway.v1.MxStatusProxy - 4, // 95: mxaccess_gateway.v1.MxStatusProxy.category:type_name -> mxaccess_gateway.v1.MxStatusCategory - 5, // 96: mxaccess_gateway.v1.MxStatusProxy.detected_by:type_name -> mxaccess_gateway.v1.MxStatusSource - 6, // 97: mxaccess_gateway.v1.MxValue.data_type:type_name -> mxaccess_gateway.v1.MxDataType - 82, // 98: mxaccess_gateway.v1.MxValue.timestamp_value:type_name -> google.protobuf.Timestamp - 71, // 99: mxaccess_gateway.v1.MxValue.array_value:type_name -> mxaccess_gateway.v1.MxArray - 6, // 100: mxaccess_gateway.v1.MxArray.element_data_type:type_name -> mxaccess_gateway.v1.MxDataType - 72, // 101: mxaccess_gateway.v1.MxArray.bool_values:type_name -> mxaccess_gateway.v1.BoolArray - 73, // 102: mxaccess_gateway.v1.MxArray.int32_values:type_name -> mxaccess_gateway.v1.Int32Array - 74, // 103: mxaccess_gateway.v1.MxArray.int64_values:type_name -> mxaccess_gateway.v1.Int64Array - 75, // 104: mxaccess_gateway.v1.MxArray.float_values:type_name -> mxaccess_gateway.v1.FloatArray - 76, // 105: mxaccess_gateway.v1.MxArray.double_values:type_name -> mxaccess_gateway.v1.DoubleArray - 77, // 106: mxaccess_gateway.v1.MxArray.string_values:type_name -> mxaccess_gateway.v1.StringArray - 78, // 107: mxaccess_gateway.v1.MxArray.timestamp_values:type_name -> mxaccess_gateway.v1.TimestampArray - 79, // 108: mxaccess_gateway.v1.MxArray.raw_values:type_name -> mxaccess_gateway.v1.RawArray - 82, // 109: mxaccess_gateway.v1.TimestampArray.values:type_name -> google.protobuf.Timestamp - 7, // 110: mxaccess_gateway.v1.ProtocolStatus.code:type_name -> mxaccess_gateway.v1.ProtocolStatusCode - 9, // 111: mxaccess_gateway.v1.MxAccessGateway.OpenSession:input_type -> mxaccess_gateway.v1.OpenSessionRequest - 11, // 112: mxaccess_gateway.v1.MxAccessGateway.CloseSession:input_type -> mxaccess_gateway.v1.CloseSessionRequest - 14, // 113: mxaccess_gateway.v1.MxAccessGateway.Invoke:input_type -> mxaccess_gateway.v1.MxCommandRequest - 13, // 114: mxaccess_gateway.v1.MxAccessGateway.StreamEvents:input_type -> mxaccess_gateway.v1.StreamEventsRequest - 66, // 115: mxaccess_gateway.v1.MxAccessGateway.AcknowledgeAlarm:input_type -> mxaccess_gateway.v1.AcknowledgeAlarmRequest - 68, // 116: mxaccess_gateway.v1.MxAccessGateway.QueryActiveAlarms:input_type -> mxaccess_gateway.v1.QueryActiveAlarmsRequest - 10, // 117: mxaccess_gateway.v1.MxAccessGateway.OpenSession:output_type -> mxaccess_gateway.v1.OpenSessionReply - 12, // 118: mxaccess_gateway.v1.MxAccessGateway.CloseSession:output_type -> mxaccess_gateway.v1.CloseSessionReply - 45, // 119: mxaccess_gateway.v1.MxAccessGateway.Invoke:output_type -> mxaccess_gateway.v1.MxCommandReply - 59, // 120: mxaccess_gateway.v1.MxAccessGateway.StreamEvents:output_type -> mxaccess_gateway.v1.MxEvent - 67, // 121: mxaccess_gateway.v1.MxAccessGateway.AcknowledgeAlarm:output_type -> mxaccess_gateway.v1.AcknowledgeAlarmReply - 65, // 122: mxaccess_gateway.v1.MxAccessGateway.QueryActiveAlarms:output_type -> mxaccess_gateway.v1.ActiveAlarmSnapshot - 117, // [117:123] is the sub-list for method output_type - 111, // [111:117] is the sub-list for method input_type - 111, // [111:111] is the sub-list for extension type_name - 111, // [111:111] is the sub-list for extension extendee - 0, // [0:111] is the sub-list for field type_name + 44, // 30: mxaccess_gateway.v1.MxCommand.unsubscribe_bulk:type_name -> mxaccess_gateway.v1.UnsubscribeBulkCommand + 39, // 31: mxaccess_gateway.v1.MxCommand.subscribe_alarms:type_name -> mxaccess_gateway.v1.SubscribeAlarmsCommand + 40, // 32: mxaccess_gateway.v1.MxCommand.unsubscribe_alarms:type_name -> mxaccess_gateway.v1.UnsubscribeAlarmsCommand + 41, // 33: mxaccess_gateway.v1.MxCommand.acknowledge_alarm_command:type_name -> mxaccess_gateway.v1.AcknowledgeAlarmCommand + 42, // 34: mxaccess_gateway.v1.MxCommand.query_active_alarms_command:type_name -> mxaccess_gateway.v1.QueryActiveAlarmsCommand + 43, // 35: mxaccess_gateway.v1.MxCommand.acknowledge_alarm_by_name_command:type_name -> mxaccess_gateway.v1.AcknowledgeAlarmByNameCommand + 45, // 36: mxaccess_gateway.v1.MxCommand.write_bulk:type_name -> mxaccess_gateway.v1.WriteBulkCommand + 47, // 37: mxaccess_gateway.v1.MxCommand.write2_bulk:type_name -> mxaccess_gateway.v1.Write2BulkCommand + 49, // 38: mxaccess_gateway.v1.MxCommand.write_secured_bulk:type_name -> mxaccess_gateway.v1.WriteSecuredBulkCommand + 51, // 39: mxaccess_gateway.v1.MxCommand.write_secured2_bulk:type_name -> mxaccess_gateway.v1.WriteSecured2BulkCommand + 53, // 40: mxaccess_gateway.v1.MxCommand.read_bulk:type_name -> mxaccess_gateway.v1.ReadBulkCommand + 54, // 41: mxaccess_gateway.v1.MxCommand.ping:type_name -> mxaccess_gateway.v1.PingCommand + 55, // 42: mxaccess_gateway.v1.MxCommand.get_session_state:type_name -> mxaccess_gateway.v1.GetSessionStateCommand + 56, // 43: mxaccess_gateway.v1.MxCommand.get_worker_info:type_name -> mxaccess_gateway.v1.GetWorkerInfoCommand + 57, // 44: mxaccess_gateway.v1.MxCommand.drain_events:type_name -> mxaccess_gateway.v1.DrainEventsCommand + 58, // 45: mxaccess_gateway.v1.MxCommand.shutdown_worker:type_name -> mxaccess_gateway.v1.ShutdownWorkerCommand + 90, // 46: mxaccess_gateway.v1.WriteCommand.value:type_name -> mxaccess_gateway.v1.MxValue + 90, // 47: mxaccess_gateway.v1.Write2Command.value:type_name -> mxaccess_gateway.v1.MxValue + 90, // 48: mxaccess_gateway.v1.Write2Command.timestamp_value:type_name -> mxaccess_gateway.v1.MxValue + 90, // 49: mxaccess_gateway.v1.WriteSecuredCommand.value:type_name -> mxaccess_gateway.v1.MxValue + 90, // 50: mxaccess_gateway.v1.WriteSecured2Command.value:type_name -> mxaccess_gateway.v1.MxValue + 90, // 51: mxaccess_gateway.v1.WriteSecured2Command.timestamp_value:type_name -> mxaccess_gateway.v1.MxValue + 46, // 52: mxaccess_gateway.v1.WriteBulkCommand.entries:type_name -> mxaccess_gateway.v1.WriteBulkEntry + 90, // 53: mxaccess_gateway.v1.WriteBulkEntry.value:type_name -> mxaccess_gateway.v1.MxValue + 48, // 54: mxaccess_gateway.v1.Write2BulkCommand.entries:type_name -> mxaccess_gateway.v1.Write2BulkEntry + 90, // 55: mxaccess_gateway.v1.Write2BulkEntry.value:type_name -> mxaccess_gateway.v1.MxValue + 90, // 56: mxaccess_gateway.v1.Write2BulkEntry.timestamp_value:type_name -> mxaccess_gateway.v1.MxValue + 50, // 57: mxaccess_gateway.v1.WriteSecuredBulkCommand.entries:type_name -> mxaccess_gateway.v1.WriteSecuredBulkEntry + 90, // 58: mxaccess_gateway.v1.WriteSecuredBulkEntry.value:type_name -> mxaccess_gateway.v1.MxValue + 52, // 59: mxaccess_gateway.v1.WriteSecured2BulkCommand.entries:type_name -> mxaccess_gateway.v1.WriteSecured2BulkEntry + 90, // 60: mxaccess_gateway.v1.WriteSecured2BulkEntry.value:type_name -> mxaccess_gateway.v1.MxValue + 90, // 61: mxaccess_gateway.v1.WriteSecured2BulkEntry.timestamp_value:type_name -> mxaccess_gateway.v1.MxValue + 101, // 62: mxaccess_gateway.v1.ShutdownWorkerCommand.grace_period:type_name -> google.protobuf.Duration + 0, // 63: mxaccess_gateway.v1.MxCommandReply.kind:type_name -> mxaccess_gateway.v1.MxCommandKind + 100, // 64: mxaccess_gateway.v1.MxCommandReply.protocol_status:type_name -> mxaccess_gateway.v1.ProtocolStatus + 90, // 65: mxaccess_gateway.v1.MxCommandReply.return_value:type_name -> mxaccess_gateway.v1.MxValue + 89, // 66: mxaccess_gateway.v1.MxCommandReply.statuses:type_name -> mxaccess_gateway.v1.MxStatusProxy + 60, // 67: mxaccess_gateway.v1.MxCommandReply.register:type_name -> mxaccess_gateway.v1.RegisterReply + 61, // 68: mxaccess_gateway.v1.MxCommandReply.add_item:type_name -> mxaccess_gateway.v1.AddItemReply + 62, // 69: mxaccess_gateway.v1.MxCommandReply.add_item2:type_name -> mxaccess_gateway.v1.AddItem2Reply + 63, // 70: mxaccess_gateway.v1.MxCommandReply.add_buffered_item:type_name -> mxaccess_gateway.v1.AddBufferedItemReply + 64, // 71: mxaccess_gateway.v1.MxCommandReply.suspend:type_name -> mxaccess_gateway.v1.SuspendReply + 65, // 72: mxaccess_gateway.v1.MxCommandReply.activate:type_name -> mxaccess_gateway.v1.ActivateReply + 66, // 73: mxaccess_gateway.v1.MxCommandReply.authenticate_user:type_name -> mxaccess_gateway.v1.AuthenticateUserReply + 67, // 74: mxaccess_gateway.v1.MxCommandReply.archestra_user_to_id:type_name -> mxaccess_gateway.v1.ArchestrAUserToIdReply + 69, // 75: mxaccess_gateway.v1.MxCommandReply.add_item_bulk:type_name -> mxaccess_gateway.v1.BulkSubscribeReply + 69, // 76: mxaccess_gateway.v1.MxCommandReply.advise_item_bulk:type_name -> mxaccess_gateway.v1.BulkSubscribeReply + 69, // 77: mxaccess_gateway.v1.MxCommandReply.remove_item_bulk:type_name -> mxaccess_gateway.v1.BulkSubscribeReply + 69, // 78: mxaccess_gateway.v1.MxCommandReply.un_advise_item_bulk:type_name -> mxaccess_gateway.v1.BulkSubscribeReply + 69, // 79: mxaccess_gateway.v1.MxCommandReply.subscribe_bulk:type_name -> mxaccess_gateway.v1.BulkSubscribeReply + 69, // 80: mxaccess_gateway.v1.MxCommandReply.unsubscribe_bulk:type_name -> mxaccess_gateway.v1.BulkSubscribeReply + 77, // 81: mxaccess_gateway.v1.MxCommandReply.acknowledge_alarm:type_name -> mxaccess_gateway.v1.AcknowledgeAlarmReplyPayload + 78, // 82: mxaccess_gateway.v1.MxCommandReply.query_active_alarms:type_name -> mxaccess_gateway.v1.QueryActiveAlarmsReplyPayload + 71, // 83: mxaccess_gateway.v1.MxCommandReply.write_bulk:type_name -> mxaccess_gateway.v1.BulkWriteReply + 71, // 84: mxaccess_gateway.v1.MxCommandReply.write2_bulk:type_name -> mxaccess_gateway.v1.BulkWriteReply + 71, // 85: mxaccess_gateway.v1.MxCommandReply.write_secured_bulk:type_name -> mxaccess_gateway.v1.BulkWriteReply + 71, // 86: mxaccess_gateway.v1.MxCommandReply.write_secured2_bulk:type_name -> mxaccess_gateway.v1.BulkWriteReply + 73, // 87: mxaccess_gateway.v1.MxCommandReply.read_bulk:type_name -> mxaccess_gateway.v1.BulkReadReply + 74, // 88: mxaccess_gateway.v1.MxCommandReply.session_state:type_name -> mxaccess_gateway.v1.SessionStateReply + 75, // 89: mxaccess_gateway.v1.MxCommandReply.worker_info:type_name -> mxaccess_gateway.v1.WorkerInfoReply + 76, // 90: mxaccess_gateway.v1.MxCommandReply.drain_events:type_name -> mxaccess_gateway.v1.DrainEventsReply + 89, // 91: mxaccess_gateway.v1.SuspendReply.status:type_name -> mxaccess_gateway.v1.MxStatusProxy + 89, // 92: mxaccess_gateway.v1.ActivateReply.status:type_name -> mxaccess_gateway.v1.MxStatusProxy + 68, // 93: mxaccess_gateway.v1.BulkSubscribeReply.results:type_name -> mxaccess_gateway.v1.SubscribeResult + 89, // 94: mxaccess_gateway.v1.BulkWriteResult.statuses:type_name -> mxaccess_gateway.v1.MxStatusProxy + 70, // 95: mxaccess_gateway.v1.BulkWriteReply.results:type_name -> mxaccess_gateway.v1.BulkWriteResult + 90, // 96: mxaccess_gateway.v1.BulkReadResult.value:type_name -> mxaccess_gateway.v1.MxValue + 102, // 97: mxaccess_gateway.v1.BulkReadResult.source_timestamp:type_name -> google.protobuf.Timestamp + 89, // 98: mxaccess_gateway.v1.BulkReadResult.statuses:type_name -> mxaccess_gateway.v1.MxStatusProxy + 72, // 99: mxaccess_gateway.v1.BulkReadReply.results:type_name -> mxaccess_gateway.v1.BulkReadResult + 8, // 100: mxaccess_gateway.v1.SessionStateReply.state:type_name -> mxaccess_gateway.v1.SessionState + 79, // 101: mxaccess_gateway.v1.DrainEventsReply.events:type_name -> mxaccess_gateway.v1.MxEvent + 85, // 102: mxaccess_gateway.v1.QueryActiveAlarmsReplyPayload.snapshots:type_name -> mxaccess_gateway.v1.ActiveAlarmSnapshot + 1, // 103: mxaccess_gateway.v1.MxEvent.family:type_name -> mxaccess_gateway.v1.MxEventFamily + 90, // 104: mxaccess_gateway.v1.MxEvent.value:type_name -> mxaccess_gateway.v1.MxValue + 102, // 105: mxaccess_gateway.v1.MxEvent.source_timestamp:type_name -> google.protobuf.Timestamp + 89, // 106: mxaccess_gateway.v1.MxEvent.statuses:type_name -> mxaccess_gateway.v1.MxStatusProxy + 102, // 107: mxaccess_gateway.v1.MxEvent.worker_timestamp:type_name -> google.protobuf.Timestamp + 102, // 108: mxaccess_gateway.v1.MxEvent.gateway_receive_timestamp:type_name -> google.protobuf.Timestamp + 80, // 109: mxaccess_gateway.v1.MxEvent.on_data_change:type_name -> mxaccess_gateway.v1.OnDataChangeEvent + 81, // 110: mxaccess_gateway.v1.MxEvent.on_write_complete:type_name -> mxaccess_gateway.v1.OnWriteCompleteEvent + 82, // 111: mxaccess_gateway.v1.MxEvent.operation_complete:type_name -> mxaccess_gateway.v1.OperationCompleteEvent + 83, // 112: mxaccess_gateway.v1.MxEvent.on_buffered_data_change:type_name -> mxaccess_gateway.v1.OnBufferedDataChangeEvent + 84, // 113: mxaccess_gateway.v1.MxEvent.on_alarm_transition:type_name -> mxaccess_gateway.v1.OnAlarmTransitionEvent + 6, // 114: mxaccess_gateway.v1.OnBufferedDataChangeEvent.data_type:type_name -> mxaccess_gateway.v1.MxDataType + 91, // 115: mxaccess_gateway.v1.OnBufferedDataChangeEvent.quality_values:type_name -> mxaccess_gateway.v1.MxArray + 91, // 116: mxaccess_gateway.v1.OnBufferedDataChangeEvent.timestamp_values:type_name -> mxaccess_gateway.v1.MxArray + 2, // 117: mxaccess_gateway.v1.OnAlarmTransitionEvent.transition_kind:type_name -> mxaccess_gateway.v1.AlarmTransitionKind + 102, // 118: mxaccess_gateway.v1.OnAlarmTransitionEvent.original_raise_timestamp:type_name -> google.protobuf.Timestamp + 102, // 119: mxaccess_gateway.v1.OnAlarmTransitionEvent.transition_timestamp:type_name -> google.protobuf.Timestamp + 90, // 120: mxaccess_gateway.v1.OnAlarmTransitionEvent.current_value:type_name -> mxaccess_gateway.v1.MxValue + 90, // 121: mxaccess_gateway.v1.OnAlarmTransitionEvent.limit_value:type_name -> mxaccess_gateway.v1.MxValue + 102, // 122: mxaccess_gateway.v1.ActiveAlarmSnapshot.original_raise_timestamp:type_name -> google.protobuf.Timestamp + 3, // 123: mxaccess_gateway.v1.ActiveAlarmSnapshot.current_state:type_name -> mxaccess_gateway.v1.AlarmConditionState + 102, // 124: mxaccess_gateway.v1.ActiveAlarmSnapshot.last_transition_timestamp:type_name -> google.protobuf.Timestamp + 90, // 125: mxaccess_gateway.v1.ActiveAlarmSnapshot.current_value:type_name -> mxaccess_gateway.v1.MxValue + 90, // 126: mxaccess_gateway.v1.ActiveAlarmSnapshot.limit_value:type_name -> mxaccess_gateway.v1.MxValue + 100, // 127: mxaccess_gateway.v1.AcknowledgeAlarmReply.protocol_status:type_name -> mxaccess_gateway.v1.ProtocolStatus + 89, // 128: mxaccess_gateway.v1.AcknowledgeAlarmReply.status:type_name -> mxaccess_gateway.v1.MxStatusProxy + 4, // 129: mxaccess_gateway.v1.MxStatusProxy.category:type_name -> mxaccess_gateway.v1.MxStatusCategory + 5, // 130: mxaccess_gateway.v1.MxStatusProxy.detected_by:type_name -> mxaccess_gateway.v1.MxStatusSource + 6, // 131: mxaccess_gateway.v1.MxValue.data_type:type_name -> mxaccess_gateway.v1.MxDataType + 102, // 132: mxaccess_gateway.v1.MxValue.timestamp_value:type_name -> google.protobuf.Timestamp + 91, // 133: mxaccess_gateway.v1.MxValue.array_value:type_name -> mxaccess_gateway.v1.MxArray + 6, // 134: mxaccess_gateway.v1.MxArray.element_data_type:type_name -> mxaccess_gateway.v1.MxDataType + 92, // 135: mxaccess_gateway.v1.MxArray.bool_values:type_name -> mxaccess_gateway.v1.BoolArray + 93, // 136: mxaccess_gateway.v1.MxArray.int32_values:type_name -> mxaccess_gateway.v1.Int32Array + 94, // 137: mxaccess_gateway.v1.MxArray.int64_values:type_name -> mxaccess_gateway.v1.Int64Array + 95, // 138: mxaccess_gateway.v1.MxArray.float_values:type_name -> mxaccess_gateway.v1.FloatArray + 96, // 139: mxaccess_gateway.v1.MxArray.double_values:type_name -> mxaccess_gateway.v1.DoubleArray + 97, // 140: mxaccess_gateway.v1.MxArray.string_values:type_name -> mxaccess_gateway.v1.StringArray + 98, // 141: mxaccess_gateway.v1.MxArray.timestamp_values:type_name -> mxaccess_gateway.v1.TimestampArray + 99, // 142: mxaccess_gateway.v1.MxArray.raw_values:type_name -> mxaccess_gateway.v1.RawArray + 102, // 143: mxaccess_gateway.v1.TimestampArray.values:type_name -> google.protobuf.Timestamp + 7, // 144: mxaccess_gateway.v1.ProtocolStatus.code:type_name -> mxaccess_gateway.v1.ProtocolStatusCode + 9, // 145: mxaccess_gateway.v1.MxAccessGateway.OpenSession:input_type -> mxaccess_gateway.v1.OpenSessionRequest + 11, // 146: mxaccess_gateway.v1.MxAccessGateway.CloseSession:input_type -> mxaccess_gateway.v1.CloseSessionRequest + 14, // 147: mxaccess_gateway.v1.MxAccessGateway.Invoke:input_type -> mxaccess_gateway.v1.MxCommandRequest + 13, // 148: mxaccess_gateway.v1.MxAccessGateway.StreamEvents:input_type -> mxaccess_gateway.v1.StreamEventsRequest + 86, // 149: mxaccess_gateway.v1.MxAccessGateway.AcknowledgeAlarm:input_type -> mxaccess_gateway.v1.AcknowledgeAlarmRequest + 88, // 150: mxaccess_gateway.v1.MxAccessGateway.QueryActiveAlarms:input_type -> mxaccess_gateway.v1.QueryActiveAlarmsRequest + 10, // 151: mxaccess_gateway.v1.MxAccessGateway.OpenSession:output_type -> mxaccess_gateway.v1.OpenSessionReply + 12, // 152: mxaccess_gateway.v1.MxAccessGateway.CloseSession:output_type -> mxaccess_gateway.v1.CloseSessionReply + 59, // 153: mxaccess_gateway.v1.MxAccessGateway.Invoke:output_type -> mxaccess_gateway.v1.MxCommandReply + 79, // 154: mxaccess_gateway.v1.MxAccessGateway.StreamEvents:output_type -> mxaccess_gateway.v1.MxEvent + 87, // 155: mxaccess_gateway.v1.MxAccessGateway.AcknowledgeAlarm:output_type -> mxaccess_gateway.v1.AcknowledgeAlarmReply + 85, // 156: mxaccess_gateway.v1.MxAccessGateway.QueryActiveAlarms:output_type -> mxaccess_gateway.v1.ActiveAlarmSnapshot + 151, // [151:157] is the sub-list for method output_type + 145, // [145:151] is the sub-list for method input_type + 145, // [145:145] is the sub-list for extension type_name + 145, // [145:145] is the sub-list for extension extendee + 0, // [0:145] is the sub-list for field type_name } func init() { file_mxaccess_gateway_proto_init() } @@ -6892,13 +8700,23 @@ func file_mxaccess_gateway_proto_init() { (*MxCommand_UnAdviseItemBulk)(nil), (*MxCommand_SubscribeBulk)(nil), (*MxCommand_UnsubscribeBulk)(nil), + (*MxCommand_SubscribeAlarms)(nil), + (*MxCommand_UnsubscribeAlarms)(nil), + (*MxCommand_AcknowledgeAlarmCommand)(nil), + (*MxCommand_QueryActiveAlarmsCommand)(nil), + (*MxCommand_AcknowledgeAlarmByNameCommand)(nil), + (*MxCommand_WriteBulk)(nil), + (*MxCommand_Write2Bulk)(nil), + (*MxCommand_WriteSecuredBulk)(nil), + (*MxCommand_WriteSecured2Bulk)(nil), + (*MxCommand_ReadBulk)(nil), (*MxCommand_Ping)(nil), (*MxCommand_GetSessionState)(nil), (*MxCommand_GetWorkerInfo)(nil), (*MxCommand_DrainEvents)(nil), (*MxCommand_ShutdownWorker)(nil), } - file_mxaccess_gateway_proto_msgTypes[36].OneofWrappers = []any{ + file_mxaccess_gateway_proto_msgTypes[50].OneofWrappers = []any{ (*MxCommandReply_Register)(nil), (*MxCommandReply_AddItem)(nil), (*MxCommandReply_AddItem2)(nil), @@ -6913,19 +8731,27 @@ func file_mxaccess_gateway_proto_init() { (*MxCommandReply_UnAdviseItemBulk)(nil), (*MxCommandReply_SubscribeBulk)(nil), (*MxCommandReply_UnsubscribeBulk)(nil), + (*MxCommandReply_AcknowledgeAlarm)(nil), + (*MxCommandReply_QueryActiveAlarms)(nil), + (*MxCommandReply_WriteBulk)(nil), + (*MxCommandReply_Write2Bulk)(nil), + (*MxCommandReply_WriteSecuredBulk)(nil), + (*MxCommandReply_WriteSecured2Bulk)(nil), + (*MxCommandReply_ReadBulk)(nil), (*MxCommandReply_SessionState)(nil), (*MxCommandReply_WorkerInfo)(nil), (*MxCommandReply_DrainEvents)(nil), } - file_mxaccess_gateway_proto_msgTypes[50].OneofWrappers = []any{ + file_mxaccess_gateway_proto_msgTypes[61].OneofWrappers = []any{} + file_mxaccess_gateway_proto_msgTypes[70].OneofWrappers = []any{ (*MxEvent_OnDataChange)(nil), (*MxEvent_OnWriteComplete)(nil), (*MxEvent_OperationComplete)(nil), (*MxEvent_OnBufferedDataChange)(nil), (*MxEvent_OnAlarmTransition)(nil), } - file_mxaccess_gateway_proto_msgTypes[58].OneofWrappers = []any{} - file_mxaccess_gateway_proto_msgTypes[61].OneofWrappers = []any{ + file_mxaccess_gateway_proto_msgTypes[78].OneofWrappers = []any{} + file_mxaccess_gateway_proto_msgTypes[81].OneofWrappers = []any{ (*MxValue_BoolValue)(nil), (*MxValue_Int32Value)(nil), (*MxValue_Int64Value)(nil), @@ -6936,7 +8762,7 @@ func file_mxaccess_gateway_proto_init() { (*MxValue_ArrayValue)(nil), (*MxValue_RawValue)(nil), } - file_mxaccess_gateway_proto_msgTypes[62].OneofWrappers = []any{ + file_mxaccess_gateway_proto_msgTypes[82].OneofWrappers = []any{ (*MxArray_BoolValues)(nil), (*MxArray_Int32Values)(nil), (*MxArray_Int64Values)(nil), @@ -6952,7 +8778,7 @@ func file_mxaccess_gateway_proto_init() { GoPackagePath: reflect.TypeOf(x{}).PkgPath(), RawDescriptor: unsafe.Slice(unsafe.StringData(file_mxaccess_gateway_proto_rawDesc), len(file_mxaccess_gateway_proto_rawDesc)), NumEnums: 9, - NumMessages: 72, + NumMessages: 92, NumExtensions: 0, NumServices: 1, }, diff --git a/clients/go/mxgateway/client_session_test.go b/clients/go/mxgateway/client_session_test.go index 016caa8..134b8ac 100644 --- a/clients/go/mxgateway/client_session_test.go +++ b/clients/go/mxgateway/client_session_test.go @@ -243,6 +243,87 @@ func TestSubscribeBulkBuildsOneBulkCommandAndReturnsResults(t *testing.T) { } } +func TestWriteBulkBuildsOneBulkCommandAndReturnsPerEntryResults(t *testing.T) { + fake := &fakeGatewayServer{ + invokeReply: &pb.MxCommandReply{ + SessionId: "session-1", + Kind: pb.MxCommandKind_MX_COMMAND_KIND_WRITE_BULK, + ProtocolStatus: &pb.ProtocolStatus{ + Code: pb.ProtocolStatusCode_PROTOCOL_STATUS_CODE_OK, + }, + Payload: &pb.MxCommandReply_WriteBulk{ + WriteBulk: &pb.BulkWriteReply{ + Results: []*pb.BulkWriteResult{ + {ServerHandle: 12, ItemHandle: 901, WasSuccessful: true}, + {ServerHandle: 12, ItemHandle: 902, WasSuccessful: false, ErrorMessage: "invalid handle"}, + }, + }, + }, + }, + } + client, cleanup := newBufconnClient(t, fake) + defer cleanup() + session := NewSessionForID(client, "session-1") + + results, err := session.WriteBulk(context.Background(), 12, []*pb.WriteBulkEntry{ + {ItemHandle: 901, UserId: 5, Value: &pb.MxValue{DataType: pb.MxDataType_MX_DATA_TYPE_INTEGER, Kind: &pb.MxValue_Int32Value{Int32Value: 11}}}, + {ItemHandle: 902, UserId: 5, Value: &pb.MxValue{DataType: pb.MxDataType_MX_DATA_TYPE_INTEGER, Kind: &pb.MxValue_Int32Value{Int32Value: 22}}}, + }) + if err != nil { + t.Fatalf("WriteBulk() error = %v", err) + } + if len(results) != 2 || !results[0].GetWasSuccessful() || results[1].GetWasSuccessful() { + t.Fatalf("results = %#v, want [success, failure]", results) + } + req := fake.invokeRequest + if req.GetCommand().GetKind() != pb.MxCommandKind_MX_COMMAND_KIND_WRITE_BULK { + t.Fatalf("command kind = %s", req.GetCommand().GetKind()) + } + if got := req.GetCommand().GetWriteBulk().GetEntries(); len(got) != 2 { + t.Fatalf("entries = %#v, want 2", got) + } +} + +func TestReadBulkForwardsTimeoutAndUnpacksCachedFlag(t *testing.T) { + fake := &fakeGatewayServer{ + invokeReply: &pb.MxCommandReply{ + SessionId: "session-1", + Kind: pb.MxCommandKind_MX_COMMAND_KIND_READ_BULK, + ProtocolStatus: &pb.ProtocolStatus{ + Code: pb.ProtocolStatusCode_PROTOCOL_STATUS_CODE_OK, + }, + Payload: &pb.MxCommandReply_ReadBulk{ + ReadBulk: &pb.BulkReadReply{ + Results: []*pb.BulkReadResult{ + { + ServerHandle: 12, + TagAddress: "Area001.Pump001.Speed", + ItemHandle: 34, + WasSuccessful: true, + WasCached: true, + Value: &pb.MxValue{DataType: pb.MxDataType_MX_DATA_TYPE_INTEGER, Kind: &pb.MxValue_Int32Value{Int32Value: 99}}, + }, + }, + }, + }, + }, + } + client, cleanup := newBufconnClient(t, fake) + defer cleanup() + session := NewSessionForID(client, "session-1") + + results, err := session.ReadBulk(context.Background(), 12, []string{"Area001.Pump001.Speed"}, 750*time.Millisecond) + if err != nil { + t.Fatalf("ReadBulk() error = %v", err) + } + if len(results) != 1 || !results[0].GetWasCached() || results[0].GetValue().GetInt32Value() != 99 { + t.Fatalf("results = %#v", results) + } + if got := fake.invokeRequest.GetCommand().GetReadBulk().GetTimeoutMs(); got != 750 { + t.Fatalf("timeout_ms = %d, want 750", got) + } +} + func TestInvokeReturnsTypedMxAccessErrorWithRawReply(t *testing.T) { hresult := int32(-2147467259) fake := &fakeGatewayServer{ diff --git a/clients/go/mxgateway/session.go b/clients/go/mxgateway/session.go index 81cc2fd..0775de2 100644 --- a/clients/go/mxgateway/session.go +++ b/clients/go/mxgateway/session.go @@ -389,6 +389,142 @@ func (s *Session) UnsubscribeBulk(ctx context.Context, serverHandle int32, itemH return reply.GetUnsubscribeBulk().GetResults(), nil } +// WriteBulk invokes MXAccess Write sequentially for each entry inside one gateway command. +// Per-entry failures appear as BulkWriteResult entries with WasSuccessful=false; the call +// never returns an error for per-entry MXAccess failures (it returns an error only for +// protocol-level failures or transport errors). +func (s *Session) WriteBulk(ctx context.Context, serverHandle int32, entries []*WriteBulkEntry) ([]*BulkWriteResult, error) { + if entries == nil { + return nil, errors.New("mxgateway: write bulk entries are required") + } + if err := ensureBulkSize("write bulk entries", len(entries)); err != nil { + return nil, err + } + reply, err := s.invokeCommand(ctx, &pb.MxCommand{ + Kind: pb.MxCommandKind_MX_COMMAND_KIND_WRITE_BULK, + Payload: &pb.MxCommand_WriteBulk{ + WriteBulk: &pb.WriteBulkCommand{ + ServerHandle: serverHandle, + Entries: entries, + }, + }, + }) + if err != nil { + return nil, err + } + return reply.GetWriteBulk().GetResults(), nil +} + +// Write2Bulk invokes MXAccess Write2 (timestamped) for each entry inside one gateway command. +func (s *Session) Write2Bulk(ctx context.Context, serverHandle int32, entries []*Write2BulkEntry) ([]*BulkWriteResult, error) { + if entries == nil { + return nil, errors.New("mxgateway: write2 bulk entries are required") + } + if err := ensureBulkSize("write2 bulk entries", len(entries)); err != nil { + return nil, err + } + reply, err := s.invokeCommand(ctx, &pb.MxCommand{ + Kind: pb.MxCommandKind_MX_COMMAND_KIND_WRITE2_BULK, + Payload: &pb.MxCommand_Write2Bulk{ + Write2Bulk: &pb.Write2BulkCommand{ + ServerHandle: serverHandle, + Entries: entries, + }, + }, + }) + if err != nil { + return nil, err + } + return reply.GetWrite2Bulk().GetResults(), nil +} + +// WriteSecuredBulk invokes MXAccess WriteSecured for each entry. Credential-sensitive +// values must not be logged by callers; mirrors the single-item WriteSecured contract. +func (s *Session) WriteSecuredBulk(ctx context.Context, serverHandle int32, entries []*WriteSecuredBulkEntry) ([]*BulkWriteResult, error) { + if entries == nil { + return nil, errors.New("mxgateway: write-secured bulk entries are required") + } + if err := ensureBulkSize("write-secured bulk entries", len(entries)); err != nil { + return nil, err + } + reply, err := s.invokeCommand(ctx, &pb.MxCommand{ + Kind: pb.MxCommandKind_MX_COMMAND_KIND_WRITE_SECURED_BULK, + Payload: &pb.MxCommand_WriteSecuredBulk{ + WriteSecuredBulk: &pb.WriteSecuredBulkCommand{ + ServerHandle: serverHandle, + Entries: entries, + }, + }, + }) + if err != nil { + return nil, err + } + return reply.GetWriteSecuredBulk().GetResults(), nil +} + +// WriteSecured2Bulk invokes MXAccess WriteSecured2 (timestamped) for each entry. +func (s *Session) WriteSecured2Bulk(ctx context.Context, serverHandle int32, entries []*WriteSecured2BulkEntry) ([]*BulkWriteResult, error) { + if entries == nil { + return nil, errors.New("mxgateway: write-secured2 bulk entries are required") + } + if err := ensureBulkSize("write-secured2 bulk entries", len(entries)); err != nil { + return nil, err + } + reply, err := s.invokeCommand(ctx, &pb.MxCommand{ + Kind: pb.MxCommandKind_MX_COMMAND_KIND_WRITE_SECURED2_BULK, + Payload: &pb.MxCommand_WriteSecured2Bulk{ + WriteSecured2Bulk: &pb.WriteSecured2BulkCommand{ + ServerHandle: serverHandle, + Entries: entries, + }, + }, + }) + if err != nil { + return nil, err + } + return reply.GetWriteSecured2Bulk().GetResults(), nil +} + +// ReadBulk snapshots the current value of each requested tag. +// +// MXAccess COM has no synchronous Read; the worker satisfies this by returning the +// most recent cached OnDataChange value when the tag is already advised (WasCached=true), +// or by taking a full AddItem + Advise + wait + UnAdvise + RemoveItem snapshot lifecycle +// otherwise. timeout bounds the wait per tag in the snapshot case; pass zero to use the +// worker default. Per-tag failures (timeout, invalid tag) appear as BulkReadResult entries +// with WasSuccessful=false; the call never returns an error for per-tag MXAccess failures. +func (s *Session) ReadBulk(ctx context.Context, serverHandle int32, tagAddresses []string, timeout time.Duration) ([]*BulkReadResult, error) { + if tagAddresses == nil { + return nil, errors.New("mxgateway: tag addresses are required") + } + if err := ensureBulkSize("tag addresses", len(tagAddresses)); err != nil { + return nil, err + } + var timeoutMs uint32 + if timeout > 0 { + ms := timeout.Milliseconds() + if ms > int64(^uint32(0)) { + timeoutMs = ^uint32(0) + } else { + timeoutMs = uint32(ms) + } + } + reply, err := s.invokeCommand(ctx, &pb.MxCommand{ + Kind: pb.MxCommandKind_MX_COMMAND_KIND_READ_BULK, + Payload: &pb.MxCommand_ReadBulk{ + ReadBulk: &pb.ReadBulkCommand{ + ServerHandle: serverHandle, + TagAddresses: tagAddresses, + TimeoutMs: timeoutMs, + }, + }, + }) + if err != nil { + return nil, err + } + return reply.GetReadBulk().GetResults(), nil +} + // Write invokes MXAccess Write. func (s *Session) Write(ctx context.Context, serverHandle, itemHandle int32, value *MxValue, userID int32) error { _, err := s.WriteRaw(ctx, serverHandle, itemHandle, value, userID) diff --git a/clients/go/mxgateway/types.go b/clients/go/mxgateway/types.go index b942b9e..05d2208 100644 --- a/clients/go/mxgateway/types.go +++ b/clients/go/mxgateway/types.go @@ -70,6 +70,32 @@ type ( WriteCommand = pb.WriteCommand // Write2Command is the payload of an MXAccess Write2 command. Write2Command = pb.Write2Command + // WriteBulkCommand carries one bulk-Write request. + WriteBulkCommand = pb.WriteBulkCommand + // WriteBulkEntry is one (item_handle, value, user_id) tuple in a WriteBulk request. + WriteBulkEntry = pb.WriteBulkEntry + // Write2BulkCommand carries one bulk-Write2 (timestamped) request. + Write2BulkCommand = pb.Write2BulkCommand + // Write2BulkEntry is one (item_handle, value, timestamp_value, user_id) tuple in a Write2Bulk request. + Write2BulkEntry = pb.Write2BulkEntry + // WriteSecuredBulkCommand carries one bulk-WriteSecured request. Values are credential-sensitive. + WriteSecuredBulkCommand = pb.WriteSecuredBulkCommand + // WriteSecuredBulkEntry is one entry in a WriteSecuredBulk request. + WriteSecuredBulkEntry = pb.WriteSecuredBulkEntry + // WriteSecured2BulkCommand carries one bulk-WriteSecured2 (timestamped) request. + WriteSecured2BulkCommand = pb.WriteSecured2BulkCommand + // WriteSecured2BulkEntry is one entry in a WriteSecured2Bulk request. + WriteSecured2BulkEntry = pb.WriteSecured2BulkEntry + // ReadBulkCommand carries one bulk-Read request. + ReadBulkCommand = pb.ReadBulkCommand + // BulkWriteResult is one per-entry result in a bulk-write reply. + BulkWriteResult = pb.BulkWriteResult + // BulkWriteReply aggregates BulkWriteResult entries for a bulk-write command. + BulkWriteReply = pb.BulkWriteReply + // BulkReadResult is one per-tag result in a bulk-read reply (carries the snapshot value plus a was_cached flag). + BulkReadResult = pb.BulkReadResult + // BulkReadReply aggregates BulkReadResult entries for a ReadBulk command. + BulkReadReply = pb.BulkReadReply // RegisterReply carries the ServerHandle returned by Register. RegisterReply = pb.RegisterReply // AddItemReply carries the ItemHandle returned by AddItem. @@ -155,6 +181,16 @@ const ( CommandKindWrite = pb.MxCommandKind_MX_COMMAND_KIND_WRITE // CommandKindWrite2 selects the MXAccess Write2 command. CommandKindWrite2 = pb.MxCommandKind_MX_COMMAND_KIND_WRITE2 + // CommandKindWriteBulk selects the bulk Write command. + CommandKindWriteBulk = pb.MxCommandKind_MX_COMMAND_KIND_WRITE_BULK + // CommandKindWrite2Bulk selects the bulk Write2 (timestamped) command. + CommandKindWrite2Bulk = pb.MxCommandKind_MX_COMMAND_KIND_WRITE2_BULK + // CommandKindWriteSecuredBulk selects the bulk WriteSecured command. + CommandKindWriteSecuredBulk = pb.MxCommandKind_MX_COMMAND_KIND_WRITE_SECURED_BULK + // CommandKindWriteSecured2Bulk selects the bulk WriteSecured2 (timestamped) command. + CommandKindWriteSecured2Bulk = pb.MxCommandKind_MX_COMMAND_KIND_WRITE_SECURED2_BULK + // CommandKindReadBulk selects the bulk Read command (cached-or-snapshot per tag). + CommandKindReadBulk = pb.MxCommandKind_MX_COMMAND_KIND_READ_BULK // DataTypeUnknown denotes an unrecognized MXAccess data type. DataTypeUnknown = pb.MxDataType_MX_DATA_TYPE_UNKNOWN diff --git a/clients/java/README.md b/clients/java/README.md index cc441a0..348005f 100644 --- a/clients/java/README.md +++ b/clients/java/README.md @@ -62,6 +62,18 @@ underlying protobuf messages. `MxGatewayCommandException` and `MxAccessException` preserve the raw `MxCommandReply` when the gateway returns a data-bearing MXAccess failure. +`MxGatewaySession` exposes the full bulk family — `addItemBulk`, +`adviseItemBulk`, `removeItemBulk`, `unAdviseItemBulk`, `subscribeBulk`, +`unsubscribeBulk`, `writeBulk`, `write2Bulk`, `writeSecuredBulk`, +`writeSecured2Bulk`, and `readBulk`. Each carries one round-trip with a +`List<*Entry>` (or `List` / `List` for the legacy bulk +shapes) and returns `List` / `List` / +`List`; per-entry MXAccess failures populate +`wasSuccessful == false` and never throw. `readBulk` takes a per-tag +`timeoutMs` (0 = worker default) and returns cached `OnDataChange` values +when the tag is already advised (`wasCached == true`) without touching the +existing subscription. + `openSession` verifies the gateway's reported `gateway_protocol_version` against the version this client was generated for and throws `MxGatewayException` on a mismatch, so an incompatible client fails fast with a clear message instead of diff --git a/clients/java/mxgateway-client/src/main/java/com/dohertylan/mxgateway/client/MxGatewaySession.java b/clients/java/mxgateway-client/src/main/java/com/dohertylan/mxgateway/client/MxGatewaySession.java index 35f68bd..7d33eb5 100644 --- a/clients/java/mxgateway-client/src/main/java/com/dohertylan/mxgateway/client/MxGatewaySession.java +++ b/clients/java/mxgateway-client/src/main/java/com/dohertylan/mxgateway/client/MxGatewaySession.java @@ -9,6 +9,8 @@ import mxaccess_gateway.v1.MxaccessGateway.AddItemBulkCommand; import mxaccess_gateway.v1.MxaccessGateway.AddItemCommand; import mxaccess_gateway.v1.MxaccessGateway.AdviseItemBulkCommand; import mxaccess_gateway.v1.MxaccessGateway.AdviseCommand; +import mxaccess_gateway.v1.MxaccessGateway.BulkReadResult; +import mxaccess_gateway.v1.MxaccessGateway.BulkWriteResult; import mxaccess_gateway.v1.MxaccessGateway.CloseSessionReply; import mxaccess_gateway.v1.MxaccessGateway.CloseSessionRequest; import mxaccess_gateway.v1.MxaccessGateway.MxCommand; @@ -17,6 +19,7 @@ import mxaccess_gateway.v1.MxaccessGateway.MxCommandReply; import mxaccess_gateway.v1.MxaccessGateway.MxCommandRequest; import mxaccess_gateway.v1.MxaccessGateway.MxValue; import mxaccess_gateway.v1.MxaccessGateway.OpenSessionReply; +import mxaccess_gateway.v1.MxaccessGateway.ReadBulkCommand; import mxaccess_gateway.v1.MxaccessGateway.RegisterCommand; import mxaccess_gateway.v1.MxaccessGateway.RemoveItemBulkCommand; import mxaccess_gateway.v1.MxaccessGateway.RemoveItemCommand; @@ -27,8 +30,16 @@ import mxaccess_gateway.v1.MxaccessGateway.UnAdviseCommand; import mxaccess_gateway.v1.MxaccessGateway.UnAdviseItemBulkCommand; import mxaccess_gateway.v1.MxaccessGateway.UnsubscribeBulkCommand; import mxaccess_gateway.v1.MxaccessGateway.UnregisterCommand; +import mxaccess_gateway.v1.MxaccessGateway.Write2BulkCommand; +import mxaccess_gateway.v1.MxaccessGateway.Write2BulkEntry; import mxaccess_gateway.v1.MxaccessGateway.Write2Command; +import mxaccess_gateway.v1.MxaccessGateway.WriteBulkCommand; +import mxaccess_gateway.v1.MxaccessGateway.WriteBulkEntry; import mxaccess_gateway.v1.MxaccessGateway.WriteCommand; +import mxaccess_gateway.v1.MxaccessGateway.WriteSecured2BulkCommand; +import mxaccess_gateway.v1.MxaccessGateway.WriteSecured2BulkEntry; +import mxaccess_gateway.v1.MxaccessGateway.WriteSecuredBulkCommand; +import mxaccess_gateway.v1.MxaccessGateway.WriteSecuredBulkEntry; /** * Typed handle for a single MXAccess gateway session. @@ -451,6 +462,104 @@ public final class MxGatewaySession implements AutoCloseable { return reply.getUnsubscribeBulk().getResultsList(); } + /** + * Bulk {@code Write} — sequential MXAccess Write per entry on the worker's STA. + * Per-entry failures appear as {@link BulkWriteResult} entries with + * {@code wasSuccessful == false}; this method does not throw for per-entry + * MXAccess failures (it still throws {@link MxGatewayException} on transport + * or protocol-level failures). + * + * @param serverHandle the {@code ServerHandle} owning the items + * @param entries the per-item (handle, value, user id) tuples + * @return a per-entry {@link BulkWriteResult} list + */ + public List writeBulk(int serverHandle, List entries) { + Objects.requireNonNull(entries, "entries"); + MxCommandReply reply = invokeCommand(MxCommand.newBuilder() + .setKind(MxCommandKind.MX_COMMAND_KIND_WRITE_BULK) + .setWriteBulk(WriteBulkCommand.newBuilder() + .setServerHandle(serverHandle) + .addAllEntries(entries)) + .build()); + return reply.getWriteBulk().getResultsList(); + } + + /** + * Bulk {@code Write2} — sequential MXAccess Write2 (timestamped) per entry. + */ + public List write2Bulk(int serverHandle, List entries) { + Objects.requireNonNull(entries, "entries"); + MxCommandReply reply = invokeCommand(MxCommand.newBuilder() + .setKind(MxCommandKind.MX_COMMAND_KIND_WRITE2_BULK) + .setWrite2Bulk(Write2BulkCommand.newBuilder() + .setServerHandle(serverHandle) + .addAllEntries(entries)) + .build()); + return reply.getWrite2Bulk().getResultsList(); + } + + /** + * Bulk {@code WriteSecured} — credential-sensitive values must not be logged + * by callers; mirrors the single-item write-secured redaction contract. + */ + public List writeSecuredBulk(int serverHandle, List entries) { + Objects.requireNonNull(entries, "entries"); + MxCommandReply reply = invokeCommand(MxCommand.newBuilder() + .setKind(MxCommandKind.MX_COMMAND_KIND_WRITE_SECURED_BULK) + .setWriteSecuredBulk(WriteSecuredBulkCommand.newBuilder() + .setServerHandle(serverHandle) + .addAllEntries(entries)) + .build()); + return reply.getWriteSecuredBulk().getResultsList(); + } + + /** + * Bulk {@code WriteSecured2} — sequential timestamped + verified write per entry. + */ + public List writeSecured2Bulk(int serverHandle, List entries) { + Objects.requireNonNull(entries, "entries"); + MxCommandReply reply = invokeCommand(MxCommand.newBuilder() + .setKind(MxCommandKind.MX_COMMAND_KIND_WRITE_SECURED2_BULK) + .setWriteSecured2Bulk(WriteSecured2BulkCommand.newBuilder() + .setServerHandle(serverHandle) + .addAllEntries(entries)) + .build()); + return reply.getWriteSecured2Bulk().getResultsList(); + } + + /** + * Bulk {@code Read} — snapshot the current value of each requested tag. + * + *

MXAccess COM has no synchronous read; the worker returns the cached + * {@code OnDataChange} value for any tag that is already advised + * ({@code wasCached == true}) without modifying the existing subscription, + * and falls back to a full AddItem + Advise + wait + UnAdvise + RemoveItem + * snapshot lifecycle otherwise. {@code timeoutMs} bounds the per-tag wait + * in the snapshot case; pass {@code 0} to use the worker default (1000 ms). + * Per-tag failures appear as {@link BulkReadResult} entries with + * {@code wasSuccessful == false}; this method does not throw for per-tag + * MXAccess failures. + * + * @param serverHandle the {@code ServerHandle} owning the items + * @param tagAddresses the tag addresses to read + * @param timeoutMs per-tag snapshot timeout in milliseconds (0 = worker default) + * @return a per-tag {@link BulkReadResult} list + */ + public List readBulk(int serverHandle, List tagAddresses, int timeoutMs) { + Objects.requireNonNull(tagAddresses, "tagAddresses"); + if (timeoutMs < 0) { + throw new IllegalArgumentException("timeoutMs must be non-negative"); + } + MxCommandReply reply = invokeCommand(MxCommand.newBuilder() + .setKind(MxCommandKind.MX_COMMAND_KIND_READ_BULK) + .setReadBulk(ReadBulkCommand.newBuilder() + .setServerHandle(serverHandle) + .addAllTagAddresses(tagAddresses) + .setTimeoutMs(timeoutMs)) + .build()); + return reply.getReadBulk().getResultsList(); + } + /** * Invokes MXAccess {@code Write}. * diff --git a/clients/java/mxgateway-client/src/test/java/com/dohertylan/mxgateway/client/MxGatewayClientSessionTests.java b/clients/java/mxgateway-client/src/test/java/com/dohertylan/mxgateway/client/MxGatewayClientSessionTests.java index 219fbca..ed24f56 100644 --- a/clients/java/mxgateway-client/src/test/java/com/dohertylan/mxgateway/client/MxGatewayClientSessionTests.java +++ b/clients/java/mxgateway-client/src/test/java/com/dohertylan/mxgateway/client/MxGatewayClientSessionTests.java @@ -24,7 +24,14 @@ import java.util.concurrent.TimeUnit; import java.util.concurrent.atomic.AtomicReference; import mxaccess_gateway.v1.MxAccessGatewayGrpc; import mxaccess_gateway.v1.MxaccessGateway.AddItemReply; +import mxaccess_gateway.v1.MxaccessGateway.BulkReadReply; +import mxaccess_gateway.v1.MxaccessGateway.BulkReadResult; import mxaccess_gateway.v1.MxaccessGateway.BulkSubscribeReply; +import mxaccess_gateway.v1.MxaccessGateway.BulkWriteReply; +import mxaccess_gateway.v1.MxaccessGateway.BulkWriteResult; +import mxaccess_gateway.v1.MxaccessGateway.MxDataType; +import mxaccess_gateway.v1.MxaccessGateway.MxValue; +import mxaccess_gateway.v1.MxaccessGateway.WriteBulkEntry; import mxaccess_gateway.v1.MxaccessGateway.CloseSessionReply; import mxaccess_gateway.v1.MxaccessGateway.CloseSessionRequest; import mxaccess_gateway.v1.MxaccessGateway.MxCommandKind; @@ -151,6 +158,87 @@ final class MxGatewayClientSessionTests { } } + @Test + void writeBulkBuildsOneBulkCommandAndReturnsPerEntryResults() throws Exception { + AtomicReference commandRequest = new AtomicReference<>(); + TestGatewayService service = new TestGatewayService() { + @Override + public void invoke(MxCommandRequest request, StreamObserver responseObserver) { + commandRequest.set(request); + responseObserver.onNext(MxCommandReply.newBuilder() + .setSessionId(request.getSessionId()) + .setKind(request.getCommand().getKind()) + .setProtocolStatus(ok()) + .setWriteBulk(BulkWriteReply.newBuilder() + .addResults(BulkWriteResult.newBuilder() + .setServerHandle(12).setItemHandle(901).setWasSuccessful(true)) + .addResults(BulkWriteResult.newBuilder() + .setServerHandle(12).setItemHandle(902).setWasSuccessful(false) + .setErrorMessage("invalid handle"))) + .build()); + responseObserver.onCompleted(); + } + }; + + try (InProcessGateway gateway = InProcessGateway.start(service, new AtomicReference<>()); + MxGatewayClient client = gateway.client("", Duration.ofSeconds(5))) { + MxGatewaySession session = MxGatewaySession.forSessionId(client, "existing-session"); + + List results = session.writeBulk(12, List.of( + WriteBulkEntry.newBuilder().setItemHandle(901).setUserId(5) + .setValue(MxValue.newBuilder().setDataType(MxDataType.MX_DATA_TYPE_INTEGER).setInt32Value(11)).build(), + WriteBulkEntry.newBuilder().setItemHandle(902).setUserId(5) + .setValue(MxValue.newBuilder().setDataType(MxDataType.MX_DATA_TYPE_INTEGER).setInt32Value(22)).build())); + + assertEquals(2, results.size()); + assertTrue(results.get(0).getWasSuccessful()); + assertEquals(MxCommandKind.MX_COMMAND_KIND_WRITE_BULK, commandRequest.get().getCommand().getKind()); + assertEquals(2, commandRequest.get().getCommand().getWriteBulk().getEntriesCount()); + } + } + + @Test + void readBulkForwardsTimeoutAndUnpacksCachedFlag() throws Exception { + AtomicReference commandRequest = new AtomicReference<>(); + TestGatewayService service = new TestGatewayService() { + @Override + public void invoke(MxCommandRequest request, StreamObserver responseObserver) { + commandRequest.set(request); + responseObserver.onNext(MxCommandReply.newBuilder() + .setSessionId(request.getSessionId()) + .setKind(request.getCommand().getKind()) + .setProtocolStatus(ok()) + .setReadBulk(BulkReadReply.newBuilder() + .addResults(BulkReadResult.newBuilder() + .setServerHandle(12) + .setTagAddress("Area001.Pump001.Speed") + .setItemHandle(34) + .setWasSuccessful(true) + .setWasCached(true) + .setValue(MxValue.newBuilder() + .setDataType(MxDataType.MX_DATA_TYPE_INTEGER) + .setInt32Value(99)))) + .build()); + responseObserver.onCompleted(); + } + }; + + try (InProcessGateway gateway = InProcessGateway.start(service, new AtomicReference<>()); + MxGatewayClient client = gateway.client("", Duration.ofSeconds(5))) { + MxGatewaySession session = MxGatewaySession.forSessionId(client, "existing-session"); + + List results = session.readBulk(12, List.of("Area001.Pump001.Speed"), 750); + + assertEquals(1, results.size()); + assertTrue(results.get(0).getWasCached()); + assertEquals(99, results.get(0).getValue().getInt32Value()); + assertEquals(MxCommandKind.MX_COMMAND_KIND_READ_BULK, commandRequest.get().getCommand().getKind()); + assertEquals(750, commandRequest.get().getCommand().getReadBulk().getTimeoutMs()); + assertEquals(List.of("Area001.Pump001.Speed"), + commandRequest.get().getCommand().getReadBulk().getTagAddressesList()); + } + } + @Test void streamCancellationCancelsServerCall() throws Exception { CountDownLatch cancelled = new CountDownLatch(1); diff --git a/clients/java/src/main/generated/main/java/mxaccess_gateway/v1/MxaccessGateway.java b/clients/java/src/main/generated/main/java/mxaccess_gateway/v1/MxaccessGateway.java index 17ed851..a62f3e8 100644 --- a/clients/java/src/main/generated/main/java/mxaccess_gateway/v1/MxaccessGateway.java +++ b/clients/java/src/main/generated/main/java/mxaccess_gateway/v1/MxaccessGateway.java @@ -151,6 +151,26 @@ public final class MxaccessGateway extends com.google.protobuf.GeneratedFile { * MX_COMMAND_KIND_ACKNOWLEDGE_ALARM_BY_NAME = 29; */ MX_COMMAND_KIND_ACKNOWLEDGE_ALARM_BY_NAME(29), + /** + * MX_COMMAND_KIND_WRITE_BULK = 30; + */ + MX_COMMAND_KIND_WRITE_BULK(30), + /** + * MX_COMMAND_KIND_WRITE2_BULK = 31; + */ + MX_COMMAND_KIND_WRITE2_BULK(31), + /** + * MX_COMMAND_KIND_WRITE_SECURED_BULK = 32; + */ + MX_COMMAND_KIND_WRITE_SECURED_BULK(32), + /** + * MX_COMMAND_KIND_WRITE_SECURED2_BULK = 33; + */ + MX_COMMAND_KIND_WRITE_SECURED2_BULK(33), + /** + * MX_COMMAND_KIND_READ_BULK = 34; + */ + MX_COMMAND_KIND_READ_BULK(34), /** * MX_COMMAND_KIND_PING = 100; */ @@ -303,6 +323,26 @@ public final class MxaccessGateway extends com.google.protobuf.GeneratedFile { * MX_COMMAND_KIND_ACKNOWLEDGE_ALARM_BY_NAME = 29; */ public static final int MX_COMMAND_KIND_ACKNOWLEDGE_ALARM_BY_NAME_VALUE = 29; + /** + * MX_COMMAND_KIND_WRITE_BULK = 30; + */ + public static final int MX_COMMAND_KIND_WRITE_BULK_VALUE = 30; + /** + * MX_COMMAND_KIND_WRITE2_BULK = 31; + */ + public static final int MX_COMMAND_KIND_WRITE2_BULK_VALUE = 31; + /** + * MX_COMMAND_KIND_WRITE_SECURED_BULK = 32; + */ + public static final int MX_COMMAND_KIND_WRITE_SECURED_BULK_VALUE = 32; + /** + * MX_COMMAND_KIND_WRITE_SECURED2_BULK = 33; + */ + public static final int MX_COMMAND_KIND_WRITE_SECURED2_BULK_VALUE = 33; + /** + * MX_COMMAND_KIND_READ_BULK = 34; + */ + public static final int MX_COMMAND_KIND_READ_BULK_VALUE = 34; /** * MX_COMMAND_KIND_PING = 100; */ @@ -379,6 +419,11 @@ public final class MxaccessGateway extends com.google.protobuf.GeneratedFile { case 27: return MX_COMMAND_KIND_ACKNOWLEDGE_ALARM; case 28: return MX_COMMAND_KIND_QUERY_ACTIVE_ALARMS; case 29: return MX_COMMAND_KIND_ACKNOWLEDGE_ALARM_BY_NAME; + case 30: return MX_COMMAND_KIND_WRITE_BULK; + case 31: return MX_COMMAND_KIND_WRITE2_BULK; + case 32: return MX_COMMAND_KIND_WRITE_SECURED_BULK; + case 33: return MX_COMMAND_KIND_WRITE_SECURED2_BULK; + case 34: return MX_COMMAND_KIND_READ_BULK; case 100: return MX_COMMAND_KIND_PING; case 101: return MX_COMMAND_KIND_GET_SESSION_STATE; case 102: return MX_COMMAND_KIND_GET_WORKER_INFO; @@ -7816,6 +7861,81 @@ public final class MxaccessGateway extends com.google.protobuf.GeneratedFile { */ mxaccess_gateway.v1.MxaccessGateway.AcknowledgeAlarmByNameCommandOrBuilder getAcknowledgeAlarmByNameCommandOrBuilder(); + /** + * .mxaccess_gateway.v1.WriteBulkCommand write_bulk = 39; + * @return Whether the writeBulk field is set. + */ + boolean hasWriteBulk(); + /** + * .mxaccess_gateway.v1.WriteBulkCommand write_bulk = 39; + * @return The writeBulk. + */ + mxaccess_gateway.v1.MxaccessGateway.WriteBulkCommand getWriteBulk(); + /** + * .mxaccess_gateway.v1.WriteBulkCommand write_bulk = 39; + */ + mxaccess_gateway.v1.MxaccessGateway.WriteBulkCommandOrBuilder getWriteBulkOrBuilder(); + + /** + * .mxaccess_gateway.v1.Write2BulkCommand write2_bulk = 40; + * @return Whether the write2Bulk field is set. + */ + boolean hasWrite2Bulk(); + /** + * .mxaccess_gateway.v1.Write2BulkCommand write2_bulk = 40; + * @return The write2Bulk. + */ + mxaccess_gateway.v1.MxaccessGateway.Write2BulkCommand getWrite2Bulk(); + /** + * .mxaccess_gateway.v1.Write2BulkCommand write2_bulk = 40; + */ + mxaccess_gateway.v1.MxaccessGateway.Write2BulkCommandOrBuilder getWrite2BulkOrBuilder(); + + /** + * .mxaccess_gateway.v1.WriteSecuredBulkCommand write_secured_bulk = 41; + * @return Whether the writeSecuredBulk field is set. + */ + boolean hasWriteSecuredBulk(); + /** + * .mxaccess_gateway.v1.WriteSecuredBulkCommand write_secured_bulk = 41; + * @return The writeSecuredBulk. + */ + mxaccess_gateway.v1.MxaccessGateway.WriteSecuredBulkCommand getWriteSecuredBulk(); + /** + * .mxaccess_gateway.v1.WriteSecuredBulkCommand write_secured_bulk = 41; + */ + mxaccess_gateway.v1.MxaccessGateway.WriteSecuredBulkCommandOrBuilder getWriteSecuredBulkOrBuilder(); + + /** + * .mxaccess_gateway.v1.WriteSecured2BulkCommand write_secured2_bulk = 42; + * @return Whether the writeSecured2Bulk field is set. + */ + boolean hasWriteSecured2Bulk(); + /** + * .mxaccess_gateway.v1.WriteSecured2BulkCommand write_secured2_bulk = 42; + * @return The writeSecured2Bulk. + */ + mxaccess_gateway.v1.MxaccessGateway.WriteSecured2BulkCommand getWriteSecured2Bulk(); + /** + * .mxaccess_gateway.v1.WriteSecured2BulkCommand write_secured2_bulk = 42; + */ + mxaccess_gateway.v1.MxaccessGateway.WriteSecured2BulkCommandOrBuilder getWriteSecured2BulkOrBuilder(); + + /** + * .mxaccess_gateway.v1.ReadBulkCommand read_bulk = 43; + * @return Whether the readBulk field is set. + */ + boolean hasReadBulk(); + /** + * .mxaccess_gateway.v1.ReadBulkCommand read_bulk = 43; + * @return The readBulk. + */ + mxaccess_gateway.v1.MxaccessGateway.ReadBulkCommand getReadBulk(); + /** + * .mxaccess_gateway.v1.ReadBulkCommand read_bulk = 43; + */ + mxaccess_gateway.v1.MxaccessGateway.ReadBulkCommandOrBuilder getReadBulkOrBuilder(); + /** * .mxaccess_gateway.v1.PingCommand ping = 100; * @return Whether the ping field is set. @@ -7966,6 +8086,11 @@ public final class MxaccessGateway extends com.google.protobuf.GeneratedFile { ACKNOWLEDGE_ALARM_COMMAND(36), QUERY_ACTIVE_ALARMS_COMMAND(37), ACKNOWLEDGE_ALARM_BY_NAME_COMMAND(38), + WRITE_BULK(39), + WRITE2_BULK(40), + WRITE_SECURED_BULK(41), + WRITE_SECURED2_BULK(42), + READ_BULK(43), PING(100), GET_SESSION_STATE(101), GET_WORKER_INFO(102), @@ -8017,6 +8142,11 @@ public final class MxaccessGateway extends com.google.protobuf.GeneratedFile { case 36: return ACKNOWLEDGE_ALARM_COMMAND; case 37: return QUERY_ACTIVE_ALARMS_COMMAND; case 38: return ACKNOWLEDGE_ALARM_BY_NAME_COMMAND; + case 39: return WRITE_BULK; + case 40: return WRITE2_BULK; + case 41: return WRITE_SECURED_BULK; + case 42: return WRITE_SECURED2_BULK; + case 43: return READ_BULK; case 100: return PING; case 101: return GET_SESSION_STATE; case 102: return GET_WORKER_INFO; @@ -8954,6 +9084,161 @@ public final class MxaccessGateway extends com.google.protobuf.GeneratedFile { return mxaccess_gateway.v1.MxaccessGateway.AcknowledgeAlarmByNameCommand.getDefaultInstance(); } + public static final int WRITE_BULK_FIELD_NUMBER = 39; + /** + * .mxaccess_gateway.v1.WriteBulkCommand write_bulk = 39; + * @return Whether the writeBulk field is set. + */ + @java.lang.Override + public boolean hasWriteBulk() { + return payloadCase_ == 39; + } + /** + * .mxaccess_gateway.v1.WriteBulkCommand write_bulk = 39; + * @return The writeBulk. + */ + @java.lang.Override + public mxaccess_gateway.v1.MxaccessGateway.WriteBulkCommand getWriteBulk() { + if (payloadCase_ == 39) { + return (mxaccess_gateway.v1.MxaccessGateway.WriteBulkCommand) payload_; + } + return mxaccess_gateway.v1.MxaccessGateway.WriteBulkCommand.getDefaultInstance(); + } + /** + * .mxaccess_gateway.v1.WriteBulkCommand write_bulk = 39; + */ + @java.lang.Override + public mxaccess_gateway.v1.MxaccessGateway.WriteBulkCommandOrBuilder getWriteBulkOrBuilder() { + if (payloadCase_ == 39) { + return (mxaccess_gateway.v1.MxaccessGateway.WriteBulkCommand) payload_; + } + return mxaccess_gateway.v1.MxaccessGateway.WriteBulkCommand.getDefaultInstance(); + } + + public static final int WRITE2_BULK_FIELD_NUMBER = 40; + /** + * .mxaccess_gateway.v1.Write2BulkCommand write2_bulk = 40; + * @return Whether the write2Bulk field is set. + */ + @java.lang.Override + public boolean hasWrite2Bulk() { + return payloadCase_ == 40; + } + /** + * .mxaccess_gateway.v1.Write2BulkCommand write2_bulk = 40; + * @return The write2Bulk. + */ + @java.lang.Override + public mxaccess_gateway.v1.MxaccessGateway.Write2BulkCommand getWrite2Bulk() { + if (payloadCase_ == 40) { + return (mxaccess_gateway.v1.MxaccessGateway.Write2BulkCommand) payload_; + } + return mxaccess_gateway.v1.MxaccessGateway.Write2BulkCommand.getDefaultInstance(); + } + /** + * .mxaccess_gateway.v1.Write2BulkCommand write2_bulk = 40; + */ + @java.lang.Override + public mxaccess_gateway.v1.MxaccessGateway.Write2BulkCommandOrBuilder getWrite2BulkOrBuilder() { + if (payloadCase_ == 40) { + return (mxaccess_gateway.v1.MxaccessGateway.Write2BulkCommand) payload_; + } + return mxaccess_gateway.v1.MxaccessGateway.Write2BulkCommand.getDefaultInstance(); + } + + public static final int WRITE_SECURED_BULK_FIELD_NUMBER = 41; + /** + * .mxaccess_gateway.v1.WriteSecuredBulkCommand write_secured_bulk = 41; + * @return Whether the writeSecuredBulk field is set. + */ + @java.lang.Override + public boolean hasWriteSecuredBulk() { + return payloadCase_ == 41; + } + /** + * .mxaccess_gateway.v1.WriteSecuredBulkCommand write_secured_bulk = 41; + * @return The writeSecuredBulk. + */ + @java.lang.Override + public mxaccess_gateway.v1.MxaccessGateway.WriteSecuredBulkCommand getWriteSecuredBulk() { + if (payloadCase_ == 41) { + return (mxaccess_gateway.v1.MxaccessGateway.WriteSecuredBulkCommand) payload_; + } + return mxaccess_gateway.v1.MxaccessGateway.WriteSecuredBulkCommand.getDefaultInstance(); + } + /** + * .mxaccess_gateway.v1.WriteSecuredBulkCommand write_secured_bulk = 41; + */ + @java.lang.Override + public mxaccess_gateway.v1.MxaccessGateway.WriteSecuredBulkCommandOrBuilder getWriteSecuredBulkOrBuilder() { + if (payloadCase_ == 41) { + return (mxaccess_gateway.v1.MxaccessGateway.WriteSecuredBulkCommand) payload_; + } + return mxaccess_gateway.v1.MxaccessGateway.WriteSecuredBulkCommand.getDefaultInstance(); + } + + public static final int WRITE_SECURED2_BULK_FIELD_NUMBER = 42; + /** + * .mxaccess_gateway.v1.WriteSecured2BulkCommand write_secured2_bulk = 42; + * @return Whether the writeSecured2Bulk field is set. + */ + @java.lang.Override + public boolean hasWriteSecured2Bulk() { + return payloadCase_ == 42; + } + /** + * .mxaccess_gateway.v1.WriteSecured2BulkCommand write_secured2_bulk = 42; + * @return The writeSecured2Bulk. + */ + @java.lang.Override + public mxaccess_gateway.v1.MxaccessGateway.WriteSecured2BulkCommand getWriteSecured2Bulk() { + if (payloadCase_ == 42) { + return (mxaccess_gateway.v1.MxaccessGateway.WriteSecured2BulkCommand) payload_; + } + return mxaccess_gateway.v1.MxaccessGateway.WriteSecured2BulkCommand.getDefaultInstance(); + } + /** + * .mxaccess_gateway.v1.WriteSecured2BulkCommand write_secured2_bulk = 42; + */ + @java.lang.Override + public mxaccess_gateway.v1.MxaccessGateway.WriteSecured2BulkCommandOrBuilder getWriteSecured2BulkOrBuilder() { + if (payloadCase_ == 42) { + return (mxaccess_gateway.v1.MxaccessGateway.WriteSecured2BulkCommand) payload_; + } + return mxaccess_gateway.v1.MxaccessGateway.WriteSecured2BulkCommand.getDefaultInstance(); + } + + public static final int READ_BULK_FIELD_NUMBER = 43; + /** + * .mxaccess_gateway.v1.ReadBulkCommand read_bulk = 43; + * @return Whether the readBulk field is set. + */ + @java.lang.Override + public boolean hasReadBulk() { + return payloadCase_ == 43; + } + /** + * .mxaccess_gateway.v1.ReadBulkCommand read_bulk = 43; + * @return The readBulk. + */ + @java.lang.Override + public mxaccess_gateway.v1.MxaccessGateway.ReadBulkCommand getReadBulk() { + if (payloadCase_ == 43) { + return (mxaccess_gateway.v1.MxaccessGateway.ReadBulkCommand) payload_; + } + return mxaccess_gateway.v1.MxaccessGateway.ReadBulkCommand.getDefaultInstance(); + } + /** + * .mxaccess_gateway.v1.ReadBulkCommand read_bulk = 43; + */ + @java.lang.Override + public mxaccess_gateway.v1.MxaccessGateway.ReadBulkCommandOrBuilder getReadBulkOrBuilder() { + if (payloadCase_ == 43) { + return (mxaccess_gateway.v1.MxaccessGateway.ReadBulkCommand) payload_; + } + return mxaccess_gateway.v1.MxaccessGateway.ReadBulkCommand.getDefaultInstance(); + } + public static final int PING_FIELD_NUMBER = 100; /** * .mxaccess_gateway.v1.PingCommand ping = 100; @@ -9213,6 +9498,21 @@ public final class MxaccessGateway extends com.google.protobuf.GeneratedFile { if (payloadCase_ == 38) { output.writeMessage(38, (mxaccess_gateway.v1.MxaccessGateway.AcknowledgeAlarmByNameCommand) payload_); } + if (payloadCase_ == 39) { + output.writeMessage(39, (mxaccess_gateway.v1.MxaccessGateway.WriteBulkCommand) payload_); + } + if (payloadCase_ == 40) { + output.writeMessage(40, (mxaccess_gateway.v1.MxaccessGateway.Write2BulkCommand) payload_); + } + if (payloadCase_ == 41) { + output.writeMessage(41, (mxaccess_gateway.v1.MxaccessGateway.WriteSecuredBulkCommand) payload_); + } + if (payloadCase_ == 42) { + output.writeMessage(42, (mxaccess_gateway.v1.MxaccessGateway.WriteSecured2BulkCommand) payload_); + } + if (payloadCase_ == 43) { + output.writeMessage(43, (mxaccess_gateway.v1.MxaccessGateway.ReadBulkCommand) payload_); + } if (payloadCase_ == 100) { output.writeMessage(100, (mxaccess_gateway.v1.MxaccessGateway.PingCommand) payload_); } @@ -9357,6 +9657,26 @@ public final class MxaccessGateway extends com.google.protobuf.GeneratedFile { size += com.google.protobuf.CodedOutputStream .computeMessageSize(38, (mxaccess_gateway.v1.MxaccessGateway.AcknowledgeAlarmByNameCommand) payload_); } + if (payloadCase_ == 39) { + size += com.google.protobuf.CodedOutputStream + .computeMessageSize(39, (mxaccess_gateway.v1.MxaccessGateway.WriteBulkCommand) payload_); + } + if (payloadCase_ == 40) { + size += com.google.protobuf.CodedOutputStream + .computeMessageSize(40, (mxaccess_gateway.v1.MxaccessGateway.Write2BulkCommand) payload_); + } + if (payloadCase_ == 41) { + size += com.google.protobuf.CodedOutputStream + .computeMessageSize(41, (mxaccess_gateway.v1.MxaccessGateway.WriteSecuredBulkCommand) payload_); + } + if (payloadCase_ == 42) { + size += com.google.protobuf.CodedOutputStream + .computeMessageSize(42, (mxaccess_gateway.v1.MxaccessGateway.WriteSecured2BulkCommand) payload_); + } + if (payloadCase_ == 43) { + size += com.google.protobuf.CodedOutputStream + .computeMessageSize(43, (mxaccess_gateway.v1.MxaccessGateway.ReadBulkCommand) payload_); + } if (payloadCase_ == 100) { size += com.google.protobuf.CodedOutputStream .computeMessageSize(100, (mxaccess_gateway.v1.MxaccessGateway.PingCommand) payload_); @@ -9511,6 +9831,26 @@ public final class MxaccessGateway extends com.google.protobuf.GeneratedFile { if (!getAcknowledgeAlarmByNameCommand() .equals(other.getAcknowledgeAlarmByNameCommand())) return false; break; + case 39: + if (!getWriteBulk() + .equals(other.getWriteBulk())) return false; + break; + case 40: + if (!getWrite2Bulk() + .equals(other.getWrite2Bulk())) return false; + break; + case 41: + if (!getWriteSecuredBulk() + .equals(other.getWriteSecuredBulk())) return false; + break; + case 42: + if (!getWriteSecured2Bulk() + .equals(other.getWriteSecured2Bulk())) return false; + break; + case 43: + if (!getReadBulk() + .equals(other.getReadBulk())) return false; + break; case 100: if (!getPing() .equals(other.getPing())) return false; @@ -9664,6 +10004,26 @@ public final class MxaccessGateway extends com.google.protobuf.GeneratedFile { hash = (37 * hash) + ACKNOWLEDGE_ALARM_BY_NAME_COMMAND_FIELD_NUMBER; hash = (53 * hash) + getAcknowledgeAlarmByNameCommand().hashCode(); break; + case 39: + hash = (37 * hash) + WRITE_BULK_FIELD_NUMBER; + hash = (53 * hash) + getWriteBulk().hashCode(); + break; + case 40: + hash = (37 * hash) + WRITE2_BULK_FIELD_NUMBER; + hash = (53 * hash) + getWrite2Bulk().hashCode(); + break; + case 41: + hash = (37 * hash) + WRITE_SECURED_BULK_FIELD_NUMBER; + hash = (53 * hash) + getWriteSecuredBulk().hashCode(); + break; + case 42: + hash = (37 * hash) + WRITE_SECURED2_BULK_FIELD_NUMBER; + hash = (53 * hash) + getWriteSecured2Bulk().hashCode(); + break; + case 43: + hash = (37 * hash) + READ_BULK_FIELD_NUMBER; + hash = (53 * hash) + getReadBulk().hashCode(); + break; case 100: hash = (37 * hash) + PING_FIELD_NUMBER; hash = (53 * hash) + getPing().hashCode(); @@ -9907,6 +10267,21 @@ public final class MxaccessGateway extends com.google.protobuf.GeneratedFile { if (acknowledgeAlarmByNameCommandBuilder_ != null) { acknowledgeAlarmByNameCommandBuilder_.clear(); } + if (writeBulkBuilder_ != null) { + writeBulkBuilder_.clear(); + } + if (write2BulkBuilder_ != null) { + write2BulkBuilder_.clear(); + } + if (writeSecuredBulkBuilder_ != null) { + writeSecuredBulkBuilder_.clear(); + } + if (writeSecured2BulkBuilder_ != null) { + writeSecured2BulkBuilder_.clear(); + } + if (readBulkBuilder_ != null) { + readBulkBuilder_.clear(); + } if (pingBuilder_ != null) { pingBuilder_.clear(); } @@ -10087,6 +10462,26 @@ public final class MxaccessGateway extends com.google.protobuf.GeneratedFile { acknowledgeAlarmByNameCommandBuilder_ != null) { result.payload_ = acknowledgeAlarmByNameCommandBuilder_.build(); } + if (payloadCase_ == 39 && + writeBulkBuilder_ != null) { + result.payload_ = writeBulkBuilder_.build(); + } + if (payloadCase_ == 40 && + write2BulkBuilder_ != null) { + result.payload_ = write2BulkBuilder_.build(); + } + if (payloadCase_ == 41 && + writeSecuredBulkBuilder_ != null) { + result.payload_ = writeSecuredBulkBuilder_.build(); + } + if (payloadCase_ == 42 && + writeSecured2BulkBuilder_ != null) { + result.payload_ = writeSecured2BulkBuilder_.build(); + } + if (payloadCase_ == 43 && + readBulkBuilder_ != null) { + result.payload_ = readBulkBuilder_.build(); + } if (payloadCase_ == 100 && pingBuilder_ != null) { result.payload_ = pingBuilder_.build(); @@ -10241,6 +10636,26 @@ public final class MxaccessGateway extends com.google.protobuf.GeneratedFile { mergeAcknowledgeAlarmByNameCommand(other.getAcknowledgeAlarmByNameCommand()); break; } + case WRITE_BULK: { + mergeWriteBulk(other.getWriteBulk()); + break; + } + case WRITE2_BULK: { + mergeWrite2Bulk(other.getWrite2Bulk()); + break; + } + case WRITE_SECURED_BULK: { + mergeWriteSecuredBulk(other.getWriteSecuredBulk()); + break; + } + case WRITE_SECURED2_BULK: { + mergeWriteSecured2Bulk(other.getWriteSecured2Bulk()); + break; + } + case READ_BULK: { + mergeReadBulk(other.getReadBulk()); + break; + } case PING: { mergePing(other.getPing()); break; @@ -10499,6 +10914,41 @@ public final class MxaccessGateway extends com.google.protobuf.GeneratedFile { payloadCase_ = 38; break; } // case 306 + case 314: { + input.readMessage( + internalGetWriteBulkFieldBuilder().getBuilder(), + extensionRegistry); + payloadCase_ = 39; + break; + } // case 314 + case 322: { + input.readMessage( + internalGetWrite2BulkFieldBuilder().getBuilder(), + extensionRegistry); + payloadCase_ = 40; + break; + } // case 322 + case 330: { + input.readMessage( + internalGetWriteSecuredBulkFieldBuilder().getBuilder(), + extensionRegistry); + payloadCase_ = 41; + break; + } // case 330 + case 338: { + input.readMessage( + internalGetWriteSecured2BulkFieldBuilder().getBuilder(), + extensionRegistry); + payloadCase_ = 42; + break; + } // case 338 + case 346: { + input.readMessage( + internalGetReadBulkFieldBuilder().getBuilder(), + extensionRegistry); + payloadCase_ = 43; + break; + } // case 346 case 802: { input.readMessage( internalGetPingFieldBuilder().getBuilder(), @@ -14736,6 +15186,716 @@ public final class MxaccessGateway extends com.google.protobuf.GeneratedFile { return acknowledgeAlarmByNameCommandBuilder_; } + private com.google.protobuf.SingleFieldBuilder< + mxaccess_gateway.v1.MxaccessGateway.WriteBulkCommand, mxaccess_gateway.v1.MxaccessGateway.WriteBulkCommand.Builder, mxaccess_gateway.v1.MxaccessGateway.WriteBulkCommandOrBuilder> writeBulkBuilder_; + /** + * .mxaccess_gateway.v1.WriteBulkCommand write_bulk = 39; + * @return Whether the writeBulk field is set. + */ + @java.lang.Override + public boolean hasWriteBulk() { + return payloadCase_ == 39; + } + /** + * .mxaccess_gateway.v1.WriteBulkCommand write_bulk = 39; + * @return The writeBulk. + */ + @java.lang.Override + public mxaccess_gateway.v1.MxaccessGateway.WriteBulkCommand getWriteBulk() { + if (writeBulkBuilder_ == null) { + if (payloadCase_ == 39) { + return (mxaccess_gateway.v1.MxaccessGateway.WriteBulkCommand) payload_; + } + return mxaccess_gateway.v1.MxaccessGateway.WriteBulkCommand.getDefaultInstance(); + } else { + if (payloadCase_ == 39) { + return writeBulkBuilder_.getMessage(); + } + return mxaccess_gateway.v1.MxaccessGateway.WriteBulkCommand.getDefaultInstance(); + } + } + /** + * .mxaccess_gateway.v1.WriteBulkCommand write_bulk = 39; + */ + public Builder setWriteBulk(mxaccess_gateway.v1.MxaccessGateway.WriteBulkCommand value) { + if (writeBulkBuilder_ == null) { + if (value == null) { + throw new NullPointerException(); + } + payload_ = value; + onChanged(); + } else { + writeBulkBuilder_.setMessage(value); + } + payloadCase_ = 39; + return this; + } + /** + * .mxaccess_gateway.v1.WriteBulkCommand write_bulk = 39; + */ + public Builder setWriteBulk( + mxaccess_gateway.v1.MxaccessGateway.WriteBulkCommand.Builder builderForValue) { + if (writeBulkBuilder_ == null) { + payload_ = builderForValue.build(); + onChanged(); + } else { + writeBulkBuilder_.setMessage(builderForValue.build()); + } + payloadCase_ = 39; + return this; + } + /** + * .mxaccess_gateway.v1.WriteBulkCommand write_bulk = 39; + */ + public Builder mergeWriteBulk(mxaccess_gateway.v1.MxaccessGateway.WriteBulkCommand value) { + if (writeBulkBuilder_ == null) { + if (payloadCase_ == 39 && + payload_ != mxaccess_gateway.v1.MxaccessGateway.WriteBulkCommand.getDefaultInstance()) { + payload_ = mxaccess_gateway.v1.MxaccessGateway.WriteBulkCommand.newBuilder((mxaccess_gateway.v1.MxaccessGateway.WriteBulkCommand) payload_) + .mergeFrom(value).buildPartial(); + } else { + payload_ = value; + } + onChanged(); + } else { + if (payloadCase_ == 39) { + writeBulkBuilder_.mergeFrom(value); + } else { + writeBulkBuilder_.setMessage(value); + } + } + payloadCase_ = 39; + return this; + } + /** + * .mxaccess_gateway.v1.WriteBulkCommand write_bulk = 39; + */ + public Builder clearWriteBulk() { + if (writeBulkBuilder_ == null) { + if (payloadCase_ == 39) { + payloadCase_ = 0; + payload_ = null; + onChanged(); + } + } else { + if (payloadCase_ == 39) { + payloadCase_ = 0; + payload_ = null; + } + writeBulkBuilder_.clear(); + } + return this; + } + /** + * .mxaccess_gateway.v1.WriteBulkCommand write_bulk = 39; + */ + public mxaccess_gateway.v1.MxaccessGateway.WriteBulkCommand.Builder getWriteBulkBuilder() { + return internalGetWriteBulkFieldBuilder().getBuilder(); + } + /** + * .mxaccess_gateway.v1.WriteBulkCommand write_bulk = 39; + */ + @java.lang.Override + public mxaccess_gateway.v1.MxaccessGateway.WriteBulkCommandOrBuilder getWriteBulkOrBuilder() { + if ((payloadCase_ == 39) && (writeBulkBuilder_ != null)) { + return writeBulkBuilder_.getMessageOrBuilder(); + } else { + if (payloadCase_ == 39) { + return (mxaccess_gateway.v1.MxaccessGateway.WriteBulkCommand) payload_; + } + return mxaccess_gateway.v1.MxaccessGateway.WriteBulkCommand.getDefaultInstance(); + } + } + /** + * .mxaccess_gateway.v1.WriteBulkCommand write_bulk = 39; + */ + private com.google.protobuf.SingleFieldBuilder< + mxaccess_gateway.v1.MxaccessGateway.WriteBulkCommand, mxaccess_gateway.v1.MxaccessGateway.WriteBulkCommand.Builder, mxaccess_gateway.v1.MxaccessGateway.WriteBulkCommandOrBuilder> + internalGetWriteBulkFieldBuilder() { + if (writeBulkBuilder_ == null) { + if (!(payloadCase_ == 39)) { + payload_ = mxaccess_gateway.v1.MxaccessGateway.WriteBulkCommand.getDefaultInstance(); + } + writeBulkBuilder_ = new com.google.protobuf.SingleFieldBuilder< + mxaccess_gateway.v1.MxaccessGateway.WriteBulkCommand, mxaccess_gateway.v1.MxaccessGateway.WriteBulkCommand.Builder, mxaccess_gateway.v1.MxaccessGateway.WriteBulkCommandOrBuilder>( + (mxaccess_gateway.v1.MxaccessGateway.WriteBulkCommand) payload_, + getParentForChildren(), + isClean()); + payload_ = null; + } + payloadCase_ = 39; + onChanged(); + return writeBulkBuilder_; + } + + private com.google.protobuf.SingleFieldBuilder< + mxaccess_gateway.v1.MxaccessGateway.Write2BulkCommand, mxaccess_gateway.v1.MxaccessGateway.Write2BulkCommand.Builder, mxaccess_gateway.v1.MxaccessGateway.Write2BulkCommandOrBuilder> write2BulkBuilder_; + /** + * .mxaccess_gateway.v1.Write2BulkCommand write2_bulk = 40; + * @return Whether the write2Bulk field is set. + */ + @java.lang.Override + public boolean hasWrite2Bulk() { + return payloadCase_ == 40; + } + /** + * .mxaccess_gateway.v1.Write2BulkCommand write2_bulk = 40; + * @return The write2Bulk. + */ + @java.lang.Override + public mxaccess_gateway.v1.MxaccessGateway.Write2BulkCommand getWrite2Bulk() { + if (write2BulkBuilder_ == null) { + if (payloadCase_ == 40) { + return (mxaccess_gateway.v1.MxaccessGateway.Write2BulkCommand) payload_; + } + return mxaccess_gateway.v1.MxaccessGateway.Write2BulkCommand.getDefaultInstance(); + } else { + if (payloadCase_ == 40) { + return write2BulkBuilder_.getMessage(); + } + return mxaccess_gateway.v1.MxaccessGateway.Write2BulkCommand.getDefaultInstance(); + } + } + /** + * .mxaccess_gateway.v1.Write2BulkCommand write2_bulk = 40; + */ + public Builder setWrite2Bulk(mxaccess_gateway.v1.MxaccessGateway.Write2BulkCommand value) { + if (write2BulkBuilder_ == null) { + if (value == null) { + throw new NullPointerException(); + } + payload_ = value; + onChanged(); + } else { + write2BulkBuilder_.setMessage(value); + } + payloadCase_ = 40; + return this; + } + /** + * .mxaccess_gateway.v1.Write2BulkCommand write2_bulk = 40; + */ + public Builder setWrite2Bulk( + mxaccess_gateway.v1.MxaccessGateway.Write2BulkCommand.Builder builderForValue) { + if (write2BulkBuilder_ == null) { + payload_ = builderForValue.build(); + onChanged(); + } else { + write2BulkBuilder_.setMessage(builderForValue.build()); + } + payloadCase_ = 40; + return this; + } + /** + * .mxaccess_gateway.v1.Write2BulkCommand write2_bulk = 40; + */ + public Builder mergeWrite2Bulk(mxaccess_gateway.v1.MxaccessGateway.Write2BulkCommand value) { + if (write2BulkBuilder_ == null) { + if (payloadCase_ == 40 && + payload_ != mxaccess_gateway.v1.MxaccessGateway.Write2BulkCommand.getDefaultInstance()) { + payload_ = mxaccess_gateway.v1.MxaccessGateway.Write2BulkCommand.newBuilder((mxaccess_gateway.v1.MxaccessGateway.Write2BulkCommand) payload_) + .mergeFrom(value).buildPartial(); + } else { + payload_ = value; + } + onChanged(); + } else { + if (payloadCase_ == 40) { + write2BulkBuilder_.mergeFrom(value); + } else { + write2BulkBuilder_.setMessage(value); + } + } + payloadCase_ = 40; + return this; + } + /** + * .mxaccess_gateway.v1.Write2BulkCommand write2_bulk = 40; + */ + public Builder clearWrite2Bulk() { + if (write2BulkBuilder_ == null) { + if (payloadCase_ == 40) { + payloadCase_ = 0; + payload_ = null; + onChanged(); + } + } else { + if (payloadCase_ == 40) { + payloadCase_ = 0; + payload_ = null; + } + write2BulkBuilder_.clear(); + } + return this; + } + /** + * .mxaccess_gateway.v1.Write2BulkCommand write2_bulk = 40; + */ + public mxaccess_gateway.v1.MxaccessGateway.Write2BulkCommand.Builder getWrite2BulkBuilder() { + return internalGetWrite2BulkFieldBuilder().getBuilder(); + } + /** + * .mxaccess_gateway.v1.Write2BulkCommand write2_bulk = 40; + */ + @java.lang.Override + public mxaccess_gateway.v1.MxaccessGateway.Write2BulkCommandOrBuilder getWrite2BulkOrBuilder() { + if ((payloadCase_ == 40) && (write2BulkBuilder_ != null)) { + return write2BulkBuilder_.getMessageOrBuilder(); + } else { + if (payloadCase_ == 40) { + return (mxaccess_gateway.v1.MxaccessGateway.Write2BulkCommand) payload_; + } + return mxaccess_gateway.v1.MxaccessGateway.Write2BulkCommand.getDefaultInstance(); + } + } + /** + * .mxaccess_gateway.v1.Write2BulkCommand write2_bulk = 40; + */ + private com.google.protobuf.SingleFieldBuilder< + mxaccess_gateway.v1.MxaccessGateway.Write2BulkCommand, mxaccess_gateway.v1.MxaccessGateway.Write2BulkCommand.Builder, mxaccess_gateway.v1.MxaccessGateway.Write2BulkCommandOrBuilder> + internalGetWrite2BulkFieldBuilder() { + if (write2BulkBuilder_ == null) { + if (!(payloadCase_ == 40)) { + payload_ = mxaccess_gateway.v1.MxaccessGateway.Write2BulkCommand.getDefaultInstance(); + } + write2BulkBuilder_ = new com.google.protobuf.SingleFieldBuilder< + mxaccess_gateway.v1.MxaccessGateway.Write2BulkCommand, mxaccess_gateway.v1.MxaccessGateway.Write2BulkCommand.Builder, mxaccess_gateway.v1.MxaccessGateway.Write2BulkCommandOrBuilder>( + (mxaccess_gateway.v1.MxaccessGateway.Write2BulkCommand) payload_, + getParentForChildren(), + isClean()); + payload_ = null; + } + payloadCase_ = 40; + onChanged(); + return write2BulkBuilder_; + } + + private com.google.protobuf.SingleFieldBuilder< + mxaccess_gateway.v1.MxaccessGateway.WriteSecuredBulkCommand, mxaccess_gateway.v1.MxaccessGateway.WriteSecuredBulkCommand.Builder, mxaccess_gateway.v1.MxaccessGateway.WriteSecuredBulkCommandOrBuilder> writeSecuredBulkBuilder_; + /** + * .mxaccess_gateway.v1.WriteSecuredBulkCommand write_secured_bulk = 41; + * @return Whether the writeSecuredBulk field is set. + */ + @java.lang.Override + public boolean hasWriteSecuredBulk() { + return payloadCase_ == 41; + } + /** + * .mxaccess_gateway.v1.WriteSecuredBulkCommand write_secured_bulk = 41; + * @return The writeSecuredBulk. + */ + @java.lang.Override + public mxaccess_gateway.v1.MxaccessGateway.WriteSecuredBulkCommand getWriteSecuredBulk() { + if (writeSecuredBulkBuilder_ == null) { + if (payloadCase_ == 41) { + return (mxaccess_gateway.v1.MxaccessGateway.WriteSecuredBulkCommand) payload_; + } + return mxaccess_gateway.v1.MxaccessGateway.WriteSecuredBulkCommand.getDefaultInstance(); + } else { + if (payloadCase_ == 41) { + return writeSecuredBulkBuilder_.getMessage(); + } + return mxaccess_gateway.v1.MxaccessGateway.WriteSecuredBulkCommand.getDefaultInstance(); + } + } + /** + * .mxaccess_gateway.v1.WriteSecuredBulkCommand write_secured_bulk = 41; + */ + public Builder setWriteSecuredBulk(mxaccess_gateway.v1.MxaccessGateway.WriteSecuredBulkCommand value) { + if (writeSecuredBulkBuilder_ == null) { + if (value == null) { + throw new NullPointerException(); + } + payload_ = value; + onChanged(); + } else { + writeSecuredBulkBuilder_.setMessage(value); + } + payloadCase_ = 41; + return this; + } + /** + * .mxaccess_gateway.v1.WriteSecuredBulkCommand write_secured_bulk = 41; + */ + public Builder setWriteSecuredBulk( + mxaccess_gateway.v1.MxaccessGateway.WriteSecuredBulkCommand.Builder builderForValue) { + if (writeSecuredBulkBuilder_ == null) { + payload_ = builderForValue.build(); + onChanged(); + } else { + writeSecuredBulkBuilder_.setMessage(builderForValue.build()); + } + payloadCase_ = 41; + return this; + } + /** + * .mxaccess_gateway.v1.WriteSecuredBulkCommand write_secured_bulk = 41; + */ + public Builder mergeWriteSecuredBulk(mxaccess_gateway.v1.MxaccessGateway.WriteSecuredBulkCommand value) { + if (writeSecuredBulkBuilder_ == null) { + if (payloadCase_ == 41 && + payload_ != mxaccess_gateway.v1.MxaccessGateway.WriteSecuredBulkCommand.getDefaultInstance()) { + payload_ = mxaccess_gateway.v1.MxaccessGateway.WriteSecuredBulkCommand.newBuilder((mxaccess_gateway.v1.MxaccessGateway.WriteSecuredBulkCommand) payload_) + .mergeFrom(value).buildPartial(); + } else { + payload_ = value; + } + onChanged(); + } else { + if (payloadCase_ == 41) { + writeSecuredBulkBuilder_.mergeFrom(value); + } else { + writeSecuredBulkBuilder_.setMessage(value); + } + } + payloadCase_ = 41; + return this; + } + /** + * .mxaccess_gateway.v1.WriteSecuredBulkCommand write_secured_bulk = 41; + */ + public Builder clearWriteSecuredBulk() { + if (writeSecuredBulkBuilder_ == null) { + if (payloadCase_ == 41) { + payloadCase_ = 0; + payload_ = null; + onChanged(); + } + } else { + if (payloadCase_ == 41) { + payloadCase_ = 0; + payload_ = null; + } + writeSecuredBulkBuilder_.clear(); + } + return this; + } + /** + * .mxaccess_gateway.v1.WriteSecuredBulkCommand write_secured_bulk = 41; + */ + public mxaccess_gateway.v1.MxaccessGateway.WriteSecuredBulkCommand.Builder getWriteSecuredBulkBuilder() { + return internalGetWriteSecuredBulkFieldBuilder().getBuilder(); + } + /** + * .mxaccess_gateway.v1.WriteSecuredBulkCommand write_secured_bulk = 41; + */ + @java.lang.Override + public mxaccess_gateway.v1.MxaccessGateway.WriteSecuredBulkCommandOrBuilder getWriteSecuredBulkOrBuilder() { + if ((payloadCase_ == 41) && (writeSecuredBulkBuilder_ != null)) { + return writeSecuredBulkBuilder_.getMessageOrBuilder(); + } else { + if (payloadCase_ == 41) { + return (mxaccess_gateway.v1.MxaccessGateway.WriteSecuredBulkCommand) payload_; + } + return mxaccess_gateway.v1.MxaccessGateway.WriteSecuredBulkCommand.getDefaultInstance(); + } + } + /** + * .mxaccess_gateway.v1.WriteSecuredBulkCommand write_secured_bulk = 41; + */ + private com.google.protobuf.SingleFieldBuilder< + mxaccess_gateway.v1.MxaccessGateway.WriteSecuredBulkCommand, mxaccess_gateway.v1.MxaccessGateway.WriteSecuredBulkCommand.Builder, mxaccess_gateway.v1.MxaccessGateway.WriteSecuredBulkCommandOrBuilder> + internalGetWriteSecuredBulkFieldBuilder() { + if (writeSecuredBulkBuilder_ == null) { + if (!(payloadCase_ == 41)) { + payload_ = mxaccess_gateway.v1.MxaccessGateway.WriteSecuredBulkCommand.getDefaultInstance(); + } + writeSecuredBulkBuilder_ = new com.google.protobuf.SingleFieldBuilder< + mxaccess_gateway.v1.MxaccessGateway.WriteSecuredBulkCommand, mxaccess_gateway.v1.MxaccessGateway.WriteSecuredBulkCommand.Builder, mxaccess_gateway.v1.MxaccessGateway.WriteSecuredBulkCommandOrBuilder>( + (mxaccess_gateway.v1.MxaccessGateway.WriteSecuredBulkCommand) payload_, + getParentForChildren(), + isClean()); + payload_ = null; + } + payloadCase_ = 41; + onChanged(); + return writeSecuredBulkBuilder_; + } + + private com.google.protobuf.SingleFieldBuilder< + mxaccess_gateway.v1.MxaccessGateway.WriteSecured2BulkCommand, mxaccess_gateway.v1.MxaccessGateway.WriteSecured2BulkCommand.Builder, mxaccess_gateway.v1.MxaccessGateway.WriteSecured2BulkCommandOrBuilder> writeSecured2BulkBuilder_; + /** + * .mxaccess_gateway.v1.WriteSecured2BulkCommand write_secured2_bulk = 42; + * @return Whether the writeSecured2Bulk field is set. + */ + @java.lang.Override + public boolean hasWriteSecured2Bulk() { + return payloadCase_ == 42; + } + /** + * .mxaccess_gateway.v1.WriteSecured2BulkCommand write_secured2_bulk = 42; + * @return The writeSecured2Bulk. + */ + @java.lang.Override + public mxaccess_gateway.v1.MxaccessGateway.WriteSecured2BulkCommand getWriteSecured2Bulk() { + if (writeSecured2BulkBuilder_ == null) { + if (payloadCase_ == 42) { + return (mxaccess_gateway.v1.MxaccessGateway.WriteSecured2BulkCommand) payload_; + } + return mxaccess_gateway.v1.MxaccessGateway.WriteSecured2BulkCommand.getDefaultInstance(); + } else { + if (payloadCase_ == 42) { + return writeSecured2BulkBuilder_.getMessage(); + } + return mxaccess_gateway.v1.MxaccessGateway.WriteSecured2BulkCommand.getDefaultInstance(); + } + } + /** + * .mxaccess_gateway.v1.WriteSecured2BulkCommand write_secured2_bulk = 42; + */ + public Builder setWriteSecured2Bulk(mxaccess_gateway.v1.MxaccessGateway.WriteSecured2BulkCommand value) { + if (writeSecured2BulkBuilder_ == null) { + if (value == null) { + throw new NullPointerException(); + } + payload_ = value; + onChanged(); + } else { + writeSecured2BulkBuilder_.setMessage(value); + } + payloadCase_ = 42; + return this; + } + /** + * .mxaccess_gateway.v1.WriteSecured2BulkCommand write_secured2_bulk = 42; + */ + public Builder setWriteSecured2Bulk( + mxaccess_gateway.v1.MxaccessGateway.WriteSecured2BulkCommand.Builder builderForValue) { + if (writeSecured2BulkBuilder_ == null) { + payload_ = builderForValue.build(); + onChanged(); + } else { + writeSecured2BulkBuilder_.setMessage(builderForValue.build()); + } + payloadCase_ = 42; + return this; + } + /** + * .mxaccess_gateway.v1.WriteSecured2BulkCommand write_secured2_bulk = 42; + */ + public Builder mergeWriteSecured2Bulk(mxaccess_gateway.v1.MxaccessGateway.WriteSecured2BulkCommand value) { + if (writeSecured2BulkBuilder_ == null) { + if (payloadCase_ == 42 && + payload_ != mxaccess_gateway.v1.MxaccessGateway.WriteSecured2BulkCommand.getDefaultInstance()) { + payload_ = mxaccess_gateway.v1.MxaccessGateway.WriteSecured2BulkCommand.newBuilder((mxaccess_gateway.v1.MxaccessGateway.WriteSecured2BulkCommand) payload_) + .mergeFrom(value).buildPartial(); + } else { + payload_ = value; + } + onChanged(); + } else { + if (payloadCase_ == 42) { + writeSecured2BulkBuilder_.mergeFrom(value); + } else { + writeSecured2BulkBuilder_.setMessage(value); + } + } + payloadCase_ = 42; + return this; + } + /** + * .mxaccess_gateway.v1.WriteSecured2BulkCommand write_secured2_bulk = 42; + */ + public Builder clearWriteSecured2Bulk() { + if (writeSecured2BulkBuilder_ == null) { + if (payloadCase_ == 42) { + payloadCase_ = 0; + payload_ = null; + onChanged(); + } + } else { + if (payloadCase_ == 42) { + payloadCase_ = 0; + payload_ = null; + } + writeSecured2BulkBuilder_.clear(); + } + return this; + } + /** + * .mxaccess_gateway.v1.WriteSecured2BulkCommand write_secured2_bulk = 42; + */ + public mxaccess_gateway.v1.MxaccessGateway.WriteSecured2BulkCommand.Builder getWriteSecured2BulkBuilder() { + return internalGetWriteSecured2BulkFieldBuilder().getBuilder(); + } + /** + * .mxaccess_gateway.v1.WriteSecured2BulkCommand write_secured2_bulk = 42; + */ + @java.lang.Override + public mxaccess_gateway.v1.MxaccessGateway.WriteSecured2BulkCommandOrBuilder getWriteSecured2BulkOrBuilder() { + if ((payloadCase_ == 42) && (writeSecured2BulkBuilder_ != null)) { + return writeSecured2BulkBuilder_.getMessageOrBuilder(); + } else { + if (payloadCase_ == 42) { + return (mxaccess_gateway.v1.MxaccessGateway.WriteSecured2BulkCommand) payload_; + } + return mxaccess_gateway.v1.MxaccessGateway.WriteSecured2BulkCommand.getDefaultInstance(); + } + } + /** + * .mxaccess_gateway.v1.WriteSecured2BulkCommand write_secured2_bulk = 42; + */ + private com.google.protobuf.SingleFieldBuilder< + mxaccess_gateway.v1.MxaccessGateway.WriteSecured2BulkCommand, mxaccess_gateway.v1.MxaccessGateway.WriteSecured2BulkCommand.Builder, mxaccess_gateway.v1.MxaccessGateway.WriteSecured2BulkCommandOrBuilder> + internalGetWriteSecured2BulkFieldBuilder() { + if (writeSecured2BulkBuilder_ == null) { + if (!(payloadCase_ == 42)) { + payload_ = mxaccess_gateway.v1.MxaccessGateway.WriteSecured2BulkCommand.getDefaultInstance(); + } + writeSecured2BulkBuilder_ = new com.google.protobuf.SingleFieldBuilder< + mxaccess_gateway.v1.MxaccessGateway.WriteSecured2BulkCommand, mxaccess_gateway.v1.MxaccessGateway.WriteSecured2BulkCommand.Builder, mxaccess_gateway.v1.MxaccessGateway.WriteSecured2BulkCommandOrBuilder>( + (mxaccess_gateway.v1.MxaccessGateway.WriteSecured2BulkCommand) payload_, + getParentForChildren(), + isClean()); + payload_ = null; + } + payloadCase_ = 42; + onChanged(); + return writeSecured2BulkBuilder_; + } + + private com.google.protobuf.SingleFieldBuilder< + mxaccess_gateway.v1.MxaccessGateway.ReadBulkCommand, mxaccess_gateway.v1.MxaccessGateway.ReadBulkCommand.Builder, mxaccess_gateway.v1.MxaccessGateway.ReadBulkCommandOrBuilder> readBulkBuilder_; + /** + * .mxaccess_gateway.v1.ReadBulkCommand read_bulk = 43; + * @return Whether the readBulk field is set. + */ + @java.lang.Override + public boolean hasReadBulk() { + return payloadCase_ == 43; + } + /** + * .mxaccess_gateway.v1.ReadBulkCommand read_bulk = 43; + * @return The readBulk. + */ + @java.lang.Override + public mxaccess_gateway.v1.MxaccessGateway.ReadBulkCommand getReadBulk() { + if (readBulkBuilder_ == null) { + if (payloadCase_ == 43) { + return (mxaccess_gateway.v1.MxaccessGateway.ReadBulkCommand) payload_; + } + return mxaccess_gateway.v1.MxaccessGateway.ReadBulkCommand.getDefaultInstance(); + } else { + if (payloadCase_ == 43) { + return readBulkBuilder_.getMessage(); + } + return mxaccess_gateway.v1.MxaccessGateway.ReadBulkCommand.getDefaultInstance(); + } + } + /** + * .mxaccess_gateway.v1.ReadBulkCommand read_bulk = 43; + */ + public Builder setReadBulk(mxaccess_gateway.v1.MxaccessGateway.ReadBulkCommand value) { + if (readBulkBuilder_ == null) { + if (value == null) { + throw new NullPointerException(); + } + payload_ = value; + onChanged(); + } else { + readBulkBuilder_.setMessage(value); + } + payloadCase_ = 43; + return this; + } + /** + * .mxaccess_gateway.v1.ReadBulkCommand read_bulk = 43; + */ + public Builder setReadBulk( + mxaccess_gateway.v1.MxaccessGateway.ReadBulkCommand.Builder builderForValue) { + if (readBulkBuilder_ == null) { + payload_ = builderForValue.build(); + onChanged(); + } else { + readBulkBuilder_.setMessage(builderForValue.build()); + } + payloadCase_ = 43; + return this; + } + /** + * .mxaccess_gateway.v1.ReadBulkCommand read_bulk = 43; + */ + public Builder mergeReadBulk(mxaccess_gateway.v1.MxaccessGateway.ReadBulkCommand value) { + if (readBulkBuilder_ == null) { + if (payloadCase_ == 43 && + payload_ != mxaccess_gateway.v1.MxaccessGateway.ReadBulkCommand.getDefaultInstance()) { + payload_ = mxaccess_gateway.v1.MxaccessGateway.ReadBulkCommand.newBuilder((mxaccess_gateway.v1.MxaccessGateway.ReadBulkCommand) payload_) + .mergeFrom(value).buildPartial(); + } else { + payload_ = value; + } + onChanged(); + } else { + if (payloadCase_ == 43) { + readBulkBuilder_.mergeFrom(value); + } else { + readBulkBuilder_.setMessage(value); + } + } + payloadCase_ = 43; + return this; + } + /** + * .mxaccess_gateway.v1.ReadBulkCommand read_bulk = 43; + */ + public Builder clearReadBulk() { + if (readBulkBuilder_ == null) { + if (payloadCase_ == 43) { + payloadCase_ = 0; + payload_ = null; + onChanged(); + } + } else { + if (payloadCase_ == 43) { + payloadCase_ = 0; + payload_ = null; + } + readBulkBuilder_.clear(); + } + return this; + } + /** + * .mxaccess_gateway.v1.ReadBulkCommand read_bulk = 43; + */ + public mxaccess_gateway.v1.MxaccessGateway.ReadBulkCommand.Builder getReadBulkBuilder() { + return internalGetReadBulkFieldBuilder().getBuilder(); + } + /** + * .mxaccess_gateway.v1.ReadBulkCommand read_bulk = 43; + */ + @java.lang.Override + public mxaccess_gateway.v1.MxaccessGateway.ReadBulkCommandOrBuilder getReadBulkOrBuilder() { + if ((payloadCase_ == 43) && (readBulkBuilder_ != null)) { + return readBulkBuilder_.getMessageOrBuilder(); + } else { + if (payloadCase_ == 43) { + return (mxaccess_gateway.v1.MxaccessGateway.ReadBulkCommand) payload_; + } + return mxaccess_gateway.v1.MxaccessGateway.ReadBulkCommand.getDefaultInstance(); + } + } + /** + * .mxaccess_gateway.v1.ReadBulkCommand read_bulk = 43; + */ + private com.google.protobuf.SingleFieldBuilder< + mxaccess_gateway.v1.MxaccessGateway.ReadBulkCommand, mxaccess_gateway.v1.MxaccessGateway.ReadBulkCommand.Builder, mxaccess_gateway.v1.MxaccessGateway.ReadBulkCommandOrBuilder> + internalGetReadBulkFieldBuilder() { + if (readBulkBuilder_ == null) { + if (!(payloadCase_ == 43)) { + payload_ = mxaccess_gateway.v1.MxaccessGateway.ReadBulkCommand.getDefaultInstance(); + } + readBulkBuilder_ = new com.google.protobuf.SingleFieldBuilder< + mxaccess_gateway.v1.MxaccessGateway.ReadBulkCommand, mxaccess_gateway.v1.MxaccessGateway.ReadBulkCommand.Builder, mxaccess_gateway.v1.MxaccessGateway.ReadBulkCommandOrBuilder>( + (mxaccess_gateway.v1.MxaccessGateway.ReadBulkCommand) payload_, + getParentForChildren(), + isClean()); + payload_ = null; + } + payloadCase_ = 43; + onChanged(); + return readBulkBuilder_; + } + private com.google.protobuf.SingleFieldBuilder< mxaccess_gateway.v1.MxaccessGateway.PingCommand, mxaccess_gateway.v1.MxaccessGateway.PingCommand.Builder, mxaccess_gateway.v1.MxaccessGateway.PingCommandOrBuilder> pingBuilder_; /** @@ -35423,6 +36583,7448 @@ public final class MxaccessGateway extends com.google.protobuf.GeneratedFile { } + public interface WriteBulkCommandOrBuilder extends + // @@protoc_insertion_point(interface_extends:mxaccess_gateway.v1.WriteBulkCommand) + com.google.protobuf.MessageOrBuilder { + + /** + * int32 server_handle = 1; + * @return The serverHandle. + */ + int getServerHandle(); + + /** + * repeated .mxaccess_gateway.v1.WriteBulkEntry entries = 2; + */ + java.util.List + getEntriesList(); + /** + * repeated .mxaccess_gateway.v1.WriteBulkEntry entries = 2; + */ + mxaccess_gateway.v1.MxaccessGateway.WriteBulkEntry getEntries(int index); + /** + * repeated .mxaccess_gateway.v1.WriteBulkEntry entries = 2; + */ + int getEntriesCount(); + /** + * repeated .mxaccess_gateway.v1.WriteBulkEntry entries = 2; + */ + java.util.List + getEntriesOrBuilderList(); + /** + * repeated .mxaccess_gateway.v1.WriteBulkEntry entries = 2; + */ + mxaccess_gateway.v1.MxaccessGateway.WriteBulkEntryOrBuilder getEntriesOrBuilder( + int index); + } + /** + *

+   * Bulk Write — sequential MXAccess Write per entry, on the worker's STA.
+   * MXAccess has no native bulk write; each entry round-trips through the same
+   * single-item Write path the gateway uses today. Per-item failures appear as
+   * BulkWriteResult entries with `was_successful = false` and never throw.
+   * 
+ * + * Protobuf type {@code mxaccess_gateway.v1.WriteBulkCommand} + */ + public static final class WriteBulkCommand extends + com.google.protobuf.GeneratedMessage implements + // @@protoc_insertion_point(message_implements:mxaccess_gateway.v1.WriteBulkCommand) + WriteBulkCommandOrBuilder { + private static final long serialVersionUID = 0L; + static { + com.google.protobuf.RuntimeVersion.validateProtobufGencodeVersion( + com.google.protobuf.RuntimeVersion.RuntimeDomain.PUBLIC, + /* major= */ 4, + /* minor= */ 33, + /* patch= */ 1, + /* suffix= */ "", + "WriteBulkCommand"); + } + // Use WriteBulkCommand.newBuilder() to construct. + private WriteBulkCommand(com.google.protobuf.GeneratedMessage.Builder builder) { + super(builder); + } + private WriteBulkCommand() { + entries_ = java.util.Collections.emptyList(); + } + + public static final com.google.protobuf.Descriptors.Descriptor + getDescriptor() { + return mxaccess_gateway.v1.MxaccessGateway.internal_static_mxaccess_gateway_v1_WriteBulkCommand_descriptor; + } + + @java.lang.Override + protected com.google.protobuf.GeneratedMessage.FieldAccessorTable + internalGetFieldAccessorTable() { + return mxaccess_gateway.v1.MxaccessGateway.internal_static_mxaccess_gateway_v1_WriteBulkCommand_fieldAccessorTable + .ensureFieldAccessorsInitialized( + mxaccess_gateway.v1.MxaccessGateway.WriteBulkCommand.class, mxaccess_gateway.v1.MxaccessGateway.WriteBulkCommand.Builder.class); + } + + public static final int SERVER_HANDLE_FIELD_NUMBER = 1; + private int serverHandle_ = 0; + /** + * int32 server_handle = 1; + * @return The serverHandle. + */ + @java.lang.Override + public int getServerHandle() { + return serverHandle_; + } + + public static final int ENTRIES_FIELD_NUMBER = 2; + @SuppressWarnings("serial") + private java.util.List entries_; + /** + * repeated .mxaccess_gateway.v1.WriteBulkEntry entries = 2; + */ + @java.lang.Override + public java.util.List getEntriesList() { + return entries_; + } + /** + * repeated .mxaccess_gateway.v1.WriteBulkEntry entries = 2; + */ + @java.lang.Override + public java.util.List + getEntriesOrBuilderList() { + return entries_; + } + /** + * repeated .mxaccess_gateway.v1.WriteBulkEntry entries = 2; + */ + @java.lang.Override + public int getEntriesCount() { + return entries_.size(); + } + /** + * repeated .mxaccess_gateway.v1.WriteBulkEntry entries = 2; + */ + @java.lang.Override + public mxaccess_gateway.v1.MxaccessGateway.WriteBulkEntry getEntries(int index) { + return entries_.get(index); + } + /** + * repeated .mxaccess_gateway.v1.WriteBulkEntry entries = 2; + */ + @java.lang.Override + public mxaccess_gateway.v1.MxaccessGateway.WriteBulkEntryOrBuilder getEntriesOrBuilder( + int index) { + return entries_.get(index); + } + + private byte memoizedIsInitialized = -1; + @java.lang.Override + public final boolean isInitialized() { + byte isInitialized = memoizedIsInitialized; + if (isInitialized == 1) return true; + if (isInitialized == 0) return false; + + memoizedIsInitialized = 1; + return true; + } + + @java.lang.Override + public void writeTo(com.google.protobuf.CodedOutputStream output) + throws java.io.IOException { + if (serverHandle_ != 0) { + output.writeInt32(1, serverHandle_); + } + for (int i = 0; i < entries_.size(); i++) { + output.writeMessage(2, entries_.get(i)); + } + getUnknownFields().writeTo(output); + } + + @java.lang.Override + public int getSerializedSize() { + int size = memoizedSize; + if (size != -1) return size; + + size = 0; + if (serverHandle_ != 0) { + size += com.google.protobuf.CodedOutputStream + .computeInt32Size(1, serverHandle_); + } + for (int i = 0; i < entries_.size(); i++) { + size += com.google.protobuf.CodedOutputStream + .computeMessageSize(2, entries_.get(i)); + } + size += getUnknownFields().getSerializedSize(); + memoizedSize = size; + return size; + } + + @java.lang.Override + public boolean equals(final java.lang.Object obj) { + if (obj == this) { + return true; + } + if (!(obj instanceof mxaccess_gateway.v1.MxaccessGateway.WriteBulkCommand)) { + return super.equals(obj); + } + mxaccess_gateway.v1.MxaccessGateway.WriteBulkCommand other = (mxaccess_gateway.v1.MxaccessGateway.WriteBulkCommand) obj; + + if (getServerHandle() + != other.getServerHandle()) return false; + if (!getEntriesList() + .equals(other.getEntriesList())) return false; + if (!getUnknownFields().equals(other.getUnknownFields())) return false; + return true; + } + + @java.lang.Override + public int hashCode() { + if (memoizedHashCode != 0) { + return memoizedHashCode; + } + int hash = 41; + hash = (19 * hash) + getDescriptor().hashCode(); + hash = (37 * hash) + SERVER_HANDLE_FIELD_NUMBER; + hash = (53 * hash) + getServerHandle(); + if (getEntriesCount() > 0) { + hash = (37 * hash) + ENTRIES_FIELD_NUMBER; + hash = (53 * hash) + getEntriesList().hashCode(); + } + hash = (29 * hash) + getUnknownFields().hashCode(); + memoizedHashCode = hash; + return hash; + } + + public static mxaccess_gateway.v1.MxaccessGateway.WriteBulkCommand parseFrom( + java.nio.ByteBuffer data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static mxaccess_gateway.v1.MxaccessGateway.WriteBulkCommand parseFrom( + java.nio.ByteBuffer data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static mxaccess_gateway.v1.MxaccessGateway.WriteBulkCommand parseFrom( + com.google.protobuf.ByteString data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static mxaccess_gateway.v1.MxaccessGateway.WriteBulkCommand parseFrom( + com.google.protobuf.ByteString data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static mxaccess_gateway.v1.MxaccessGateway.WriteBulkCommand parseFrom(byte[] data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static mxaccess_gateway.v1.MxaccessGateway.WriteBulkCommand parseFrom( + byte[] data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static mxaccess_gateway.v1.MxaccessGateway.WriteBulkCommand parseFrom(java.io.InputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessage + .parseWithIOException(PARSER, input); + } + public static mxaccess_gateway.v1.MxaccessGateway.WriteBulkCommand parseFrom( + java.io.InputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessage + .parseWithIOException(PARSER, input, extensionRegistry); + } + + public static mxaccess_gateway.v1.MxaccessGateway.WriteBulkCommand parseDelimitedFrom(java.io.InputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessage + .parseDelimitedWithIOException(PARSER, input); + } + + public static mxaccess_gateway.v1.MxaccessGateway.WriteBulkCommand parseDelimitedFrom( + java.io.InputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessage + .parseDelimitedWithIOException(PARSER, input, extensionRegistry); + } + public static mxaccess_gateway.v1.MxaccessGateway.WriteBulkCommand parseFrom( + com.google.protobuf.CodedInputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessage + .parseWithIOException(PARSER, input); + } + public static mxaccess_gateway.v1.MxaccessGateway.WriteBulkCommand parseFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessage + .parseWithIOException(PARSER, input, extensionRegistry); + } + + @java.lang.Override + public Builder newBuilderForType() { return newBuilder(); } + public static Builder newBuilder() { + return DEFAULT_INSTANCE.toBuilder(); + } + public static Builder newBuilder(mxaccess_gateway.v1.MxaccessGateway.WriteBulkCommand prototype) { + return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype); + } + @java.lang.Override + public Builder toBuilder() { + return this == DEFAULT_INSTANCE + ? new Builder() : new Builder().mergeFrom(this); + } + + @java.lang.Override + protected Builder newBuilderForType( + com.google.protobuf.GeneratedMessage.BuilderParent parent) { + Builder builder = new Builder(parent); + return builder; + } + /** + *
+     * Bulk Write — sequential MXAccess Write per entry, on the worker's STA.
+     * MXAccess has no native bulk write; each entry round-trips through the same
+     * single-item Write path the gateway uses today. Per-item failures appear as
+     * BulkWriteResult entries with `was_successful = false` and never throw.
+     * 
+ * + * Protobuf type {@code mxaccess_gateway.v1.WriteBulkCommand} + */ + public static final class Builder extends + com.google.protobuf.GeneratedMessage.Builder implements + // @@protoc_insertion_point(builder_implements:mxaccess_gateway.v1.WriteBulkCommand) + mxaccess_gateway.v1.MxaccessGateway.WriteBulkCommandOrBuilder { + public static final com.google.protobuf.Descriptors.Descriptor + getDescriptor() { + return mxaccess_gateway.v1.MxaccessGateway.internal_static_mxaccess_gateway_v1_WriteBulkCommand_descriptor; + } + + @java.lang.Override + protected com.google.protobuf.GeneratedMessage.FieldAccessorTable + internalGetFieldAccessorTable() { + return mxaccess_gateway.v1.MxaccessGateway.internal_static_mxaccess_gateway_v1_WriteBulkCommand_fieldAccessorTable + .ensureFieldAccessorsInitialized( + mxaccess_gateway.v1.MxaccessGateway.WriteBulkCommand.class, mxaccess_gateway.v1.MxaccessGateway.WriteBulkCommand.Builder.class); + } + + // Construct using mxaccess_gateway.v1.MxaccessGateway.WriteBulkCommand.newBuilder() + private Builder() { + + } + + private Builder( + com.google.protobuf.GeneratedMessage.BuilderParent parent) { + super(parent); + + } + @java.lang.Override + public Builder clear() { + super.clear(); + bitField0_ = 0; + serverHandle_ = 0; + if (entriesBuilder_ == null) { + entries_ = java.util.Collections.emptyList(); + } else { + entries_ = null; + entriesBuilder_.clear(); + } + bitField0_ = (bitField0_ & ~0x00000002); + return this; + } + + @java.lang.Override + public com.google.protobuf.Descriptors.Descriptor + getDescriptorForType() { + return mxaccess_gateway.v1.MxaccessGateway.internal_static_mxaccess_gateway_v1_WriteBulkCommand_descriptor; + } + + @java.lang.Override + public mxaccess_gateway.v1.MxaccessGateway.WriteBulkCommand getDefaultInstanceForType() { + return mxaccess_gateway.v1.MxaccessGateway.WriteBulkCommand.getDefaultInstance(); + } + + @java.lang.Override + public mxaccess_gateway.v1.MxaccessGateway.WriteBulkCommand build() { + mxaccess_gateway.v1.MxaccessGateway.WriteBulkCommand result = buildPartial(); + if (!result.isInitialized()) { + throw newUninitializedMessageException(result); + } + return result; + } + + @java.lang.Override + public mxaccess_gateway.v1.MxaccessGateway.WriteBulkCommand buildPartial() { + mxaccess_gateway.v1.MxaccessGateway.WriteBulkCommand result = new mxaccess_gateway.v1.MxaccessGateway.WriteBulkCommand(this); + buildPartialRepeatedFields(result); + if (bitField0_ != 0) { buildPartial0(result); } + onBuilt(); + return result; + } + + private void buildPartialRepeatedFields(mxaccess_gateway.v1.MxaccessGateway.WriteBulkCommand result) { + if (entriesBuilder_ == null) { + if (((bitField0_ & 0x00000002) != 0)) { + entries_ = java.util.Collections.unmodifiableList(entries_); + bitField0_ = (bitField0_ & ~0x00000002); + } + result.entries_ = entries_; + } else { + result.entries_ = entriesBuilder_.build(); + } + } + + private void buildPartial0(mxaccess_gateway.v1.MxaccessGateway.WriteBulkCommand result) { + int from_bitField0_ = bitField0_; + if (((from_bitField0_ & 0x00000001) != 0)) { + result.serverHandle_ = serverHandle_; + } + } + + @java.lang.Override + public Builder mergeFrom(com.google.protobuf.Message other) { + if (other instanceof mxaccess_gateway.v1.MxaccessGateway.WriteBulkCommand) { + return mergeFrom((mxaccess_gateway.v1.MxaccessGateway.WriteBulkCommand)other); + } else { + super.mergeFrom(other); + return this; + } + } + + public Builder mergeFrom(mxaccess_gateway.v1.MxaccessGateway.WriteBulkCommand other) { + if (other == mxaccess_gateway.v1.MxaccessGateway.WriteBulkCommand.getDefaultInstance()) return this; + if (other.getServerHandle() != 0) { + setServerHandle(other.getServerHandle()); + } + if (entriesBuilder_ == null) { + if (!other.entries_.isEmpty()) { + if (entries_.isEmpty()) { + entries_ = other.entries_; + bitField0_ = (bitField0_ & ~0x00000002); + } else { + ensureEntriesIsMutable(); + entries_.addAll(other.entries_); + } + onChanged(); + } + } else { + if (!other.entries_.isEmpty()) { + if (entriesBuilder_.isEmpty()) { + entriesBuilder_.dispose(); + entriesBuilder_ = null; + entries_ = other.entries_; + bitField0_ = (bitField0_ & ~0x00000002); + entriesBuilder_ = + com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders ? + internalGetEntriesFieldBuilder() : null; + } else { + entriesBuilder_.addAllMessages(other.entries_); + } + } + } + this.mergeUnknownFields(other.getUnknownFields()); + onChanged(); + return this; + } + + @java.lang.Override + public final boolean isInitialized() { + return true; + } + + @java.lang.Override + public Builder mergeFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + if (extensionRegistry == null) { + throw new java.lang.NullPointerException(); + } + try { + boolean done = false; + while (!done) { + int tag = input.readTag(); + switch (tag) { + case 0: + done = true; + break; + case 8: { + serverHandle_ = input.readInt32(); + bitField0_ |= 0x00000001; + break; + } // case 8 + case 18: { + mxaccess_gateway.v1.MxaccessGateway.WriteBulkEntry m = + input.readMessage( + mxaccess_gateway.v1.MxaccessGateway.WriteBulkEntry.parser(), + extensionRegistry); + if (entriesBuilder_ == null) { + ensureEntriesIsMutable(); + entries_.add(m); + } else { + entriesBuilder_.addMessage(m); + } + break; + } // case 18 + default: { + if (!super.parseUnknownField(input, extensionRegistry, tag)) { + done = true; // was an endgroup tag + } + break; + } // default: + } // switch (tag) + } // while (!done) + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + throw e.unwrapIOException(); + } finally { + onChanged(); + } // finally + return this; + } + private int bitField0_; + + private int serverHandle_ ; + /** + * int32 server_handle = 1; + * @return The serverHandle. + */ + @java.lang.Override + public int getServerHandle() { + return serverHandle_; + } + /** + * int32 server_handle = 1; + * @param value The serverHandle to set. + * @return This builder for chaining. + */ + public Builder setServerHandle(int value) { + + serverHandle_ = value; + bitField0_ |= 0x00000001; + onChanged(); + return this; + } + /** + * int32 server_handle = 1; + * @return This builder for chaining. + */ + public Builder clearServerHandle() { + bitField0_ = (bitField0_ & ~0x00000001); + serverHandle_ = 0; + onChanged(); + return this; + } + + private java.util.List entries_ = + java.util.Collections.emptyList(); + private void ensureEntriesIsMutable() { + if (!((bitField0_ & 0x00000002) != 0)) { + entries_ = new java.util.ArrayList(entries_); + bitField0_ |= 0x00000002; + } + } + + private com.google.protobuf.RepeatedFieldBuilder< + mxaccess_gateway.v1.MxaccessGateway.WriteBulkEntry, mxaccess_gateway.v1.MxaccessGateway.WriteBulkEntry.Builder, mxaccess_gateway.v1.MxaccessGateway.WriteBulkEntryOrBuilder> entriesBuilder_; + + /** + * repeated .mxaccess_gateway.v1.WriteBulkEntry entries = 2; + */ + public java.util.List getEntriesList() { + if (entriesBuilder_ == null) { + return java.util.Collections.unmodifiableList(entries_); + } else { + return entriesBuilder_.getMessageList(); + } + } + /** + * repeated .mxaccess_gateway.v1.WriteBulkEntry entries = 2; + */ + public int getEntriesCount() { + if (entriesBuilder_ == null) { + return entries_.size(); + } else { + return entriesBuilder_.getCount(); + } + } + /** + * repeated .mxaccess_gateway.v1.WriteBulkEntry entries = 2; + */ + public mxaccess_gateway.v1.MxaccessGateway.WriteBulkEntry getEntries(int index) { + if (entriesBuilder_ == null) { + return entries_.get(index); + } else { + return entriesBuilder_.getMessage(index); + } + } + /** + * repeated .mxaccess_gateway.v1.WriteBulkEntry entries = 2; + */ + public Builder setEntries( + int index, mxaccess_gateway.v1.MxaccessGateway.WriteBulkEntry value) { + if (entriesBuilder_ == null) { + if (value == null) { + throw new NullPointerException(); + } + ensureEntriesIsMutable(); + entries_.set(index, value); + onChanged(); + } else { + entriesBuilder_.setMessage(index, value); + } + return this; + } + /** + * repeated .mxaccess_gateway.v1.WriteBulkEntry entries = 2; + */ + public Builder setEntries( + int index, mxaccess_gateway.v1.MxaccessGateway.WriteBulkEntry.Builder builderForValue) { + if (entriesBuilder_ == null) { + ensureEntriesIsMutable(); + entries_.set(index, builderForValue.build()); + onChanged(); + } else { + entriesBuilder_.setMessage(index, builderForValue.build()); + } + return this; + } + /** + * repeated .mxaccess_gateway.v1.WriteBulkEntry entries = 2; + */ + public Builder addEntries(mxaccess_gateway.v1.MxaccessGateway.WriteBulkEntry value) { + if (entriesBuilder_ == null) { + if (value == null) { + throw new NullPointerException(); + } + ensureEntriesIsMutable(); + entries_.add(value); + onChanged(); + } else { + entriesBuilder_.addMessage(value); + } + return this; + } + /** + * repeated .mxaccess_gateway.v1.WriteBulkEntry entries = 2; + */ + public Builder addEntries( + int index, mxaccess_gateway.v1.MxaccessGateway.WriteBulkEntry value) { + if (entriesBuilder_ == null) { + if (value == null) { + throw new NullPointerException(); + } + ensureEntriesIsMutable(); + entries_.add(index, value); + onChanged(); + } else { + entriesBuilder_.addMessage(index, value); + } + return this; + } + /** + * repeated .mxaccess_gateway.v1.WriteBulkEntry entries = 2; + */ + public Builder addEntries( + mxaccess_gateway.v1.MxaccessGateway.WriteBulkEntry.Builder builderForValue) { + if (entriesBuilder_ == null) { + ensureEntriesIsMutable(); + entries_.add(builderForValue.build()); + onChanged(); + } else { + entriesBuilder_.addMessage(builderForValue.build()); + } + return this; + } + /** + * repeated .mxaccess_gateway.v1.WriteBulkEntry entries = 2; + */ + public Builder addEntries( + int index, mxaccess_gateway.v1.MxaccessGateway.WriteBulkEntry.Builder builderForValue) { + if (entriesBuilder_ == null) { + ensureEntriesIsMutable(); + entries_.add(index, builderForValue.build()); + onChanged(); + } else { + entriesBuilder_.addMessage(index, builderForValue.build()); + } + return this; + } + /** + * repeated .mxaccess_gateway.v1.WriteBulkEntry entries = 2; + */ + public Builder addAllEntries( + java.lang.Iterable values) { + if (entriesBuilder_ == null) { + ensureEntriesIsMutable(); + com.google.protobuf.AbstractMessageLite.Builder.addAll( + values, entries_); + onChanged(); + } else { + entriesBuilder_.addAllMessages(values); + } + return this; + } + /** + * repeated .mxaccess_gateway.v1.WriteBulkEntry entries = 2; + */ + public Builder clearEntries() { + if (entriesBuilder_ == null) { + entries_ = java.util.Collections.emptyList(); + bitField0_ = (bitField0_ & ~0x00000002); + onChanged(); + } else { + entriesBuilder_.clear(); + } + return this; + } + /** + * repeated .mxaccess_gateway.v1.WriteBulkEntry entries = 2; + */ + public Builder removeEntries(int index) { + if (entriesBuilder_ == null) { + ensureEntriesIsMutable(); + entries_.remove(index); + onChanged(); + } else { + entriesBuilder_.remove(index); + } + return this; + } + /** + * repeated .mxaccess_gateway.v1.WriteBulkEntry entries = 2; + */ + public mxaccess_gateway.v1.MxaccessGateway.WriteBulkEntry.Builder getEntriesBuilder( + int index) { + return internalGetEntriesFieldBuilder().getBuilder(index); + } + /** + * repeated .mxaccess_gateway.v1.WriteBulkEntry entries = 2; + */ + public mxaccess_gateway.v1.MxaccessGateway.WriteBulkEntryOrBuilder getEntriesOrBuilder( + int index) { + if (entriesBuilder_ == null) { + return entries_.get(index); } else { + return entriesBuilder_.getMessageOrBuilder(index); + } + } + /** + * repeated .mxaccess_gateway.v1.WriteBulkEntry entries = 2; + */ + public java.util.List + getEntriesOrBuilderList() { + if (entriesBuilder_ != null) { + return entriesBuilder_.getMessageOrBuilderList(); + } else { + return java.util.Collections.unmodifiableList(entries_); + } + } + /** + * repeated .mxaccess_gateway.v1.WriteBulkEntry entries = 2; + */ + public mxaccess_gateway.v1.MxaccessGateway.WriteBulkEntry.Builder addEntriesBuilder() { + return internalGetEntriesFieldBuilder().addBuilder( + mxaccess_gateway.v1.MxaccessGateway.WriteBulkEntry.getDefaultInstance()); + } + /** + * repeated .mxaccess_gateway.v1.WriteBulkEntry entries = 2; + */ + public mxaccess_gateway.v1.MxaccessGateway.WriteBulkEntry.Builder addEntriesBuilder( + int index) { + return internalGetEntriesFieldBuilder().addBuilder( + index, mxaccess_gateway.v1.MxaccessGateway.WriteBulkEntry.getDefaultInstance()); + } + /** + * repeated .mxaccess_gateway.v1.WriteBulkEntry entries = 2; + */ + public java.util.List + getEntriesBuilderList() { + return internalGetEntriesFieldBuilder().getBuilderList(); + } + private com.google.protobuf.RepeatedFieldBuilder< + mxaccess_gateway.v1.MxaccessGateway.WriteBulkEntry, mxaccess_gateway.v1.MxaccessGateway.WriteBulkEntry.Builder, mxaccess_gateway.v1.MxaccessGateway.WriteBulkEntryOrBuilder> + internalGetEntriesFieldBuilder() { + if (entriesBuilder_ == null) { + entriesBuilder_ = new com.google.protobuf.RepeatedFieldBuilder< + mxaccess_gateway.v1.MxaccessGateway.WriteBulkEntry, mxaccess_gateway.v1.MxaccessGateway.WriteBulkEntry.Builder, mxaccess_gateway.v1.MxaccessGateway.WriteBulkEntryOrBuilder>( + entries_, + ((bitField0_ & 0x00000002) != 0), + getParentForChildren(), + isClean()); + entries_ = null; + } + return entriesBuilder_; + } + + // @@protoc_insertion_point(builder_scope:mxaccess_gateway.v1.WriteBulkCommand) + } + + // @@protoc_insertion_point(class_scope:mxaccess_gateway.v1.WriteBulkCommand) + private static final mxaccess_gateway.v1.MxaccessGateway.WriteBulkCommand DEFAULT_INSTANCE; + static { + DEFAULT_INSTANCE = new mxaccess_gateway.v1.MxaccessGateway.WriteBulkCommand(); + } + + public static mxaccess_gateway.v1.MxaccessGateway.WriteBulkCommand getDefaultInstance() { + return DEFAULT_INSTANCE; + } + + private static final com.google.protobuf.Parser + PARSER = new com.google.protobuf.AbstractParser() { + @java.lang.Override + public WriteBulkCommand parsePartialFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + Builder builder = newBuilder(); + try { + builder.mergeFrom(input, extensionRegistry); + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + throw e.setUnfinishedMessage(builder.buildPartial()); + } catch (com.google.protobuf.UninitializedMessageException e) { + throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial()); + } catch (java.io.IOException e) { + throw new com.google.protobuf.InvalidProtocolBufferException(e) + .setUnfinishedMessage(builder.buildPartial()); + } + return builder.buildPartial(); + } + }; + + public static com.google.protobuf.Parser parser() { + return PARSER; + } + + @java.lang.Override + public com.google.protobuf.Parser getParserForType() { + return PARSER; + } + + @java.lang.Override + public mxaccess_gateway.v1.MxaccessGateway.WriteBulkCommand getDefaultInstanceForType() { + return DEFAULT_INSTANCE; + } + + } + + public interface WriteBulkEntryOrBuilder extends + // @@protoc_insertion_point(interface_extends:mxaccess_gateway.v1.WriteBulkEntry) + com.google.protobuf.MessageOrBuilder { + + /** + * int32 item_handle = 1; + * @return The itemHandle. + */ + int getItemHandle(); + + /** + * .mxaccess_gateway.v1.MxValue value = 2; + * @return Whether the value field is set. + */ + boolean hasValue(); + /** + * .mxaccess_gateway.v1.MxValue value = 2; + * @return The value. + */ + mxaccess_gateway.v1.MxaccessGateway.MxValue getValue(); + /** + * .mxaccess_gateway.v1.MxValue value = 2; + */ + mxaccess_gateway.v1.MxaccessGateway.MxValueOrBuilder getValueOrBuilder(); + + /** + * int32 user_id = 3; + * @return The userId. + */ + int getUserId(); + } + /** + * Protobuf type {@code mxaccess_gateway.v1.WriteBulkEntry} + */ + public static final class WriteBulkEntry extends + com.google.protobuf.GeneratedMessage implements + // @@protoc_insertion_point(message_implements:mxaccess_gateway.v1.WriteBulkEntry) + WriteBulkEntryOrBuilder { + private static final long serialVersionUID = 0L; + static { + com.google.protobuf.RuntimeVersion.validateProtobufGencodeVersion( + com.google.protobuf.RuntimeVersion.RuntimeDomain.PUBLIC, + /* major= */ 4, + /* minor= */ 33, + /* patch= */ 1, + /* suffix= */ "", + "WriteBulkEntry"); + } + // Use WriteBulkEntry.newBuilder() to construct. + private WriteBulkEntry(com.google.protobuf.GeneratedMessage.Builder builder) { + super(builder); + } + private WriteBulkEntry() { + } + + public static final com.google.protobuf.Descriptors.Descriptor + getDescriptor() { + return mxaccess_gateway.v1.MxaccessGateway.internal_static_mxaccess_gateway_v1_WriteBulkEntry_descriptor; + } + + @java.lang.Override + protected com.google.protobuf.GeneratedMessage.FieldAccessorTable + internalGetFieldAccessorTable() { + return mxaccess_gateway.v1.MxaccessGateway.internal_static_mxaccess_gateway_v1_WriteBulkEntry_fieldAccessorTable + .ensureFieldAccessorsInitialized( + mxaccess_gateway.v1.MxaccessGateway.WriteBulkEntry.class, mxaccess_gateway.v1.MxaccessGateway.WriteBulkEntry.Builder.class); + } + + private int bitField0_; + public static final int ITEM_HANDLE_FIELD_NUMBER = 1; + private int itemHandle_ = 0; + /** + * int32 item_handle = 1; + * @return The itemHandle. + */ + @java.lang.Override + public int getItemHandle() { + return itemHandle_; + } + + public static final int VALUE_FIELD_NUMBER = 2; + private mxaccess_gateway.v1.MxaccessGateway.MxValue value_; + /** + * .mxaccess_gateway.v1.MxValue value = 2; + * @return Whether the value field is set. + */ + @java.lang.Override + public boolean hasValue() { + return ((bitField0_ & 0x00000001) != 0); + } + /** + * .mxaccess_gateway.v1.MxValue value = 2; + * @return The value. + */ + @java.lang.Override + public mxaccess_gateway.v1.MxaccessGateway.MxValue getValue() { + return value_ == null ? mxaccess_gateway.v1.MxaccessGateway.MxValue.getDefaultInstance() : value_; + } + /** + * .mxaccess_gateway.v1.MxValue value = 2; + */ + @java.lang.Override + public mxaccess_gateway.v1.MxaccessGateway.MxValueOrBuilder getValueOrBuilder() { + return value_ == null ? mxaccess_gateway.v1.MxaccessGateway.MxValue.getDefaultInstance() : value_; + } + + public static final int USER_ID_FIELD_NUMBER = 3; + private int userId_ = 0; + /** + * int32 user_id = 3; + * @return The userId. + */ + @java.lang.Override + public int getUserId() { + return userId_; + } + + private byte memoizedIsInitialized = -1; + @java.lang.Override + public final boolean isInitialized() { + byte isInitialized = memoizedIsInitialized; + if (isInitialized == 1) return true; + if (isInitialized == 0) return false; + + memoizedIsInitialized = 1; + return true; + } + + @java.lang.Override + public void writeTo(com.google.protobuf.CodedOutputStream output) + throws java.io.IOException { + if (itemHandle_ != 0) { + output.writeInt32(1, itemHandle_); + } + if (((bitField0_ & 0x00000001) != 0)) { + output.writeMessage(2, getValue()); + } + if (userId_ != 0) { + output.writeInt32(3, userId_); + } + getUnknownFields().writeTo(output); + } + + @java.lang.Override + public int getSerializedSize() { + int size = memoizedSize; + if (size != -1) return size; + + size = 0; + if (itemHandle_ != 0) { + size += com.google.protobuf.CodedOutputStream + .computeInt32Size(1, itemHandle_); + } + if (((bitField0_ & 0x00000001) != 0)) { + size += com.google.protobuf.CodedOutputStream + .computeMessageSize(2, getValue()); + } + if (userId_ != 0) { + size += com.google.protobuf.CodedOutputStream + .computeInt32Size(3, userId_); + } + size += getUnknownFields().getSerializedSize(); + memoizedSize = size; + return size; + } + + @java.lang.Override + public boolean equals(final java.lang.Object obj) { + if (obj == this) { + return true; + } + if (!(obj instanceof mxaccess_gateway.v1.MxaccessGateway.WriteBulkEntry)) { + return super.equals(obj); + } + mxaccess_gateway.v1.MxaccessGateway.WriteBulkEntry other = (mxaccess_gateway.v1.MxaccessGateway.WriteBulkEntry) obj; + + if (getItemHandle() + != other.getItemHandle()) return false; + if (hasValue() != other.hasValue()) return false; + if (hasValue()) { + if (!getValue() + .equals(other.getValue())) return false; + } + if (getUserId() + != other.getUserId()) return false; + if (!getUnknownFields().equals(other.getUnknownFields())) return false; + return true; + } + + @java.lang.Override + public int hashCode() { + if (memoizedHashCode != 0) { + return memoizedHashCode; + } + int hash = 41; + hash = (19 * hash) + getDescriptor().hashCode(); + hash = (37 * hash) + ITEM_HANDLE_FIELD_NUMBER; + hash = (53 * hash) + getItemHandle(); + if (hasValue()) { + hash = (37 * hash) + VALUE_FIELD_NUMBER; + hash = (53 * hash) + getValue().hashCode(); + } + hash = (37 * hash) + USER_ID_FIELD_NUMBER; + hash = (53 * hash) + getUserId(); + hash = (29 * hash) + getUnknownFields().hashCode(); + memoizedHashCode = hash; + return hash; + } + + public static mxaccess_gateway.v1.MxaccessGateway.WriteBulkEntry parseFrom( + java.nio.ByteBuffer data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static mxaccess_gateway.v1.MxaccessGateway.WriteBulkEntry parseFrom( + java.nio.ByteBuffer data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static mxaccess_gateway.v1.MxaccessGateway.WriteBulkEntry parseFrom( + com.google.protobuf.ByteString data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static mxaccess_gateway.v1.MxaccessGateway.WriteBulkEntry parseFrom( + com.google.protobuf.ByteString data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static mxaccess_gateway.v1.MxaccessGateway.WriteBulkEntry parseFrom(byte[] data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static mxaccess_gateway.v1.MxaccessGateway.WriteBulkEntry parseFrom( + byte[] data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static mxaccess_gateway.v1.MxaccessGateway.WriteBulkEntry parseFrom(java.io.InputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessage + .parseWithIOException(PARSER, input); + } + public static mxaccess_gateway.v1.MxaccessGateway.WriteBulkEntry parseFrom( + java.io.InputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessage + .parseWithIOException(PARSER, input, extensionRegistry); + } + + public static mxaccess_gateway.v1.MxaccessGateway.WriteBulkEntry parseDelimitedFrom(java.io.InputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessage + .parseDelimitedWithIOException(PARSER, input); + } + + public static mxaccess_gateway.v1.MxaccessGateway.WriteBulkEntry parseDelimitedFrom( + java.io.InputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessage + .parseDelimitedWithIOException(PARSER, input, extensionRegistry); + } + public static mxaccess_gateway.v1.MxaccessGateway.WriteBulkEntry parseFrom( + com.google.protobuf.CodedInputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessage + .parseWithIOException(PARSER, input); + } + public static mxaccess_gateway.v1.MxaccessGateway.WriteBulkEntry parseFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessage + .parseWithIOException(PARSER, input, extensionRegistry); + } + + @java.lang.Override + public Builder newBuilderForType() { return newBuilder(); } + public static Builder newBuilder() { + return DEFAULT_INSTANCE.toBuilder(); + } + public static Builder newBuilder(mxaccess_gateway.v1.MxaccessGateway.WriteBulkEntry prototype) { + return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype); + } + @java.lang.Override + public Builder toBuilder() { + return this == DEFAULT_INSTANCE + ? new Builder() : new Builder().mergeFrom(this); + } + + @java.lang.Override + protected Builder newBuilderForType( + com.google.protobuf.GeneratedMessage.BuilderParent parent) { + Builder builder = new Builder(parent); + return builder; + } + /** + * Protobuf type {@code mxaccess_gateway.v1.WriteBulkEntry} + */ + public static final class Builder extends + com.google.protobuf.GeneratedMessage.Builder implements + // @@protoc_insertion_point(builder_implements:mxaccess_gateway.v1.WriteBulkEntry) + mxaccess_gateway.v1.MxaccessGateway.WriteBulkEntryOrBuilder { + public static final com.google.protobuf.Descriptors.Descriptor + getDescriptor() { + return mxaccess_gateway.v1.MxaccessGateway.internal_static_mxaccess_gateway_v1_WriteBulkEntry_descriptor; + } + + @java.lang.Override + protected com.google.protobuf.GeneratedMessage.FieldAccessorTable + internalGetFieldAccessorTable() { + return mxaccess_gateway.v1.MxaccessGateway.internal_static_mxaccess_gateway_v1_WriteBulkEntry_fieldAccessorTable + .ensureFieldAccessorsInitialized( + mxaccess_gateway.v1.MxaccessGateway.WriteBulkEntry.class, mxaccess_gateway.v1.MxaccessGateway.WriteBulkEntry.Builder.class); + } + + // Construct using mxaccess_gateway.v1.MxaccessGateway.WriteBulkEntry.newBuilder() + private Builder() { + maybeForceBuilderInitialization(); + } + + private Builder( + com.google.protobuf.GeneratedMessage.BuilderParent parent) { + super(parent); + maybeForceBuilderInitialization(); + } + private void maybeForceBuilderInitialization() { + if (com.google.protobuf.GeneratedMessage + .alwaysUseFieldBuilders) { + internalGetValueFieldBuilder(); + } + } + @java.lang.Override + public Builder clear() { + super.clear(); + bitField0_ = 0; + itemHandle_ = 0; + value_ = null; + if (valueBuilder_ != null) { + valueBuilder_.dispose(); + valueBuilder_ = null; + } + userId_ = 0; + return this; + } + + @java.lang.Override + public com.google.protobuf.Descriptors.Descriptor + getDescriptorForType() { + return mxaccess_gateway.v1.MxaccessGateway.internal_static_mxaccess_gateway_v1_WriteBulkEntry_descriptor; + } + + @java.lang.Override + public mxaccess_gateway.v1.MxaccessGateway.WriteBulkEntry getDefaultInstanceForType() { + return mxaccess_gateway.v1.MxaccessGateway.WriteBulkEntry.getDefaultInstance(); + } + + @java.lang.Override + public mxaccess_gateway.v1.MxaccessGateway.WriteBulkEntry build() { + mxaccess_gateway.v1.MxaccessGateway.WriteBulkEntry result = buildPartial(); + if (!result.isInitialized()) { + throw newUninitializedMessageException(result); + } + return result; + } + + @java.lang.Override + public mxaccess_gateway.v1.MxaccessGateway.WriteBulkEntry buildPartial() { + mxaccess_gateway.v1.MxaccessGateway.WriteBulkEntry result = new mxaccess_gateway.v1.MxaccessGateway.WriteBulkEntry(this); + if (bitField0_ != 0) { buildPartial0(result); } + onBuilt(); + return result; + } + + private void buildPartial0(mxaccess_gateway.v1.MxaccessGateway.WriteBulkEntry result) { + int from_bitField0_ = bitField0_; + if (((from_bitField0_ & 0x00000001) != 0)) { + result.itemHandle_ = itemHandle_; + } + int to_bitField0_ = 0; + if (((from_bitField0_ & 0x00000002) != 0)) { + result.value_ = valueBuilder_ == null + ? value_ + : valueBuilder_.build(); + to_bitField0_ |= 0x00000001; + } + if (((from_bitField0_ & 0x00000004) != 0)) { + result.userId_ = userId_; + } + result.bitField0_ |= to_bitField0_; + } + + @java.lang.Override + public Builder mergeFrom(com.google.protobuf.Message other) { + if (other instanceof mxaccess_gateway.v1.MxaccessGateway.WriteBulkEntry) { + return mergeFrom((mxaccess_gateway.v1.MxaccessGateway.WriteBulkEntry)other); + } else { + super.mergeFrom(other); + return this; + } + } + + public Builder mergeFrom(mxaccess_gateway.v1.MxaccessGateway.WriteBulkEntry other) { + if (other == mxaccess_gateway.v1.MxaccessGateway.WriteBulkEntry.getDefaultInstance()) return this; + if (other.getItemHandle() != 0) { + setItemHandle(other.getItemHandle()); + } + if (other.hasValue()) { + mergeValue(other.getValue()); + } + if (other.getUserId() != 0) { + setUserId(other.getUserId()); + } + this.mergeUnknownFields(other.getUnknownFields()); + onChanged(); + return this; + } + + @java.lang.Override + public final boolean isInitialized() { + return true; + } + + @java.lang.Override + public Builder mergeFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + if (extensionRegistry == null) { + throw new java.lang.NullPointerException(); + } + try { + boolean done = false; + while (!done) { + int tag = input.readTag(); + switch (tag) { + case 0: + done = true; + break; + case 8: { + itemHandle_ = input.readInt32(); + bitField0_ |= 0x00000001; + break; + } // case 8 + case 18: { + input.readMessage( + internalGetValueFieldBuilder().getBuilder(), + extensionRegistry); + bitField0_ |= 0x00000002; + break; + } // case 18 + case 24: { + userId_ = input.readInt32(); + bitField0_ |= 0x00000004; + break; + } // case 24 + default: { + if (!super.parseUnknownField(input, extensionRegistry, tag)) { + done = true; // was an endgroup tag + } + break; + } // default: + } // switch (tag) + } // while (!done) + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + throw e.unwrapIOException(); + } finally { + onChanged(); + } // finally + return this; + } + private int bitField0_; + + private int itemHandle_ ; + /** + * int32 item_handle = 1; + * @return The itemHandle. + */ + @java.lang.Override + public int getItemHandle() { + return itemHandle_; + } + /** + * int32 item_handle = 1; + * @param value The itemHandle to set. + * @return This builder for chaining. + */ + public Builder setItemHandle(int value) { + + itemHandle_ = value; + bitField0_ |= 0x00000001; + onChanged(); + return this; + } + /** + * int32 item_handle = 1; + * @return This builder for chaining. + */ + public Builder clearItemHandle() { + bitField0_ = (bitField0_ & ~0x00000001); + itemHandle_ = 0; + onChanged(); + return this; + } + + private mxaccess_gateway.v1.MxaccessGateway.MxValue value_; + private com.google.protobuf.SingleFieldBuilder< + mxaccess_gateway.v1.MxaccessGateway.MxValue, mxaccess_gateway.v1.MxaccessGateway.MxValue.Builder, mxaccess_gateway.v1.MxaccessGateway.MxValueOrBuilder> valueBuilder_; + /** + * .mxaccess_gateway.v1.MxValue value = 2; + * @return Whether the value field is set. + */ + public boolean hasValue() { + return ((bitField0_ & 0x00000002) != 0); + } + /** + * .mxaccess_gateway.v1.MxValue value = 2; + * @return The value. + */ + public mxaccess_gateway.v1.MxaccessGateway.MxValue getValue() { + if (valueBuilder_ == null) { + return value_ == null ? mxaccess_gateway.v1.MxaccessGateway.MxValue.getDefaultInstance() : value_; + } else { + return valueBuilder_.getMessage(); + } + } + /** + * .mxaccess_gateway.v1.MxValue value = 2; + */ + public Builder setValue(mxaccess_gateway.v1.MxaccessGateway.MxValue value) { + if (valueBuilder_ == null) { + if (value == null) { + throw new NullPointerException(); + } + value_ = value; + } else { + valueBuilder_.setMessage(value); + } + bitField0_ |= 0x00000002; + onChanged(); + return this; + } + /** + * .mxaccess_gateway.v1.MxValue value = 2; + */ + public Builder setValue( + mxaccess_gateway.v1.MxaccessGateway.MxValue.Builder builderForValue) { + if (valueBuilder_ == null) { + value_ = builderForValue.build(); + } else { + valueBuilder_.setMessage(builderForValue.build()); + } + bitField0_ |= 0x00000002; + onChanged(); + return this; + } + /** + * .mxaccess_gateway.v1.MxValue value = 2; + */ + public Builder mergeValue(mxaccess_gateway.v1.MxaccessGateway.MxValue value) { + if (valueBuilder_ == null) { + if (((bitField0_ & 0x00000002) != 0) && + value_ != null && + value_ != mxaccess_gateway.v1.MxaccessGateway.MxValue.getDefaultInstance()) { + getValueBuilder().mergeFrom(value); + } else { + value_ = value; + } + } else { + valueBuilder_.mergeFrom(value); + } + if (value_ != null) { + bitField0_ |= 0x00000002; + onChanged(); + } + return this; + } + /** + * .mxaccess_gateway.v1.MxValue value = 2; + */ + public Builder clearValue() { + bitField0_ = (bitField0_ & ~0x00000002); + value_ = null; + if (valueBuilder_ != null) { + valueBuilder_.dispose(); + valueBuilder_ = null; + } + onChanged(); + return this; + } + /** + * .mxaccess_gateway.v1.MxValue value = 2; + */ + public mxaccess_gateway.v1.MxaccessGateway.MxValue.Builder getValueBuilder() { + bitField0_ |= 0x00000002; + onChanged(); + return internalGetValueFieldBuilder().getBuilder(); + } + /** + * .mxaccess_gateway.v1.MxValue value = 2; + */ + public mxaccess_gateway.v1.MxaccessGateway.MxValueOrBuilder getValueOrBuilder() { + if (valueBuilder_ != null) { + return valueBuilder_.getMessageOrBuilder(); + } else { + return value_ == null ? + mxaccess_gateway.v1.MxaccessGateway.MxValue.getDefaultInstance() : value_; + } + } + /** + * .mxaccess_gateway.v1.MxValue value = 2; + */ + private com.google.protobuf.SingleFieldBuilder< + mxaccess_gateway.v1.MxaccessGateway.MxValue, mxaccess_gateway.v1.MxaccessGateway.MxValue.Builder, mxaccess_gateway.v1.MxaccessGateway.MxValueOrBuilder> + internalGetValueFieldBuilder() { + if (valueBuilder_ == null) { + valueBuilder_ = new com.google.protobuf.SingleFieldBuilder< + mxaccess_gateway.v1.MxaccessGateway.MxValue, mxaccess_gateway.v1.MxaccessGateway.MxValue.Builder, mxaccess_gateway.v1.MxaccessGateway.MxValueOrBuilder>( + getValue(), + getParentForChildren(), + isClean()); + value_ = null; + } + return valueBuilder_; + } + + private int userId_ ; + /** + * int32 user_id = 3; + * @return The userId. + */ + @java.lang.Override + public int getUserId() { + return userId_; + } + /** + * int32 user_id = 3; + * @param value The userId to set. + * @return This builder for chaining. + */ + public Builder setUserId(int value) { + + userId_ = value; + bitField0_ |= 0x00000004; + onChanged(); + return this; + } + /** + * int32 user_id = 3; + * @return This builder for chaining. + */ + public Builder clearUserId() { + bitField0_ = (bitField0_ & ~0x00000004); + userId_ = 0; + onChanged(); + return this; + } + + // @@protoc_insertion_point(builder_scope:mxaccess_gateway.v1.WriteBulkEntry) + } + + // @@protoc_insertion_point(class_scope:mxaccess_gateway.v1.WriteBulkEntry) + private static final mxaccess_gateway.v1.MxaccessGateway.WriteBulkEntry DEFAULT_INSTANCE; + static { + DEFAULT_INSTANCE = new mxaccess_gateway.v1.MxaccessGateway.WriteBulkEntry(); + } + + public static mxaccess_gateway.v1.MxaccessGateway.WriteBulkEntry getDefaultInstance() { + return DEFAULT_INSTANCE; + } + + private static final com.google.protobuf.Parser + PARSER = new com.google.protobuf.AbstractParser() { + @java.lang.Override + public WriteBulkEntry parsePartialFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + Builder builder = newBuilder(); + try { + builder.mergeFrom(input, extensionRegistry); + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + throw e.setUnfinishedMessage(builder.buildPartial()); + } catch (com.google.protobuf.UninitializedMessageException e) { + throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial()); + } catch (java.io.IOException e) { + throw new com.google.protobuf.InvalidProtocolBufferException(e) + .setUnfinishedMessage(builder.buildPartial()); + } + return builder.buildPartial(); + } + }; + + public static com.google.protobuf.Parser parser() { + return PARSER; + } + + @java.lang.Override + public com.google.protobuf.Parser getParserForType() { + return PARSER; + } + + @java.lang.Override + public mxaccess_gateway.v1.MxaccessGateway.WriteBulkEntry getDefaultInstanceForType() { + return DEFAULT_INSTANCE; + } + + } + + public interface Write2BulkCommandOrBuilder extends + // @@protoc_insertion_point(interface_extends:mxaccess_gateway.v1.Write2BulkCommand) + com.google.protobuf.MessageOrBuilder { + + /** + * int32 server_handle = 1; + * @return The serverHandle. + */ + int getServerHandle(); + + /** + * repeated .mxaccess_gateway.v1.Write2BulkEntry entries = 2; + */ + java.util.List + getEntriesList(); + /** + * repeated .mxaccess_gateway.v1.Write2BulkEntry entries = 2; + */ + mxaccess_gateway.v1.MxaccessGateway.Write2BulkEntry getEntries(int index); + /** + * repeated .mxaccess_gateway.v1.Write2BulkEntry entries = 2; + */ + int getEntriesCount(); + /** + * repeated .mxaccess_gateway.v1.Write2BulkEntry entries = 2; + */ + java.util.List + getEntriesOrBuilderList(); + /** + * repeated .mxaccess_gateway.v1.Write2BulkEntry entries = 2; + */ + mxaccess_gateway.v1.MxaccessGateway.Write2BulkEntryOrBuilder getEntriesOrBuilder( + int index); + } + /** + *
+   * Bulk Write2 — sequential MXAccess Write2 (timestamped) per entry.
+   * 
+ * + * Protobuf type {@code mxaccess_gateway.v1.Write2BulkCommand} + */ + public static final class Write2BulkCommand extends + com.google.protobuf.GeneratedMessage implements + // @@protoc_insertion_point(message_implements:mxaccess_gateway.v1.Write2BulkCommand) + Write2BulkCommandOrBuilder { + private static final long serialVersionUID = 0L; + static { + com.google.protobuf.RuntimeVersion.validateProtobufGencodeVersion( + com.google.protobuf.RuntimeVersion.RuntimeDomain.PUBLIC, + /* major= */ 4, + /* minor= */ 33, + /* patch= */ 1, + /* suffix= */ "", + "Write2BulkCommand"); + } + // Use Write2BulkCommand.newBuilder() to construct. + private Write2BulkCommand(com.google.protobuf.GeneratedMessage.Builder builder) { + super(builder); + } + private Write2BulkCommand() { + entries_ = java.util.Collections.emptyList(); + } + + public static final com.google.protobuf.Descriptors.Descriptor + getDescriptor() { + return mxaccess_gateway.v1.MxaccessGateway.internal_static_mxaccess_gateway_v1_Write2BulkCommand_descriptor; + } + + @java.lang.Override + protected com.google.protobuf.GeneratedMessage.FieldAccessorTable + internalGetFieldAccessorTable() { + return mxaccess_gateway.v1.MxaccessGateway.internal_static_mxaccess_gateway_v1_Write2BulkCommand_fieldAccessorTable + .ensureFieldAccessorsInitialized( + mxaccess_gateway.v1.MxaccessGateway.Write2BulkCommand.class, mxaccess_gateway.v1.MxaccessGateway.Write2BulkCommand.Builder.class); + } + + public static final int SERVER_HANDLE_FIELD_NUMBER = 1; + private int serverHandle_ = 0; + /** + * int32 server_handle = 1; + * @return The serverHandle. + */ + @java.lang.Override + public int getServerHandle() { + return serverHandle_; + } + + public static final int ENTRIES_FIELD_NUMBER = 2; + @SuppressWarnings("serial") + private java.util.List entries_; + /** + * repeated .mxaccess_gateway.v1.Write2BulkEntry entries = 2; + */ + @java.lang.Override + public java.util.List getEntriesList() { + return entries_; + } + /** + * repeated .mxaccess_gateway.v1.Write2BulkEntry entries = 2; + */ + @java.lang.Override + public java.util.List + getEntriesOrBuilderList() { + return entries_; + } + /** + * repeated .mxaccess_gateway.v1.Write2BulkEntry entries = 2; + */ + @java.lang.Override + public int getEntriesCount() { + return entries_.size(); + } + /** + * repeated .mxaccess_gateway.v1.Write2BulkEntry entries = 2; + */ + @java.lang.Override + public mxaccess_gateway.v1.MxaccessGateway.Write2BulkEntry getEntries(int index) { + return entries_.get(index); + } + /** + * repeated .mxaccess_gateway.v1.Write2BulkEntry entries = 2; + */ + @java.lang.Override + public mxaccess_gateway.v1.MxaccessGateway.Write2BulkEntryOrBuilder getEntriesOrBuilder( + int index) { + return entries_.get(index); + } + + private byte memoizedIsInitialized = -1; + @java.lang.Override + public final boolean isInitialized() { + byte isInitialized = memoizedIsInitialized; + if (isInitialized == 1) return true; + if (isInitialized == 0) return false; + + memoizedIsInitialized = 1; + return true; + } + + @java.lang.Override + public void writeTo(com.google.protobuf.CodedOutputStream output) + throws java.io.IOException { + if (serverHandle_ != 0) { + output.writeInt32(1, serverHandle_); + } + for (int i = 0; i < entries_.size(); i++) { + output.writeMessage(2, entries_.get(i)); + } + getUnknownFields().writeTo(output); + } + + @java.lang.Override + public int getSerializedSize() { + int size = memoizedSize; + if (size != -1) return size; + + size = 0; + if (serverHandle_ != 0) { + size += com.google.protobuf.CodedOutputStream + .computeInt32Size(1, serverHandle_); + } + for (int i = 0; i < entries_.size(); i++) { + size += com.google.protobuf.CodedOutputStream + .computeMessageSize(2, entries_.get(i)); + } + size += getUnknownFields().getSerializedSize(); + memoizedSize = size; + return size; + } + + @java.lang.Override + public boolean equals(final java.lang.Object obj) { + if (obj == this) { + return true; + } + if (!(obj instanceof mxaccess_gateway.v1.MxaccessGateway.Write2BulkCommand)) { + return super.equals(obj); + } + mxaccess_gateway.v1.MxaccessGateway.Write2BulkCommand other = (mxaccess_gateway.v1.MxaccessGateway.Write2BulkCommand) obj; + + if (getServerHandle() + != other.getServerHandle()) return false; + if (!getEntriesList() + .equals(other.getEntriesList())) return false; + if (!getUnknownFields().equals(other.getUnknownFields())) return false; + return true; + } + + @java.lang.Override + public int hashCode() { + if (memoizedHashCode != 0) { + return memoizedHashCode; + } + int hash = 41; + hash = (19 * hash) + getDescriptor().hashCode(); + hash = (37 * hash) + SERVER_HANDLE_FIELD_NUMBER; + hash = (53 * hash) + getServerHandle(); + if (getEntriesCount() > 0) { + hash = (37 * hash) + ENTRIES_FIELD_NUMBER; + hash = (53 * hash) + getEntriesList().hashCode(); + } + hash = (29 * hash) + getUnknownFields().hashCode(); + memoizedHashCode = hash; + return hash; + } + + public static mxaccess_gateway.v1.MxaccessGateway.Write2BulkCommand parseFrom( + java.nio.ByteBuffer data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static mxaccess_gateway.v1.MxaccessGateway.Write2BulkCommand parseFrom( + java.nio.ByteBuffer data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static mxaccess_gateway.v1.MxaccessGateway.Write2BulkCommand parseFrom( + com.google.protobuf.ByteString data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static mxaccess_gateway.v1.MxaccessGateway.Write2BulkCommand parseFrom( + com.google.protobuf.ByteString data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static mxaccess_gateway.v1.MxaccessGateway.Write2BulkCommand parseFrom(byte[] data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static mxaccess_gateway.v1.MxaccessGateway.Write2BulkCommand parseFrom( + byte[] data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static mxaccess_gateway.v1.MxaccessGateway.Write2BulkCommand parseFrom(java.io.InputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessage + .parseWithIOException(PARSER, input); + } + public static mxaccess_gateway.v1.MxaccessGateway.Write2BulkCommand parseFrom( + java.io.InputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessage + .parseWithIOException(PARSER, input, extensionRegistry); + } + + public static mxaccess_gateway.v1.MxaccessGateway.Write2BulkCommand parseDelimitedFrom(java.io.InputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessage + .parseDelimitedWithIOException(PARSER, input); + } + + public static mxaccess_gateway.v1.MxaccessGateway.Write2BulkCommand parseDelimitedFrom( + java.io.InputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessage + .parseDelimitedWithIOException(PARSER, input, extensionRegistry); + } + public static mxaccess_gateway.v1.MxaccessGateway.Write2BulkCommand parseFrom( + com.google.protobuf.CodedInputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessage + .parseWithIOException(PARSER, input); + } + public static mxaccess_gateway.v1.MxaccessGateway.Write2BulkCommand parseFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessage + .parseWithIOException(PARSER, input, extensionRegistry); + } + + @java.lang.Override + public Builder newBuilderForType() { return newBuilder(); } + public static Builder newBuilder() { + return DEFAULT_INSTANCE.toBuilder(); + } + public static Builder newBuilder(mxaccess_gateway.v1.MxaccessGateway.Write2BulkCommand prototype) { + return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype); + } + @java.lang.Override + public Builder toBuilder() { + return this == DEFAULT_INSTANCE + ? new Builder() : new Builder().mergeFrom(this); + } + + @java.lang.Override + protected Builder newBuilderForType( + com.google.protobuf.GeneratedMessage.BuilderParent parent) { + Builder builder = new Builder(parent); + return builder; + } + /** + *
+     * Bulk Write2 — sequential MXAccess Write2 (timestamped) per entry.
+     * 
+ * + * Protobuf type {@code mxaccess_gateway.v1.Write2BulkCommand} + */ + public static final class Builder extends + com.google.protobuf.GeneratedMessage.Builder implements + // @@protoc_insertion_point(builder_implements:mxaccess_gateway.v1.Write2BulkCommand) + mxaccess_gateway.v1.MxaccessGateway.Write2BulkCommandOrBuilder { + public static final com.google.protobuf.Descriptors.Descriptor + getDescriptor() { + return mxaccess_gateway.v1.MxaccessGateway.internal_static_mxaccess_gateway_v1_Write2BulkCommand_descriptor; + } + + @java.lang.Override + protected com.google.protobuf.GeneratedMessage.FieldAccessorTable + internalGetFieldAccessorTable() { + return mxaccess_gateway.v1.MxaccessGateway.internal_static_mxaccess_gateway_v1_Write2BulkCommand_fieldAccessorTable + .ensureFieldAccessorsInitialized( + mxaccess_gateway.v1.MxaccessGateway.Write2BulkCommand.class, mxaccess_gateway.v1.MxaccessGateway.Write2BulkCommand.Builder.class); + } + + // Construct using mxaccess_gateway.v1.MxaccessGateway.Write2BulkCommand.newBuilder() + private Builder() { + + } + + private Builder( + com.google.protobuf.GeneratedMessage.BuilderParent parent) { + super(parent); + + } + @java.lang.Override + public Builder clear() { + super.clear(); + bitField0_ = 0; + serverHandle_ = 0; + if (entriesBuilder_ == null) { + entries_ = java.util.Collections.emptyList(); + } else { + entries_ = null; + entriesBuilder_.clear(); + } + bitField0_ = (bitField0_ & ~0x00000002); + return this; + } + + @java.lang.Override + public com.google.protobuf.Descriptors.Descriptor + getDescriptorForType() { + return mxaccess_gateway.v1.MxaccessGateway.internal_static_mxaccess_gateway_v1_Write2BulkCommand_descriptor; + } + + @java.lang.Override + public mxaccess_gateway.v1.MxaccessGateway.Write2BulkCommand getDefaultInstanceForType() { + return mxaccess_gateway.v1.MxaccessGateway.Write2BulkCommand.getDefaultInstance(); + } + + @java.lang.Override + public mxaccess_gateway.v1.MxaccessGateway.Write2BulkCommand build() { + mxaccess_gateway.v1.MxaccessGateway.Write2BulkCommand result = buildPartial(); + if (!result.isInitialized()) { + throw newUninitializedMessageException(result); + } + return result; + } + + @java.lang.Override + public mxaccess_gateway.v1.MxaccessGateway.Write2BulkCommand buildPartial() { + mxaccess_gateway.v1.MxaccessGateway.Write2BulkCommand result = new mxaccess_gateway.v1.MxaccessGateway.Write2BulkCommand(this); + buildPartialRepeatedFields(result); + if (bitField0_ != 0) { buildPartial0(result); } + onBuilt(); + return result; + } + + private void buildPartialRepeatedFields(mxaccess_gateway.v1.MxaccessGateway.Write2BulkCommand result) { + if (entriesBuilder_ == null) { + if (((bitField0_ & 0x00000002) != 0)) { + entries_ = java.util.Collections.unmodifiableList(entries_); + bitField0_ = (bitField0_ & ~0x00000002); + } + result.entries_ = entries_; + } else { + result.entries_ = entriesBuilder_.build(); + } + } + + private void buildPartial0(mxaccess_gateway.v1.MxaccessGateway.Write2BulkCommand result) { + int from_bitField0_ = bitField0_; + if (((from_bitField0_ & 0x00000001) != 0)) { + result.serverHandle_ = serverHandle_; + } + } + + @java.lang.Override + public Builder mergeFrom(com.google.protobuf.Message other) { + if (other instanceof mxaccess_gateway.v1.MxaccessGateway.Write2BulkCommand) { + return mergeFrom((mxaccess_gateway.v1.MxaccessGateway.Write2BulkCommand)other); + } else { + super.mergeFrom(other); + return this; + } + } + + public Builder mergeFrom(mxaccess_gateway.v1.MxaccessGateway.Write2BulkCommand other) { + if (other == mxaccess_gateway.v1.MxaccessGateway.Write2BulkCommand.getDefaultInstance()) return this; + if (other.getServerHandle() != 0) { + setServerHandle(other.getServerHandle()); + } + if (entriesBuilder_ == null) { + if (!other.entries_.isEmpty()) { + if (entries_.isEmpty()) { + entries_ = other.entries_; + bitField0_ = (bitField0_ & ~0x00000002); + } else { + ensureEntriesIsMutable(); + entries_.addAll(other.entries_); + } + onChanged(); + } + } else { + if (!other.entries_.isEmpty()) { + if (entriesBuilder_.isEmpty()) { + entriesBuilder_.dispose(); + entriesBuilder_ = null; + entries_ = other.entries_; + bitField0_ = (bitField0_ & ~0x00000002); + entriesBuilder_ = + com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders ? + internalGetEntriesFieldBuilder() : null; + } else { + entriesBuilder_.addAllMessages(other.entries_); + } + } + } + this.mergeUnknownFields(other.getUnknownFields()); + onChanged(); + return this; + } + + @java.lang.Override + public final boolean isInitialized() { + return true; + } + + @java.lang.Override + public Builder mergeFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + if (extensionRegistry == null) { + throw new java.lang.NullPointerException(); + } + try { + boolean done = false; + while (!done) { + int tag = input.readTag(); + switch (tag) { + case 0: + done = true; + break; + case 8: { + serverHandle_ = input.readInt32(); + bitField0_ |= 0x00000001; + break; + } // case 8 + case 18: { + mxaccess_gateway.v1.MxaccessGateway.Write2BulkEntry m = + input.readMessage( + mxaccess_gateway.v1.MxaccessGateway.Write2BulkEntry.parser(), + extensionRegistry); + if (entriesBuilder_ == null) { + ensureEntriesIsMutable(); + entries_.add(m); + } else { + entriesBuilder_.addMessage(m); + } + break; + } // case 18 + default: { + if (!super.parseUnknownField(input, extensionRegistry, tag)) { + done = true; // was an endgroup tag + } + break; + } // default: + } // switch (tag) + } // while (!done) + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + throw e.unwrapIOException(); + } finally { + onChanged(); + } // finally + return this; + } + private int bitField0_; + + private int serverHandle_ ; + /** + * int32 server_handle = 1; + * @return The serverHandle. + */ + @java.lang.Override + public int getServerHandle() { + return serverHandle_; + } + /** + * int32 server_handle = 1; + * @param value The serverHandle to set. + * @return This builder for chaining. + */ + public Builder setServerHandle(int value) { + + serverHandle_ = value; + bitField0_ |= 0x00000001; + onChanged(); + return this; + } + /** + * int32 server_handle = 1; + * @return This builder for chaining. + */ + public Builder clearServerHandle() { + bitField0_ = (bitField0_ & ~0x00000001); + serverHandle_ = 0; + onChanged(); + return this; + } + + private java.util.List entries_ = + java.util.Collections.emptyList(); + private void ensureEntriesIsMutable() { + if (!((bitField0_ & 0x00000002) != 0)) { + entries_ = new java.util.ArrayList(entries_); + bitField0_ |= 0x00000002; + } + } + + private com.google.protobuf.RepeatedFieldBuilder< + mxaccess_gateway.v1.MxaccessGateway.Write2BulkEntry, mxaccess_gateway.v1.MxaccessGateway.Write2BulkEntry.Builder, mxaccess_gateway.v1.MxaccessGateway.Write2BulkEntryOrBuilder> entriesBuilder_; + + /** + * repeated .mxaccess_gateway.v1.Write2BulkEntry entries = 2; + */ + public java.util.List getEntriesList() { + if (entriesBuilder_ == null) { + return java.util.Collections.unmodifiableList(entries_); + } else { + return entriesBuilder_.getMessageList(); + } + } + /** + * repeated .mxaccess_gateway.v1.Write2BulkEntry entries = 2; + */ + public int getEntriesCount() { + if (entriesBuilder_ == null) { + return entries_.size(); + } else { + return entriesBuilder_.getCount(); + } + } + /** + * repeated .mxaccess_gateway.v1.Write2BulkEntry entries = 2; + */ + public mxaccess_gateway.v1.MxaccessGateway.Write2BulkEntry getEntries(int index) { + if (entriesBuilder_ == null) { + return entries_.get(index); + } else { + return entriesBuilder_.getMessage(index); + } + } + /** + * repeated .mxaccess_gateway.v1.Write2BulkEntry entries = 2; + */ + public Builder setEntries( + int index, mxaccess_gateway.v1.MxaccessGateway.Write2BulkEntry value) { + if (entriesBuilder_ == null) { + if (value == null) { + throw new NullPointerException(); + } + ensureEntriesIsMutable(); + entries_.set(index, value); + onChanged(); + } else { + entriesBuilder_.setMessage(index, value); + } + return this; + } + /** + * repeated .mxaccess_gateway.v1.Write2BulkEntry entries = 2; + */ + public Builder setEntries( + int index, mxaccess_gateway.v1.MxaccessGateway.Write2BulkEntry.Builder builderForValue) { + if (entriesBuilder_ == null) { + ensureEntriesIsMutable(); + entries_.set(index, builderForValue.build()); + onChanged(); + } else { + entriesBuilder_.setMessage(index, builderForValue.build()); + } + return this; + } + /** + * repeated .mxaccess_gateway.v1.Write2BulkEntry entries = 2; + */ + public Builder addEntries(mxaccess_gateway.v1.MxaccessGateway.Write2BulkEntry value) { + if (entriesBuilder_ == null) { + if (value == null) { + throw new NullPointerException(); + } + ensureEntriesIsMutable(); + entries_.add(value); + onChanged(); + } else { + entriesBuilder_.addMessage(value); + } + return this; + } + /** + * repeated .mxaccess_gateway.v1.Write2BulkEntry entries = 2; + */ + public Builder addEntries( + int index, mxaccess_gateway.v1.MxaccessGateway.Write2BulkEntry value) { + if (entriesBuilder_ == null) { + if (value == null) { + throw new NullPointerException(); + } + ensureEntriesIsMutable(); + entries_.add(index, value); + onChanged(); + } else { + entriesBuilder_.addMessage(index, value); + } + return this; + } + /** + * repeated .mxaccess_gateway.v1.Write2BulkEntry entries = 2; + */ + public Builder addEntries( + mxaccess_gateway.v1.MxaccessGateway.Write2BulkEntry.Builder builderForValue) { + if (entriesBuilder_ == null) { + ensureEntriesIsMutable(); + entries_.add(builderForValue.build()); + onChanged(); + } else { + entriesBuilder_.addMessage(builderForValue.build()); + } + return this; + } + /** + * repeated .mxaccess_gateway.v1.Write2BulkEntry entries = 2; + */ + public Builder addEntries( + int index, mxaccess_gateway.v1.MxaccessGateway.Write2BulkEntry.Builder builderForValue) { + if (entriesBuilder_ == null) { + ensureEntriesIsMutable(); + entries_.add(index, builderForValue.build()); + onChanged(); + } else { + entriesBuilder_.addMessage(index, builderForValue.build()); + } + return this; + } + /** + * repeated .mxaccess_gateway.v1.Write2BulkEntry entries = 2; + */ + public Builder addAllEntries( + java.lang.Iterable values) { + if (entriesBuilder_ == null) { + ensureEntriesIsMutable(); + com.google.protobuf.AbstractMessageLite.Builder.addAll( + values, entries_); + onChanged(); + } else { + entriesBuilder_.addAllMessages(values); + } + return this; + } + /** + * repeated .mxaccess_gateway.v1.Write2BulkEntry entries = 2; + */ + public Builder clearEntries() { + if (entriesBuilder_ == null) { + entries_ = java.util.Collections.emptyList(); + bitField0_ = (bitField0_ & ~0x00000002); + onChanged(); + } else { + entriesBuilder_.clear(); + } + return this; + } + /** + * repeated .mxaccess_gateway.v1.Write2BulkEntry entries = 2; + */ + public Builder removeEntries(int index) { + if (entriesBuilder_ == null) { + ensureEntriesIsMutable(); + entries_.remove(index); + onChanged(); + } else { + entriesBuilder_.remove(index); + } + return this; + } + /** + * repeated .mxaccess_gateway.v1.Write2BulkEntry entries = 2; + */ + public mxaccess_gateway.v1.MxaccessGateway.Write2BulkEntry.Builder getEntriesBuilder( + int index) { + return internalGetEntriesFieldBuilder().getBuilder(index); + } + /** + * repeated .mxaccess_gateway.v1.Write2BulkEntry entries = 2; + */ + public mxaccess_gateway.v1.MxaccessGateway.Write2BulkEntryOrBuilder getEntriesOrBuilder( + int index) { + if (entriesBuilder_ == null) { + return entries_.get(index); } else { + return entriesBuilder_.getMessageOrBuilder(index); + } + } + /** + * repeated .mxaccess_gateway.v1.Write2BulkEntry entries = 2; + */ + public java.util.List + getEntriesOrBuilderList() { + if (entriesBuilder_ != null) { + return entriesBuilder_.getMessageOrBuilderList(); + } else { + return java.util.Collections.unmodifiableList(entries_); + } + } + /** + * repeated .mxaccess_gateway.v1.Write2BulkEntry entries = 2; + */ + public mxaccess_gateway.v1.MxaccessGateway.Write2BulkEntry.Builder addEntriesBuilder() { + return internalGetEntriesFieldBuilder().addBuilder( + mxaccess_gateway.v1.MxaccessGateway.Write2BulkEntry.getDefaultInstance()); + } + /** + * repeated .mxaccess_gateway.v1.Write2BulkEntry entries = 2; + */ + public mxaccess_gateway.v1.MxaccessGateway.Write2BulkEntry.Builder addEntriesBuilder( + int index) { + return internalGetEntriesFieldBuilder().addBuilder( + index, mxaccess_gateway.v1.MxaccessGateway.Write2BulkEntry.getDefaultInstance()); + } + /** + * repeated .mxaccess_gateway.v1.Write2BulkEntry entries = 2; + */ + public java.util.List + getEntriesBuilderList() { + return internalGetEntriesFieldBuilder().getBuilderList(); + } + private com.google.protobuf.RepeatedFieldBuilder< + mxaccess_gateway.v1.MxaccessGateway.Write2BulkEntry, mxaccess_gateway.v1.MxaccessGateway.Write2BulkEntry.Builder, mxaccess_gateway.v1.MxaccessGateway.Write2BulkEntryOrBuilder> + internalGetEntriesFieldBuilder() { + if (entriesBuilder_ == null) { + entriesBuilder_ = new com.google.protobuf.RepeatedFieldBuilder< + mxaccess_gateway.v1.MxaccessGateway.Write2BulkEntry, mxaccess_gateway.v1.MxaccessGateway.Write2BulkEntry.Builder, mxaccess_gateway.v1.MxaccessGateway.Write2BulkEntryOrBuilder>( + entries_, + ((bitField0_ & 0x00000002) != 0), + getParentForChildren(), + isClean()); + entries_ = null; + } + return entriesBuilder_; + } + + // @@protoc_insertion_point(builder_scope:mxaccess_gateway.v1.Write2BulkCommand) + } + + // @@protoc_insertion_point(class_scope:mxaccess_gateway.v1.Write2BulkCommand) + private static final mxaccess_gateway.v1.MxaccessGateway.Write2BulkCommand DEFAULT_INSTANCE; + static { + DEFAULT_INSTANCE = new mxaccess_gateway.v1.MxaccessGateway.Write2BulkCommand(); + } + + public static mxaccess_gateway.v1.MxaccessGateway.Write2BulkCommand getDefaultInstance() { + return DEFAULT_INSTANCE; + } + + private static final com.google.protobuf.Parser + PARSER = new com.google.protobuf.AbstractParser() { + @java.lang.Override + public Write2BulkCommand parsePartialFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + Builder builder = newBuilder(); + try { + builder.mergeFrom(input, extensionRegistry); + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + throw e.setUnfinishedMessage(builder.buildPartial()); + } catch (com.google.protobuf.UninitializedMessageException e) { + throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial()); + } catch (java.io.IOException e) { + throw new com.google.protobuf.InvalidProtocolBufferException(e) + .setUnfinishedMessage(builder.buildPartial()); + } + return builder.buildPartial(); + } + }; + + public static com.google.protobuf.Parser parser() { + return PARSER; + } + + @java.lang.Override + public com.google.protobuf.Parser getParserForType() { + return PARSER; + } + + @java.lang.Override + public mxaccess_gateway.v1.MxaccessGateway.Write2BulkCommand getDefaultInstanceForType() { + return DEFAULT_INSTANCE; + } + + } + + public interface Write2BulkEntryOrBuilder extends + // @@protoc_insertion_point(interface_extends:mxaccess_gateway.v1.Write2BulkEntry) + com.google.protobuf.MessageOrBuilder { + + /** + * int32 item_handle = 1; + * @return The itemHandle. + */ + int getItemHandle(); + + /** + * .mxaccess_gateway.v1.MxValue value = 2; + * @return Whether the value field is set. + */ + boolean hasValue(); + /** + * .mxaccess_gateway.v1.MxValue value = 2; + * @return The value. + */ + mxaccess_gateway.v1.MxaccessGateway.MxValue getValue(); + /** + * .mxaccess_gateway.v1.MxValue value = 2; + */ + mxaccess_gateway.v1.MxaccessGateway.MxValueOrBuilder getValueOrBuilder(); + + /** + * .mxaccess_gateway.v1.MxValue timestamp_value = 3; + * @return Whether the timestampValue field is set. + */ + boolean hasTimestampValue(); + /** + * .mxaccess_gateway.v1.MxValue timestamp_value = 3; + * @return The timestampValue. + */ + mxaccess_gateway.v1.MxaccessGateway.MxValue getTimestampValue(); + /** + * .mxaccess_gateway.v1.MxValue timestamp_value = 3; + */ + mxaccess_gateway.v1.MxaccessGateway.MxValueOrBuilder getTimestampValueOrBuilder(); + + /** + * int32 user_id = 4; + * @return The userId. + */ + int getUserId(); + } + /** + * Protobuf type {@code mxaccess_gateway.v1.Write2BulkEntry} + */ + public static final class Write2BulkEntry extends + com.google.protobuf.GeneratedMessage implements + // @@protoc_insertion_point(message_implements:mxaccess_gateway.v1.Write2BulkEntry) + Write2BulkEntryOrBuilder { + private static final long serialVersionUID = 0L; + static { + com.google.protobuf.RuntimeVersion.validateProtobufGencodeVersion( + com.google.protobuf.RuntimeVersion.RuntimeDomain.PUBLIC, + /* major= */ 4, + /* minor= */ 33, + /* patch= */ 1, + /* suffix= */ "", + "Write2BulkEntry"); + } + // Use Write2BulkEntry.newBuilder() to construct. + private Write2BulkEntry(com.google.protobuf.GeneratedMessage.Builder builder) { + super(builder); + } + private Write2BulkEntry() { + } + + public static final com.google.protobuf.Descriptors.Descriptor + getDescriptor() { + return mxaccess_gateway.v1.MxaccessGateway.internal_static_mxaccess_gateway_v1_Write2BulkEntry_descriptor; + } + + @java.lang.Override + protected com.google.protobuf.GeneratedMessage.FieldAccessorTable + internalGetFieldAccessorTable() { + return mxaccess_gateway.v1.MxaccessGateway.internal_static_mxaccess_gateway_v1_Write2BulkEntry_fieldAccessorTable + .ensureFieldAccessorsInitialized( + mxaccess_gateway.v1.MxaccessGateway.Write2BulkEntry.class, mxaccess_gateway.v1.MxaccessGateway.Write2BulkEntry.Builder.class); + } + + private int bitField0_; + public static final int ITEM_HANDLE_FIELD_NUMBER = 1; + private int itemHandle_ = 0; + /** + * int32 item_handle = 1; + * @return The itemHandle. + */ + @java.lang.Override + public int getItemHandle() { + return itemHandle_; + } + + public static final int VALUE_FIELD_NUMBER = 2; + private mxaccess_gateway.v1.MxaccessGateway.MxValue value_; + /** + * .mxaccess_gateway.v1.MxValue value = 2; + * @return Whether the value field is set. + */ + @java.lang.Override + public boolean hasValue() { + return ((bitField0_ & 0x00000001) != 0); + } + /** + * .mxaccess_gateway.v1.MxValue value = 2; + * @return The value. + */ + @java.lang.Override + public mxaccess_gateway.v1.MxaccessGateway.MxValue getValue() { + return value_ == null ? mxaccess_gateway.v1.MxaccessGateway.MxValue.getDefaultInstance() : value_; + } + /** + * .mxaccess_gateway.v1.MxValue value = 2; + */ + @java.lang.Override + public mxaccess_gateway.v1.MxaccessGateway.MxValueOrBuilder getValueOrBuilder() { + return value_ == null ? mxaccess_gateway.v1.MxaccessGateway.MxValue.getDefaultInstance() : value_; + } + + public static final int TIMESTAMP_VALUE_FIELD_NUMBER = 3; + private mxaccess_gateway.v1.MxaccessGateway.MxValue timestampValue_; + /** + * .mxaccess_gateway.v1.MxValue timestamp_value = 3; + * @return Whether the timestampValue field is set. + */ + @java.lang.Override + public boolean hasTimestampValue() { + return ((bitField0_ & 0x00000002) != 0); + } + /** + * .mxaccess_gateway.v1.MxValue timestamp_value = 3; + * @return The timestampValue. + */ + @java.lang.Override + public mxaccess_gateway.v1.MxaccessGateway.MxValue getTimestampValue() { + return timestampValue_ == null ? mxaccess_gateway.v1.MxaccessGateway.MxValue.getDefaultInstance() : timestampValue_; + } + /** + * .mxaccess_gateway.v1.MxValue timestamp_value = 3; + */ + @java.lang.Override + public mxaccess_gateway.v1.MxaccessGateway.MxValueOrBuilder getTimestampValueOrBuilder() { + return timestampValue_ == null ? mxaccess_gateway.v1.MxaccessGateway.MxValue.getDefaultInstance() : timestampValue_; + } + + public static final int USER_ID_FIELD_NUMBER = 4; + private int userId_ = 0; + /** + * int32 user_id = 4; + * @return The userId. + */ + @java.lang.Override + public int getUserId() { + return userId_; + } + + private byte memoizedIsInitialized = -1; + @java.lang.Override + public final boolean isInitialized() { + byte isInitialized = memoizedIsInitialized; + if (isInitialized == 1) return true; + if (isInitialized == 0) return false; + + memoizedIsInitialized = 1; + return true; + } + + @java.lang.Override + public void writeTo(com.google.protobuf.CodedOutputStream output) + throws java.io.IOException { + if (itemHandle_ != 0) { + output.writeInt32(1, itemHandle_); + } + if (((bitField0_ & 0x00000001) != 0)) { + output.writeMessage(2, getValue()); + } + if (((bitField0_ & 0x00000002) != 0)) { + output.writeMessage(3, getTimestampValue()); + } + if (userId_ != 0) { + output.writeInt32(4, userId_); + } + getUnknownFields().writeTo(output); + } + + @java.lang.Override + public int getSerializedSize() { + int size = memoizedSize; + if (size != -1) return size; + + size = 0; + if (itemHandle_ != 0) { + size += com.google.protobuf.CodedOutputStream + .computeInt32Size(1, itemHandle_); + } + if (((bitField0_ & 0x00000001) != 0)) { + size += com.google.protobuf.CodedOutputStream + .computeMessageSize(2, getValue()); + } + if (((bitField0_ & 0x00000002) != 0)) { + size += com.google.protobuf.CodedOutputStream + .computeMessageSize(3, getTimestampValue()); + } + if (userId_ != 0) { + size += com.google.protobuf.CodedOutputStream + .computeInt32Size(4, userId_); + } + size += getUnknownFields().getSerializedSize(); + memoizedSize = size; + return size; + } + + @java.lang.Override + public boolean equals(final java.lang.Object obj) { + if (obj == this) { + return true; + } + if (!(obj instanceof mxaccess_gateway.v1.MxaccessGateway.Write2BulkEntry)) { + return super.equals(obj); + } + mxaccess_gateway.v1.MxaccessGateway.Write2BulkEntry other = (mxaccess_gateway.v1.MxaccessGateway.Write2BulkEntry) obj; + + if (getItemHandle() + != other.getItemHandle()) return false; + if (hasValue() != other.hasValue()) return false; + if (hasValue()) { + if (!getValue() + .equals(other.getValue())) return false; + } + if (hasTimestampValue() != other.hasTimestampValue()) return false; + if (hasTimestampValue()) { + if (!getTimestampValue() + .equals(other.getTimestampValue())) return false; + } + if (getUserId() + != other.getUserId()) return false; + if (!getUnknownFields().equals(other.getUnknownFields())) return false; + return true; + } + + @java.lang.Override + public int hashCode() { + if (memoizedHashCode != 0) { + return memoizedHashCode; + } + int hash = 41; + hash = (19 * hash) + getDescriptor().hashCode(); + hash = (37 * hash) + ITEM_HANDLE_FIELD_NUMBER; + hash = (53 * hash) + getItemHandle(); + if (hasValue()) { + hash = (37 * hash) + VALUE_FIELD_NUMBER; + hash = (53 * hash) + getValue().hashCode(); + } + if (hasTimestampValue()) { + hash = (37 * hash) + TIMESTAMP_VALUE_FIELD_NUMBER; + hash = (53 * hash) + getTimestampValue().hashCode(); + } + hash = (37 * hash) + USER_ID_FIELD_NUMBER; + hash = (53 * hash) + getUserId(); + hash = (29 * hash) + getUnknownFields().hashCode(); + memoizedHashCode = hash; + return hash; + } + + public static mxaccess_gateway.v1.MxaccessGateway.Write2BulkEntry parseFrom( + java.nio.ByteBuffer data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static mxaccess_gateway.v1.MxaccessGateway.Write2BulkEntry parseFrom( + java.nio.ByteBuffer data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static mxaccess_gateway.v1.MxaccessGateway.Write2BulkEntry parseFrom( + com.google.protobuf.ByteString data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static mxaccess_gateway.v1.MxaccessGateway.Write2BulkEntry parseFrom( + com.google.protobuf.ByteString data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static mxaccess_gateway.v1.MxaccessGateway.Write2BulkEntry parseFrom(byte[] data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static mxaccess_gateway.v1.MxaccessGateway.Write2BulkEntry parseFrom( + byte[] data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static mxaccess_gateway.v1.MxaccessGateway.Write2BulkEntry parseFrom(java.io.InputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessage + .parseWithIOException(PARSER, input); + } + public static mxaccess_gateway.v1.MxaccessGateway.Write2BulkEntry parseFrom( + java.io.InputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessage + .parseWithIOException(PARSER, input, extensionRegistry); + } + + public static mxaccess_gateway.v1.MxaccessGateway.Write2BulkEntry parseDelimitedFrom(java.io.InputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessage + .parseDelimitedWithIOException(PARSER, input); + } + + public static mxaccess_gateway.v1.MxaccessGateway.Write2BulkEntry parseDelimitedFrom( + java.io.InputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessage + .parseDelimitedWithIOException(PARSER, input, extensionRegistry); + } + public static mxaccess_gateway.v1.MxaccessGateway.Write2BulkEntry parseFrom( + com.google.protobuf.CodedInputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessage + .parseWithIOException(PARSER, input); + } + public static mxaccess_gateway.v1.MxaccessGateway.Write2BulkEntry parseFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessage + .parseWithIOException(PARSER, input, extensionRegistry); + } + + @java.lang.Override + public Builder newBuilderForType() { return newBuilder(); } + public static Builder newBuilder() { + return DEFAULT_INSTANCE.toBuilder(); + } + public static Builder newBuilder(mxaccess_gateway.v1.MxaccessGateway.Write2BulkEntry prototype) { + return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype); + } + @java.lang.Override + public Builder toBuilder() { + return this == DEFAULT_INSTANCE + ? new Builder() : new Builder().mergeFrom(this); + } + + @java.lang.Override + protected Builder newBuilderForType( + com.google.protobuf.GeneratedMessage.BuilderParent parent) { + Builder builder = new Builder(parent); + return builder; + } + /** + * Protobuf type {@code mxaccess_gateway.v1.Write2BulkEntry} + */ + public static final class Builder extends + com.google.protobuf.GeneratedMessage.Builder implements + // @@protoc_insertion_point(builder_implements:mxaccess_gateway.v1.Write2BulkEntry) + mxaccess_gateway.v1.MxaccessGateway.Write2BulkEntryOrBuilder { + public static final com.google.protobuf.Descriptors.Descriptor + getDescriptor() { + return mxaccess_gateway.v1.MxaccessGateway.internal_static_mxaccess_gateway_v1_Write2BulkEntry_descriptor; + } + + @java.lang.Override + protected com.google.protobuf.GeneratedMessage.FieldAccessorTable + internalGetFieldAccessorTable() { + return mxaccess_gateway.v1.MxaccessGateway.internal_static_mxaccess_gateway_v1_Write2BulkEntry_fieldAccessorTable + .ensureFieldAccessorsInitialized( + mxaccess_gateway.v1.MxaccessGateway.Write2BulkEntry.class, mxaccess_gateway.v1.MxaccessGateway.Write2BulkEntry.Builder.class); + } + + // Construct using mxaccess_gateway.v1.MxaccessGateway.Write2BulkEntry.newBuilder() + private Builder() { + maybeForceBuilderInitialization(); + } + + private Builder( + com.google.protobuf.GeneratedMessage.BuilderParent parent) { + super(parent); + maybeForceBuilderInitialization(); + } + private void maybeForceBuilderInitialization() { + if (com.google.protobuf.GeneratedMessage + .alwaysUseFieldBuilders) { + internalGetValueFieldBuilder(); + internalGetTimestampValueFieldBuilder(); + } + } + @java.lang.Override + public Builder clear() { + super.clear(); + bitField0_ = 0; + itemHandle_ = 0; + value_ = null; + if (valueBuilder_ != null) { + valueBuilder_.dispose(); + valueBuilder_ = null; + } + timestampValue_ = null; + if (timestampValueBuilder_ != null) { + timestampValueBuilder_.dispose(); + timestampValueBuilder_ = null; + } + userId_ = 0; + return this; + } + + @java.lang.Override + public com.google.protobuf.Descriptors.Descriptor + getDescriptorForType() { + return mxaccess_gateway.v1.MxaccessGateway.internal_static_mxaccess_gateway_v1_Write2BulkEntry_descriptor; + } + + @java.lang.Override + public mxaccess_gateway.v1.MxaccessGateway.Write2BulkEntry getDefaultInstanceForType() { + return mxaccess_gateway.v1.MxaccessGateway.Write2BulkEntry.getDefaultInstance(); + } + + @java.lang.Override + public mxaccess_gateway.v1.MxaccessGateway.Write2BulkEntry build() { + mxaccess_gateway.v1.MxaccessGateway.Write2BulkEntry result = buildPartial(); + if (!result.isInitialized()) { + throw newUninitializedMessageException(result); + } + return result; + } + + @java.lang.Override + public mxaccess_gateway.v1.MxaccessGateway.Write2BulkEntry buildPartial() { + mxaccess_gateway.v1.MxaccessGateway.Write2BulkEntry result = new mxaccess_gateway.v1.MxaccessGateway.Write2BulkEntry(this); + if (bitField0_ != 0) { buildPartial0(result); } + onBuilt(); + return result; + } + + private void buildPartial0(mxaccess_gateway.v1.MxaccessGateway.Write2BulkEntry result) { + int from_bitField0_ = bitField0_; + if (((from_bitField0_ & 0x00000001) != 0)) { + result.itemHandle_ = itemHandle_; + } + int to_bitField0_ = 0; + if (((from_bitField0_ & 0x00000002) != 0)) { + result.value_ = valueBuilder_ == null + ? value_ + : valueBuilder_.build(); + to_bitField0_ |= 0x00000001; + } + if (((from_bitField0_ & 0x00000004) != 0)) { + result.timestampValue_ = timestampValueBuilder_ == null + ? timestampValue_ + : timestampValueBuilder_.build(); + to_bitField0_ |= 0x00000002; + } + if (((from_bitField0_ & 0x00000008) != 0)) { + result.userId_ = userId_; + } + result.bitField0_ |= to_bitField0_; + } + + @java.lang.Override + public Builder mergeFrom(com.google.protobuf.Message other) { + if (other instanceof mxaccess_gateway.v1.MxaccessGateway.Write2BulkEntry) { + return mergeFrom((mxaccess_gateway.v1.MxaccessGateway.Write2BulkEntry)other); + } else { + super.mergeFrom(other); + return this; + } + } + + public Builder mergeFrom(mxaccess_gateway.v1.MxaccessGateway.Write2BulkEntry other) { + if (other == mxaccess_gateway.v1.MxaccessGateway.Write2BulkEntry.getDefaultInstance()) return this; + if (other.getItemHandle() != 0) { + setItemHandle(other.getItemHandle()); + } + if (other.hasValue()) { + mergeValue(other.getValue()); + } + if (other.hasTimestampValue()) { + mergeTimestampValue(other.getTimestampValue()); + } + if (other.getUserId() != 0) { + setUserId(other.getUserId()); + } + this.mergeUnknownFields(other.getUnknownFields()); + onChanged(); + return this; + } + + @java.lang.Override + public final boolean isInitialized() { + return true; + } + + @java.lang.Override + public Builder mergeFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + if (extensionRegistry == null) { + throw new java.lang.NullPointerException(); + } + try { + boolean done = false; + while (!done) { + int tag = input.readTag(); + switch (tag) { + case 0: + done = true; + break; + case 8: { + itemHandle_ = input.readInt32(); + bitField0_ |= 0x00000001; + break; + } // case 8 + case 18: { + input.readMessage( + internalGetValueFieldBuilder().getBuilder(), + extensionRegistry); + bitField0_ |= 0x00000002; + break; + } // case 18 + case 26: { + input.readMessage( + internalGetTimestampValueFieldBuilder().getBuilder(), + extensionRegistry); + bitField0_ |= 0x00000004; + break; + } // case 26 + case 32: { + userId_ = input.readInt32(); + bitField0_ |= 0x00000008; + break; + } // case 32 + default: { + if (!super.parseUnknownField(input, extensionRegistry, tag)) { + done = true; // was an endgroup tag + } + break; + } // default: + } // switch (tag) + } // while (!done) + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + throw e.unwrapIOException(); + } finally { + onChanged(); + } // finally + return this; + } + private int bitField0_; + + private int itemHandle_ ; + /** + * int32 item_handle = 1; + * @return The itemHandle. + */ + @java.lang.Override + public int getItemHandle() { + return itemHandle_; + } + /** + * int32 item_handle = 1; + * @param value The itemHandle to set. + * @return This builder for chaining. + */ + public Builder setItemHandle(int value) { + + itemHandle_ = value; + bitField0_ |= 0x00000001; + onChanged(); + return this; + } + /** + * int32 item_handle = 1; + * @return This builder for chaining. + */ + public Builder clearItemHandle() { + bitField0_ = (bitField0_ & ~0x00000001); + itemHandle_ = 0; + onChanged(); + return this; + } + + private mxaccess_gateway.v1.MxaccessGateway.MxValue value_; + private com.google.protobuf.SingleFieldBuilder< + mxaccess_gateway.v1.MxaccessGateway.MxValue, mxaccess_gateway.v1.MxaccessGateway.MxValue.Builder, mxaccess_gateway.v1.MxaccessGateway.MxValueOrBuilder> valueBuilder_; + /** + * .mxaccess_gateway.v1.MxValue value = 2; + * @return Whether the value field is set. + */ + public boolean hasValue() { + return ((bitField0_ & 0x00000002) != 0); + } + /** + * .mxaccess_gateway.v1.MxValue value = 2; + * @return The value. + */ + public mxaccess_gateway.v1.MxaccessGateway.MxValue getValue() { + if (valueBuilder_ == null) { + return value_ == null ? mxaccess_gateway.v1.MxaccessGateway.MxValue.getDefaultInstance() : value_; + } else { + return valueBuilder_.getMessage(); + } + } + /** + * .mxaccess_gateway.v1.MxValue value = 2; + */ + public Builder setValue(mxaccess_gateway.v1.MxaccessGateway.MxValue value) { + if (valueBuilder_ == null) { + if (value == null) { + throw new NullPointerException(); + } + value_ = value; + } else { + valueBuilder_.setMessage(value); + } + bitField0_ |= 0x00000002; + onChanged(); + return this; + } + /** + * .mxaccess_gateway.v1.MxValue value = 2; + */ + public Builder setValue( + mxaccess_gateway.v1.MxaccessGateway.MxValue.Builder builderForValue) { + if (valueBuilder_ == null) { + value_ = builderForValue.build(); + } else { + valueBuilder_.setMessage(builderForValue.build()); + } + bitField0_ |= 0x00000002; + onChanged(); + return this; + } + /** + * .mxaccess_gateway.v1.MxValue value = 2; + */ + public Builder mergeValue(mxaccess_gateway.v1.MxaccessGateway.MxValue value) { + if (valueBuilder_ == null) { + if (((bitField0_ & 0x00000002) != 0) && + value_ != null && + value_ != mxaccess_gateway.v1.MxaccessGateway.MxValue.getDefaultInstance()) { + getValueBuilder().mergeFrom(value); + } else { + value_ = value; + } + } else { + valueBuilder_.mergeFrom(value); + } + if (value_ != null) { + bitField0_ |= 0x00000002; + onChanged(); + } + return this; + } + /** + * .mxaccess_gateway.v1.MxValue value = 2; + */ + public Builder clearValue() { + bitField0_ = (bitField0_ & ~0x00000002); + value_ = null; + if (valueBuilder_ != null) { + valueBuilder_.dispose(); + valueBuilder_ = null; + } + onChanged(); + return this; + } + /** + * .mxaccess_gateway.v1.MxValue value = 2; + */ + public mxaccess_gateway.v1.MxaccessGateway.MxValue.Builder getValueBuilder() { + bitField0_ |= 0x00000002; + onChanged(); + return internalGetValueFieldBuilder().getBuilder(); + } + /** + * .mxaccess_gateway.v1.MxValue value = 2; + */ + public mxaccess_gateway.v1.MxaccessGateway.MxValueOrBuilder getValueOrBuilder() { + if (valueBuilder_ != null) { + return valueBuilder_.getMessageOrBuilder(); + } else { + return value_ == null ? + mxaccess_gateway.v1.MxaccessGateway.MxValue.getDefaultInstance() : value_; + } + } + /** + * .mxaccess_gateway.v1.MxValue value = 2; + */ + private com.google.protobuf.SingleFieldBuilder< + mxaccess_gateway.v1.MxaccessGateway.MxValue, mxaccess_gateway.v1.MxaccessGateway.MxValue.Builder, mxaccess_gateway.v1.MxaccessGateway.MxValueOrBuilder> + internalGetValueFieldBuilder() { + if (valueBuilder_ == null) { + valueBuilder_ = new com.google.protobuf.SingleFieldBuilder< + mxaccess_gateway.v1.MxaccessGateway.MxValue, mxaccess_gateway.v1.MxaccessGateway.MxValue.Builder, mxaccess_gateway.v1.MxaccessGateway.MxValueOrBuilder>( + getValue(), + getParentForChildren(), + isClean()); + value_ = null; + } + return valueBuilder_; + } + + private mxaccess_gateway.v1.MxaccessGateway.MxValue timestampValue_; + private com.google.protobuf.SingleFieldBuilder< + mxaccess_gateway.v1.MxaccessGateway.MxValue, mxaccess_gateway.v1.MxaccessGateway.MxValue.Builder, mxaccess_gateway.v1.MxaccessGateway.MxValueOrBuilder> timestampValueBuilder_; + /** + * .mxaccess_gateway.v1.MxValue timestamp_value = 3; + * @return Whether the timestampValue field is set. + */ + public boolean hasTimestampValue() { + return ((bitField0_ & 0x00000004) != 0); + } + /** + * .mxaccess_gateway.v1.MxValue timestamp_value = 3; + * @return The timestampValue. + */ + public mxaccess_gateway.v1.MxaccessGateway.MxValue getTimestampValue() { + if (timestampValueBuilder_ == null) { + return timestampValue_ == null ? mxaccess_gateway.v1.MxaccessGateway.MxValue.getDefaultInstance() : timestampValue_; + } else { + return timestampValueBuilder_.getMessage(); + } + } + /** + * .mxaccess_gateway.v1.MxValue timestamp_value = 3; + */ + public Builder setTimestampValue(mxaccess_gateway.v1.MxaccessGateway.MxValue value) { + if (timestampValueBuilder_ == null) { + if (value == null) { + throw new NullPointerException(); + } + timestampValue_ = value; + } else { + timestampValueBuilder_.setMessage(value); + } + bitField0_ |= 0x00000004; + onChanged(); + return this; + } + /** + * .mxaccess_gateway.v1.MxValue timestamp_value = 3; + */ + public Builder setTimestampValue( + mxaccess_gateway.v1.MxaccessGateway.MxValue.Builder builderForValue) { + if (timestampValueBuilder_ == null) { + timestampValue_ = builderForValue.build(); + } else { + timestampValueBuilder_.setMessage(builderForValue.build()); + } + bitField0_ |= 0x00000004; + onChanged(); + return this; + } + /** + * .mxaccess_gateway.v1.MxValue timestamp_value = 3; + */ + public Builder mergeTimestampValue(mxaccess_gateway.v1.MxaccessGateway.MxValue value) { + if (timestampValueBuilder_ == null) { + if (((bitField0_ & 0x00000004) != 0) && + timestampValue_ != null && + timestampValue_ != mxaccess_gateway.v1.MxaccessGateway.MxValue.getDefaultInstance()) { + getTimestampValueBuilder().mergeFrom(value); + } else { + timestampValue_ = value; + } + } else { + timestampValueBuilder_.mergeFrom(value); + } + if (timestampValue_ != null) { + bitField0_ |= 0x00000004; + onChanged(); + } + return this; + } + /** + * .mxaccess_gateway.v1.MxValue timestamp_value = 3; + */ + public Builder clearTimestampValue() { + bitField0_ = (bitField0_ & ~0x00000004); + timestampValue_ = null; + if (timestampValueBuilder_ != null) { + timestampValueBuilder_.dispose(); + timestampValueBuilder_ = null; + } + onChanged(); + return this; + } + /** + * .mxaccess_gateway.v1.MxValue timestamp_value = 3; + */ + public mxaccess_gateway.v1.MxaccessGateway.MxValue.Builder getTimestampValueBuilder() { + bitField0_ |= 0x00000004; + onChanged(); + return internalGetTimestampValueFieldBuilder().getBuilder(); + } + /** + * .mxaccess_gateway.v1.MxValue timestamp_value = 3; + */ + public mxaccess_gateway.v1.MxaccessGateway.MxValueOrBuilder getTimestampValueOrBuilder() { + if (timestampValueBuilder_ != null) { + return timestampValueBuilder_.getMessageOrBuilder(); + } else { + return timestampValue_ == null ? + mxaccess_gateway.v1.MxaccessGateway.MxValue.getDefaultInstance() : timestampValue_; + } + } + /** + * .mxaccess_gateway.v1.MxValue timestamp_value = 3; + */ + private com.google.protobuf.SingleFieldBuilder< + mxaccess_gateway.v1.MxaccessGateway.MxValue, mxaccess_gateway.v1.MxaccessGateway.MxValue.Builder, mxaccess_gateway.v1.MxaccessGateway.MxValueOrBuilder> + internalGetTimestampValueFieldBuilder() { + if (timestampValueBuilder_ == null) { + timestampValueBuilder_ = new com.google.protobuf.SingleFieldBuilder< + mxaccess_gateway.v1.MxaccessGateway.MxValue, mxaccess_gateway.v1.MxaccessGateway.MxValue.Builder, mxaccess_gateway.v1.MxaccessGateway.MxValueOrBuilder>( + getTimestampValue(), + getParentForChildren(), + isClean()); + timestampValue_ = null; + } + return timestampValueBuilder_; + } + + private int userId_ ; + /** + * int32 user_id = 4; + * @return The userId. + */ + @java.lang.Override + public int getUserId() { + return userId_; + } + /** + * int32 user_id = 4; + * @param value The userId to set. + * @return This builder for chaining. + */ + public Builder setUserId(int value) { + + userId_ = value; + bitField0_ |= 0x00000008; + onChanged(); + return this; + } + /** + * int32 user_id = 4; + * @return This builder for chaining. + */ + public Builder clearUserId() { + bitField0_ = (bitField0_ & ~0x00000008); + userId_ = 0; + onChanged(); + return this; + } + + // @@protoc_insertion_point(builder_scope:mxaccess_gateway.v1.Write2BulkEntry) + } + + // @@protoc_insertion_point(class_scope:mxaccess_gateway.v1.Write2BulkEntry) + private static final mxaccess_gateway.v1.MxaccessGateway.Write2BulkEntry DEFAULT_INSTANCE; + static { + DEFAULT_INSTANCE = new mxaccess_gateway.v1.MxaccessGateway.Write2BulkEntry(); + } + + public static mxaccess_gateway.v1.MxaccessGateway.Write2BulkEntry getDefaultInstance() { + return DEFAULT_INSTANCE; + } + + private static final com.google.protobuf.Parser + PARSER = new com.google.protobuf.AbstractParser() { + @java.lang.Override + public Write2BulkEntry parsePartialFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + Builder builder = newBuilder(); + try { + builder.mergeFrom(input, extensionRegistry); + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + throw e.setUnfinishedMessage(builder.buildPartial()); + } catch (com.google.protobuf.UninitializedMessageException e) { + throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial()); + } catch (java.io.IOException e) { + throw new com.google.protobuf.InvalidProtocolBufferException(e) + .setUnfinishedMessage(builder.buildPartial()); + } + return builder.buildPartial(); + } + }; + + public static com.google.protobuf.Parser parser() { + return PARSER; + } + + @java.lang.Override + public com.google.protobuf.Parser getParserForType() { + return PARSER; + } + + @java.lang.Override + public mxaccess_gateway.v1.MxaccessGateway.Write2BulkEntry getDefaultInstanceForType() { + return DEFAULT_INSTANCE; + } + + } + + public interface WriteSecuredBulkCommandOrBuilder extends + // @@protoc_insertion_point(interface_extends:mxaccess_gateway.v1.WriteSecuredBulkCommand) + com.google.protobuf.MessageOrBuilder { + + /** + * int32 server_handle = 1; + * @return The serverHandle. + */ + int getServerHandle(); + + /** + * repeated .mxaccess_gateway.v1.WriteSecuredBulkEntry entries = 2; + */ + java.util.List + getEntriesList(); + /** + * repeated .mxaccess_gateway.v1.WriteSecuredBulkEntry entries = 2; + */ + mxaccess_gateway.v1.MxaccessGateway.WriteSecuredBulkEntry getEntries(int index); + /** + * repeated .mxaccess_gateway.v1.WriteSecuredBulkEntry entries = 2; + */ + int getEntriesCount(); + /** + * repeated .mxaccess_gateway.v1.WriteSecuredBulkEntry entries = 2; + */ + java.util.List + getEntriesOrBuilderList(); + /** + * repeated .mxaccess_gateway.v1.WriteSecuredBulkEntry entries = 2; + */ + mxaccess_gateway.v1.MxaccessGateway.WriteSecuredBulkEntryOrBuilder getEntriesOrBuilder( + int index); + } + /** + *
+   * Bulk WriteSecured — sequential MXAccess WriteSecured per entry.
+   * Credential-sensitive values (`value`) MUST be kept out of logs, metrics
+   * labels, command lines, and diagnostics — same redaction rules as the
+   * single-item WriteSecured contract.
+   * 
+ * + * Protobuf type {@code mxaccess_gateway.v1.WriteSecuredBulkCommand} + */ + public static final class WriteSecuredBulkCommand extends + com.google.protobuf.GeneratedMessage implements + // @@protoc_insertion_point(message_implements:mxaccess_gateway.v1.WriteSecuredBulkCommand) + WriteSecuredBulkCommandOrBuilder { + private static final long serialVersionUID = 0L; + static { + com.google.protobuf.RuntimeVersion.validateProtobufGencodeVersion( + com.google.protobuf.RuntimeVersion.RuntimeDomain.PUBLIC, + /* major= */ 4, + /* minor= */ 33, + /* patch= */ 1, + /* suffix= */ "", + "WriteSecuredBulkCommand"); + } + // Use WriteSecuredBulkCommand.newBuilder() to construct. + private WriteSecuredBulkCommand(com.google.protobuf.GeneratedMessage.Builder builder) { + super(builder); + } + private WriteSecuredBulkCommand() { + entries_ = java.util.Collections.emptyList(); + } + + public static final com.google.protobuf.Descriptors.Descriptor + getDescriptor() { + return mxaccess_gateway.v1.MxaccessGateway.internal_static_mxaccess_gateway_v1_WriteSecuredBulkCommand_descriptor; + } + + @java.lang.Override + protected com.google.protobuf.GeneratedMessage.FieldAccessorTable + internalGetFieldAccessorTable() { + return mxaccess_gateway.v1.MxaccessGateway.internal_static_mxaccess_gateway_v1_WriteSecuredBulkCommand_fieldAccessorTable + .ensureFieldAccessorsInitialized( + mxaccess_gateway.v1.MxaccessGateway.WriteSecuredBulkCommand.class, mxaccess_gateway.v1.MxaccessGateway.WriteSecuredBulkCommand.Builder.class); + } + + public static final int SERVER_HANDLE_FIELD_NUMBER = 1; + private int serverHandle_ = 0; + /** + * int32 server_handle = 1; + * @return The serverHandle. + */ + @java.lang.Override + public int getServerHandle() { + return serverHandle_; + } + + public static final int ENTRIES_FIELD_NUMBER = 2; + @SuppressWarnings("serial") + private java.util.List entries_; + /** + * repeated .mxaccess_gateway.v1.WriteSecuredBulkEntry entries = 2; + */ + @java.lang.Override + public java.util.List getEntriesList() { + return entries_; + } + /** + * repeated .mxaccess_gateway.v1.WriteSecuredBulkEntry entries = 2; + */ + @java.lang.Override + public java.util.List + getEntriesOrBuilderList() { + return entries_; + } + /** + * repeated .mxaccess_gateway.v1.WriteSecuredBulkEntry entries = 2; + */ + @java.lang.Override + public int getEntriesCount() { + return entries_.size(); + } + /** + * repeated .mxaccess_gateway.v1.WriteSecuredBulkEntry entries = 2; + */ + @java.lang.Override + public mxaccess_gateway.v1.MxaccessGateway.WriteSecuredBulkEntry getEntries(int index) { + return entries_.get(index); + } + /** + * repeated .mxaccess_gateway.v1.WriteSecuredBulkEntry entries = 2; + */ + @java.lang.Override + public mxaccess_gateway.v1.MxaccessGateway.WriteSecuredBulkEntryOrBuilder getEntriesOrBuilder( + int index) { + return entries_.get(index); + } + + private byte memoizedIsInitialized = -1; + @java.lang.Override + public final boolean isInitialized() { + byte isInitialized = memoizedIsInitialized; + if (isInitialized == 1) return true; + if (isInitialized == 0) return false; + + memoizedIsInitialized = 1; + return true; + } + + @java.lang.Override + public void writeTo(com.google.protobuf.CodedOutputStream output) + throws java.io.IOException { + if (serverHandle_ != 0) { + output.writeInt32(1, serverHandle_); + } + for (int i = 0; i < entries_.size(); i++) { + output.writeMessage(2, entries_.get(i)); + } + getUnknownFields().writeTo(output); + } + + @java.lang.Override + public int getSerializedSize() { + int size = memoizedSize; + if (size != -1) return size; + + size = 0; + if (serverHandle_ != 0) { + size += com.google.protobuf.CodedOutputStream + .computeInt32Size(1, serverHandle_); + } + for (int i = 0; i < entries_.size(); i++) { + size += com.google.protobuf.CodedOutputStream + .computeMessageSize(2, entries_.get(i)); + } + size += getUnknownFields().getSerializedSize(); + memoizedSize = size; + return size; + } + + @java.lang.Override + public boolean equals(final java.lang.Object obj) { + if (obj == this) { + return true; + } + if (!(obj instanceof mxaccess_gateway.v1.MxaccessGateway.WriteSecuredBulkCommand)) { + return super.equals(obj); + } + mxaccess_gateway.v1.MxaccessGateway.WriteSecuredBulkCommand other = (mxaccess_gateway.v1.MxaccessGateway.WriteSecuredBulkCommand) obj; + + if (getServerHandle() + != other.getServerHandle()) return false; + if (!getEntriesList() + .equals(other.getEntriesList())) return false; + if (!getUnknownFields().equals(other.getUnknownFields())) return false; + return true; + } + + @java.lang.Override + public int hashCode() { + if (memoizedHashCode != 0) { + return memoizedHashCode; + } + int hash = 41; + hash = (19 * hash) + getDescriptor().hashCode(); + hash = (37 * hash) + SERVER_HANDLE_FIELD_NUMBER; + hash = (53 * hash) + getServerHandle(); + if (getEntriesCount() > 0) { + hash = (37 * hash) + ENTRIES_FIELD_NUMBER; + hash = (53 * hash) + getEntriesList().hashCode(); + } + hash = (29 * hash) + getUnknownFields().hashCode(); + memoizedHashCode = hash; + return hash; + } + + public static mxaccess_gateway.v1.MxaccessGateway.WriteSecuredBulkCommand parseFrom( + java.nio.ByteBuffer data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static mxaccess_gateway.v1.MxaccessGateway.WriteSecuredBulkCommand parseFrom( + java.nio.ByteBuffer data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static mxaccess_gateway.v1.MxaccessGateway.WriteSecuredBulkCommand parseFrom( + com.google.protobuf.ByteString data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static mxaccess_gateway.v1.MxaccessGateway.WriteSecuredBulkCommand parseFrom( + com.google.protobuf.ByteString data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static mxaccess_gateway.v1.MxaccessGateway.WriteSecuredBulkCommand parseFrom(byte[] data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static mxaccess_gateway.v1.MxaccessGateway.WriteSecuredBulkCommand parseFrom( + byte[] data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static mxaccess_gateway.v1.MxaccessGateway.WriteSecuredBulkCommand parseFrom(java.io.InputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessage + .parseWithIOException(PARSER, input); + } + public static mxaccess_gateway.v1.MxaccessGateway.WriteSecuredBulkCommand parseFrom( + java.io.InputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessage + .parseWithIOException(PARSER, input, extensionRegistry); + } + + public static mxaccess_gateway.v1.MxaccessGateway.WriteSecuredBulkCommand parseDelimitedFrom(java.io.InputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessage + .parseDelimitedWithIOException(PARSER, input); + } + + public static mxaccess_gateway.v1.MxaccessGateway.WriteSecuredBulkCommand parseDelimitedFrom( + java.io.InputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessage + .parseDelimitedWithIOException(PARSER, input, extensionRegistry); + } + public static mxaccess_gateway.v1.MxaccessGateway.WriteSecuredBulkCommand parseFrom( + com.google.protobuf.CodedInputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessage + .parseWithIOException(PARSER, input); + } + public static mxaccess_gateway.v1.MxaccessGateway.WriteSecuredBulkCommand parseFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessage + .parseWithIOException(PARSER, input, extensionRegistry); + } + + @java.lang.Override + public Builder newBuilderForType() { return newBuilder(); } + public static Builder newBuilder() { + return DEFAULT_INSTANCE.toBuilder(); + } + public static Builder newBuilder(mxaccess_gateway.v1.MxaccessGateway.WriteSecuredBulkCommand prototype) { + return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype); + } + @java.lang.Override + public Builder toBuilder() { + return this == DEFAULT_INSTANCE + ? new Builder() : new Builder().mergeFrom(this); + } + + @java.lang.Override + protected Builder newBuilderForType( + com.google.protobuf.GeneratedMessage.BuilderParent parent) { + Builder builder = new Builder(parent); + return builder; + } + /** + *
+     * Bulk WriteSecured — sequential MXAccess WriteSecured per entry.
+     * Credential-sensitive values (`value`) MUST be kept out of logs, metrics
+     * labels, command lines, and diagnostics — same redaction rules as the
+     * single-item WriteSecured contract.
+     * 
+ * + * Protobuf type {@code mxaccess_gateway.v1.WriteSecuredBulkCommand} + */ + public static final class Builder extends + com.google.protobuf.GeneratedMessage.Builder implements + // @@protoc_insertion_point(builder_implements:mxaccess_gateway.v1.WriteSecuredBulkCommand) + mxaccess_gateway.v1.MxaccessGateway.WriteSecuredBulkCommandOrBuilder { + public static final com.google.protobuf.Descriptors.Descriptor + getDescriptor() { + return mxaccess_gateway.v1.MxaccessGateway.internal_static_mxaccess_gateway_v1_WriteSecuredBulkCommand_descriptor; + } + + @java.lang.Override + protected com.google.protobuf.GeneratedMessage.FieldAccessorTable + internalGetFieldAccessorTable() { + return mxaccess_gateway.v1.MxaccessGateway.internal_static_mxaccess_gateway_v1_WriteSecuredBulkCommand_fieldAccessorTable + .ensureFieldAccessorsInitialized( + mxaccess_gateway.v1.MxaccessGateway.WriteSecuredBulkCommand.class, mxaccess_gateway.v1.MxaccessGateway.WriteSecuredBulkCommand.Builder.class); + } + + // Construct using mxaccess_gateway.v1.MxaccessGateway.WriteSecuredBulkCommand.newBuilder() + private Builder() { + + } + + private Builder( + com.google.protobuf.GeneratedMessage.BuilderParent parent) { + super(parent); + + } + @java.lang.Override + public Builder clear() { + super.clear(); + bitField0_ = 0; + serverHandle_ = 0; + if (entriesBuilder_ == null) { + entries_ = java.util.Collections.emptyList(); + } else { + entries_ = null; + entriesBuilder_.clear(); + } + bitField0_ = (bitField0_ & ~0x00000002); + return this; + } + + @java.lang.Override + public com.google.protobuf.Descriptors.Descriptor + getDescriptorForType() { + return mxaccess_gateway.v1.MxaccessGateway.internal_static_mxaccess_gateway_v1_WriteSecuredBulkCommand_descriptor; + } + + @java.lang.Override + public mxaccess_gateway.v1.MxaccessGateway.WriteSecuredBulkCommand getDefaultInstanceForType() { + return mxaccess_gateway.v1.MxaccessGateway.WriteSecuredBulkCommand.getDefaultInstance(); + } + + @java.lang.Override + public mxaccess_gateway.v1.MxaccessGateway.WriteSecuredBulkCommand build() { + mxaccess_gateway.v1.MxaccessGateway.WriteSecuredBulkCommand result = buildPartial(); + if (!result.isInitialized()) { + throw newUninitializedMessageException(result); + } + return result; + } + + @java.lang.Override + public mxaccess_gateway.v1.MxaccessGateway.WriteSecuredBulkCommand buildPartial() { + mxaccess_gateway.v1.MxaccessGateway.WriteSecuredBulkCommand result = new mxaccess_gateway.v1.MxaccessGateway.WriteSecuredBulkCommand(this); + buildPartialRepeatedFields(result); + if (bitField0_ != 0) { buildPartial0(result); } + onBuilt(); + return result; + } + + private void buildPartialRepeatedFields(mxaccess_gateway.v1.MxaccessGateway.WriteSecuredBulkCommand result) { + if (entriesBuilder_ == null) { + if (((bitField0_ & 0x00000002) != 0)) { + entries_ = java.util.Collections.unmodifiableList(entries_); + bitField0_ = (bitField0_ & ~0x00000002); + } + result.entries_ = entries_; + } else { + result.entries_ = entriesBuilder_.build(); + } + } + + private void buildPartial0(mxaccess_gateway.v1.MxaccessGateway.WriteSecuredBulkCommand result) { + int from_bitField0_ = bitField0_; + if (((from_bitField0_ & 0x00000001) != 0)) { + result.serverHandle_ = serverHandle_; + } + } + + @java.lang.Override + public Builder mergeFrom(com.google.protobuf.Message other) { + if (other instanceof mxaccess_gateway.v1.MxaccessGateway.WriteSecuredBulkCommand) { + return mergeFrom((mxaccess_gateway.v1.MxaccessGateway.WriteSecuredBulkCommand)other); + } else { + super.mergeFrom(other); + return this; + } + } + + public Builder mergeFrom(mxaccess_gateway.v1.MxaccessGateway.WriteSecuredBulkCommand other) { + if (other == mxaccess_gateway.v1.MxaccessGateway.WriteSecuredBulkCommand.getDefaultInstance()) return this; + if (other.getServerHandle() != 0) { + setServerHandle(other.getServerHandle()); + } + if (entriesBuilder_ == null) { + if (!other.entries_.isEmpty()) { + if (entries_.isEmpty()) { + entries_ = other.entries_; + bitField0_ = (bitField0_ & ~0x00000002); + } else { + ensureEntriesIsMutable(); + entries_.addAll(other.entries_); + } + onChanged(); + } + } else { + if (!other.entries_.isEmpty()) { + if (entriesBuilder_.isEmpty()) { + entriesBuilder_.dispose(); + entriesBuilder_ = null; + entries_ = other.entries_; + bitField0_ = (bitField0_ & ~0x00000002); + entriesBuilder_ = + com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders ? + internalGetEntriesFieldBuilder() : null; + } else { + entriesBuilder_.addAllMessages(other.entries_); + } + } + } + this.mergeUnknownFields(other.getUnknownFields()); + onChanged(); + return this; + } + + @java.lang.Override + public final boolean isInitialized() { + return true; + } + + @java.lang.Override + public Builder mergeFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + if (extensionRegistry == null) { + throw new java.lang.NullPointerException(); + } + try { + boolean done = false; + while (!done) { + int tag = input.readTag(); + switch (tag) { + case 0: + done = true; + break; + case 8: { + serverHandle_ = input.readInt32(); + bitField0_ |= 0x00000001; + break; + } // case 8 + case 18: { + mxaccess_gateway.v1.MxaccessGateway.WriteSecuredBulkEntry m = + input.readMessage( + mxaccess_gateway.v1.MxaccessGateway.WriteSecuredBulkEntry.parser(), + extensionRegistry); + if (entriesBuilder_ == null) { + ensureEntriesIsMutable(); + entries_.add(m); + } else { + entriesBuilder_.addMessage(m); + } + break; + } // case 18 + default: { + if (!super.parseUnknownField(input, extensionRegistry, tag)) { + done = true; // was an endgroup tag + } + break; + } // default: + } // switch (tag) + } // while (!done) + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + throw e.unwrapIOException(); + } finally { + onChanged(); + } // finally + return this; + } + private int bitField0_; + + private int serverHandle_ ; + /** + * int32 server_handle = 1; + * @return The serverHandle. + */ + @java.lang.Override + public int getServerHandle() { + return serverHandle_; + } + /** + * int32 server_handle = 1; + * @param value The serverHandle to set. + * @return This builder for chaining. + */ + public Builder setServerHandle(int value) { + + serverHandle_ = value; + bitField0_ |= 0x00000001; + onChanged(); + return this; + } + /** + * int32 server_handle = 1; + * @return This builder for chaining. + */ + public Builder clearServerHandle() { + bitField0_ = (bitField0_ & ~0x00000001); + serverHandle_ = 0; + onChanged(); + return this; + } + + private java.util.List entries_ = + java.util.Collections.emptyList(); + private void ensureEntriesIsMutable() { + if (!((bitField0_ & 0x00000002) != 0)) { + entries_ = new java.util.ArrayList(entries_); + bitField0_ |= 0x00000002; + } + } + + private com.google.protobuf.RepeatedFieldBuilder< + mxaccess_gateway.v1.MxaccessGateway.WriteSecuredBulkEntry, mxaccess_gateway.v1.MxaccessGateway.WriteSecuredBulkEntry.Builder, mxaccess_gateway.v1.MxaccessGateway.WriteSecuredBulkEntryOrBuilder> entriesBuilder_; + + /** + * repeated .mxaccess_gateway.v1.WriteSecuredBulkEntry entries = 2; + */ + public java.util.List getEntriesList() { + if (entriesBuilder_ == null) { + return java.util.Collections.unmodifiableList(entries_); + } else { + return entriesBuilder_.getMessageList(); + } + } + /** + * repeated .mxaccess_gateway.v1.WriteSecuredBulkEntry entries = 2; + */ + public int getEntriesCount() { + if (entriesBuilder_ == null) { + return entries_.size(); + } else { + return entriesBuilder_.getCount(); + } + } + /** + * repeated .mxaccess_gateway.v1.WriteSecuredBulkEntry entries = 2; + */ + public mxaccess_gateway.v1.MxaccessGateway.WriteSecuredBulkEntry getEntries(int index) { + if (entriesBuilder_ == null) { + return entries_.get(index); + } else { + return entriesBuilder_.getMessage(index); + } + } + /** + * repeated .mxaccess_gateway.v1.WriteSecuredBulkEntry entries = 2; + */ + public Builder setEntries( + int index, mxaccess_gateway.v1.MxaccessGateway.WriteSecuredBulkEntry value) { + if (entriesBuilder_ == null) { + if (value == null) { + throw new NullPointerException(); + } + ensureEntriesIsMutable(); + entries_.set(index, value); + onChanged(); + } else { + entriesBuilder_.setMessage(index, value); + } + return this; + } + /** + * repeated .mxaccess_gateway.v1.WriteSecuredBulkEntry entries = 2; + */ + public Builder setEntries( + int index, mxaccess_gateway.v1.MxaccessGateway.WriteSecuredBulkEntry.Builder builderForValue) { + if (entriesBuilder_ == null) { + ensureEntriesIsMutable(); + entries_.set(index, builderForValue.build()); + onChanged(); + } else { + entriesBuilder_.setMessage(index, builderForValue.build()); + } + return this; + } + /** + * repeated .mxaccess_gateway.v1.WriteSecuredBulkEntry entries = 2; + */ + public Builder addEntries(mxaccess_gateway.v1.MxaccessGateway.WriteSecuredBulkEntry value) { + if (entriesBuilder_ == null) { + if (value == null) { + throw new NullPointerException(); + } + ensureEntriesIsMutable(); + entries_.add(value); + onChanged(); + } else { + entriesBuilder_.addMessage(value); + } + return this; + } + /** + * repeated .mxaccess_gateway.v1.WriteSecuredBulkEntry entries = 2; + */ + public Builder addEntries( + int index, mxaccess_gateway.v1.MxaccessGateway.WriteSecuredBulkEntry value) { + if (entriesBuilder_ == null) { + if (value == null) { + throw new NullPointerException(); + } + ensureEntriesIsMutable(); + entries_.add(index, value); + onChanged(); + } else { + entriesBuilder_.addMessage(index, value); + } + return this; + } + /** + * repeated .mxaccess_gateway.v1.WriteSecuredBulkEntry entries = 2; + */ + public Builder addEntries( + mxaccess_gateway.v1.MxaccessGateway.WriteSecuredBulkEntry.Builder builderForValue) { + if (entriesBuilder_ == null) { + ensureEntriesIsMutable(); + entries_.add(builderForValue.build()); + onChanged(); + } else { + entriesBuilder_.addMessage(builderForValue.build()); + } + return this; + } + /** + * repeated .mxaccess_gateway.v1.WriteSecuredBulkEntry entries = 2; + */ + public Builder addEntries( + int index, mxaccess_gateway.v1.MxaccessGateway.WriteSecuredBulkEntry.Builder builderForValue) { + if (entriesBuilder_ == null) { + ensureEntriesIsMutable(); + entries_.add(index, builderForValue.build()); + onChanged(); + } else { + entriesBuilder_.addMessage(index, builderForValue.build()); + } + return this; + } + /** + * repeated .mxaccess_gateway.v1.WriteSecuredBulkEntry entries = 2; + */ + public Builder addAllEntries( + java.lang.Iterable values) { + if (entriesBuilder_ == null) { + ensureEntriesIsMutable(); + com.google.protobuf.AbstractMessageLite.Builder.addAll( + values, entries_); + onChanged(); + } else { + entriesBuilder_.addAllMessages(values); + } + return this; + } + /** + * repeated .mxaccess_gateway.v1.WriteSecuredBulkEntry entries = 2; + */ + public Builder clearEntries() { + if (entriesBuilder_ == null) { + entries_ = java.util.Collections.emptyList(); + bitField0_ = (bitField0_ & ~0x00000002); + onChanged(); + } else { + entriesBuilder_.clear(); + } + return this; + } + /** + * repeated .mxaccess_gateway.v1.WriteSecuredBulkEntry entries = 2; + */ + public Builder removeEntries(int index) { + if (entriesBuilder_ == null) { + ensureEntriesIsMutable(); + entries_.remove(index); + onChanged(); + } else { + entriesBuilder_.remove(index); + } + return this; + } + /** + * repeated .mxaccess_gateway.v1.WriteSecuredBulkEntry entries = 2; + */ + public mxaccess_gateway.v1.MxaccessGateway.WriteSecuredBulkEntry.Builder getEntriesBuilder( + int index) { + return internalGetEntriesFieldBuilder().getBuilder(index); + } + /** + * repeated .mxaccess_gateway.v1.WriteSecuredBulkEntry entries = 2; + */ + public mxaccess_gateway.v1.MxaccessGateway.WriteSecuredBulkEntryOrBuilder getEntriesOrBuilder( + int index) { + if (entriesBuilder_ == null) { + return entries_.get(index); } else { + return entriesBuilder_.getMessageOrBuilder(index); + } + } + /** + * repeated .mxaccess_gateway.v1.WriteSecuredBulkEntry entries = 2; + */ + public java.util.List + getEntriesOrBuilderList() { + if (entriesBuilder_ != null) { + return entriesBuilder_.getMessageOrBuilderList(); + } else { + return java.util.Collections.unmodifiableList(entries_); + } + } + /** + * repeated .mxaccess_gateway.v1.WriteSecuredBulkEntry entries = 2; + */ + public mxaccess_gateway.v1.MxaccessGateway.WriteSecuredBulkEntry.Builder addEntriesBuilder() { + return internalGetEntriesFieldBuilder().addBuilder( + mxaccess_gateway.v1.MxaccessGateway.WriteSecuredBulkEntry.getDefaultInstance()); + } + /** + * repeated .mxaccess_gateway.v1.WriteSecuredBulkEntry entries = 2; + */ + public mxaccess_gateway.v1.MxaccessGateway.WriteSecuredBulkEntry.Builder addEntriesBuilder( + int index) { + return internalGetEntriesFieldBuilder().addBuilder( + index, mxaccess_gateway.v1.MxaccessGateway.WriteSecuredBulkEntry.getDefaultInstance()); + } + /** + * repeated .mxaccess_gateway.v1.WriteSecuredBulkEntry entries = 2; + */ + public java.util.List + getEntriesBuilderList() { + return internalGetEntriesFieldBuilder().getBuilderList(); + } + private com.google.protobuf.RepeatedFieldBuilder< + mxaccess_gateway.v1.MxaccessGateway.WriteSecuredBulkEntry, mxaccess_gateway.v1.MxaccessGateway.WriteSecuredBulkEntry.Builder, mxaccess_gateway.v1.MxaccessGateway.WriteSecuredBulkEntryOrBuilder> + internalGetEntriesFieldBuilder() { + if (entriesBuilder_ == null) { + entriesBuilder_ = new com.google.protobuf.RepeatedFieldBuilder< + mxaccess_gateway.v1.MxaccessGateway.WriteSecuredBulkEntry, mxaccess_gateway.v1.MxaccessGateway.WriteSecuredBulkEntry.Builder, mxaccess_gateway.v1.MxaccessGateway.WriteSecuredBulkEntryOrBuilder>( + entries_, + ((bitField0_ & 0x00000002) != 0), + getParentForChildren(), + isClean()); + entries_ = null; + } + return entriesBuilder_; + } + + // @@protoc_insertion_point(builder_scope:mxaccess_gateway.v1.WriteSecuredBulkCommand) + } + + // @@protoc_insertion_point(class_scope:mxaccess_gateway.v1.WriteSecuredBulkCommand) + private static final mxaccess_gateway.v1.MxaccessGateway.WriteSecuredBulkCommand DEFAULT_INSTANCE; + static { + DEFAULT_INSTANCE = new mxaccess_gateway.v1.MxaccessGateway.WriteSecuredBulkCommand(); + } + + public static mxaccess_gateway.v1.MxaccessGateway.WriteSecuredBulkCommand getDefaultInstance() { + return DEFAULT_INSTANCE; + } + + private static final com.google.protobuf.Parser + PARSER = new com.google.protobuf.AbstractParser() { + @java.lang.Override + public WriteSecuredBulkCommand parsePartialFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + Builder builder = newBuilder(); + try { + builder.mergeFrom(input, extensionRegistry); + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + throw e.setUnfinishedMessage(builder.buildPartial()); + } catch (com.google.protobuf.UninitializedMessageException e) { + throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial()); + } catch (java.io.IOException e) { + throw new com.google.protobuf.InvalidProtocolBufferException(e) + .setUnfinishedMessage(builder.buildPartial()); + } + return builder.buildPartial(); + } + }; + + public static com.google.protobuf.Parser parser() { + return PARSER; + } + + @java.lang.Override + public com.google.protobuf.Parser getParserForType() { + return PARSER; + } + + @java.lang.Override + public mxaccess_gateway.v1.MxaccessGateway.WriteSecuredBulkCommand getDefaultInstanceForType() { + return DEFAULT_INSTANCE; + } + + } + + public interface WriteSecuredBulkEntryOrBuilder extends + // @@protoc_insertion_point(interface_extends:mxaccess_gateway.v1.WriteSecuredBulkEntry) + com.google.protobuf.MessageOrBuilder { + + /** + * int32 item_handle = 1; + * @return The itemHandle. + */ + int getItemHandle(); + + /** + * int32 current_user_id = 2; + * @return The currentUserId. + */ + int getCurrentUserId(); + + /** + * int32 verifier_user_id = 3; + * @return The verifierUserId. + */ + int getVerifierUserId(); + + /** + * .mxaccess_gateway.v1.MxValue value = 4; + * @return Whether the value field is set. + */ + boolean hasValue(); + /** + * .mxaccess_gateway.v1.MxValue value = 4; + * @return The value. + */ + mxaccess_gateway.v1.MxaccessGateway.MxValue getValue(); + /** + * .mxaccess_gateway.v1.MxValue value = 4; + */ + mxaccess_gateway.v1.MxaccessGateway.MxValueOrBuilder getValueOrBuilder(); + } + /** + * Protobuf type {@code mxaccess_gateway.v1.WriteSecuredBulkEntry} + */ + public static final class WriteSecuredBulkEntry extends + com.google.protobuf.GeneratedMessage implements + // @@protoc_insertion_point(message_implements:mxaccess_gateway.v1.WriteSecuredBulkEntry) + WriteSecuredBulkEntryOrBuilder { + private static final long serialVersionUID = 0L; + static { + com.google.protobuf.RuntimeVersion.validateProtobufGencodeVersion( + com.google.protobuf.RuntimeVersion.RuntimeDomain.PUBLIC, + /* major= */ 4, + /* minor= */ 33, + /* patch= */ 1, + /* suffix= */ "", + "WriteSecuredBulkEntry"); + } + // Use WriteSecuredBulkEntry.newBuilder() to construct. + private WriteSecuredBulkEntry(com.google.protobuf.GeneratedMessage.Builder builder) { + super(builder); + } + private WriteSecuredBulkEntry() { + } + + public static final com.google.protobuf.Descriptors.Descriptor + getDescriptor() { + return mxaccess_gateway.v1.MxaccessGateway.internal_static_mxaccess_gateway_v1_WriteSecuredBulkEntry_descriptor; + } + + @java.lang.Override + protected com.google.protobuf.GeneratedMessage.FieldAccessorTable + internalGetFieldAccessorTable() { + return mxaccess_gateway.v1.MxaccessGateway.internal_static_mxaccess_gateway_v1_WriteSecuredBulkEntry_fieldAccessorTable + .ensureFieldAccessorsInitialized( + mxaccess_gateway.v1.MxaccessGateway.WriteSecuredBulkEntry.class, mxaccess_gateway.v1.MxaccessGateway.WriteSecuredBulkEntry.Builder.class); + } + + private int bitField0_; + public static final int ITEM_HANDLE_FIELD_NUMBER = 1; + private int itemHandle_ = 0; + /** + * int32 item_handle = 1; + * @return The itemHandle. + */ + @java.lang.Override + public int getItemHandle() { + return itemHandle_; + } + + public static final int CURRENT_USER_ID_FIELD_NUMBER = 2; + private int currentUserId_ = 0; + /** + * int32 current_user_id = 2; + * @return The currentUserId. + */ + @java.lang.Override + public int getCurrentUserId() { + return currentUserId_; + } + + public static final int VERIFIER_USER_ID_FIELD_NUMBER = 3; + private int verifierUserId_ = 0; + /** + * int32 verifier_user_id = 3; + * @return The verifierUserId. + */ + @java.lang.Override + public int getVerifierUserId() { + return verifierUserId_; + } + + public static final int VALUE_FIELD_NUMBER = 4; + private mxaccess_gateway.v1.MxaccessGateway.MxValue value_; + /** + * .mxaccess_gateway.v1.MxValue value = 4; + * @return Whether the value field is set. + */ + @java.lang.Override + public boolean hasValue() { + return ((bitField0_ & 0x00000001) != 0); + } + /** + * .mxaccess_gateway.v1.MxValue value = 4; + * @return The value. + */ + @java.lang.Override + public mxaccess_gateway.v1.MxaccessGateway.MxValue getValue() { + return value_ == null ? mxaccess_gateway.v1.MxaccessGateway.MxValue.getDefaultInstance() : value_; + } + /** + * .mxaccess_gateway.v1.MxValue value = 4; + */ + @java.lang.Override + public mxaccess_gateway.v1.MxaccessGateway.MxValueOrBuilder getValueOrBuilder() { + return value_ == null ? mxaccess_gateway.v1.MxaccessGateway.MxValue.getDefaultInstance() : value_; + } + + private byte memoizedIsInitialized = -1; + @java.lang.Override + public final boolean isInitialized() { + byte isInitialized = memoizedIsInitialized; + if (isInitialized == 1) return true; + if (isInitialized == 0) return false; + + memoizedIsInitialized = 1; + return true; + } + + @java.lang.Override + public void writeTo(com.google.protobuf.CodedOutputStream output) + throws java.io.IOException { + if (itemHandle_ != 0) { + output.writeInt32(1, itemHandle_); + } + if (currentUserId_ != 0) { + output.writeInt32(2, currentUserId_); + } + if (verifierUserId_ != 0) { + output.writeInt32(3, verifierUserId_); + } + if (((bitField0_ & 0x00000001) != 0)) { + output.writeMessage(4, getValue()); + } + getUnknownFields().writeTo(output); + } + + @java.lang.Override + public int getSerializedSize() { + int size = memoizedSize; + if (size != -1) return size; + + size = 0; + if (itemHandle_ != 0) { + size += com.google.protobuf.CodedOutputStream + .computeInt32Size(1, itemHandle_); + } + if (currentUserId_ != 0) { + size += com.google.protobuf.CodedOutputStream + .computeInt32Size(2, currentUserId_); + } + if (verifierUserId_ != 0) { + size += com.google.protobuf.CodedOutputStream + .computeInt32Size(3, verifierUserId_); + } + if (((bitField0_ & 0x00000001) != 0)) { + size += com.google.protobuf.CodedOutputStream + .computeMessageSize(4, getValue()); + } + size += getUnknownFields().getSerializedSize(); + memoizedSize = size; + return size; + } + + @java.lang.Override + public boolean equals(final java.lang.Object obj) { + if (obj == this) { + return true; + } + if (!(obj instanceof mxaccess_gateway.v1.MxaccessGateway.WriteSecuredBulkEntry)) { + return super.equals(obj); + } + mxaccess_gateway.v1.MxaccessGateway.WriteSecuredBulkEntry other = (mxaccess_gateway.v1.MxaccessGateway.WriteSecuredBulkEntry) obj; + + if (getItemHandle() + != other.getItemHandle()) return false; + if (getCurrentUserId() + != other.getCurrentUserId()) return false; + if (getVerifierUserId() + != other.getVerifierUserId()) return false; + if (hasValue() != other.hasValue()) return false; + if (hasValue()) { + if (!getValue() + .equals(other.getValue())) return false; + } + if (!getUnknownFields().equals(other.getUnknownFields())) return false; + return true; + } + + @java.lang.Override + public int hashCode() { + if (memoizedHashCode != 0) { + return memoizedHashCode; + } + int hash = 41; + hash = (19 * hash) + getDescriptor().hashCode(); + hash = (37 * hash) + ITEM_HANDLE_FIELD_NUMBER; + hash = (53 * hash) + getItemHandle(); + hash = (37 * hash) + CURRENT_USER_ID_FIELD_NUMBER; + hash = (53 * hash) + getCurrentUserId(); + hash = (37 * hash) + VERIFIER_USER_ID_FIELD_NUMBER; + hash = (53 * hash) + getVerifierUserId(); + if (hasValue()) { + hash = (37 * hash) + VALUE_FIELD_NUMBER; + hash = (53 * hash) + getValue().hashCode(); + } + hash = (29 * hash) + getUnknownFields().hashCode(); + memoizedHashCode = hash; + return hash; + } + + public static mxaccess_gateway.v1.MxaccessGateway.WriteSecuredBulkEntry parseFrom( + java.nio.ByteBuffer data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static mxaccess_gateway.v1.MxaccessGateway.WriteSecuredBulkEntry parseFrom( + java.nio.ByteBuffer data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static mxaccess_gateway.v1.MxaccessGateway.WriteSecuredBulkEntry parseFrom( + com.google.protobuf.ByteString data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static mxaccess_gateway.v1.MxaccessGateway.WriteSecuredBulkEntry parseFrom( + com.google.protobuf.ByteString data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static mxaccess_gateway.v1.MxaccessGateway.WriteSecuredBulkEntry parseFrom(byte[] data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static mxaccess_gateway.v1.MxaccessGateway.WriteSecuredBulkEntry parseFrom( + byte[] data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static mxaccess_gateway.v1.MxaccessGateway.WriteSecuredBulkEntry parseFrom(java.io.InputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessage + .parseWithIOException(PARSER, input); + } + public static mxaccess_gateway.v1.MxaccessGateway.WriteSecuredBulkEntry parseFrom( + java.io.InputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessage + .parseWithIOException(PARSER, input, extensionRegistry); + } + + public static mxaccess_gateway.v1.MxaccessGateway.WriteSecuredBulkEntry parseDelimitedFrom(java.io.InputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessage + .parseDelimitedWithIOException(PARSER, input); + } + + public static mxaccess_gateway.v1.MxaccessGateway.WriteSecuredBulkEntry parseDelimitedFrom( + java.io.InputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessage + .parseDelimitedWithIOException(PARSER, input, extensionRegistry); + } + public static mxaccess_gateway.v1.MxaccessGateway.WriteSecuredBulkEntry parseFrom( + com.google.protobuf.CodedInputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessage + .parseWithIOException(PARSER, input); + } + public static mxaccess_gateway.v1.MxaccessGateway.WriteSecuredBulkEntry parseFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessage + .parseWithIOException(PARSER, input, extensionRegistry); + } + + @java.lang.Override + public Builder newBuilderForType() { return newBuilder(); } + public static Builder newBuilder() { + return DEFAULT_INSTANCE.toBuilder(); + } + public static Builder newBuilder(mxaccess_gateway.v1.MxaccessGateway.WriteSecuredBulkEntry prototype) { + return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype); + } + @java.lang.Override + public Builder toBuilder() { + return this == DEFAULT_INSTANCE + ? new Builder() : new Builder().mergeFrom(this); + } + + @java.lang.Override + protected Builder newBuilderForType( + com.google.protobuf.GeneratedMessage.BuilderParent parent) { + Builder builder = new Builder(parent); + return builder; + } + /** + * Protobuf type {@code mxaccess_gateway.v1.WriteSecuredBulkEntry} + */ + public static final class Builder extends + com.google.protobuf.GeneratedMessage.Builder implements + // @@protoc_insertion_point(builder_implements:mxaccess_gateway.v1.WriteSecuredBulkEntry) + mxaccess_gateway.v1.MxaccessGateway.WriteSecuredBulkEntryOrBuilder { + public static final com.google.protobuf.Descriptors.Descriptor + getDescriptor() { + return mxaccess_gateway.v1.MxaccessGateway.internal_static_mxaccess_gateway_v1_WriteSecuredBulkEntry_descriptor; + } + + @java.lang.Override + protected com.google.protobuf.GeneratedMessage.FieldAccessorTable + internalGetFieldAccessorTable() { + return mxaccess_gateway.v1.MxaccessGateway.internal_static_mxaccess_gateway_v1_WriteSecuredBulkEntry_fieldAccessorTable + .ensureFieldAccessorsInitialized( + mxaccess_gateway.v1.MxaccessGateway.WriteSecuredBulkEntry.class, mxaccess_gateway.v1.MxaccessGateway.WriteSecuredBulkEntry.Builder.class); + } + + // Construct using mxaccess_gateway.v1.MxaccessGateway.WriteSecuredBulkEntry.newBuilder() + private Builder() { + maybeForceBuilderInitialization(); + } + + private Builder( + com.google.protobuf.GeneratedMessage.BuilderParent parent) { + super(parent); + maybeForceBuilderInitialization(); + } + private void maybeForceBuilderInitialization() { + if (com.google.protobuf.GeneratedMessage + .alwaysUseFieldBuilders) { + internalGetValueFieldBuilder(); + } + } + @java.lang.Override + public Builder clear() { + super.clear(); + bitField0_ = 0; + itemHandle_ = 0; + currentUserId_ = 0; + verifierUserId_ = 0; + value_ = null; + if (valueBuilder_ != null) { + valueBuilder_.dispose(); + valueBuilder_ = null; + } + return this; + } + + @java.lang.Override + public com.google.protobuf.Descriptors.Descriptor + getDescriptorForType() { + return mxaccess_gateway.v1.MxaccessGateway.internal_static_mxaccess_gateway_v1_WriteSecuredBulkEntry_descriptor; + } + + @java.lang.Override + public mxaccess_gateway.v1.MxaccessGateway.WriteSecuredBulkEntry getDefaultInstanceForType() { + return mxaccess_gateway.v1.MxaccessGateway.WriteSecuredBulkEntry.getDefaultInstance(); + } + + @java.lang.Override + public mxaccess_gateway.v1.MxaccessGateway.WriteSecuredBulkEntry build() { + mxaccess_gateway.v1.MxaccessGateway.WriteSecuredBulkEntry result = buildPartial(); + if (!result.isInitialized()) { + throw newUninitializedMessageException(result); + } + return result; + } + + @java.lang.Override + public mxaccess_gateway.v1.MxaccessGateway.WriteSecuredBulkEntry buildPartial() { + mxaccess_gateway.v1.MxaccessGateway.WriteSecuredBulkEntry result = new mxaccess_gateway.v1.MxaccessGateway.WriteSecuredBulkEntry(this); + if (bitField0_ != 0) { buildPartial0(result); } + onBuilt(); + return result; + } + + private void buildPartial0(mxaccess_gateway.v1.MxaccessGateway.WriteSecuredBulkEntry result) { + int from_bitField0_ = bitField0_; + if (((from_bitField0_ & 0x00000001) != 0)) { + result.itemHandle_ = itemHandle_; + } + if (((from_bitField0_ & 0x00000002) != 0)) { + result.currentUserId_ = currentUserId_; + } + if (((from_bitField0_ & 0x00000004) != 0)) { + result.verifierUserId_ = verifierUserId_; + } + int to_bitField0_ = 0; + if (((from_bitField0_ & 0x00000008) != 0)) { + result.value_ = valueBuilder_ == null + ? value_ + : valueBuilder_.build(); + to_bitField0_ |= 0x00000001; + } + result.bitField0_ |= to_bitField0_; + } + + @java.lang.Override + public Builder mergeFrom(com.google.protobuf.Message other) { + if (other instanceof mxaccess_gateway.v1.MxaccessGateway.WriteSecuredBulkEntry) { + return mergeFrom((mxaccess_gateway.v1.MxaccessGateway.WriteSecuredBulkEntry)other); + } else { + super.mergeFrom(other); + return this; + } + } + + public Builder mergeFrom(mxaccess_gateway.v1.MxaccessGateway.WriteSecuredBulkEntry other) { + if (other == mxaccess_gateway.v1.MxaccessGateway.WriteSecuredBulkEntry.getDefaultInstance()) return this; + if (other.getItemHandle() != 0) { + setItemHandle(other.getItemHandle()); + } + if (other.getCurrentUserId() != 0) { + setCurrentUserId(other.getCurrentUserId()); + } + if (other.getVerifierUserId() != 0) { + setVerifierUserId(other.getVerifierUserId()); + } + if (other.hasValue()) { + mergeValue(other.getValue()); + } + this.mergeUnknownFields(other.getUnknownFields()); + onChanged(); + return this; + } + + @java.lang.Override + public final boolean isInitialized() { + return true; + } + + @java.lang.Override + public Builder mergeFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + if (extensionRegistry == null) { + throw new java.lang.NullPointerException(); + } + try { + boolean done = false; + while (!done) { + int tag = input.readTag(); + switch (tag) { + case 0: + done = true; + break; + case 8: { + itemHandle_ = input.readInt32(); + bitField0_ |= 0x00000001; + break; + } // case 8 + case 16: { + currentUserId_ = input.readInt32(); + bitField0_ |= 0x00000002; + break; + } // case 16 + case 24: { + verifierUserId_ = input.readInt32(); + bitField0_ |= 0x00000004; + break; + } // case 24 + case 34: { + input.readMessage( + internalGetValueFieldBuilder().getBuilder(), + extensionRegistry); + bitField0_ |= 0x00000008; + break; + } // case 34 + default: { + if (!super.parseUnknownField(input, extensionRegistry, tag)) { + done = true; // was an endgroup tag + } + break; + } // default: + } // switch (tag) + } // while (!done) + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + throw e.unwrapIOException(); + } finally { + onChanged(); + } // finally + return this; + } + private int bitField0_; + + private int itemHandle_ ; + /** + * int32 item_handle = 1; + * @return The itemHandle. + */ + @java.lang.Override + public int getItemHandle() { + return itemHandle_; + } + /** + * int32 item_handle = 1; + * @param value The itemHandle to set. + * @return This builder for chaining. + */ + public Builder setItemHandle(int value) { + + itemHandle_ = value; + bitField0_ |= 0x00000001; + onChanged(); + return this; + } + /** + * int32 item_handle = 1; + * @return This builder for chaining. + */ + public Builder clearItemHandle() { + bitField0_ = (bitField0_ & ~0x00000001); + itemHandle_ = 0; + onChanged(); + return this; + } + + private int currentUserId_ ; + /** + * int32 current_user_id = 2; + * @return The currentUserId. + */ + @java.lang.Override + public int getCurrentUserId() { + return currentUserId_; + } + /** + * int32 current_user_id = 2; + * @param value The currentUserId to set. + * @return This builder for chaining. + */ + public Builder setCurrentUserId(int value) { + + currentUserId_ = value; + bitField0_ |= 0x00000002; + onChanged(); + return this; + } + /** + * int32 current_user_id = 2; + * @return This builder for chaining. + */ + public Builder clearCurrentUserId() { + bitField0_ = (bitField0_ & ~0x00000002); + currentUserId_ = 0; + onChanged(); + return this; + } + + private int verifierUserId_ ; + /** + * int32 verifier_user_id = 3; + * @return The verifierUserId. + */ + @java.lang.Override + public int getVerifierUserId() { + return verifierUserId_; + } + /** + * int32 verifier_user_id = 3; + * @param value The verifierUserId to set. + * @return This builder for chaining. + */ + public Builder setVerifierUserId(int value) { + + verifierUserId_ = value; + bitField0_ |= 0x00000004; + onChanged(); + return this; + } + /** + * int32 verifier_user_id = 3; + * @return This builder for chaining. + */ + public Builder clearVerifierUserId() { + bitField0_ = (bitField0_ & ~0x00000004); + verifierUserId_ = 0; + onChanged(); + return this; + } + + private mxaccess_gateway.v1.MxaccessGateway.MxValue value_; + private com.google.protobuf.SingleFieldBuilder< + mxaccess_gateway.v1.MxaccessGateway.MxValue, mxaccess_gateway.v1.MxaccessGateway.MxValue.Builder, mxaccess_gateway.v1.MxaccessGateway.MxValueOrBuilder> valueBuilder_; + /** + * .mxaccess_gateway.v1.MxValue value = 4; + * @return Whether the value field is set. + */ + public boolean hasValue() { + return ((bitField0_ & 0x00000008) != 0); + } + /** + * .mxaccess_gateway.v1.MxValue value = 4; + * @return The value. + */ + public mxaccess_gateway.v1.MxaccessGateway.MxValue getValue() { + if (valueBuilder_ == null) { + return value_ == null ? mxaccess_gateway.v1.MxaccessGateway.MxValue.getDefaultInstance() : value_; + } else { + return valueBuilder_.getMessage(); + } + } + /** + * .mxaccess_gateway.v1.MxValue value = 4; + */ + public Builder setValue(mxaccess_gateway.v1.MxaccessGateway.MxValue value) { + if (valueBuilder_ == null) { + if (value == null) { + throw new NullPointerException(); + } + value_ = value; + } else { + valueBuilder_.setMessage(value); + } + bitField0_ |= 0x00000008; + onChanged(); + return this; + } + /** + * .mxaccess_gateway.v1.MxValue value = 4; + */ + public Builder setValue( + mxaccess_gateway.v1.MxaccessGateway.MxValue.Builder builderForValue) { + if (valueBuilder_ == null) { + value_ = builderForValue.build(); + } else { + valueBuilder_.setMessage(builderForValue.build()); + } + bitField0_ |= 0x00000008; + onChanged(); + return this; + } + /** + * .mxaccess_gateway.v1.MxValue value = 4; + */ + public Builder mergeValue(mxaccess_gateway.v1.MxaccessGateway.MxValue value) { + if (valueBuilder_ == null) { + if (((bitField0_ & 0x00000008) != 0) && + value_ != null && + value_ != mxaccess_gateway.v1.MxaccessGateway.MxValue.getDefaultInstance()) { + getValueBuilder().mergeFrom(value); + } else { + value_ = value; + } + } else { + valueBuilder_.mergeFrom(value); + } + if (value_ != null) { + bitField0_ |= 0x00000008; + onChanged(); + } + return this; + } + /** + * .mxaccess_gateway.v1.MxValue value = 4; + */ + public Builder clearValue() { + bitField0_ = (bitField0_ & ~0x00000008); + value_ = null; + if (valueBuilder_ != null) { + valueBuilder_.dispose(); + valueBuilder_ = null; + } + onChanged(); + return this; + } + /** + * .mxaccess_gateway.v1.MxValue value = 4; + */ + public mxaccess_gateway.v1.MxaccessGateway.MxValue.Builder getValueBuilder() { + bitField0_ |= 0x00000008; + onChanged(); + return internalGetValueFieldBuilder().getBuilder(); + } + /** + * .mxaccess_gateway.v1.MxValue value = 4; + */ + public mxaccess_gateway.v1.MxaccessGateway.MxValueOrBuilder getValueOrBuilder() { + if (valueBuilder_ != null) { + return valueBuilder_.getMessageOrBuilder(); + } else { + return value_ == null ? + mxaccess_gateway.v1.MxaccessGateway.MxValue.getDefaultInstance() : value_; + } + } + /** + * .mxaccess_gateway.v1.MxValue value = 4; + */ + private com.google.protobuf.SingleFieldBuilder< + mxaccess_gateway.v1.MxaccessGateway.MxValue, mxaccess_gateway.v1.MxaccessGateway.MxValue.Builder, mxaccess_gateway.v1.MxaccessGateway.MxValueOrBuilder> + internalGetValueFieldBuilder() { + if (valueBuilder_ == null) { + valueBuilder_ = new com.google.protobuf.SingleFieldBuilder< + mxaccess_gateway.v1.MxaccessGateway.MxValue, mxaccess_gateway.v1.MxaccessGateway.MxValue.Builder, mxaccess_gateway.v1.MxaccessGateway.MxValueOrBuilder>( + getValue(), + getParentForChildren(), + isClean()); + value_ = null; + } + return valueBuilder_; + } + + // @@protoc_insertion_point(builder_scope:mxaccess_gateway.v1.WriteSecuredBulkEntry) + } + + // @@protoc_insertion_point(class_scope:mxaccess_gateway.v1.WriteSecuredBulkEntry) + private static final mxaccess_gateway.v1.MxaccessGateway.WriteSecuredBulkEntry DEFAULT_INSTANCE; + static { + DEFAULT_INSTANCE = new mxaccess_gateway.v1.MxaccessGateway.WriteSecuredBulkEntry(); + } + + public static mxaccess_gateway.v1.MxaccessGateway.WriteSecuredBulkEntry getDefaultInstance() { + return DEFAULT_INSTANCE; + } + + private static final com.google.protobuf.Parser + PARSER = new com.google.protobuf.AbstractParser() { + @java.lang.Override + public WriteSecuredBulkEntry parsePartialFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + Builder builder = newBuilder(); + try { + builder.mergeFrom(input, extensionRegistry); + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + throw e.setUnfinishedMessage(builder.buildPartial()); + } catch (com.google.protobuf.UninitializedMessageException e) { + throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial()); + } catch (java.io.IOException e) { + throw new com.google.protobuf.InvalidProtocolBufferException(e) + .setUnfinishedMessage(builder.buildPartial()); + } + return builder.buildPartial(); + } + }; + + public static com.google.protobuf.Parser parser() { + return PARSER; + } + + @java.lang.Override + public com.google.protobuf.Parser getParserForType() { + return PARSER; + } + + @java.lang.Override + public mxaccess_gateway.v1.MxaccessGateway.WriteSecuredBulkEntry getDefaultInstanceForType() { + return DEFAULT_INSTANCE; + } + + } + + public interface WriteSecured2BulkCommandOrBuilder extends + // @@protoc_insertion_point(interface_extends:mxaccess_gateway.v1.WriteSecured2BulkCommand) + com.google.protobuf.MessageOrBuilder { + + /** + * int32 server_handle = 1; + * @return The serverHandle. + */ + int getServerHandle(); + + /** + * repeated .mxaccess_gateway.v1.WriteSecured2BulkEntry entries = 2; + */ + java.util.List + getEntriesList(); + /** + * repeated .mxaccess_gateway.v1.WriteSecured2BulkEntry entries = 2; + */ + mxaccess_gateway.v1.MxaccessGateway.WriteSecured2BulkEntry getEntries(int index); + /** + * repeated .mxaccess_gateway.v1.WriteSecured2BulkEntry entries = 2; + */ + int getEntriesCount(); + /** + * repeated .mxaccess_gateway.v1.WriteSecured2BulkEntry entries = 2; + */ + java.util.List + getEntriesOrBuilderList(); + /** + * repeated .mxaccess_gateway.v1.WriteSecured2BulkEntry entries = 2; + */ + mxaccess_gateway.v1.MxaccessGateway.WriteSecured2BulkEntryOrBuilder getEntriesOrBuilder( + int index); + } + /** + *
+   * Bulk WriteSecured2 — sequential MXAccess WriteSecured2 (timestamped) per
+   * entry. Same redaction rules apply.
+   * 
+ * + * Protobuf type {@code mxaccess_gateway.v1.WriteSecured2BulkCommand} + */ + public static final class WriteSecured2BulkCommand extends + com.google.protobuf.GeneratedMessage implements + // @@protoc_insertion_point(message_implements:mxaccess_gateway.v1.WriteSecured2BulkCommand) + WriteSecured2BulkCommandOrBuilder { + private static final long serialVersionUID = 0L; + static { + com.google.protobuf.RuntimeVersion.validateProtobufGencodeVersion( + com.google.protobuf.RuntimeVersion.RuntimeDomain.PUBLIC, + /* major= */ 4, + /* minor= */ 33, + /* patch= */ 1, + /* suffix= */ "", + "WriteSecured2BulkCommand"); + } + // Use WriteSecured2BulkCommand.newBuilder() to construct. + private WriteSecured2BulkCommand(com.google.protobuf.GeneratedMessage.Builder builder) { + super(builder); + } + private WriteSecured2BulkCommand() { + entries_ = java.util.Collections.emptyList(); + } + + public static final com.google.protobuf.Descriptors.Descriptor + getDescriptor() { + return mxaccess_gateway.v1.MxaccessGateway.internal_static_mxaccess_gateway_v1_WriteSecured2BulkCommand_descriptor; + } + + @java.lang.Override + protected com.google.protobuf.GeneratedMessage.FieldAccessorTable + internalGetFieldAccessorTable() { + return mxaccess_gateway.v1.MxaccessGateway.internal_static_mxaccess_gateway_v1_WriteSecured2BulkCommand_fieldAccessorTable + .ensureFieldAccessorsInitialized( + mxaccess_gateway.v1.MxaccessGateway.WriteSecured2BulkCommand.class, mxaccess_gateway.v1.MxaccessGateway.WriteSecured2BulkCommand.Builder.class); + } + + public static final int SERVER_HANDLE_FIELD_NUMBER = 1; + private int serverHandle_ = 0; + /** + * int32 server_handle = 1; + * @return The serverHandle. + */ + @java.lang.Override + public int getServerHandle() { + return serverHandle_; + } + + public static final int ENTRIES_FIELD_NUMBER = 2; + @SuppressWarnings("serial") + private java.util.List entries_; + /** + * repeated .mxaccess_gateway.v1.WriteSecured2BulkEntry entries = 2; + */ + @java.lang.Override + public java.util.List getEntriesList() { + return entries_; + } + /** + * repeated .mxaccess_gateway.v1.WriteSecured2BulkEntry entries = 2; + */ + @java.lang.Override + public java.util.List + getEntriesOrBuilderList() { + return entries_; + } + /** + * repeated .mxaccess_gateway.v1.WriteSecured2BulkEntry entries = 2; + */ + @java.lang.Override + public int getEntriesCount() { + return entries_.size(); + } + /** + * repeated .mxaccess_gateway.v1.WriteSecured2BulkEntry entries = 2; + */ + @java.lang.Override + public mxaccess_gateway.v1.MxaccessGateway.WriteSecured2BulkEntry getEntries(int index) { + return entries_.get(index); + } + /** + * repeated .mxaccess_gateway.v1.WriteSecured2BulkEntry entries = 2; + */ + @java.lang.Override + public mxaccess_gateway.v1.MxaccessGateway.WriteSecured2BulkEntryOrBuilder getEntriesOrBuilder( + int index) { + return entries_.get(index); + } + + private byte memoizedIsInitialized = -1; + @java.lang.Override + public final boolean isInitialized() { + byte isInitialized = memoizedIsInitialized; + if (isInitialized == 1) return true; + if (isInitialized == 0) return false; + + memoizedIsInitialized = 1; + return true; + } + + @java.lang.Override + public void writeTo(com.google.protobuf.CodedOutputStream output) + throws java.io.IOException { + if (serverHandle_ != 0) { + output.writeInt32(1, serverHandle_); + } + for (int i = 0; i < entries_.size(); i++) { + output.writeMessage(2, entries_.get(i)); + } + getUnknownFields().writeTo(output); + } + + @java.lang.Override + public int getSerializedSize() { + int size = memoizedSize; + if (size != -1) return size; + + size = 0; + if (serverHandle_ != 0) { + size += com.google.protobuf.CodedOutputStream + .computeInt32Size(1, serverHandle_); + } + for (int i = 0; i < entries_.size(); i++) { + size += com.google.protobuf.CodedOutputStream + .computeMessageSize(2, entries_.get(i)); + } + size += getUnknownFields().getSerializedSize(); + memoizedSize = size; + return size; + } + + @java.lang.Override + public boolean equals(final java.lang.Object obj) { + if (obj == this) { + return true; + } + if (!(obj instanceof mxaccess_gateway.v1.MxaccessGateway.WriteSecured2BulkCommand)) { + return super.equals(obj); + } + mxaccess_gateway.v1.MxaccessGateway.WriteSecured2BulkCommand other = (mxaccess_gateway.v1.MxaccessGateway.WriteSecured2BulkCommand) obj; + + if (getServerHandle() + != other.getServerHandle()) return false; + if (!getEntriesList() + .equals(other.getEntriesList())) return false; + if (!getUnknownFields().equals(other.getUnknownFields())) return false; + return true; + } + + @java.lang.Override + public int hashCode() { + if (memoizedHashCode != 0) { + return memoizedHashCode; + } + int hash = 41; + hash = (19 * hash) + getDescriptor().hashCode(); + hash = (37 * hash) + SERVER_HANDLE_FIELD_NUMBER; + hash = (53 * hash) + getServerHandle(); + if (getEntriesCount() > 0) { + hash = (37 * hash) + ENTRIES_FIELD_NUMBER; + hash = (53 * hash) + getEntriesList().hashCode(); + } + hash = (29 * hash) + getUnknownFields().hashCode(); + memoizedHashCode = hash; + return hash; + } + + public static mxaccess_gateway.v1.MxaccessGateway.WriteSecured2BulkCommand parseFrom( + java.nio.ByteBuffer data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static mxaccess_gateway.v1.MxaccessGateway.WriteSecured2BulkCommand parseFrom( + java.nio.ByteBuffer data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static mxaccess_gateway.v1.MxaccessGateway.WriteSecured2BulkCommand parseFrom( + com.google.protobuf.ByteString data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static mxaccess_gateway.v1.MxaccessGateway.WriteSecured2BulkCommand parseFrom( + com.google.protobuf.ByteString data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static mxaccess_gateway.v1.MxaccessGateway.WriteSecured2BulkCommand parseFrom(byte[] data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static mxaccess_gateway.v1.MxaccessGateway.WriteSecured2BulkCommand parseFrom( + byte[] data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static mxaccess_gateway.v1.MxaccessGateway.WriteSecured2BulkCommand parseFrom(java.io.InputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessage + .parseWithIOException(PARSER, input); + } + public static mxaccess_gateway.v1.MxaccessGateway.WriteSecured2BulkCommand parseFrom( + java.io.InputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessage + .parseWithIOException(PARSER, input, extensionRegistry); + } + + public static mxaccess_gateway.v1.MxaccessGateway.WriteSecured2BulkCommand parseDelimitedFrom(java.io.InputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessage + .parseDelimitedWithIOException(PARSER, input); + } + + public static mxaccess_gateway.v1.MxaccessGateway.WriteSecured2BulkCommand parseDelimitedFrom( + java.io.InputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessage + .parseDelimitedWithIOException(PARSER, input, extensionRegistry); + } + public static mxaccess_gateway.v1.MxaccessGateway.WriteSecured2BulkCommand parseFrom( + com.google.protobuf.CodedInputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessage + .parseWithIOException(PARSER, input); + } + public static mxaccess_gateway.v1.MxaccessGateway.WriteSecured2BulkCommand parseFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessage + .parseWithIOException(PARSER, input, extensionRegistry); + } + + @java.lang.Override + public Builder newBuilderForType() { return newBuilder(); } + public static Builder newBuilder() { + return DEFAULT_INSTANCE.toBuilder(); + } + public static Builder newBuilder(mxaccess_gateway.v1.MxaccessGateway.WriteSecured2BulkCommand prototype) { + return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype); + } + @java.lang.Override + public Builder toBuilder() { + return this == DEFAULT_INSTANCE + ? new Builder() : new Builder().mergeFrom(this); + } + + @java.lang.Override + protected Builder newBuilderForType( + com.google.protobuf.GeneratedMessage.BuilderParent parent) { + Builder builder = new Builder(parent); + return builder; + } + /** + *
+     * Bulk WriteSecured2 — sequential MXAccess WriteSecured2 (timestamped) per
+     * entry. Same redaction rules apply.
+     * 
+ * + * Protobuf type {@code mxaccess_gateway.v1.WriteSecured2BulkCommand} + */ + public static final class Builder extends + com.google.protobuf.GeneratedMessage.Builder implements + // @@protoc_insertion_point(builder_implements:mxaccess_gateway.v1.WriteSecured2BulkCommand) + mxaccess_gateway.v1.MxaccessGateway.WriteSecured2BulkCommandOrBuilder { + public static final com.google.protobuf.Descriptors.Descriptor + getDescriptor() { + return mxaccess_gateway.v1.MxaccessGateway.internal_static_mxaccess_gateway_v1_WriteSecured2BulkCommand_descriptor; + } + + @java.lang.Override + protected com.google.protobuf.GeneratedMessage.FieldAccessorTable + internalGetFieldAccessorTable() { + return mxaccess_gateway.v1.MxaccessGateway.internal_static_mxaccess_gateway_v1_WriteSecured2BulkCommand_fieldAccessorTable + .ensureFieldAccessorsInitialized( + mxaccess_gateway.v1.MxaccessGateway.WriteSecured2BulkCommand.class, mxaccess_gateway.v1.MxaccessGateway.WriteSecured2BulkCommand.Builder.class); + } + + // Construct using mxaccess_gateway.v1.MxaccessGateway.WriteSecured2BulkCommand.newBuilder() + private Builder() { + + } + + private Builder( + com.google.protobuf.GeneratedMessage.BuilderParent parent) { + super(parent); + + } + @java.lang.Override + public Builder clear() { + super.clear(); + bitField0_ = 0; + serverHandle_ = 0; + if (entriesBuilder_ == null) { + entries_ = java.util.Collections.emptyList(); + } else { + entries_ = null; + entriesBuilder_.clear(); + } + bitField0_ = (bitField0_ & ~0x00000002); + return this; + } + + @java.lang.Override + public com.google.protobuf.Descriptors.Descriptor + getDescriptorForType() { + return mxaccess_gateway.v1.MxaccessGateway.internal_static_mxaccess_gateway_v1_WriteSecured2BulkCommand_descriptor; + } + + @java.lang.Override + public mxaccess_gateway.v1.MxaccessGateway.WriteSecured2BulkCommand getDefaultInstanceForType() { + return mxaccess_gateway.v1.MxaccessGateway.WriteSecured2BulkCommand.getDefaultInstance(); + } + + @java.lang.Override + public mxaccess_gateway.v1.MxaccessGateway.WriteSecured2BulkCommand build() { + mxaccess_gateway.v1.MxaccessGateway.WriteSecured2BulkCommand result = buildPartial(); + if (!result.isInitialized()) { + throw newUninitializedMessageException(result); + } + return result; + } + + @java.lang.Override + public mxaccess_gateway.v1.MxaccessGateway.WriteSecured2BulkCommand buildPartial() { + mxaccess_gateway.v1.MxaccessGateway.WriteSecured2BulkCommand result = new mxaccess_gateway.v1.MxaccessGateway.WriteSecured2BulkCommand(this); + buildPartialRepeatedFields(result); + if (bitField0_ != 0) { buildPartial0(result); } + onBuilt(); + return result; + } + + private void buildPartialRepeatedFields(mxaccess_gateway.v1.MxaccessGateway.WriteSecured2BulkCommand result) { + if (entriesBuilder_ == null) { + if (((bitField0_ & 0x00000002) != 0)) { + entries_ = java.util.Collections.unmodifiableList(entries_); + bitField0_ = (bitField0_ & ~0x00000002); + } + result.entries_ = entries_; + } else { + result.entries_ = entriesBuilder_.build(); + } + } + + private void buildPartial0(mxaccess_gateway.v1.MxaccessGateway.WriteSecured2BulkCommand result) { + int from_bitField0_ = bitField0_; + if (((from_bitField0_ & 0x00000001) != 0)) { + result.serverHandle_ = serverHandle_; + } + } + + @java.lang.Override + public Builder mergeFrom(com.google.protobuf.Message other) { + if (other instanceof mxaccess_gateway.v1.MxaccessGateway.WriteSecured2BulkCommand) { + return mergeFrom((mxaccess_gateway.v1.MxaccessGateway.WriteSecured2BulkCommand)other); + } else { + super.mergeFrom(other); + return this; + } + } + + public Builder mergeFrom(mxaccess_gateway.v1.MxaccessGateway.WriteSecured2BulkCommand other) { + if (other == mxaccess_gateway.v1.MxaccessGateway.WriteSecured2BulkCommand.getDefaultInstance()) return this; + if (other.getServerHandle() != 0) { + setServerHandle(other.getServerHandle()); + } + if (entriesBuilder_ == null) { + if (!other.entries_.isEmpty()) { + if (entries_.isEmpty()) { + entries_ = other.entries_; + bitField0_ = (bitField0_ & ~0x00000002); + } else { + ensureEntriesIsMutable(); + entries_.addAll(other.entries_); + } + onChanged(); + } + } else { + if (!other.entries_.isEmpty()) { + if (entriesBuilder_.isEmpty()) { + entriesBuilder_.dispose(); + entriesBuilder_ = null; + entries_ = other.entries_; + bitField0_ = (bitField0_ & ~0x00000002); + entriesBuilder_ = + com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders ? + internalGetEntriesFieldBuilder() : null; + } else { + entriesBuilder_.addAllMessages(other.entries_); + } + } + } + this.mergeUnknownFields(other.getUnknownFields()); + onChanged(); + return this; + } + + @java.lang.Override + public final boolean isInitialized() { + return true; + } + + @java.lang.Override + public Builder mergeFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + if (extensionRegistry == null) { + throw new java.lang.NullPointerException(); + } + try { + boolean done = false; + while (!done) { + int tag = input.readTag(); + switch (tag) { + case 0: + done = true; + break; + case 8: { + serverHandle_ = input.readInt32(); + bitField0_ |= 0x00000001; + break; + } // case 8 + case 18: { + mxaccess_gateway.v1.MxaccessGateway.WriteSecured2BulkEntry m = + input.readMessage( + mxaccess_gateway.v1.MxaccessGateway.WriteSecured2BulkEntry.parser(), + extensionRegistry); + if (entriesBuilder_ == null) { + ensureEntriesIsMutable(); + entries_.add(m); + } else { + entriesBuilder_.addMessage(m); + } + break; + } // case 18 + default: { + if (!super.parseUnknownField(input, extensionRegistry, tag)) { + done = true; // was an endgroup tag + } + break; + } // default: + } // switch (tag) + } // while (!done) + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + throw e.unwrapIOException(); + } finally { + onChanged(); + } // finally + return this; + } + private int bitField0_; + + private int serverHandle_ ; + /** + * int32 server_handle = 1; + * @return The serverHandle. + */ + @java.lang.Override + public int getServerHandle() { + return serverHandle_; + } + /** + * int32 server_handle = 1; + * @param value The serverHandle to set. + * @return This builder for chaining. + */ + public Builder setServerHandle(int value) { + + serverHandle_ = value; + bitField0_ |= 0x00000001; + onChanged(); + return this; + } + /** + * int32 server_handle = 1; + * @return This builder for chaining. + */ + public Builder clearServerHandle() { + bitField0_ = (bitField0_ & ~0x00000001); + serverHandle_ = 0; + onChanged(); + return this; + } + + private java.util.List entries_ = + java.util.Collections.emptyList(); + private void ensureEntriesIsMutable() { + if (!((bitField0_ & 0x00000002) != 0)) { + entries_ = new java.util.ArrayList(entries_); + bitField0_ |= 0x00000002; + } + } + + private com.google.protobuf.RepeatedFieldBuilder< + mxaccess_gateway.v1.MxaccessGateway.WriteSecured2BulkEntry, mxaccess_gateway.v1.MxaccessGateway.WriteSecured2BulkEntry.Builder, mxaccess_gateway.v1.MxaccessGateway.WriteSecured2BulkEntryOrBuilder> entriesBuilder_; + + /** + * repeated .mxaccess_gateway.v1.WriteSecured2BulkEntry entries = 2; + */ + public java.util.List getEntriesList() { + if (entriesBuilder_ == null) { + return java.util.Collections.unmodifiableList(entries_); + } else { + return entriesBuilder_.getMessageList(); + } + } + /** + * repeated .mxaccess_gateway.v1.WriteSecured2BulkEntry entries = 2; + */ + public int getEntriesCount() { + if (entriesBuilder_ == null) { + return entries_.size(); + } else { + return entriesBuilder_.getCount(); + } + } + /** + * repeated .mxaccess_gateway.v1.WriteSecured2BulkEntry entries = 2; + */ + public mxaccess_gateway.v1.MxaccessGateway.WriteSecured2BulkEntry getEntries(int index) { + if (entriesBuilder_ == null) { + return entries_.get(index); + } else { + return entriesBuilder_.getMessage(index); + } + } + /** + * repeated .mxaccess_gateway.v1.WriteSecured2BulkEntry entries = 2; + */ + public Builder setEntries( + int index, mxaccess_gateway.v1.MxaccessGateway.WriteSecured2BulkEntry value) { + if (entriesBuilder_ == null) { + if (value == null) { + throw new NullPointerException(); + } + ensureEntriesIsMutable(); + entries_.set(index, value); + onChanged(); + } else { + entriesBuilder_.setMessage(index, value); + } + return this; + } + /** + * repeated .mxaccess_gateway.v1.WriteSecured2BulkEntry entries = 2; + */ + public Builder setEntries( + int index, mxaccess_gateway.v1.MxaccessGateway.WriteSecured2BulkEntry.Builder builderForValue) { + if (entriesBuilder_ == null) { + ensureEntriesIsMutable(); + entries_.set(index, builderForValue.build()); + onChanged(); + } else { + entriesBuilder_.setMessage(index, builderForValue.build()); + } + return this; + } + /** + * repeated .mxaccess_gateway.v1.WriteSecured2BulkEntry entries = 2; + */ + public Builder addEntries(mxaccess_gateway.v1.MxaccessGateway.WriteSecured2BulkEntry value) { + if (entriesBuilder_ == null) { + if (value == null) { + throw new NullPointerException(); + } + ensureEntriesIsMutable(); + entries_.add(value); + onChanged(); + } else { + entriesBuilder_.addMessage(value); + } + return this; + } + /** + * repeated .mxaccess_gateway.v1.WriteSecured2BulkEntry entries = 2; + */ + public Builder addEntries( + int index, mxaccess_gateway.v1.MxaccessGateway.WriteSecured2BulkEntry value) { + if (entriesBuilder_ == null) { + if (value == null) { + throw new NullPointerException(); + } + ensureEntriesIsMutable(); + entries_.add(index, value); + onChanged(); + } else { + entriesBuilder_.addMessage(index, value); + } + return this; + } + /** + * repeated .mxaccess_gateway.v1.WriteSecured2BulkEntry entries = 2; + */ + public Builder addEntries( + mxaccess_gateway.v1.MxaccessGateway.WriteSecured2BulkEntry.Builder builderForValue) { + if (entriesBuilder_ == null) { + ensureEntriesIsMutable(); + entries_.add(builderForValue.build()); + onChanged(); + } else { + entriesBuilder_.addMessage(builderForValue.build()); + } + return this; + } + /** + * repeated .mxaccess_gateway.v1.WriteSecured2BulkEntry entries = 2; + */ + public Builder addEntries( + int index, mxaccess_gateway.v1.MxaccessGateway.WriteSecured2BulkEntry.Builder builderForValue) { + if (entriesBuilder_ == null) { + ensureEntriesIsMutable(); + entries_.add(index, builderForValue.build()); + onChanged(); + } else { + entriesBuilder_.addMessage(index, builderForValue.build()); + } + return this; + } + /** + * repeated .mxaccess_gateway.v1.WriteSecured2BulkEntry entries = 2; + */ + public Builder addAllEntries( + java.lang.Iterable values) { + if (entriesBuilder_ == null) { + ensureEntriesIsMutable(); + com.google.protobuf.AbstractMessageLite.Builder.addAll( + values, entries_); + onChanged(); + } else { + entriesBuilder_.addAllMessages(values); + } + return this; + } + /** + * repeated .mxaccess_gateway.v1.WriteSecured2BulkEntry entries = 2; + */ + public Builder clearEntries() { + if (entriesBuilder_ == null) { + entries_ = java.util.Collections.emptyList(); + bitField0_ = (bitField0_ & ~0x00000002); + onChanged(); + } else { + entriesBuilder_.clear(); + } + return this; + } + /** + * repeated .mxaccess_gateway.v1.WriteSecured2BulkEntry entries = 2; + */ + public Builder removeEntries(int index) { + if (entriesBuilder_ == null) { + ensureEntriesIsMutable(); + entries_.remove(index); + onChanged(); + } else { + entriesBuilder_.remove(index); + } + return this; + } + /** + * repeated .mxaccess_gateway.v1.WriteSecured2BulkEntry entries = 2; + */ + public mxaccess_gateway.v1.MxaccessGateway.WriteSecured2BulkEntry.Builder getEntriesBuilder( + int index) { + return internalGetEntriesFieldBuilder().getBuilder(index); + } + /** + * repeated .mxaccess_gateway.v1.WriteSecured2BulkEntry entries = 2; + */ + public mxaccess_gateway.v1.MxaccessGateway.WriteSecured2BulkEntryOrBuilder getEntriesOrBuilder( + int index) { + if (entriesBuilder_ == null) { + return entries_.get(index); } else { + return entriesBuilder_.getMessageOrBuilder(index); + } + } + /** + * repeated .mxaccess_gateway.v1.WriteSecured2BulkEntry entries = 2; + */ + public java.util.List + getEntriesOrBuilderList() { + if (entriesBuilder_ != null) { + return entriesBuilder_.getMessageOrBuilderList(); + } else { + return java.util.Collections.unmodifiableList(entries_); + } + } + /** + * repeated .mxaccess_gateway.v1.WriteSecured2BulkEntry entries = 2; + */ + public mxaccess_gateway.v1.MxaccessGateway.WriteSecured2BulkEntry.Builder addEntriesBuilder() { + return internalGetEntriesFieldBuilder().addBuilder( + mxaccess_gateway.v1.MxaccessGateway.WriteSecured2BulkEntry.getDefaultInstance()); + } + /** + * repeated .mxaccess_gateway.v1.WriteSecured2BulkEntry entries = 2; + */ + public mxaccess_gateway.v1.MxaccessGateway.WriteSecured2BulkEntry.Builder addEntriesBuilder( + int index) { + return internalGetEntriesFieldBuilder().addBuilder( + index, mxaccess_gateway.v1.MxaccessGateway.WriteSecured2BulkEntry.getDefaultInstance()); + } + /** + * repeated .mxaccess_gateway.v1.WriteSecured2BulkEntry entries = 2; + */ + public java.util.List + getEntriesBuilderList() { + return internalGetEntriesFieldBuilder().getBuilderList(); + } + private com.google.protobuf.RepeatedFieldBuilder< + mxaccess_gateway.v1.MxaccessGateway.WriteSecured2BulkEntry, mxaccess_gateway.v1.MxaccessGateway.WriteSecured2BulkEntry.Builder, mxaccess_gateway.v1.MxaccessGateway.WriteSecured2BulkEntryOrBuilder> + internalGetEntriesFieldBuilder() { + if (entriesBuilder_ == null) { + entriesBuilder_ = new com.google.protobuf.RepeatedFieldBuilder< + mxaccess_gateway.v1.MxaccessGateway.WriteSecured2BulkEntry, mxaccess_gateway.v1.MxaccessGateway.WriteSecured2BulkEntry.Builder, mxaccess_gateway.v1.MxaccessGateway.WriteSecured2BulkEntryOrBuilder>( + entries_, + ((bitField0_ & 0x00000002) != 0), + getParentForChildren(), + isClean()); + entries_ = null; + } + return entriesBuilder_; + } + + // @@protoc_insertion_point(builder_scope:mxaccess_gateway.v1.WriteSecured2BulkCommand) + } + + // @@protoc_insertion_point(class_scope:mxaccess_gateway.v1.WriteSecured2BulkCommand) + private static final mxaccess_gateway.v1.MxaccessGateway.WriteSecured2BulkCommand DEFAULT_INSTANCE; + static { + DEFAULT_INSTANCE = new mxaccess_gateway.v1.MxaccessGateway.WriteSecured2BulkCommand(); + } + + public static mxaccess_gateway.v1.MxaccessGateway.WriteSecured2BulkCommand getDefaultInstance() { + return DEFAULT_INSTANCE; + } + + private static final com.google.protobuf.Parser + PARSER = new com.google.protobuf.AbstractParser() { + @java.lang.Override + public WriteSecured2BulkCommand parsePartialFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + Builder builder = newBuilder(); + try { + builder.mergeFrom(input, extensionRegistry); + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + throw e.setUnfinishedMessage(builder.buildPartial()); + } catch (com.google.protobuf.UninitializedMessageException e) { + throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial()); + } catch (java.io.IOException e) { + throw new com.google.protobuf.InvalidProtocolBufferException(e) + .setUnfinishedMessage(builder.buildPartial()); + } + return builder.buildPartial(); + } + }; + + public static com.google.protobuf.Parser parser() { + return PARSER; + } + + @java.lang.Override + public com.google.protobuf.Parser getParserForType() { + return PARSER; + } + + @java.lang.Override + public mxaccess_gateway.v1.MxaccessGateway.WriteSecured2BulkCommand getDefaultInstanceForType() { + return DEFAULT_INSTANCE; + } + + } + + public interface WriteSecured2BulkEntryOrBuilder extends + // @@protoc_insertion_point(interface_extends:mxaccess_gateway.v1.WriteSecured2BulkEntry) + com.google.protobuf.MessageOrBuilder { + + /** + * int32 item_handle = 1; + * @return The itemHandle. + */ + int getItemHandle(); + + /** + * int32 current_user_id = 2; + * @return The currentUserId. + */ + int getCurrentUserId(); + + /** + * int32 verifier_user_id = 3; + * @return The verifierUserId. + */ + int getVerifierUserId(); + + /** + * .mxaccess_gateway.v1.MxValue value = 4; + * @return Whether the value field is set. + */ + boolean hasValue(); + /** + * .mxaccess_gateway.v1.MxValue value = 4; + * @return The value. + */ + mxaccess_gateway.v1.MxaccessGateway.MxValue getValue(); + /** + * .mxaccess_gateway.v1.MxValue value = 4; + */ + mxaccess_gateway.v1.MxaccessGateway.MxValueOrBuilder getValueOrBuilder(); + + /** + * .mxaccess_gateway.v1.MxValue timestamp_value = 5; + * @return Whether the timestampValue field is set. + */ + boolean hasTimestampValue(); + /** + * .mxaccess_gateway.v1.MxValue timestamp_value = 5; + * @return The timestampValue. + */ + mxaccess_gateway.v1.MxaccessGateway.MxValue getTimestampValue(); + /** + * .mxaccess_gateway.v1.MxValue timestamp_value = 5; + */ + mxaccess_gateway.v1.MxaccessGateway.MxValueOrBuilder getTimestampValueOrBuilder(); + } + /** + * Protobuf type {@code mxaccess_gateway.v1.WriteSecured2BulkEntry} + */ + public static final class WriteSecured2BulkEntry extends + com.google.protobuf.GeneratedMessage implements + // @@protoc_insertion_point(message_implements:mxaccess_gateway.v1.WriteSecured2BulkEntry) + WriteSecured2BulkEntryOrBuilder { + private static final long serialVersionUID = 0L; + static { + com.google.protobuf.RuntimeVersion.validateProtobufGencodeVersion( + com.google.protobuf.RuntimeVersion.RuntimeDomain.PUBLIC, + /* major= */ 4, + /* minor= */ 33, + /* patch= */ 1, + /* suffix= */ "", + "WriteSecured2BulkEntry"); + } + // Use WriteSecured2BulkEntry.newBuilder() to construct. + private WriteSecured2BulkEntry(com.google.protobuf.GeneratedMessage.Builder builder) { + super(builder); + } + private WriteSecured2BulkEntry() { + } + + public static final com.google.protobuf.Descriptors.Descriptor + getDescriptor() { + return mxaccess_gateway.v1.MxaccessGateway.internal_static_mxaccess_gateway_v1_WriteSecured2BulkEntry_descriptor; + } + + @java.lang.Override + protected com.google.protobuf.GeneratedMessage.FieldAccessorTable + internalGetFieldAccessorTable() { + return mxaccess_gateway.v1.MxaccessGateway.internal_static_mxaccess_gateway_v1_WriteSecured2BulkEntry_fieldAccessorTable + .ensureFieldAccessorsInitialized( + mxaccess_gateway.v1.MxaccessGateway.WriteSecured2BulkEntry.class, mxaccess_gateway.v1.MxaccessGateway.WriteSecured2BulkEntry.Builder.class); + } + + private int bitField0_; + public static final int ITEM_HANDLE_FIELD_NUMBER = 1; + private int itemHandle_ = 0; + /** + * int32 item_handle = 1; + * @return The itemHandle. + */ + @java.lang.Override + public int getItemHandle() { + return itemHandle_; + } + + public static final int CURRENT_USER_ID_FIELD_NUMBER = 2; + private int currentUserId_ = 0; + /** + * int32 current_user_id = 2; + * @return The currentUserId. + */ + @java.lang.Override + public int getCurrentUserId() { + return currentUserId_; + } + + public static final int VERIFIER_USER_ID_FIELD_NUMBER = 3; + private int verifierUserId_ = 0; + /** + * int32 verifier_user_id = 3; + * @return The verifierUserId. + */ + @java.lang.Override + public int getVerifierUserId() { + return verifierUserId_; + } + + public static final int VALUE_FIELD_NUMBER = 4; + private mxaccess_gateway.v1.MxaccessGateway.MxValue value_; + /** + * .mxaccess_gateway.v1.MxValue value = 4; + * @return Whether the value field is set. + */ + @java.lang.Override + public boolean hasValue() { + return ((bitField0_ & 0x00000001) != 0); + } + /** + * .mxaccess_gateway.v1.MxValue value = 4; + * @return The value. + */ + @java.lang.Override + public mxaccess_gateway.v1.MxaccessGateway.MxValue getValue() { + return value_ == null ? mxaccess_gateway.v1.MxaccessGateway.MxValue.getDefaultInstance() : value_; + } + /** + * .mxaccess_gateway.v1.MxValue value = 4; + */ + @java.lang.Override + public mxaccess_gateway.v1.MxaccessGateway.MxValueOrBuilder getValueOrBuilder() { + return value_ == null ? mxaccess_gateway.v1.MxaccessGateway.MxValue.getDefaultInstance() : value_; + } + + public static final int TIMESTAMP_VALUE_FIELD_NUMBER = 5; + private mxaccess_gateway.v1.MxaccessGateway.MxValue timestampValue_; + /** + * .mxaccess_gateway.v1.MxValue timestamp_value = 5; + * @return Whether the timestampValue field is set. + */ + @java.lang.Override + public boolean hasTimestampValue() { + return ((bitField0_ & 0x00000002) != 0); + } + /** + * .mxaccess_gateway.v1.MxValue timestamp_value = 5; + * @return The timestampValue. + */ + @java.lang.Override + public mxaccess_gateway.v1.MxaccessGateway.MxValue getTimestampValue() { + return timestampValue_ == null ? mxaccess_gateway.v1.MxaccessGateway.MxValue.getDefaultInstance() : timestampValue_; + } + /** + * .mxaccess_gateway.v1.MxValue timestamp_value = 5; + */ + @java.lang.Override + public mxaccess_gateway.v1.MxaccessGateway.MxValueOrBuilder getTimestampValueOrBuilder() { + return timestampValue_ == null ? mxaccess_gateway.v1.MxaccessGateway.MxValue.getDefaultInstance() : timestampValue_; + } + + private byte memoizedIsInitialized = -1; + @java.lang.Override + public final boolean isInitialized() { + byte isInitialized = memoizedIsInitialized; + if (isInitialized == 1) return true; + if (isInitialized == 0) return false; + + memoizedIsInitialized = 1; + return true; + } + + @java.lang.Override + public void writeTo(com.google.protobuf.CodedOutputStream output) + throws java.io.IOException { + if (itemHandle_ != 0) { + output.writeInt32(1, itemHandle_); + } + if (currentUserId_ != 0) { + output.writeInt32(2, currentUserId_); + } + if (verifierUserId_ != 0) { + output.writeInt32(3, verifierUserId_); + } + if (((bitField0_ & 0x00000001) != 0)) { + output.writeMessage(4, getValue()); + } + if (((bitField0_ & 0x00000002) != 0)) { + output.writeMessage(5, getTimestampValue()); + } + getUnknownFields().writeTo(output); + } + + @java.lang.Override + public int getSerializedSize() { + int size = memoizedSize; + if (size != -1) return size; + + size = 0; + if (itemHandle_ != 0) { + size += com.google.protobuf.CodedOutputStream + .computeInt32Size(1, itemHandle_); + } + if (currentUserId_ != 0) { + size += com.google.protobuf.CodedOutputStream + .computeInt32Size(2, currentUserId_); + } + if (verifierUserId_ != 0) { + size += com.google.protobuf.CodedOutputStream + .computeInt32Size(3, verifierUserId_); + } + if (((bitField0_ & 0x00000001) != 0)) { + size += com.google.protobuf.CodedOutputStream + .computeMessageSize(4, getValue()); + } + if (((bitField0_ & 0x00000002) != 0)) { + size += com.google.protobuf.CodedOutputStream + .computeMessageSize(5, getTimestampValue()); + } + size += getUnknownFields().getSerializedSize(); + memoizedSize = size; + return size; + } + + @java.lang.Override + public boolean equals(final java.lang.Object obj) { + if (obj == this) { + return true; + } + if (!(obj instanceof mxaccess_gateway.v1.MxaccessGateway.WriteSecured2BulkEntry)) { + return super.equals(obj); + } + mxaccess_gateway.v1.MxaccessGateway.WriteSecured2BulkEntry other = (mxaccess_gateway.v1.MxaccessGateway.WriteSecured2BulkEntry) obj; + + if (getItemHandle() + != other.getItemHandle()) return false; + if (getCurrentUserId() + != other.getCurrentUserId()) return false; + if (getVerifierUserId() + != other.getVerifierUserId()) return false; + if (hasValue() != other.hasValue()) return false; + if (hasValue()) { + if (!getValue() + .equals(other.getValue())) return false; + } + if (hasTimestampValue() != other.hasTimestampValue()) return false; + if (hasTimestampValue()) { + if (!getTimestampValue() + .equals(other.getTimestampValue())) return false; + } + if (!getUnknownFields().equals(other.getUnknownFields())) return false; + return true; + } + + @java.lang.Override + public int hashCode() { + if (memoizedHashCode != 0) { + return memoizedHashCode; + } + int hash = 41; + hash = (19 * hash) + getDescriptor().hashCode(); + hash = (37 * hash) + ITEM_HANDLE_FIELD_NUMBER; + hash = (53 * hash) + getItemHandle(); + hash = (37 * hash) + CURRENT_USER_ID_FIELD_NUMBER; + hash = (53 * hash) + getCurrentUserId(); + hash = (37 * hash) + VERIFIER_USER_ID_FIELD_NUMBER; + hash = (53 * hash) + getVerifierUserId(); + if (hasValue()) { + hash = (37 * hash) + VALUE_FIELD_NUMBER; + hash = (53 * hash) + getValue().hashCode(); + } + if (hasTimestampValue()) { + hash = (37 * hash) + TIMESTAMP_VALUE_FIELD_NUMBER; + hash = (53 * hash) + getTimestampValue().hashCode(); + } + hash = (29 * hash) + getUnknownFields().hashCode(); + memoizedHashCode = hash; + return hash; + } + + public static mxaccess_gateway.v1.MxaccessGateway.WriteSecured2BulkEntry parseFrom( + java.nio.ByteBuffer data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static mxaccess_gateway.v1.MxaccessGateway.WriteSecured2BulkEntry parseFrom( + java.nio.ByteBuffer data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static mxaccess_gateway.v1.MxaccessGateway.WriteSecured2BulkEntry parseFrom( + com.google.protobuf.ByteString data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static mxaccess_gateway.v1.MxaccessGateway.WriteSecured2BulkEntry parseFrom( + com.google.protobuf.ByteString data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static mxaccess_gateway.v1.MxaccessGateway.WriteSecured2BulkEntry parseFrom(byte[] data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static mxaccess_gateway.v1.MxaccessGateway.WriteSecured2BulkEntry parseFrom( + byte[] data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static mxaccess_gateway.v1.MxaccessGateway.WriteSecured2BulkEntry parseFrom(java.io.InputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessage + .parseWithIOException(PARSER, input); + } + public static mxaccess_gateway.v1.MxaccessGateway.WriteSecured2BulkEntry parseFrom( + java.io.InputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessage + .parseWithIOException(PARSER, input, extensionRegistry); + } + + public static mxaccess_gateway.v1.MxaccessGateway.WriteSecured2BulkEntry parseDelimitedFrom(java.io.InputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessage + .parseDelimitedWithIOException(PARSER, input); + } + + public static mxaccess_gateway.v1.MxaccessGateway.WriteSecured2BulkEntry parseDelimitedFrom( + java.io.InputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessage + .parseDelimitedWithIOException(PARSER, input, extensionRegistry); + } + public static mxaccess_gateway.v1.MxaccessGateway.WriteSecured2BulkEntry parseFrom( + com.google.protobuf.CodedInputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessage + .parseWithIOException(PARSER, input); + } + public static mxaccess_gateway.v1.MxaccessGateway.WriteSecured2BulkEntry parseFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessage + .parseWithIOException(PARSER, input, extensionRegistry); + } + + @java.lang.Override + public Builder newBuilderForType() { return newBuilder(); } + public static Builder newBuilder() { + return DEFAULT_INSTANCE.toBuilder(); + } + public static Builder newBuilder(mxaccess_gateway.v1.MxaccessGateway.WriteSecured2BulkEntry prototype) { + return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype); + } + @java.lang.Override + public Builder toBuilder() { + return this == DEFAULT_INSTANCE + ? new Builder() : new Builder().mergeFrom(this); + } + + @java.lang.Override + protected Builder newBuilderForType( + com.google.protobuf.GeneratedMessage.BuilderParent parent) { + Builder builder = new Builder(parent); + return builder; + } + /** + * Protobuf type {@code mxaccess_gateway.v1.WriteSecured2BulkEntry} + */ + public static final class Builder extends + com.google.protobuf.GeneratedMessage.Builder implements + // @@protoc_insertion_point(builder_implements:mxaccess_gateway.v1.WriteSecured2BulkEntry) + mxaccess_gateway.v1.MxaccessGateway.WriteSecured2BulkEntryOrBuilder { + public static final com.google.protobuf.Descriptors.Descriptor + getDescriptor() { + return mxaccess_gateway.v1.MxaccessGateway.internal_static_mxaccess_gateway_v1_WriteSecured2BulkEntry_descriptor; + } + + @java.lang.Override + protected com.google.protobuf.GeneratedMessage.FieldAccessorTable + internalGetFieldAccessorTable() { + return mxaccess_gateway.v1.MxaccessGateway.internal_static_mxaccess_gateway_v1_WriteSecured2BulkEntry_fieldAccessorTable + .ensureFieldAccessorsInitialized( + mxaccess_gateway.v1.MxaccessGateway.WriteSecured2BulkEntry.class, mxaccess_gateway.v1.MxaccessGateway.WriteSecured2BulkEntry.Builder.class); + } + + // Construct using mxaccess_gateway.v1.MxaccessGateway.WriteSecured2BulkEntry.newBuilder() + private Builder() { + maybeForceBuilderInitialization(); + } + + private Builder( + com.google.protobuf.GeneratedMessage.BuilderParent parent) { + super(parent); + maybeForceBuilderInitialization(); + } + private void maybeForceBuilderInitialization() { + if (com.google.protobuf.GeneratedMessage + .alwaysUseFieldBuilders) { + internalGetValueFieldBuilder(); + internalGetTimestampValueFieldBuilder(); + } + } + @java.lang.Override + public Builder clear() { + super.clear(); + bitField0_ = 0; + itemHandle_ = 0; + currentUserId_ = 0; + verifierUserId_ = 0; + value_ = null; + if (valueBuilder_ != null) { + valueBuilder_.dispose(); + valueBuilder_ = null; + } + timestampValue_ = null; + if (timestampValueBuilder_ != null) { + timestampValueBuilder_.dispose(); + timestampValueBuilder_ = null; + } + return this; + } + + @java.lang.Override + public com.google.protobuf.Descriptors.Descriptor + getDescriptorForType() { + return mxaccess_gateway.v1.MxaccessGateway.internal_static_mxaccess_gateway_v1_WriteSecured2BulkEntry_descriptor; + } + + @java.lang.Override + public mxaccess_gateway.v1.MxaccessGateway.WriteSecured2BulkEntry getDefaultInstanceForType() { + return mxaccess_gateway.v1.MxaccessGateway.WriteSecured2BulkEntry.getDefaultInstance(); + } + + @java.lang.Override + public mxaccess_gateway.v1.MxaccessGateway.WriteSecured2BulkEntry build() { + mxaccess_gateway.v1.MxaccessGateway.WriteSecured2BulkEntry result = buildPartial(); + if (!result.isInitialized()) { + throw newUninitializedMessageException(result); + } + return result; + } + + @java.lang.Override + public mxaccess_gateway.v1.MxaccessGateway.WriteSecured2BulkEntry buildPartial() { + mxaccess_gateway.v1.MxaccessGateway.WriteSecured2BulkEntry result = new mxaccess_gateway.v1.MxaccessGateway.WriteSecured2BulkEntry(this); + if (bitField0_ != 0) { buildPartial0(result); } + onBuilt(); + return result; + } + + private void buildPartial0(mxaccess_gateway.v1.MxaccessGateway.WriteSecured2BulkEntry result) { + int from_bitField0_ = bitField0_; + if (((from_bitField0_ & 0x00000001) != 0)) { + result.itemHandle_ = itemHandle_; + } + if (((from_bitField0_ & 0x00000002) != 0)) { + result.currentUserId_ = currentUserId_; + } + if (((from_bitField0_ & 0x00000004) != 0)) { + result.verifierUserId_ = verifierUserId_; + } + int to_bitField0_ = 0; + if (((from_bitField0_ & 0x00000008) != 0)) { + result.value_ = valueBuilder_ == null + ? value_ + : valueBuilder_.build(); + to_bitField0_ |= 0x00000001; + } + if (((from_bitField0_ & 0x00000010) != 0)) { + result.timestampValue_ = timestampValueBuilder_ == null + ? timestampValue_ + : timestampValueBuilder_.build(); + to_bitField0_ |= 0x00000002; + } + result.bitField0_ |= to_bitField0_; + } + + @java.lang.Override + public Builder mergeFrom(com.google.protobuf.Message other) { + if (other instanceof mxaccess_gateway.v1.MxaccessGateway.WriteSecured2BulkEntry) { + return mergeFrom((mxaccess_gateway.v1.MxaccessGateway.WriteSecured2BulkEntry)other); + } else { + super.mergeFrom(other); + return this; + } + } + + public Builder mergeFrom(mxaccess_gateway.v1.MxaccessGateway.WriteSecured2BulkEntry other) { + if (other == mxaccess_gateway.v1.MxaccessGateway.WriteSecured2BulkEntry.getDefaultInstance()) return this; + if (other.getItemHandle() != 0) { + setItemHandle(other.getItemHandle()); + } + if (other.getCurrentUserId() != 0) { + setCurrentUserId(other.getCurrentUserId()); + } + if (other.getVerifierUserId() != 0) { + setVerifierUserId(other.getVerifierUserId()); + } + if (other.hasValue()) { + mergeValue(other.getValue()); + } + if (other.hasTimestampValue()) { + mergeTimestampValue(other.getTimestampValue()); + } + this.mergeUnknownFields(other.getUnknownFields()); + onChanged(); + return this; + } + + @java.lang.Override + public final boolean isInitialized() { + return true; + } + + @java.lang.Override + public Builder mergeFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + if (extensionRegistry == null) { + throw new java.lang.NullPointerException(); + } + try { + boolean done = false; + while (!done) { + int tag = input.readTag(); + switch (tag) { + case 0: + done = true; + break; + case 8: { + itemHandle_ = input.readInt32(); + bitField0_ |= 0x00000001; + break; + } // case 8 + case 16: { + currentUserId_ = input.readInt32(); + bitField0_ |= 0x00000002; + break; + } // case 16 + case 24: { + verifierUserId_ = input.readInt32(); + bitField0_ |= 0x00000004; + break; + } // case 24 + case 34: { + input.readMessage( + internalGetValueFieldBuilder().getBuilder(), + extensionRegistry); + bitField0_ |= 0x00000008; + break; + } // case 34 + case 42: { + input.readMessage( + internalGetTimestampValueFieldBuilder().getBuilder(), + extensionRegistry); + bitField0_ |= 0x00000010; + break; + } // case 42 + default: { + if (!super.parseUnknownField(input, extensionRegistry, tag)) { + done = true; // was an endgroup tag + } + break; + } // default: + } // switch (tag) + } // while (!done) + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + throw e.unwrapIOException(); + } finally { + onChanged(); + } // finally + return this; + } + private int bitField0_; + + private int itemHandle_ ; + /** + * int32 item_handle = 1; + * @return The itemHandle. + */ + @java.lang.Override + public int getItemHandle() { + return itemHandle_; + } + /** + * int32 item_handle = 1; + * @param value The itemHandle to set. + * @return This builder for chaining. + */ + public Builder setItemHandle(int value) { + + itemHandle_ = value; + bitField0_ |= 0x00000001; + onChanged(); + return this; + } + /** + * int32 item_handle = 1; + * @return This builder for chaining. + */ + public Builder clearItemHandle() { + bitField0_ = (bitField0_ & ~0x00000001); + itemHandle_ = 0; + onChanged(); + return this; + } + + private int currentUserId_ ; + /** + * int32 current_user_id = 2; + * @return The currentUserId. + */ + @java.lang.Override + public int getCurrentUserId() { + return currentUserId_; + } + /** + * int32 current_user_id = 2; + * @param value The currentUserId to set. + * @return This builder for chaining. + */ + public Builder setCurrentUserId(int value) { + + currentUserId_ = value; + bitField0_ |= 0x00000002; + onChanged(); + return this; + } + /** + * int32 current_user_id = 2; + * @return This builder for chaining. + */ + public Builder clearCurrentUserId() { + bitField0_ = (bitField0_ & ~0x00000002); + currentUserId_ = 0; + onChanged(); + return this; + } + + private int verifierUserId_ ; + /** + * int32 verifier_user_id = 3; + * @return The verifierUserId. + */ + @java.lang.Override + public int getVerifierUserId() { + return verifierUserId_; + } + /** + * int32 verifier_user_id = 3; + * @param value The verifierUserId to set. + * @return This builder for chaining. + */ + public Builder setVerifierUserId(int value) { + + verifierUserId_ = value; + bitField0_ |= 0x00000004; + onChanged(); + return this; + } + /** + * int32 verifier_user_id = 3; + * @return This builder for chaining. + */ + public Builder clearVerifierUserId() { + bitField0_ = (bitField0_ & ~0x00000004); + verifierUserId_ = 0; + onChanged(); + return this; + } + + private mxaccess_gateway.v1.MxaccessGateway.MxValue value_; + private com.google.protobuf.SingleFieldBuilder< + mxaccess_gateway.v1.MxaccessGateway.MxValue, mxaccess_gateway.v1.MxaccessGateway.MxValue.Builder, mxaccess_gateway.v1.MxaccessGateway.MxValueOrBuilder> valueBuilder_; + /** + * .mxaccess_gateway.v1.MxValue value = 4; + * @return Whether the value field is set. + */ + public boolean hasValue() { + return ((bitField0_ & 0x00000008) != 0); + } + /** + * .mxaccess_gateway.v1.MxValue value = 4; + * @return The value. + */ + public mxaccess_gateway.v1.MxaccessGateway.MxValue getValue() { + if (valueBuilder_ == null) { + return value_ == null ? mxaccess_gateway.v1.MxaccessGateway.MxValue.getDefaultInstance() : value_; + } else { + return valueBuilder_.getMessage(); + } + } + /** + * .mxaccess_gateway.v1.MxValue value = 4; + */ + public Builder setValue(mxaccess_gateway.v1.MxaccessGateway.MxValue value) { + if (valueBuilder_ == null) { + if (value == null) { + throw new NullPointerException(); + } + value_ = value; + } else { + valueBuilder_.setMessage(value); + } + bitField0_ |= 0x00000008; + onChanged(); + return this; + } + /** + * .mxaccess_gateway.v1.MxValue value = 4; + */ + public Builder setValue( + mxaccess_gateway.v1.MxaccessGateway.MxValue.Builder builderForValue) { + if (valueBuilder_ == null) { + value_ = builderForValue.build(); + } else { + valueBuilder_.setMessage(builderForValue.build()); + } + bitField0_ |= 0x00000008; + onChanged(); + return this; + } + /** + * .mxaccess_gateway.v1.MxValue value = 4; + */ + public Builder mergeValue(mxaccess_gateway.v1.MxaccessGateway.MxValue value) { + if (valueBuilder_ == null) { + if (((bitField0_ & 0x00000008) != 0) && + value_ != null && + value_ != mxaccess_gateway.v1.MxaccessGateway.MxValue.getDefaultInstance()) { + getValueBuilder().mergeFrom(value); + } else { + value_ = value; + } + } else { + valueBuilder_.mergeFrom(value); + } + if (value_ != null) { + bitField0_ |= 0x00000008; + onChanged(); + } + return this; + } + /** + * .mxaccess_gateway.v1.MxValue value = 4; + */ + public Builder clearValue() { + bitField0_ = (bitField0_ & ~0x00000008); + value_ = null; + if (valueBuilder_ != null) { + valueBuilder_.dispose(); + valueBuilder_ = null; + } + onChanged(); + return this; + } + /** + * .mxaccess_gateway.v1.MxValue value = 4; + */ + public mxaccess_gateway.v1.MxaccessGateway.MxValue.Builder getValueBuilder() { + bitField0_ |= 0x00000008; + onChanged(); + return internalGetValueFieldBuilder().getBuilder(); + } + /** + * .mxaccess_gateway.v1.MxValue value = 4; + */ + public mxaccess_gateway.v1.MxaccessGateway.MxValueOrBuilder getValueOrBuilder() { + if (valueBuilder_ != null) { + return valueBuilder_.getMessageOrBuilder(); + } else { + return value_ == null ? + mxaccess_gateway.v1.MxaccessGateway.MxValue.getDefaultInstance() : value_; + } + } + /** + * .mxaccess_gateway.v1.MxValue value = 4; + */ + private com.google.protobuf.SingleFieldBuilder< + mxaccess_gateway.v1.MxaccessGateway.MxValue, mxaccess_gateway.v1.MxaccessGateway.MxValue.Builder, mxaccess_gateway.v1.MxaccessGateway.MxValueOrBuilder> + internalGetValueFieldBuilder() { + if (valueBuilder_ == null) { + valueBuilder_ = new com.google.protobuf.SingleFieldBuilder< + mxaccess_gateway.v1.MxaccessGateway.MxValue, mxaccess_gateway.v1.MxaccessGateway.MxValue.Builder, mxaccess_gateway.v1.MxaccessGateway.MxValueOrBuilder>( + getValue(), + getParentForChildren(), + isClean()); + value_ = null; + } + return valueBuilder_; + } + + private mxaccess_gateway.v1.MxaccessGateway.MxValue timestampValue_; + private com.google.protobuf.SingleFieldBuilder< + mxaccess_gateway.v1.MxaccessGateway.MxValue, mxaccess_gateway.v1.MxaccessGateway.MxValue.Builder, mxaccess_gateway.v1.MxaccessGateway.MxValueOrBuilder> timestampValueBuilder_; + /** + * .mxaccess_gateway.v1.MxValue timestamp_value = 5; + * @return Whether the timestampValue field is set. + */ + public boolean hasTimestampValue() { + return ((bitField0_ & 0x00000010) != 0); + } + /** + * .mxaccess_gateway.v1.MxValue timestamp_value = 5; + * @return The timestampValue. + */ + public mxaccess_gateway.v1.MxaccessGateway.MxValue getTimestampValue() { + if (timestampValueBuilder_ == null) { + return timestampValue_ == null ? mxaccess_gateway.v1.MxaccessGateway.MxValue.getDefaultInstance() : timestampValue_; + } else { + return timestampValueBuilder_.getMessage(); + } + } + /** + * .mxaccess_gateway.v1.MxValue timestamp_value = 5; + */ + public Builder setTimestampValue(mxaccess_gateway.v1.MxaccessGateway.MxValue value) { + if (timestampValueBuilder_ == null) { + if (value == null) { + throw new NullPointerException(); + } + timestampValue_ = value; + } else { + timestampValueBuilder_.setMessage(value); + } + bitField0_ |= 0x00000010; + onChanged(); + return this; + } + /** + * .mxaccess_gateway.v1.MxValue timestamp_value = 5; + */ + public Builder setTimestampValue( + mxaccess_gateway.v1.MxaccessGateway.MxValue.Builder builderForValue) { + if (timestampValueBuilder_ == null) { + timestampValue_ = builderForValue.build(); + } else { + timestampValueBuilder_.setMessage(builderForValue.build()); + } + bitField0_ |= 0x00000010; + onChanged(); + return this; + } + /** + * .mxaccess_gateway.v1.MxValue timestamp_value = 5; + */ + public Builder mergeTimestampValue(mxaccess_gateway.v1.MxaccessGateway.MxValue value) { + if (timestampValueBuilder_ == null) { + if (((bitField0_ & 0x00000010) != 0) && + timestampValue_ != null && + timestampValue_ != mxaccess_gateway.v1.MxaccessGateway.MxValue.getDefaultInstance()) { + getTimestampValueBuilder().mergeFrom(value); + } else { + timestampValue_ = value; + } + } else { + timestampValueBuilder_.mergeFrom(value); + } + if (timestampValue_ != null) { + bitField0_ |= 0x00000010; + onChanged(); + } + return this; + } + /** + * .mxaccess_gateway.v1.MxValue timestamp_value = 5; + */ + public Builder clearTimestampValue() { + bitField0_ = (bitField0_ & ~0x00000010); + timestampValue_ = null; + if (timestampValueBuilder_ != null) { + timestampValueBuilder_.dispose(); + timestampValueBuilder_ = null; + } + onChanged(); + return this; + } + /** + * .mxaccess_gateway.v1.MxValue timestamp_value = 5; + */ + public mxaccess_gateway.v1.MxaccessGateway.MxValue.Builder getTimestampValueBuilder() { + bitField0_ |= 0x00000010; + onChanged(); + return internalGetTimestampValueFieldBuilder().getBuilder(); + } + /** + * .mxaccess_gateway.v1.MxValue timestamp_value = 5; + */ + public mxaccess_gateway.v1.MxaccessGateway.MxValueOrBuilder getTimestampValueOrBuilder() { + if (timestampValueBuilder_ != null) { + return timestampValueBuilder_.getMessageOrBuilder(); + } else { + return timestampValue_ == null ? + mxaccess_gateway.v1.MxaccessGateway.MxValue.getDefaultInstance() : timestampValue_; + } + } + /** + * .mxaccess_gateway.v1.MxValue timestamp_value = 5; + */ + private com.google.protobuf.SingleFieldBuilder< + mxaccess_gateway.v1.MxaccessGateway.MxValue, mxaccess_gateway.v1.MxaccessGateway.MxValue.Builder, mxaccess_gateway.v1.MxaccessGateway.MxValueOrBuilder> + internalGetTimestampValueFieldBuilder() { + if (timestampValueBuilder_ == null) { + timestampValueBuilder_ = new com.google.protobuf.SingleFieldBuilder< + mxaccess_gateway.v1.MxaccessGateway.MxValue, mxaccess_gateway.v1.MxaccessGateway.MxValue.Builder, mxaccess_gateway.v1.MxaccessGateway.MxValueOrBuilder>( + getTimestampValue(), + getParentForChildren(), + isClean()); + timestampValue_ = null; + } + return timestampValueBuilder_; + } + + // @@protoc_insertion_point(builder_scope:mxaccess_gateway.v1.WriteSecured2BulkEntry) + } + + // @@protoc_insertion_point(class_scope:mxaccess_gateway.v1.WriteSecured2BulkEntry) + private static final mxaccess_gateway.v1.MxaccessGateway.WriteSecured2BulkEntry DEFAULT_INSTANCE; + static { + DEFAULT_INSTANCE = new mxaccess_gateway.v1.MxaccessGateway.WriteSecured2BulkEntry(); + } + + public static mxaccess_gateway.v1.MxaccessGateway.WriteSecured2BulkEntry getDefaultInstance() { + return DEFAULT_INSTANCE; + } + + private static final com.google.protobuf.Parser + PARSER = new com.google.protobuf.AbstractParser() { + @java.lang.Override + public WriteSecured2BulkEntry parsePartialFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + Builder builder = newBuilder(); + try { + builder.mergeFrom(input, extensionRegistry); + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + throw e.setUnfinishedMessage(builder.buildPartial()); + } catch (com.google.protobuf.UninitializedMessageException e) { + throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial()); + } catch (java.io.IOException e) { + throw new com.google.protobuf.InvalidProtocolBufferException(e) + .setUnfinishedMessage(builder.buildPartial()); + } + return builder.buildPartial(); + } + }; + + public static com.google.protobuf.Parser parser() { + return PARSER; + } + + @java.lang.Override + public com.google.protobuf.Parser getParserForType() { + return PARSER; + } + + @java.lang.Override + public mxaccess_gateway.v1.MxaccessGateway.WriteSecured2BulkEntry getDefaultInstanceForType() { + return DEFAULT_INSTANCE; + } + + } + + public interface ReadBulkCommandOrBuilder extends + // @@protoc_insertion_point(interface_extends:mxaccess_gateway.v1.ReadBulkCommand) + com.google.protobuf.MessageOrBuilder { + + /** + * int32 server_handle = 1; + * @return The serverHandle. + */ + int getServerHandle(); + + /** + * repeated string tag_addresses = 2; + * @return A list containing the tagAddresses. + */ + java.util.List + getTagAddressesList(); + /** + * repeated string tag_addresses = 2; + * @return The count of tagAddresses. + */ + int getTagAddressesCount(); + /** + * repeated string tag_addresses = 2; + * @param index The index of the element to return. + * @return The tagAddresses at the given index. + */ + java.lang.String getTagAddresses(int index); + /** + * repeated string tag_addresses = 2; + * @param index The index of the value to return. + * @return The bytes of the tagAddresses at the given index. + */ + com.google.protobuf.ByteString + getTagAddressesBytes(int index); + + /** + * uint32 timeout_ms = 3; + * @return The timeoutMs. + */ + int getTimeoutMs(); + } + /** + *
+   * Bulk Read — snapshot the current value for each requested tag. MXAccess COM
+   * has no synchronous Read; the worker implements ReadBulk as:
+   * - If the tag is already in the session's item registry AND that item is
+   * currently advised AND the worker has a cached OnDataChange for it, the
+   * reply returns the cached value WITHOUT modifying the existing
+   * subscription (was_cached = true).
+   * - Otherwise the worker takes the snapshot lifecycle itself: AddItem +
+   * Advise, wait up to `timeout_ms` for the first OnDataChange, then
+   * UnAdvise + RemoveItem before returning. The session is left exactly
+   * as it was before the call (was_cached = false).
+   * `timeout_ms == 0` uses the gateway-configured default (1000 ms).
+   * 
+ * + * Protobuf type {@code mxaccess_gateway.v1.ReadBulkCommand} + */ + public static final class ReadBulkCommand extends + com.google.protobuf.GeneratedMessage implements + // @@protoc_insertion_point(message_implements:mxaccess_gateway.v1.ReadBulkCommand) + ReadBulkCommandOrBuilder { + private static final long serialVersionUID = 0L; + static { + com.google.protobuf.RuntimeVersion.validateProtobufGencodeVersion( + com.google.protobuf.RuntimeVersion.RuntimeDomain.PUBLIC, + /* major= */ 4, + /* minor= */ 33, + /* patch= */ 1, + /* suffix= */ "", + "ReadBulkCommand"); + } + // Use ReadBulkCommand.newBuilder() to construct. + private ReadBulkCommand(com.google.protobuf.GeneratedMessage.Builder builder) { + super(builder); + } + private ReadBulkCommand() { + tagAddresses_ = + com.google.protobuf.LazyStringArrayList.emptyList(); + } + + public static final com.google.protobuf.Descriptors.Descriptor + getDescriptor() { + return mxaccess_gateway.v1.MxaccessGateway.internal_static_mxaccess_gateway_v1_ReadBulkCommand_descriptor; + } + + @java.lang.Override + protected com.google.protobuf.GeneratedMessage.FieldAccessorTable + internalGetFieldAccessorTable() { + return mxaccess_gateway.v1.MxaccessGateway.internal_static_mxaccess_gateway_v1_ReadBulkCommand_fieldAccessorTable + .ensureFieldAccessorsInitialized( + mxaccess_gateway.v1.MxaccessGateway.ReadBulkCommand.class, mxaccess_gateway.v1.MxaccessGateway.ReadBulkCommand.Builder.class); + } + + public static final int SERVER_HANDLE_FIELD_NUMBER = 1; + private int serverHandle_ = 0; + /** + * int32 server_handle = 1; + * @return The serverHandle. + */ + @java.lang.Override + public int getServerHandle() { + return serverHandle_; + } + + public static final int TAG_ADDRESSES_FIELD_NUMBER = 2; + @SuppressWarnings("serial") + private com.google.protobuf.LazyStringArrayList tagAddresses_ = + com.google.protobuf.LazyStringArrayList.emptyList(); + /** + * repeated string tag_addresses = 2; + * @return A list containing the tagAddresses. + */ + public com.google.protobuf.ProtocolStringList + getTagAddressesList() { + return tagAddresses_; + } + /** + * repeated string tag_addresses = 2; + * @return The count of tagAddresses. + */ + public int getTagAddressesCount() { + return tagAddresses_.size(); + } + /** + * repeated string tag_addresses = 2; + * @param index The index of the element to return. + * @return The tagAddresses at the given index. + */ + public java.lang.String getTagAddresses(int index) { + return tagAddresses_.get(index); + } + /** + * repeated string tag_addresses = 2; + * @param index The index of the value to return. + * @return The bytes of the tagAddresses at the given index. + */ + public com.google.protobuf.ByteString + getTagAddressesBytes(int index) { + return tagAddresses_.getByteString(index); + } + + public static final int TIMEOUT_MS_FIELD_NUMBER = 3; + private int timeoutMs_ = 0; + /** + * uint32 timeout_ms = 3; + * @return The timeoutMs. + */ + @java.lang.Override + public int getTimeoutMs() { + return timeoutMs_; + } + + private byte memoizedIsInitialized = -1; + @java.lang.Override + public final boolean isInitialized() { + byte isInitialized = memoizedIsInitialized; + if (isInitialized == 1) return true; + if (isInitialized == 0) return false; + + memoizedIsInitialized = 1; + return true; + } + + @java.lang.Override + public void writeTo(com.google.protobuf.CodedOutputStream output) + throws java.io.IOException { + if (serverHandle_ != 0) { + output.writeInt32(1, serverHandle_); + } + for (int i = 0; i < tagAddresses_.size(); i++) { + com.google.protobuf.GeneratedMessage.writeString(output, 2, tagAddresses_.getRaw(i)); + } + if (timeoutMs_ != 0) { + output.writeUInt32(3, timeoutMs_); + } + getUnknownFields().writeTo(output); + } + + @java.lang.Override + public int getSerializedSize() { + int size = memoizedSize; + if (size != -1) return size; + + size = 0; + if (serverHandle_ != 0) { + size += com.google.protobuf.CodedOutputStream + .computeInt32Size(1, serverHandle_); + } + { + int dataSize = 0; + for (int i = 0; i < tagAddresses_.size(); i++) { + dataSize += computeStringSizeNoTag(tagAddresses_.getRaw(i)); + } + size += dataSize; + size += 1 * getTagAddressesList().size(); + } + if (timeoutMs_ != 0) { + size += com.google.protobuf.CodedOutputStream + .computeUInt32Size(3, timeoutMs_); + } + size += getUnknownFields().getSerializedSize(); + memoizedSize = size; + return size; + } + + @java.lang.Override + public boolean equals(final java.lang.Object obj) { + if (obj == this) { + return true; + } + if (!(obj instanceof mxaccess_gateway.v1.MxaccessGateway.ReadBulkCommand)) { + return super.equals(obj); + } + mxaccess_gateway.v1.MxaccessGateway.ReadBulkCommand other = (mxaccess_gateway.v1.MxaccessGateway.ReadBulkCommand) obj; + + if (getServerHandle() + != other.getServerHandle()) return false; + if (!getTagAddressesList() + .equals(other.getTagAddressesList())) return false; + if (getTimeoutMs() + != other.getTimeoutMs()) return false; + if (!getUnknownFields().equals(other.getUnknownFields())) return false; + return true; + } + + @java.lang.Override + public int hashCode() { + if (memoizedHashCode != 0) { + return memoizedHashCode; + } + int hash = 41; + hash = (19 * hash) + getDescriptor().hashCode(); + hash = (37 * hash) + SERVER_HANDLE_FIELD_NUMBER; + hash = (53 * hash) + getServerHandle(); + if (getTagAddressesCount() > 0) { + hash = (37 * hash) + TAG_ADDRESSES_FIELD_NUMBER; + hash = (53 * hash) + getTagAddressesList().hashCode(); + } + hash = (37 * hash) + TIMEOUT_MS_FIELD_NUMBER; + hash = (53 * hash) + getTimeoutMs(); + hash = (29 * hash) + getUnknownFields().hashCode(); + memoizedHashCode = hash; + return hash; + } + + public static mxaccess_gateway.v1.MxaccessGateway.ReadBulkCommand parseFrom( + java.nio.ByteBuffer data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static mxaccess_gateway.v1.MxaccessGateway.ReadBulkCommand parseFrom( + java.nio.ByteBuffer data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static mxaccess_gateway.v1.MxaccessGateway.ReadBulkCommand parseFrom( + com.google.protobuf.ByteString data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static mxaccess_gateway.v1.MxaccessGateway.ReadBulkCommand parseFrom( + com.google.protobuf.ByteString data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static mxaccess_gateway.v1.MxaccessGateway.ReadBulkCommand parseFrom(byte[] data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static mxaccess_gateway.v1.MxaccessGateway.ReadBulkCommand parseFrom( + byte[] data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static mxaccess_gateway.v1.MxaccessGateway.ReadBulkCommand parseFrom(java.io.InputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessage + .parseWithIOException(PARSER, input); + } + public static mxaccess_gateway.v1.MxaccessGateway.ReadBulkCommand parseFrom( + java.io.InputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessage + .parseWithIOException(PARSER, input, extensionRegistry); + } + + public static mxaccess_gateway.v1.MxaccessGateway.ReadBulkCommand parseDelimitedFrom(java.io.InputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessage + .parseDelimitedWithIOException(PARSER, input); + } + + public static mxaccess_gateway.v1.MxaccessGateway.ReadBulkCommand parseDelimitedFrom( + java.io.InputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessage + .parseDelimitedWithIOException(PARSER, input, extensionRegistry); + } + public static mxaccess_gateway.v1.MxaccessGateway.ReadBulkCommand parseFrom( + com.google.protobuf.CodedInputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessage + .parseWithIOException(PARSER, input); + } + public static mxaccess_gateway.v1.MxaccessGateway.ReadBulkCommand parseFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessage + .parseWithIOException(PARSER, input, extensionRegistry); + } + + @java.lang.Override + public Builder newBuilderForType() { return newBuilder(); } + public static Builder newBuilder() { + return DEFAULT_INSTANCE.toBuilder(); + } + public static Builder newBuilder(mxaccess_gateway.v1.MxaccessGateway.ReadBulkCommand prototype) { + return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype); + } + @java.lang.Override + public Builder toBuilder() { + return this == DEFAULT_INSTANCE + ? new Builder() : new Builder().mergeFrom(this); + } + + @java.lang.Override + protected Builder newBuilderForType( + com.google.protobuf.GeneratedMessage.BuilderParent parent) { + Builder builder = new Builder(parent); + return builder; + } + /** + *
+     * Bulk Read — snapshot the current value for each requested tag. MXAccess COM
+     * has no synchronous Read; the worker implements ReadBulk as:
+     * - If the tag is already in the session's item registry AND that item is
+     * currently advised AND the worker has a cached OnDataChange for it, the
+     * reply returns the cached value WITHOUT modifying the existing
+     * subscription (was_cached = true).
+     * - Otherwise the worker takes the snapshot lifecycle itself: AddItem +
+     * Advise, wait up to `timeout_ms` for the first OnDataChange, then
+     * UnAdvise + RemoveItem before returning. The session is left exactly
+     * as it was before the call (was_cached = false).
+     * `timeout_ms == 0` uses the gateway-configured default (1000 ms).
+     * 
+ * + * Protobuf type {@code mxaccess_gateway.v1.ReadBulkCommand} + */ + public static final class Builder extends + com.google.protobuf.GeneratedMessage.Builder implements + // @@protoc_insertion_point(builder_implements:mxaccess_gateway.v1.ReadBulkCommand) + mxaccess_gateway.v1.MxaccessGateway.ReadBulkCommandOrBuilder { + public static final com.google.protobuf.Descriptors.Descriptor + getDescriptor() { + return mxaccess_gateway.v1.MxaccessGateway.internal_static_mxaccess_gateway_v1_ReadBulkCommand_descriptor; + } + + @java.lang.Override + protected com.google.protobuf.GeneratedMessage.FieldAccessorTable + internalGetFieldAccessorTable() { + return mxaccess_gateway.v1.MxaccessGateway.internal_static_mxaccess_gateway_v1_ReadBulkCommand_fieldAccessorTable + .ensureFieldAccessorsInitialized( + mxaccess_gateway.v1.MxaccessGateway.ReadBulkCommand.class, mxaccess_gateway.v1.MxaccessGateway.ReadBulkCommand.Builder.class); + } + + // Construct using mxaccess_gateway.v1.MxaccessGateway.ReadBulkCommand.newBuilder() + private Builder() { + + } + + private Builder( + com.google.protobuf.GeneratedMessage.BuilderParent parent) { + super(parent); + + } + @java.lang.Override + public Builder clear() { + super.clear(); + bitField0_ = 0; + serverHandle_ = 0; + tagAddresses_ = + com.google.protobuf.LazyStringArrayList.emptyList(); + timeoutMs_ = 0; + return this; + } + + @java.lang.Override + public com.google.protobuf.Descriptors.Descriptor + getDescriptorForType() { + return mxaccess_gateway.v1.MxaccessGateway.internal_static_mxaccess_gateway_v1_ReadBulkCommand_descriptor; + } + + @java.lang.Override + public mxaccess_gateway.v1.MxaccessGateway.ReadBulkCommand getDefaultInstanceForType() { + return mxaccess_gateway.v1.MxaccessGateway.ReadBulkCommand.getDefaultInstance(); + } + + @java.lang.Override + public mxaccess_gateway.v1.MxaccessGateway.ReadBulkCommand build() { + mxaccess_gateway.v1.MxaccessGateway.ReadBulkCommand result = buildPartial(); + if (!result.isInitialized()) { + throw newUninitializedMessageException(result); + } + return result; + } + + @java.lang.Override + public mxaccess_gateway.v1.MxaccessGateway.ReadBulkCommand buildPartial() { + mxaccess_gateway.v1.MxaccessGateway.ReadBulkCommand result = new mxaccess_gateway.v1.MxaccessGateway.ReadBulkCommand(this); + if (bitField0_ != 0) { buildPartial0(result); } + onBuilt(); + return result; + } + + private void buildPartial0(mxaccess_gateway.v1.MxaccessGateway.ReadBulkCommand result) { + int from_bitField0_ = bitField0_; + if (((from_bitField0_ & 0x00000001) != 0)) { + result.serverHandle_ = serverHandle_; + } + if (((from_bitField0_ & 0x00000002) != 0)) { + tagAddresses_.makeImmutable(); + result.tagAddresses_ = tagAddresses_; + } + if (((from_bitField0_ & 0x00000004) != 0)) { + result.timeoutMs_ = timeoutMs_; + } + } + + @java.lang.Override + public Builder mergeFrom(com.google.protobuf.Message other) { + if (other instanceof mxaccess_gateway.v1.MxaccessGateway.ReadBulkCommand) { + return mergeFrom((mxaccess_gateway.v1.MxaccessGateway.ReadBulkCommand)other); + } else { + super.mergeFrom(other); + return this; + } + } + + public Builder mergeFrom(mxaccess_gateway.v1.MxaccessGateway.ReadBulkCommand other) { + if (other == mxaccess_gateway.v1.MxaccessGateway.ReadBulkCommand.getDefaultInstance()) return this; + if (other.getServerHandle() != 0) { + setServerHandle(other.getServerHandle()); + } + if (!other.tagAddresses_.isEmpty()) { + if (tagAddresses_.isEmpty()) { + tagAddresses_ = other.tagAddresses_; + bitField0_ |= 0x00000002; + } else { + ensureTagAddressesIsMutable(); + tagAddresses_.addAll(other.tagAddresses_); + } + onChanged(); + } + if (other.getTimeoutMs() != 0) { + setTimeoutMs(other.getTimeoutMs()); + } + this.mergeUnknownFields(other.getUnknownFields()); + onChanged(); + return this; + } + + @java.lang.Override + public final boolean isInitialized() { + return true; + } + + @java.lang.Override + public Builder mergeFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + if (extensionRegistry == null) { + throw new java.lang.NullPointerException(); + } + try { + boolean done = false; + while (!done) { + int tag = input.readTag(); + switch (tag) { + case 0: + done = true; + break; + case 8: { + serverHandle_ = input.readInt32(); + bitField0_ |= 0x00000001; + break; + } // case 8 + case 18: { + java.lang.String s = input.readStringRequireUtf8(); + ensureTagAddressesIsMutable(); + tagAddresses_.add(s); + break; + } // case 18 + case 24: { + timeoutMs_ = input.readUInt32(); + bitField0_ |= 0x00000004; + break; + } // case 24 + default: { + if (!super.parseUnknownField(input, extensionRegistry, tag)) { + done = true; // was an endgroup tag + } + break; + } // default: + } // switch (tag) + } // while (!done) + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + throw e.unwrapIOException(); + } finally { + onChanged(); + } // finally + return this; + } + private int bitField0_; + + private int serverHandle_ ; + /** + * int32 server_handle = 1; + * @return The serverHandle. + */ + @java.lang.Override + public int getServerHandle() { + return serverHandle_; + } + /** + * int32 server_handle = 1; + * @param value The serverHandle to set. + * @return This builder for chaining. + */ + public Builder setServerHandle(int value) { + + serverHandle_ = value; + bitField0_ |= 0x00000001; + onChanged(); + return this; + } + /** + * int32 server_handle = 1; + * @return This builder for chaining. + */ + public Builder clearServerHandle() { + bitField0_ = (bitField0_ & ~0x00000001); + serverHandle_ = 0; + onChanged(); + return this; + } + + private com.google.protobuf.LazyStringArrayList tagAddresses_ = + com.google.protobuf.LazyStringArrayList.emptyList(); + private void ensureTagAddressesIsMutable() { + if (!tagAddresses_.isModifiable()) { + tagAddresses_ = new com.google.protobuf.LazyStringArrayList(tagAddresses_); + } + bitField0_ |= 0x00000002; + } + /** + * repeated string tag_addresses = 2; + * @return A list containing the tagAddresses. + */ + public com.google.protobuf.ProtocolStringList + getTagAddressesList() { + tagAddresses_.makeImmutable(); + return tagAddresses_; + } + /** + * repeated string tag_addresses = 2; + * @return The count of tagAddresses. + */ + public int getTagAddressesCount() { + return tagAddresses_.size(); + } + /** + * repeated string tag_addresses = 2; + * @param index The index of the element to return. + * @return The tagAddresses at the given index. + */ + public java.lang.String getTagAddresses(int index) { + return tagAddresses_.get(index); + } + /** + * repeated string tag_addresses = 2; + * @param index The index of the value to return. + * @return The bytes of the tagAddresses at the given index. + */ + public com.google.protobuf.ByteString + getTagAddressesBytes(int index) { + return tagAddresses_.getByteString(index); + } + /** + * repeated string tag_addresses = 2; + * @param index The index to set the value at. + * @param value The tagAddresses to set. + * @return This builder for chaining. + */ + public Builder setTagAddresses( + int index, java.lang.String value) { + if (value == null) { throw new NullPointerException(); } + ensureTagAddressesIsMutable(); + tagAddresses_.set(index, value); + bitField0_ |= 0x00000002; + onChanged(); + return this; + } + /** + * repeated string tag_addresses = 2; + * @param value The tagAddresses to add. + * @return This builder for chaining. + */ + public Builder addTagAddresses( + java.lang.String value) { + if (value == null) { throw new NullPointerException(); } + ensureTagAddressesIsMutable(); + tagAddresses_.add(value); + bitField0_ |= 0x00000002; + onChanged(); + return this; + } + /** + * repeated string tag_addresses = 2; + * @param values The tagAddresses to add. + * @return This builder for chaining. + */ + public Builder addAllTagAddresses( + java.lang.Iterable values) { + ensureTagAddressesIsMutable(); + com.google.protobuf.AbstractMessageLite.Builder.addAll( + values, tagAddresses_); + bitField0_ |= 0x00000002; + onChanged(); + return this; + } + /** + * repeated string tag_addresses = 2; + * @return This builder for chaining. + */ + public Builder clearTagAddresses() { + tagAddresses_ = + com.google.protobuf.LazyStringArrayList.emptyList(); + bitField0_ = (bitField0_ & ~0x00000002);; + onChanged(); + return this; + } + /** + * repeated string tag_addresses = 2; + * @param value The bytes of the tagAddresses to add. + * @return This builder for chaining. + */ + public Builder addTagAddressesBytes( + com.google.protobuf.ByteString value) { + if (value == null) { throw new NullPointerException(); } + checkByteStringIsUtf8(value); + ensureTagAddressesIsMutable(); + tagAddresses_.add(value); + bitField0_ |= 0x00000002; + onChanged(); + return this; + } + + private int timeoutMs_ ; + /** + * uint32 timeout_ms = 3; + * @return The timeoutMs. + */ + @java.lang.Override + public int getTimeoutMs() { + return timeoutMs_; + } + /** + * uint32 timeout_ms = 3; + * @param value The timeoutMs to set. + * @return This builder for chaining. + */ + public Builder setTimeoutMs(int value) { + + timeoutMs_ = value; + bitField0_ |= 0x00000004; + onChanged(); + return this; + } + /** + * uint32 timeout_ms = 3; + * @return This builder for chaining. + */ + public Builder clearTimeoutMs() { + bitField0_ = (bitField0_ & ~0x00000004); + timeoutMs_ = 0; + onChanged(); + return this; + } + + // @@protoc_insertion_point(builder_scope:mxaccess_gateway.v1.ReadBulkCommand) + } + + // @@protoc_insertion_point(class_scope:mxaccess_gateway.v1.ReadBulkCommand) + private static final mxaccess_gateway.v1.MxaccessGateway.ReadBulkCommand DEFAULT_INSTANCE; + static { + DEFAULT_INSTANCE = new mxaccess_gateway.v1.MxaccessGateway.ReadBulkCommand(); + } + + public static mxaccess_gateway.v1.MxaccessGateway.ReadBulkCommand getDefaultInstance() { + return DEFAULT_INSTANCE; + } + + private static final com.google.protobuf.Parser + PARSER = new com.google.protobuf.AbstractParser() { + @java.lang.Override + public ReadBulkCommand parsePartialFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + Builder builder = newBuilder(); + try { + builder.mergeFrom(input, extensionRegistry); + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + throw e.setUnfinishedMessage(builder.buildPartial()); + } catch (com.google.protobuf.UninitializedMessageException e) { + throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial()); + } catch (java.io.IOException e) { + throw new com.google.protobuf.InvalidProtocolBufferException(e) + .setUnfinishedMessage(builder.buildPartial()); + } + return builder.buildPartial(); + } + }; + + public static com.google.protobuf.Parser parser() { + return PARSER; + } + + @java.lang.Override + public com.google.protobuf.Parser getParserForType() { + return PARSER; + } + + @java.lang.Override + public mxaccess_gateway.v1.MxaccessGateway.ReadBulkCommand getDefaultInstanceForType() { + return DEFAULT_INSTANCE; + } + + } + public interface PingCommandOrBuilder extends // @@protoc_insertion_point(interface_extends:mxaccess_gateway.v1.PingCommand) com.google.protobuf.MessageOrBuilder { @@ -38051,6 +46653,81 @@ public final class MxaccessGateway extends com.google.protobuf.GeneratedFile { */ mxaccess_gateway.v1.MxaccessGateway.QueryActiveAlarmsReplyPayloadOrBuilder getQueryActiveAlarmsOrBuilder(); + /** + * .mxaccess_gateway.v1.BulkWriteReply write_bulk = 36; + * @return Whether the writeBulk field is set. + */ + boolean hasWriteBulk(); + /** + * .mxaccess_gateway.v1.BulkWriteReply write_bulk = 36; + * @return The writeBulk. + */ + mxaccess_gateway.v1.MxaccessGateway.BulkWriteReply getWriteBulk(); + /** + * .mxaccess_gateway.v1.BulkWriteReply write_bulk = 36; + */ + mxaccess_gateway.v1.MxaccessGateway.BulkWriteReplyOrBuilder getWriteBulkOrBuilder(); + + /** + * .mxaccess_gateway.v1.BulkWriteReply write2_bulk = 37; + * @return Whether the write2Bulk field is set. + */ + boolean hasWrite2Bulk(); + /** + * .mxaccess_gateway.v1.BulkWriteReply write2_bulk = 37; + * @return The write2Bulk. + */ + mxaccess_gateway.v1.MxaccessGateway.BulkWriteReply getWrite2Bulk(); + /** + * .mxaccess_gateway.v1.BulkWriteReply write2_bulk = 37; + */ + mxaccess_gateway.v1.MxaccessGateway.BulkWriteReplyOrBuilder getWrite2BulkOrBuilder(); + + /** + * .mxaccess_gateway.v1.BulkWriteReply write_secured_bulk = 38; + * @return Whether the writeSecuredBulk field is set. + */ + boolean hasWriteSecuredBulk(); + /** + * .mxaccess_gateway.v1.BulkWriteReply write_secured_bulk = 38; + * @return The writeSecuredBulk. + */ + mxaccess_gateway.v1.MxaccessGateway.BulkWriteReply getWriteSecuredBulk(); + /** + * .mxaccess_gateway.v1.BulkWriteReply write_secured_bulk = 38; + */ + mxaccess_gateway.v1.MxaccessGateway.BulkWriteReplyOrBuilder getWriteSecuredBulkOrBuilder(); + + /** + * .mxaccess_gateway.v1.BulkWriteReply write_secured2_bulk = 39; + * @return Whether the writeSecured2Bulk field is set. + */ + boolean hasWriteSecured2Bulk(); + /** + * .mxaccess_gateway.v1.BulkWriteReply write_secured2_bulk = 39; + * @return The writeSecured2Bulk. + */ + mxaccess_gateway.v1.MxaccessGateway.BulkWriteReply getWriteSecured2Bulk(); + /** + * .mxaccess_gateway.v1.BulkWriteReply write_secured2_bulk = 39; + */ + mxaccess_gateway.v1.MxaccessGateway.BulkWriteReplyOrBuilder getWriteSecured2BulkOrBuilder(); + + /** + * .mxaccess_gateway.v1.BulkReadReply read_bulk = 40; + * @return Whether the readBulk field is set. + */ + boolean hasReadBulk(); + /** + * .mxaccess_gateway.v1.BulkReadReply read_bulk = 40; + * @return The readBulk. + */ + mxaccess_gateway.v1.MxaccessGateway.BulkReadReply getReadBulk(); + /** + * .mxaccess_gateway.v1.BulkReadReply read_bulk = 40; + */ + mxaccess_gateway.v1.MxaccessGateway.BulkReadReplyOrBuilder getReadBulkOrBuilder(); + /** * .mxaccess_gateway.v1.SessionStateReply session_state = 100; * @return Whether the sessionState field is set. @@ -38163,6 +46840,11 @@ public final class MxaccessGateway extends com.google.protobuf.GeneratedFile { UNSUBSCRIBE_BULK(33), ACKNOWLEDGE_ALARM(34), QUERY_ACTIVE_ALARMS(35), + WRITE_BULK(36), + WRITE2_BULK(37), + WRITE_SECURED_BULK(38), + WRITE_SECURED2_BULK(39), + READ_BULK(40), SESSION_STATE(100), WORKER_INFO(101), DRAIN_EVENTS(102), @@ -38199,6 +46881,11 @@ public final class MxaccessGateway extends com.google.protobuf.GeneratedFile { case 33: return UNSUBSCRIBE_BULK; case 34: return ACKNOWLEDGE_ALARM; case 35: return QUERY_ACTIVE_ALARMS; + case 36: return WRITE_BULK; + case 37: return WRITE2_BULK; + case 38: return WRITE_SECURED_BULK; + case 39: return WRITE_SECURED2_BULK; + case 40: return READ_BULK; case 100: return SESSION_STATE; case 101: return WORKER_INFO; case 102: return DRAIN_EVENTS; @@ -39008,6 +47695,161 @@ public final class MxaccessGateway extends com.google.protobuf.GeneratedFile { return mxaccess_gateway.v1.MxaccessGateway.QueryActiveAlarmsReplyPayload.getDefaultInstance(); } + public static final int WRITE_BULK_FIELD_NUMBER = 36; + /** + * .mxaccess_gateway.v1.BulkWriteReply write_bulk = 36; + * @return Whether the writeBulk field is set. + */ + @java.lang.Override + public boolean hasWriteBulk() { + return payloadCase_ == 36; + } + /** + * .mxaccess_gateway.v1.BulkWriteReply write_bulk = 36; + * @return The writeBulk. + */ + @java.lang.Override + public mxaccess_gateway.v1.MxaccessGateway.BulkWriteReply getWriteBulk() { + if (payloadCase_ == 36) { + return (mxaccess_gateway.v1.MxaccessGateway.BulkWriteReply) payload_; + } + return mxaccess_gateway.v1.MxaccessGateway.BulkWriteReply.getDefaultInstance(); + } + /** + * .mxaccess_gateway.v1.BulkWriteReply write_bulk = 36; + */ + @java.lang.Override + public mxaccess_gateway.v1.MxaccessGateway.BulkWriteReplyOrBuilder getWriteBulkOrBuilder() { + if (payloadCase_ == 36) { + return (mxaccess_gateway.v1.MxaccessGateway.BulkWriteReply) payload_; + } + return mxaccess_gateway.v1.MxaccessGateway.BulkWriteReply.getDefaultInstance(); + } + + public static final int WRITE2_BULK_FIELD_NUMBER = 37; + /** + * .mxaccess_gateway.v1.BulkWriteReply write2_bulk = 37; + * @return Whether the write2Bulk field is set. + */ + @java.lang.Override + public boolean hasWrite2Bulk() { + return payloadCase_ == 37; + } + /** + * .mxaccess_gateway.v1.BulkWriteReply write2_bulk = 37; + * @return The write2Bulk. + */ + @java.lang.Override + public mxaccess_gateway.v1.MxaccessGateway.BulkWriteReply getWrite2Bulk() { + if (payloadCase_ == 37) { + return (mxaccess_gateway.v1.MxaccessGateway.BulkWriteReply) payload_; + } + return mxaccess_gateway.v1.MxaccessGateway.BulkWriteReply.getDefaultInstance(); + } + /** + * .mxaccess_gateway.v1.BulkWriteReply write2_bulk = 37; + */ + @java.lang.Override + public mxaccess_gateway.v1.MxaccessGateway.BulkWriteReplyOrBuilder getWrite2BulkOrBuilder() { + if (payloadCase_ == 37) { + return (mxaccess_gateway.v1.MxaccessGateway.BulkWriteReply) payload_; + } + return mxaccess_gateway.v1.MxaccessGateway.BulkWriteReply.getDefaultInstance(); + } + + public static final int WRITE_SECURED_BULK_FIELD_NUMBER = 38; + /** + * .mxaccess_gateway.v1.BulkWriteReply write_secured_bulk = 38; + * @return Whether the writeSecuredBulk field is set. + */ + @java.lang.Override + public boolean hasWriteSecuredBulk() { + return payloadCase_ == 38; + } + /** + * .mxaccess_gateway.v1.BulkWriteReply write_secured_bulk = 38; + * @return The writeSecuredBulk. + */ + @java.lang.Override + public mxaccess_gateway.v1.MxaccessGateway.BulkWriteReply getWriteSecuredBulk() { + if (payloadCase_ == 38) { + return (mxaccess_gateway.v1.MxaccessGateway.BulkWriteReply) payload_; + } + return mxaccess_gateway.v1.MxaccessGateway.BulkWriteReply.getDefaultInstance(); + } + /** + * .mxaccess_gateway.v1.BulkWriteReply write_secured_bulk = 38; + */ + @java.lang.Override + public mxaccess_gateway.v1.MxaccessGateway.BulkWriteReplyOrBuilder getWriteSecuredBulkOrBuilder() { + if (payloadCase_ == 38) { + return (mxaccess_gateway.v1.MxaccessGateway.BulkWriteReply) payload_; + } + return mxaccess_gateway.v1.MxaccessGateway.BulkWriteReply.getDefaultInstance(); + } + + public static final int WRITE_SECURED2_BULK_FIELD_NUMBER = 39; + /** + * .mxaccess_gateway.v1.BulkWriteReply write_secured2_bulk = 39; + * @return Whether the writeSecured2Bulk field is set. + */ + @java.lang.Override + public boolean hasWriteSecured2Bulk() { + return payloadCase_ == 39; + } + /** + * .mxaccess_gateway.v1.BulkWriteReply write_secured2_bulk = 39; + * @return The writeSecured2Bulk. + */ + @java.lang.Override + public mxaccess_gateway.v1.MxaccessGateway.BulkWriteReply getWriteSecured2Bulk() { + if (payloadCase_ == 39) { + return (mxaccess_gateway.v1.MxaccessGateway.BulkWriteReply) payload_; + } + return mxaccess_gateway.v1.MxaccessGateway.BulkWriteReply.getDefaultInstance(); + } + /** + * .mxaccess_gateway.v1.BulkWriteReply write_secured2_bulk = 39; + */ + @java.lang.Override + public mxaccess_gateway.v1.MxaccessGateway.BulkWriteReplyOrBuilder getWriteSecured2BulkOrBuilder() { + if (payloadCase_ == 39) { + return (mxaccess_gateway.v1.MxaccessGateway.BulkWriteReply) payload_; + } + return mxaccess_gateway.v1.MxaccessGateway.BulkWriteReply.getDefaultInstance(); + } + + public static final int READ_BULK_FIELD_NUMBER = 40; + /** + * .mxaccess_gateway.v1.BulkReadReply read_bulk = 40; + * @return Whether the readBulk field is set. + */ + @java.lang.Override + public boolean hasReadBulk() { + return payloadCase_ == 40; + } + /** + * .mxaccess_gateway.v1.BulkReadReply read_bulk = 40; + * @return The readBulk. + */ + @java.lang.Override + public mxaccess_gateway.v1.MxaccessGateway.BulkReadReply getReadBulk() { + if (payloadCase_ == 40) { + return (mxaccess_gateway.v1.MxaccessGateway.BulkReadReply) payload_; + } + return mxaccess_gateway.v1.MxaccessGateway.BulkReadReply.getDefaultInstance(); + } + /** + * .mxaccess_gateway.v1.BulkReadReply read_bulk = 40; + */ + @java.lang.Override + public mxaccess_gateway.v1.MxaccessGateway.BulkReadReplyOrBuilder getReadBulkOrBuilder() { + if (payloadCase_ == 40) { + return (mxaccess_gateway.v1.MxaccessGateway.BulkReadReply) payload_; + } + return mxaccess_gateway.v1.MxaccessGateway.BulkReadReply.getDefaultInstance(); + } + public static final int SESSION_STATE_FIELD_NUMBER = 100; /** * .mxaccess_gateway.v1.SessionStateReply session_state = 100; @@ -39187,6 +48029,21 @@ public final class MxaccessGateway extends com.google.protobuf.GeneratedFile { if (payloadCase_ == 35) { output.writeMessage(35, (mxaccess_gateway.v1.MxaccessGateway.QueryActiveAlarmsReplyPayload) payload_); } + if (payloadCase_ == 36) { + output.writeMessage(36, (mxaccess_gateway.v1.MxaccessGateway.BulkWriteReply) payload_); + } + if (payloadCase_ == 37) { + output.writeMessage(37, (mxaccess_gateway.v1.MxaccessGateway.BulkWriteReply) payload_); + } + if (payloadCase_ == 38) { + output.writeMessage(38, (mxaccess_gateway.v1.MxaccessGateway.BulkWriteReply) payload_); + } + if (payloadCase_ == 39) { + output.writeMessage(39, (mxaccess_gateway.v1.MxaccessGateway.BulkWriteReply) payload_); + } + if (payloadCase_ == 40) { + output.writeMessage(40, (mxaccess_gateway.v1.MxaccessGateway.BulkReadReply) payload_); + } if (payloadCase_ == 100) { output.writeMessage(100, (mxaccess_gateway.v1.MxaccessGateway.SessionStateReply) payload_); } @@ -39298,6 +48155,26 @@ public final class MxaccessGateway extends com.google.protobuf.GeneratedFile { size += com.google.protobuf.CodedOutputStream .computeMessageSize(35, (mxaccess_gateway.v1.MxaccessGateway.QueryActiveAlarmsReplyPayload) payload_); } + if (payloadCase_ == 36) { + size += com.google.protobuf.CodedOutputStream + .computeMessageSize(36, (mxaccess_gateway.v1.MxaccessGateway.BulkWriteReply) payload_); + } + if (payloadCase_ == 37) { + size += com.google.protobuf.CodedOutputStream + .computeMessageSize(37, (mxaccess_gateway.v1.MxaccessGateway.BulkWriteReply) payload_); + } + if (payloadCase_ == 38) { + size += com.google.protobuf.CodedOutputStream + .computeMessageSize(38, (mxaccess_gateway.v1.MxaccessGateway.BulkWriteReply) payload_); + } + if (payloadCase_ == 39) { + size += com.google.protobuf.CodedOutputStream + .computeMessageSize(39, (mxaccess_gateway.v1.MxaccessGateway.BulkWriteReply) payload_); + } + if (payloadCase_ == 40) { + size += com.google.protobuf.CodedOutputStream + .computeMessageSize(40, (mxaccess_gateway.v1.MxaccessGateway.BulkReadReply) payload_); + } if (payloadCase_ == 100) { size += com.google.protobuf.CodedOutputStream .computeMessageSize(100, (mxaccess_gateway.v1.MxaccessGateway.SessionStateReply) payload_); @@ -39415,6 +48292,26 @@ public final class MxaccessGateway extends com.google.protobuf.GeneratedFile { if (!getQueryActiveAlarms() .equals(other.getQueryActiveAlarms())) return false; break; + case 36: + if (!getWriteBulk() + .equals(other.getWriteBulk())) return false; + break; + case 37: + if (!getWrite2Bulk() + .equals(other.getWrite2Bulk())) return false; + break; + case 38: + if (!getWriteSecuredBulk() + .equals(other.getWriteSecuredBulk())) return false; + break; + case 39: + if (!getWriteSecured2Bulk() + .equals(other.getWriteSecured2Bulk())) return false; + break; + case 40: + if (!getReadBulk() + .equals(other.getReadBulk())) return false; + break; case 100: if (!getSessionState() .equals(other.getSessionState())) return false; @@ -39530,6 +48427,26 @@ public final class MxaccessGateway extends com.google.protobuf.GeneratedFile { hash = (37 * hash) + QUERY_ACTIVE_ALARMS_FIELD_NUMBER; hash = (53 * hash) + getQueryActiveAlarms().hashCode(); break; + case 36: + hash = (37 * hash) + WRITE_BULK_FIELD_NUMBER; + hash = (53 * hash) + getWriteBulk().hashCode(); + break; + case 37: + hash = (37 * hash) + WRITE2_BULK_FIELD_NUMBER; + hash = (53 * hash) + getWrite2Bulk().hashCode(); + break; + case 38: + hash = (37 * hash) + WRITE_SECURED_BULK_FIELD_NUMBER; + hash = (53 * hash) + getWriteSecuredBulk().hashCode(); + break; + case 39: + hash = (37 * hash) + WRITE_SECURED2_BULK_FIELD_NUMBER; + hash = (53 * hash) + getWriteSecured2Bulk().hashCode(); + break; + case 40: + hash = (37 * hash) + READ_BULK_FIELD_NUMBER; + hash = (53 * hash) + getReadBulk().hashCode(); + break; case 100: hash = (37 * hash) + SESSION_STATE_FIELD_NUMBER; hash = (53 * hash) + getSessionState().hashCode(); @@ -39754,6 +48671,21 @@ public final class MxaccessGateway extends com.google.protobuf.GeneratedFile { if (queryActiveAlarmsBuilder_ != null) { queryActiveAlarmsBuilder_.clear(); } + if (writeBulkBuilder_ != null) { + writeBulkBuilder_.clear(); + } + if (write2BulkBuilder_ != null) { + write2BulkBuilder_.clear(); + } + if (writeSecuredBulkBuilder_ != null) { + writeSecuredBulkBuilder_.clear(); + } + if (writeSecured2BulkBuilder_ != null) { + writeSecured2BulkBuilder_.clear(); + } + if (readBulkBuilder_ != null) { + readBulkBuilder_.clear(); + } if (sessionStateBuilder_ != null) { sessionStateBuilder_.clear(); } @@ -39911,6 +48843,26 @@ public final class MxaccessGateway extends com.google.protobuf.GeneratedFile { queryActiveAlarmsBuilder_ != null) { result.payload_ = queryActiveAlarmsBuilder_.build(); } + if (payloadCase_ == 36 && + writeBulkBuilder_ != null) { + result.payload_ = writeBulkBuilder_.build(); + } + if (payloadCase_ == 37 && + write2BulkBuilder_ != null) { + result.payload_ = write2BulkBuilder_.build(); + } + if (payloadCase_ == 38 && + writeSecuredBulkBuilder_ != null) { + result.payload_ = writeSecuredBulkBuilder_.build(); + } + if (payloadCase_ == 39 && + writeSecured2BulkBuilder_ != null) { + result.payload_ = writeSecured2BulkBuilder_.build(); + } + if (payloadCase_ == 40 && + readBulkBuilder_ != null) { + result.payload_ = readBulkBuilder_.build(); + } if (payloadCase_ == 100 && sessionStateBuilder_ != null) { result.payload_ = sessionStateBuilder_.build(); @@ -40055,6 +49007,26 @@ public final class MxaccessGateway extends com.google.protobuf.GeneratedFile { mergeQueryActiveAlarms(other.getQueryActiveAlarms()); break; } + case WRITE_BULK: { + mergeWriteBulk(other.getWriteBulk()); + break; + } + case WRITE2_BULK: { + mergeWrite2Bulk(other.getWrite2Bulk()); + break; + } + case WRITE_SECURED_BULK: { + mergeWriteSecuredBulk(other.getWriteSecuredBulk()); + break; + } + case WRITE_SECURED2_BULK: { + mergeWriteSecured2Bulk(other.getWriteSecured2Bulk()); + break; + } + case READ_BULK: { + mergeReadBulk(other.getReadBulk()); + break; + } case SESSION_STATE: { mergeSessionState(other.getSessionState()); break; @@ -40261,6 +49233,41 @@ public final class MxaccessGateway extends com.google.protobuf.GeneratedFile { payloadCase_ = 35; break; } // case 282 + case 290: { + input.readMessage( + internalGetWriteBulkFieldBuilder().getBuilder(), + extensionRegistry); + payloadCase_ = 36; + break; + } // case 290 + case 298: { + input.readMessage( + internalGetWrite2BulkFieldBuilder().getBuilder(), + extensionRegistry); + payloadCase_ = 37; + break; + } // case 298 + case 306: { + input.readMessage( + internalGetWriteSecuredBulkFieldBuilder().getBuilder(), + extensionRegistry); + payloadCase_ = 38; + break; + } // case 306 + case 314: { + input.readMessage( + internalGetWriteSecured2BulkFieldBuilder().getBuilder(), + extensionRegistry); + payloadCase_ = 39; + break; + } // case 314 + case 322: { + input.readMessage( + internalGetReadBulkFieldBuilder().getBuilder(), + extensionRegistry); + payloadCase_ = 40; + break; + } // case 322 case 802: { input.readMessage( internalGetSessionStateFieldBuilder().getBuilder(), @@ -43507,6 +52514,716 @@ public final class MxaccessGateway extends com.google.protobuf.GeneratedFile { return queryActiveAlarmsBuilder_; } + private com.google.protobuf.SingleFieldBuilder< + mxaccess_gateway.v1.MxaccessGateway.BulkWriteReply, mxaccess_gateway.v1.MxaccessGateway.BulkWriteReply.Builder, mxaccess_gateway.v1.MxaccessGateway.BulkWriteReplyOrBuilder> writeBulkBuilder_; + /** + * .mxaccess_gateway.v1.BulkWriteReply write_bulk = 36; + * @return Whether the writeBulk field is set. + */ + @java.lang.Override + public boolean hasWriteBulk() { + return payloadCase_ == 36; + } + /** + * .mxaccess_gateway.v1.BulkWriteReply write_bulk = 36; + * @return The writeBulk. + */ + @java.lang.Override + public mxaccess_gateway.v1.MxaccessGateway.BulkWriteReply getWriteBulk() { + if (writeBulkBuilder_ == null) { + if (payloadCase_ == 36) { + return (mxaccess_gateway.v1.MxaccessGateway.BulkWriteReply) payload_; + } + return mxaccess_gateway.v1.MxaccessGateway.BulkWriteReply.getDefaultInstance(); + } else { + if (payloadCase_ == 36) { + return writeBulkBuilder_.getMessage(); + } + return mxaccess_gateway.v1.MxaccessGateway.BulkWriteReply.getDefaultInstance(); + } + } + /** + * .mxaccess_gateway.v1.BulkWriteReply write_bulk = 36; + */ + public Builder setWriteBulk(mxaccess_gateway.v1.MxaccessGateway.BulkWriteReply value) { + if (writeBulkBuilder_ == null) { + if (value == null) { + throw new NullPointerException(); + } + payload_ = value; + onChanged(); + } else { + writeBulkBuilder_.setMessage(value); + } + payloadCase_ = 36; + return this; + } + /** + * .mxaccess_gateway.v1.BulkWriteReply write_bulk = 36; + */ + public Builder setWriteBulk( + mxaccess_gateway.v1.MxaccessGateway.BulkWriteReply.Builder builderForValue) { + if (writeBulkBuilder_ == null) { + payload_ = builderForValue.build(); + onChanged(); + } else { + writeBulkBuilder_.setMessage(builderForValue.build()); + } + payloadCase_ = 36; + return this; + } + /** + * .mxaccess_gateway.v1.BulkWriteReply write_bulk = 36; + */ + public Builder mergeWriteBulk(mxaccess_gateway.v1.MxaccessGateway.BulkWriteReply value) { + if (writeBulkBuilder_ == null) { + if (payloadCase_ == 36 && + payload_ != mxaccess_gateway.v1.MxaccessGateway.BulkWriteReply.getDefaultInstance()) { + payload_ = mxaccess_gateway.v1.MxaccessGateway.BulkWriteReply.newBuilder((mxaccess_gateway.v1.MxaccessGateway.BulkWriteReply) payload_) + .mergeFrom(value).buildPartial(); + } else { + payload_ = value; + } + onChanged(); + } else { + if (payloadCase_ == 36) { + writeBulkBuilder_.mergeFrom(value); + } else { + writeBulkBuilder_.setMessage(value); + } + } + payloadCase_ = 36; + return this; + } + /** + * .mxaccess_gateway.v1.BulkWriteReply write_bulk = 36; + */ + public Builder clearWriteBulk() { + if (writeBulkBuilder_ == null) { + if (payloadCase_ == 36) { + payloadCase_ = 0; + payload_ = null; + onChanged(); + } + } else { + if (payloadCase_ == 36) { + payloadCase_ = 0; + payload_ = null; + } + writeBulkBuilder_.clear(); + } + return this; + } + /** + * .mxaccess_gateway.v1.BulkWriteReply write_bulk = 36; + */ + public mxaccess_gateway.v1.MxaccessGateway.BulkWriteReply.Builder getWriteBulkBuilder() { + return internalGetWriteBulkFieldBuilder().getBuilder(); + } + /** + * .mxaccess_gateway.v1.BulkWriteReply write_bulk = 36; + */ + @java.lang.Override + public mxaccess_gateway.v1.MxaccessGateway.BulkWriteReplyOrBuilder getWriteBulkOrBuilder() { + if ((payloadCase_ == 36) && (writeBulkBuilder_ != null)) { + return writeBulkBuilder_.getMessageOrBuilder(); + } else { + if (payloadCase_ == 36) { + return (mxaccess_gateway.v1.MxaccessGateway.BulkWriteReply) payload_; + } + return mxaccess_gateway.v1.MxaccessGateway.BulkWriteReply.getDefaultInstance(); + } + } + /** + * .mxaccess_gateway.v1.BulkWriteReply write_bulk = 36; + */ + private com.google.protobuf.SingleFieldBuilder< + mxaccess_gateway.v1.MxaccessGateway.BulkWriteReply, mxaccess_gateway.v1.MxaccessGateway.BulkWriteReply.Builder, mxaccess_gateway.v1.MxaccessGateway.BulkWriteReplyOrBuilder> + internalGetWriteBulkFieldBuilder() { + if (writeBulkBuilder_ == null) { + if (!(payloadCase_ == 36)) { + payload_ = mxaccess_gateway.v1.MxaccessGateway.BulkWriteReply.getDefaultInstance(); + } + writeBulkBuilder_ = new com.google.protobuf.SingleFieldBuilder< + mxaccess_gateway.v1.MxaccessGateway.BulkWriteReply, mxaccess_gateway.v1.MxaccessGateway.BulkWriteReply.Builder, mxaccess_gateway.v1.MxaccessGateway.BulkWriteReplyOrBuilder>( + (mxaccess_gateway.v1.MxaccessGateway.BulkWriteReply) payload_, + getParentForChildren(), + isClean()); + payload_ = null; + } + payloadCase_ = 36; + onChanged(); + return writeBulkBuilder_; + } + + private com.google.protobuf.SingleFieldBuilder< + mxaccess_gateway.v1.MxaccessGateway.BulkWriteReply, mxaccess_gateway.v1.MxaccessGateway.BulkWriteReply.Builder, mxaccess_gateway.v1.MxaccessGateway.BulkWriteReplyOrBuilder> write2BulkBuilder_; + /** + * .mxaccess_gateway.v1.BulkWriteReply write2_bulk = 37; + * @return Whether the write2Bulk field is set. + */ + @java.lang.Override + public boolean hasWrite2Bulk() { + return payloadCase_ == 37; + } + /** + * .mxaccess_gateway.v1.BulkWriteReply write2_bulk = 37; + * @return The write2Bulk. + */ + @java.lang.Override + public mxaccess_gateway.v1.MxaccessGateway.BulkWriteReply getWrite2Bulk() { + if (write2BulkBuilder_ == null) { + if (payloadCase_ == 37) { + return (mxaccess_gateway.v1.MxaccessGateway.BulkWriteReply) payload_; + } + return mxaccess_gateway.v1.MxaccessGateway.BulkWriteReply.getDefaultInstance(); + } else { + if (payloadCase_ == 37) { + return write2BulkBuilder_.getMessage(); + } + return mxaccess_gateway.v1.MxaccessGateway.BulkWriteReply.getDefaultInstance(); + } + } + /** + * .mxaccess_gateway.v1.BulkWriteReply write2_bulk = 37; + */ + public Builder setWrite2Bulk(mxaccess_gateway.v1.MxaccessGateway.BulkWriteReply value) { + if (write2BulkBuilder_ == null) { + if (value == null) { + throw new NullPointerException(); + } + payload_ = value; + onChanged(); + } else { + write2BulkBuilder_.setMessage(value); + } + payloadCase_ = 37; + return this; + } + /** + * .mxaccess_gateway.v1.BulkWriteReply write2_bulk = 37; + */ + public Builder setWrite2Bulk( + mxaccess_gateway.v1.MxaccessGateway.BulkWriteReply.Builder builderForValue) { + if (write2BulkBuilder_ == null) { + payload_ = builderForValue.build(); + onChanged(); + } else { + write2BulkBuilder_.setMessage(builderForValue.build()); + } + payloadCase_ = 37; + return this; + } + /** + * .mxaccess_gateway.v1.BulkWriteReply write2_bulk = 37; + */ + public Builder mergeWrite2Bulk(mxaccess_gateway.v1.MxaccessGateway.BulkWriteReply value) { + if (write2BulkBuilder_ == null) { + if (payloadCase_ == 37 && + payload_ != mxaccess_gateway.v1.MxaccessGateway.BulkWriteReply.getDefaultInstance()) { + payload_ = mxaccess_gateway.v1.MxaccessGateway.BulkWriteReply.newBuilder((mxaccess_gateway.v1.MxaccessGateway.BulkWriteReply) payload_) + .mergeFrom(value).buildPartial(); + } else { + payload_ = value; + } + onChanged(); + } else { + if (payloadCase_ == 37) { + write2BulkBuilder_.mergeFrom(value); + } else { + write2BulkBuilder_.setMessage(value); + } + } + payloadCase_ = 37; + return this; + } + /** + * .mxaccess_gateway.v1.BulkWriteReply write2_bulk = 37; + */ + public Builder clearWrite2Bulk() { + if (write2BulkBuilder_ == null) { + if (payloadCase_ == 37) { + payloadCase_ = 0; + payload_ = null; + onChanged(); + } + } else { + if (payloadCase_ == 37) { + payloadCase_ = 0; + payload_ = null; + } + write2BulkBuilder_.clear(); + } + return this; + } + /** + * .mxaccess_gateway.v1.BulkWriteReply write2_bulk = 37; + */ + public mxaccess_gateway.v1.MxaccessGateway.BulkWriteReply.Builder getWrite2BulkBuilder() { + return internalGetWrite2BulkFieldBuilder().getBuilder(); + } + /** + * .mxaccess_gateway.v1.BulkWriteReply write2_bulk = 37; + */ + @java.lang.Override + public mxaccess_gateway.v1.MxaccessGateway.BulkWriteReplyOrBuilder getWrite2BulkOrBuilder() { + if ((payloadCase_ == 37) && (write2BulkBuilder_ != null)) { + return write2BulkBuilder_.getMessageOrBuilder(); + } else { + if (payloadCase_ == 37) { + return (mxaccess_gateway.v1.MxaccessGateway.BulkWriteReply) payload_; + } + return mxaccess_gateway.v1.MxaccessGateway.BulkWriteReply.getDefaultInstance(); + } + } + /** + * .mxaccess_gateway.v1.BulkWriteReply write2_bulk = 37; + */ + private com.google.protobuf.SingleFieldBuilder< + mxaccess_gateway.v1.MxaccessGateway.BulkWriteReply, mxaccess_gateway.v1.MxaccessGateway.BulkWriteReply.Builder, mxaccess_gateway.v1.MxaccessGateway.BulkWriteReplyOrBuilder> + internalGetWrite2BulkFieldBuilder() { + if (write2BulkBuilder_ == null) { + if (!(payloadCase_ == 37)) { + payload_ = mxaccess_gateway.v1.MxaccessGateway.BulkWriteReply.getDefaultInstance(); + } + write2BulkBuilder_ = new com.google.protobuf.SingleFieldBuilder< + mxaccess_gateway.v1.MxaccessGateway.BulkWriteReply, mxaccess_gateway.v1.MxaccessGateway.BulkWriteReply.Builder, mxaccess_gateway.v1.MxaccessGateway.BulkWriteReplyOrBuilder>( + (mxaccess_gateway.v1.MxaccessGateway.BulkWriteReply) payload_, + getParentForChildren(), + isClean()); + payload_ = null; + } + payloadCase_ = 37; + onChanged(); + return write2BulkBuilder_; + } + + private com.google.protobuf.SingleFieldBuilder< + mxaccess_gateway.v1.MxaccessGateway.BulkWriteReply, mxaccess_gateway.v1.MxaccessGateway.BulkWriteReply.Builder, mxaccess_gateway.v1.MxaccessGateway.BulkWriteReplyOrBuilder> writeSecuredBulkBuilder_; + /** + * .mxaccess_gateway.v1.BulkWriteReply write_secured_bulk = 38; + * @return Whether the writeSecuredBulk field is set. + */ + @java.lang.Override + public boolean hasWriteSecuredBulk() { + return payloadCase_ == 38; + } + /** + * .mxaccess_gateway.v1.BulkWriteReply write_secured_bulk = 38; + * @return The writeSecuredBulk. + */ + @java.lang.Override + public mxaccess_gateway.v1.MxaccessGateway.BulkWriteReply getWriteSecuredBulk() { + if (writeSecuredBulkBuilder_ == null) { + if (payloadCase_ == 38) { + return (mxaccess_gateway.v1.MxaccessGateway.BulkWriteReply) payload_; + } + return mxaccess_gateway.v1.MxaccessGateway.BulkWriteReply.getDefaultInstance(); + } else { + if (payloadCase_ == 38) { + return writeSecuredBulkBuilder_.getMessage(); + } + return mxaccess_gateway.v1.MxaccessGateway.BulkWriteReply.getDefaultInstance(); + } + } + /** + * .mxaccess_gateway.v1.BulkWriteReply write_secured_bulk = 38; + */ + public Builder setWriteSecuredBulk(mxaccess_gateway.v1.MxaccessGateway.BulkWriteReply value) { + if (writeSecuredBulkBuilder_ == null) { + if (value == null) { + throw new NullPointerException(); + } + payload_ = value; + onChanged(); + } else { + writeSecuredBulkBuilder_.setMessage(value); + } + payloadCase_ = 38; + return this; + } + /** + * .mxaccess_gateway.v1.BulkWriteReply write_secured_bulk = 38; + */ + public Builder setWriteSecuredBulk( + mxaccess_gateway.v1.MxaccessGateway.BulkWriteReply.Builder builderForValue) { + if (writeSecuredBulkBuilder_ == null) { + payload_ = builderForValue.build(); + onChanged(); + } else { + writeSecuredBulkBuilder_.setMessage(builderForValue.build()); + } + payloadCase_ = 38; + return this; + } + /** + * .mxaccess_gateway.v1.BulkWriteReply write_secured_bulk = 38; + */ + public Builder mergeWriteSecuredBulk(mxaccess_gateway.v1.MxaccessGateway.BulkWriteReply value) { + if (writeSecuredBulkBuilder_ == null) { + if (payloadCase_ == 38 && + payload_ != mxaccess_gateway.v1.MxaccessGateway.BulkWriteReply.getDefaultInstance()) { + payload_ = mxaccess_gateway.v1.MxaccessGateway.BulkWriteReply.newBuilder((mxaccess_gateway.v1.MxaccessGateway.BulkWriteReply) payload_) + .mergeFrom(value).buildPartial(); + } else { + payload_ = value; + } + onChanged(); + } else { + if (payloadCase_ == 38) { + writeSecuredBulkBuilder_.mergeFrom(value); + } else { + writeSecuredBulkBuilder_.setMessage(value); + } + } + payloadCase_ = 38; + return this; + } + /** + * .mxaccess_gateway.v1.BulkWriteReply write_secured_bulk = 38; + */ + public Builder clearWriteSecuredBulk() { + if (writeSecuredBulkBuilder_ == null) { + if (payloadCase_ == 38) { + payloadCase_ = 0; + payload_ = null; + onChanged(); + } + } else { + if (payloadCase_ == 38) { + payloadCase_ = 0; + payload_ = null; + } + writeSecuredBulkBuilder_.clear(); + } + return this; + } + /** + * .mxaccess_gateway.v1.BulkWriteReply write_secured_bulk = 38; + */ + public mxaccess_gateway.v1.MxaccessGateway.BulkWriteReply.Builder getWriteSecuredBulkBuilder() { + return internalGetWriteSecuredBulkFieldBuilder().getBuilder(); + } + /** + * .mxaccess_gateway.v1.BulkWriteReply write_secured_bulk = 38; + */ + @java.lang.Override + public mxaccess_gateway.v1.MxaccessGateway.BulkWriteReplyOrBuilder getWriteSecuredBulkOrBuilder() { + if ((payloadCase_ == 38) && (writeSecuredBulkBuilder_ != null)) { + return writeSecuredBulkBuilder_.getMessageOrBuilder(); + } else { + if (payloadCase_ == 38) { + return (mxaccess_gateway.v1.MxaccessGateway.BulkWriteReply) payload_; + } + return mxaccess_gateway.v1.MxaccessGateway.BulkWriteReply.getDefaultInstance(); + } + } + /** + * .mxaccess_gateway.v1.BulkWriteReply write_secured_bulk = 38; + */ + private com.google.protobuf.SingleFieldBuilder< + mxaccess_gateway.v1.MxaccessGateway.BulkWriteReply, mxaccess_gateway.v1.MxaccessGateway.BulkWriteReply.Builder, mxaccess_gateway.v1.MxaccessGateway.BulkWriteReplyOrBuilder> + internalGetWriteSecuredBulkFieldBuilder() { + if (writeSecuredBulkBuilder_ == null) { + if (!(payloadCase_ == 38)) { + payload_ = mxaccess_gateway.v1.MxaccessGateway.BulkWriteReply.getDefaultInstance(); + } + writeSecuredBulkBuilder_ = new com.google.protobuf.SingleFieldBuilder< + mxaccess_gateway.v1.MxaccessGateway.BulkWriteReply, mxaccess_gateway.v1.MxaccessGateway.BulkWriteReply.Builder, mxaccess_gateway.v1.MxaccessGateway.BulkWriteReplyOrBuilder>( + (mxaccess_gateway.v1.MxaccessGateway.BulkWriteReply) payload_, + getParentForChildren(), + isClean()); + payload_ = null; + } + payloadCase_ = 38; + onChanged(); + return writeSecuredBulkBuilder_; + } + + private com.google.protobuf.SingleFieldBuilder< + mxaccess_gateway.v1.MxaccessGateway.BulkWriteReply, mxaccess_gateway.v1.MxaccessGateway.BulkWriteReply.Builder, mxaccess_gateway.v1.MxaccessGateway.BulkWriteReplyOrBuilder> writeSecured2BulkBuilder_; + /** + * .mxaccess_gateway.v1.BulkWriteReply write_secured2_bulk = 39; + * @return Whether the writeSecured2Bulk field is set. + */ + @java.lang.Override + public boolean hasWriteSecured2Bulk() { + return payloadCase_ == 39; + } + /** + * .mxaccess_gateway.v1.BulkWriteReply write_secured2_bulk = 39; + * @return The writeSecured2Bulk. + */ + @java.lang.Override + public mxaccess_gateway.v1.MxaccessGateway.BulkWriteReply getWriteSecured2Bulk() { + if (writeSecured2BulkBuilder_ == null) { + if (payloadCase_ == 39) { + return (mxaccess_gateway.v1.MxaccessGateway.BulkWriteReply) payload_; + } + return mxaccess_gateway.v1.MxaccessGateway.BulkWriteReply.getDefaultInstance(); + } else { + if (payloadCase_ == 39) { + return writeSecured2BulkBuilder_.getMessage(); + } + return mxaccess_gateway.v1.MxaccessGateway.BulkWriteReply.getDefaultInstance(); + } + } + /** + * .mxaccess_gateway.v1.BulkWriteReply write_secured2_bulk = 39; + */ + public Builder setWriteSecured2Bulk(mxaccess_gateway.v1.MxaccessGateway.BulkWriteReply value) { + if (writeSecured2BulkBuilder_ == null) { + if (value == null) { + throw new NullPointerException(); + } + payload_ = value; + onChanged(); + } else { + writeSecured2BulkBuilder_.setMessage(value); + } + payloadCase_ = 39; + return this; + } + /** + * .mxaccess_gateway.v1.BulkWriteReply write_secured2_bulk = 39; + */ + public Builder setWriteSecured2Bulk( + mxaccess_gateway.v1.MxaccessGateway.BulkWriteReply.Builder builderForValue) { + if (writeSecured2BulkBuilder_ == null) { + payload_ = builderForValue.build(); + onChanged(); + } else { + writeSecured2BulkBuilder_.setMessage(builderForValue.build()); + } + payloadCase_ = 39; + return this; + } + /** + * .mxaccess_gateway.v1.BulkWriteReply write_secured2_bulk = 39; + */ + public Builder mergeWriteSecured2Bulk(mxaccess_gateway.v1.MxaccessGateway.BulkWriteReply value) { + if (writeSecured2BulkBuilder_ == null) { + if (payloadCase_ == 39 && + payload_ != mxaccess_gateway.v1.MxaccessGateway.BulkWriteReply.getDefaultInstance()) { + payload_ = mxaccess_gateway.v1.MxaccessGateway.BulkWriteReply.newBuilder((mxaccess_gateway.v1.MxaccessGateway.BulkWriteReply) payload_) + .mergeFrom(value).buildPartial(); + } else { + payload_ = value; + } + onChanged(); + } else { + if (payloadCase_ == 39) { + writeSecured2BulkBuilder_.mergeFrom(value); + } else { + writeSecured2BulkBuilder_.setMessage(value); + } + } + payloadCase_ = 39; + return this; + } + /** + * .mxaccess_gateway.v1.BulkWriteReply write_secured2_bulk = 39; + */ + public Builder clearWriteSecured2Bulk() { + if (writeSecured2BulkBuilder_ == null) { + if (payloadCase_ == 39) { + payloadCase_ = 0; + payload_ = null; + onChanged(); + } + } else { + if (payloadCase_ == 39) { + payloadCase_ = 0; + payload_ = null; + } + writeSecured2BulkBuilder_.clear(); + } + return this; + } + /** + * .mxaccess_gateway.v1.BulkWriteReply write_secured2_bulk = 39; + */ + public mxaccess_gateway.v1.MxaccessGateway.BulkWriteReply.Builder getWriteSecured2BulkBuilder() { + return internalGetWriteSecured2BulkFieldBuilder().getBuilder(); + } + /** + * .mxaccess_gateway.v1.BulkWriteReply write_secured2_bulk = 39; + */ + @java.lang.Override + public mxaccess_gateway.v1.MxaccessGateway.BulkWriteReplyOrBuilder getWriteSecured2BulkOrBuilder() { + if ((payloadCase_ == 39) && (writeSecured2BulkBuilder_ != null)) { + return writeSecured2BulkBuilder_.getMessageOrBuilder(); + } else { + if (payloadCase_ == 39) { + return (mxaccess_gateway.v1.MxaccessGateway.BulkWriteReply) payload_; + } + return mxaccess_gateway.v1.MxaccessGateway.BulkWriteReply.getDefaultInstance(); + } + } + /** + * .mxaccess_gateway.v1.BulkWriteReply write_secured2_bulk = 39; + */ + private com.google.protobuf.SingleFieldBuilder< + mxaccess_gateway.v1.MxaccessGateway.BulkWriteReply, mxaccess_gateway.v1.MxaccessGateway.BulkWriteReply.Builder, mxaccess_gateway.v1.MxaccessGateway.BulkWriteReplyOrBuilder> + internalGetWriteSecured2BulkFieldBuilder() { + if (writeSecured2BulkBuilder_ == null) { + if (!(payloadCase_ == 39)) { + payload_ = mxaccess_gateway.v1.MxaccessGateway.BulkWriteReply.getDefaultInstance(); + } + writeSecured2BulkBuilder_ = new com.google.protobuf.SingleFieldBuilder< + mxaccess_gateway.v1.MxaccessGateway.BulkWriteReply, mxaccess_gateway.v1.MxaccessGateway.BulkWriteReply.Builder, mxaccess_gateway.v1.MxaccessGateway.BulkWriteReplyOrBuilder>( + (mxaccess_gateway.v1.MxaccessGateway.BulkWriteReply) payload_, + getParentForChildren(), + isClean()); + payload_ = null; + } + payloadCase_ = 39; + onChanged(); + return writeSecured2BulkBuilder_; + } + + private com.google.protobuf.SingleFieldBuilder< + mxaccess_gateway.v1.MxaccessGateway.BulkReadReply, mxaccess_gateway.v1.MxaccessGateway.BulkReadReply.Builder, mxaccess_gateway.v1.MxaccessGateway.BulkReadReplyOrBuilder> readBulkBuilder_; + /** + * .mxaccess_gateway.v1.BulkReadReply read_bulk = 40; + * @return Whether the readBulk field is set. + */ + @java.lang.Override + public boolean hasReadBulk() { + return payloadCase_ == 40; + } + /** + * .mxaccess_gateway.v1.BulkReadReply read_bulk = 40; + * @return The readBulk. + */ + @java.lang.Override + public mxaccess_gateway.v1.MxaccessGateway.BulkReadReply getReadBulk() { + if (readBulkBuilder_ == null) { + if (payloadCase_ == 40) { + return (mxaccess_gateway.v1.MxaccessGateway.BulkReadReply) payload_; + } + return mxaccess_gateway.v1.MxaccessGateway.BulkReadReply.getDefaultInstance(); + } else { + if (payloadCase_ == 40) { + return readBulkBuilder_.getMessage(); + } + return mxaccess_gateway.v1.MxaccessGateway.BulkReadReply.getDefaultInstance(); + } + } + /** + * .mxaccess_gateway.v1.BulkReadReply read_bulk = 40; + */ + public Builder setReadBulk(mxaccess_gateway.v1.MxaccessGateway.BulkReadReply value) { + if (readBulkBuilder_ == null) { + if (value == null) { + throw new NullPointerException(); + } + payload_ = value; + onChanged(); + } else { + readBulkBuilder_.setMessage(value); + } + payloadCase_ = 40; + return this; + } + /** + * .mxaccess_gateway.v1.BulkReadReply read_bulk = 40; + */ + public Builder setReadBulk( + mxaccess_gateway.v1.MxaccessGateway.BulkReadReply.Builder builderForValue) { + if (readBulkBuilder_ == null) { + payload_ = builderForValue.build(); + onChanged(); + } else { + readBulkBuilder_.setMessage(builderForValue.build()); + } + payloadCase_ = 40; + return this; + } + /** + * .mxaccess_gateway.v1.BulkReadReply read_bulk = 40; + */ + public Builder mergeReadBulk(mxaccess_gateway.v1.MxaccessGateway.BulkReadReply value) { + if (readBulkBuilder_ == null) { + if (payloadCase_ == 40 && + payload_ != mxaccess_gateway.v1.MxaccessGateway.BulkReadReply.getDefaultInstance()) { + payload_ = mxaccess_gateway.v1.MxaccessGateway.BulkReadReply.newBuilder((mxaccess_gateway.v1.MxaccessGateway.BulkReadReply) payload_) + .mergeFrom(value).buildPartial(); + } else { + payload_ = value; + } + onChanged(); + } else { + if (payloadCase_ == 40) { + readBulkBuilder_.mergeFrom(value); + } else { + readBulkBuilder_.setMessage(value); + } + } + payloadCase_ = 40; + return this; + } + /** + * .mxaccess_gateway.v1.BulkReadReply read_bulk = 40; + */ + public Builder clearReadBulk() { + if (readBulkBuilder_ == null) { + if (payloadCase_ == 40) { + payloadCase_ = 0; + payload_ = null; + onChanged(); + } + } else { + if (payloadCase_ == 40) { + payloadCase_ = 0; + payload_ = null; + } + readBulkBuilder_.clear(); + } + return this; + } + /** + * .mxaccess_gateway.v1.BulkReadReply read_bulk = 40; + */ + public mxaccess_gateway.v1.MxaccessGateway.BulkReadReply.Builder getReadBulkBuilder() { + return internalGetReadBulkFieldBuilder().getBuilder(); + } + /** + * .mxaccess_gateway.v1.BulkReadReply read_bulk = 40; + */ + @java.lang.Override + public mxaccess_gateway.v1.MxaccessGateway.BulkReadReplyOrBuilder getReadBulkOrBuilder() { + if ((payloadCase_ == 40) && (readBulkBuilder_ != null)) { + return readBulkBuilder_.getMessageOrBuilder(); + } else { + if (payloadCase_ == 40) { + return (mxaccess_gateway.v1.MxaccessGateway.BulkReadReply) payload_; + } + return mxaccess_gateway.v1.MxaccessGateway.BulkReadReply.getDefaultInstance(); + } + } + /** + * .mxaccess_gateway.v1.BulkReadReply read_bulk = 40; + */ + private com.google.protobuf.SingleFieldBuilder< + mxaccess_gateway.v1.MxaccessGateway.BulkReadReply, mxaccess_gateway.v1.MxaccessGateway.BulkReadReply.Builder, mxaccess_gateway.v1.MxaccessGateway.BulkReadReplyOrBuilder> + internalGetReadBulkFieldBuilder() { + if (readBulkBuilder_ == null) { + if (!(payloadCase_ == 40)) { + payload_ = mxaccess_gateway.v1.MxaccessGateway.BulkReadReply.getDefaultInstance(); + } + readBulkBuilder_ = new com.google.protobuf.SingleFieldBuilder< + mxaccess_gateway.v1.MxaccessGateway.BulkReadReply, mxaccess_gateway.v1.MxaccessGateway.BulkReadReply.Builder, mxaccess_gateway.v1.MxaccessGateway.BulkReadReplyOrBuilder>( + (mxaccess_gateway.v1.MxaccessGateway.BulkReadReply) payload_, + getParentForChildren(), + isClean()); + payload_ = null; + } + payloadCase_ = 40; + onChanged(); + return readBulkBuilder_; + } + private com.google.protobuf.SingleFieldBuilder< mxaccess_gateway.v1.MxaccessGateway.SessionStateReply, mxaccess_gateway.v1.MxaccessGateway.SessionStateReply.Builder, mxaccess_gateway.v1.MxaccessGateway.SessionStateReplyOrBuilder> sessionStateBuilder_; /** @@ -49343,6 +59060,4530 @@ public final class MxaccessGateway extends com.google.protobuf.GeneratedFile { } + public interface BulkWriteResultOrBuilder extends + // @@protoc_insertion_point(interface_extends:mxaccess_gateway.v1.BulkWriteResult) + com.google.protobuf.MessageOrBuilder { + + /** + * int32 server_handle = 1; + * @return The serverHandle. + */ + int getServerHandle(); + + /** + * int32 item_handle = 2; + * @return The itemHandle. + */ + int getItemHandle(); + + /** + * bool was_successful = 3; + * @return The wasSuccessful. + */ + boolean getWasSuccessful(); + + /** + * optional int32 hresult = 4; + * @return Whether the hresult field is set. + */ + boolean hasHresult(); + /** + * optional int32 hresult = 4; + * @return The hresult. + */ + int getHresult(); + + /** + * repeated .mxaccess_gateway.v1.MxStatusProxy statuses = 5; + */ + java.util.List + getStatusesList(); + /** + * repeated .mxaccess_gateway.v1.MxStatusProxy statuses = 5; + */ + mxaccess_gateway.v1.MxaccessGateway.MxStatusProxy getStatuses(int index); + /** + * repeated .mxaccess_gateway.v1.MxStatusProxy statuses = 5; + */ + int getStatusesCount(); + /** + * repeated .mxaccess_gateway.v1.MxStatusProxy statuses = 5; + */ + java.util.List + getStatusesOrBuilderList(); + /** + * repeated .mxaccess_gateway.v1.MxStatusProxy statuses = 5; + */ + mxaccess_gateway.v1.MxaccessGateway.MxStatusProxyOrBuilder getStatusesOrBuilder( + int index); + + /** + * string error_message = 6; + * @return The errorMessage. + */ + java.lang.String getErrorMessage(); + /** + * string error_message = 6; + * @return The bytes for errorMessage. + */ + com.google.protobuf.ByteString + getErrorMessageBytes(); + } + /** + *
+   * Per-item result for the four bulk write families. `item_handle` mirrors the
+   * request entry's item_handle so callers can correlate inputs to outputs even
+   * when the gateway's tag-allowlist filter dropped some entries before reaching
+   * the worker. Per-item failures populate `error_message` + `hresult` and never
+   * raise — callers iterate and inspect each entry.
+   * 
+ * + * Protobuf type {@code mxaccess_gateway.v1.BulkWriteResult} + */ + public static final class BulkWriteResult extends + com.google.protobuf.GeneratedMessage implements + // @@protoc_insertion_point(message_implements:mxaccess_gateway.v1.BulkWriteResult) + BulkWriteResultOrBuilder { + private static final long serialVersionUID = 0L; + static { + com.google.protobuf.RuntimeVersion.validateProtobufGencodeVersion( + com.google.protobuf.RuntimeVersion.RuntimeDomain.PUBLIC, + /* major= */ 4, + /* minor= */ 33, + /* patch= */ 1, + /* suffix= */ "", + "BulkWriteResult"); + } + // Use BulkWriteResult.newBuilder() to construct. + private BulkWriteResult(com.google.protobuf.GeneratedMessage.Builder builder) { + super(builder); + } + private BulkWriteResult() { + statuses_ = java.util.Collections.emptyList(); + errorMessage_ = ""; + } + + public static final com.google.protobuf.Descriptors.Descriptor + getDescriptor() { + return mxaccess_gateway.v1.MxaccessGateway.internal_static_mxaccess_gateway_v1_BulkWriteResult_descriptor; + } + + @java.lang.Override + protected com.google.protobuf.GeneratedMessage.FieldAccessorTable + internalGetFieldAccessorTable() { + return mxaccess_gateway.v1.MxaccessGateway.internal_static_mxaccess_gateway_v1_BulkWriteResult_fieldAccessorTable + .ensureFieldAccessorsInitialized( + mxaccess_gateway.v1.MxaccessGateway.BulkWriteResult.class, mxaccess_gateway.v1.MxaccessGateway.BulkWriteResult.Builder.class); + } + + private int bitField0_; + public static final int SERVER_HANDLE_FIELD_NUMBER = 1; + private int serverHandle_ = 0; + /** + * int32 server_handle = 1; + * @return The serverHandle. + */ + @java.lang.Override + public int getServerHandle() { + return serverHandle_; + } + + public static final int ITEM_HANDLE_FIELD_NUMBER = 2; + private int itemHandle_ = 0; + /** + * int32 item_handle = 2; + * @return The itemHandle. + */ + @java.lang.Override + public int getItemHandle() { + return itemHandle_; + } + + public static final int WAS_SUCCESSFUL_FIELD_NUMBER = 3; + private boolean wasSuccessful_ = false; + /** + * bool was_successful = 3; + * @return The wasSuccessful. + */ + @java.lang.Override + public boolean getWasSuccessful() { + return wasSuccessful_; + } + + public static final int HRESULT_FIELD_NUMBER = 4; + private int hresult_ = 0; + /** + * optional int32 hresult = 4; + * @return Whether the hresult field is set. + */ + @java.lang.Override + public boolean hasHresult() { + return ((bitField0_ & 0x00000001) != 0); + } + /** + * optional int32 hresult = 4; + * @return The hresult. + */ + @java.lang.Override + public int getHresult() { + return hresult_; + } + + public static final int STATUSES_FIELD_NUMBER = 5; + @SuppressWarnings("serial") + private java.util.List statuses_; + /** + * repeated .mxaccess_gateway.v1.MxStatusProxy statuses = 5; + */ + @java.lang.Override + public java.util.List getStatusesList() { + return statuses_; + } + /** + * repeated .mxaccess_gateway.v1.MxStatusProxy statuses = 5; + */ + @java.lang.Override + public java.util.List + getStatusesOrBuilderList() { + return statuses_; + } + /** + * repeated .mxaccess_gateway.v1.MxStatusProxy statuses = 5; + */ + @java.lang.Override + public int getStatusesCount() { + return statuses_.size(); + } + /** + * repeated .mxaccess_gateway.v1.MxStatusProxy statuses = 5; + */ + @java.lang.Override + public mxaccess_gateway.v1.MxaccessGateway.MxStatusProxy getStatuses(int index) { + return statuses_.get(index); + } + /** + * repeated .mxaccess_gateway.v1.MxStatusProxy statuses = 5; + */ + @java.lang.Override + public mxaccess_gateway.v1.MxaccessGateway.MxStatusProxyOrBuilder getStatusesOrBuilder( + int index) { + return statuses_.get(index); + } + + public static final int ERROR_MESSAGE_FIELD_NUMBER = 6; + @SuppressWarnings("serial") + private volatile java.lang.Object errorMessage_ = ""; + /** + * string error_message = 6; + * @return The errorMessage. + */ + @java.lang.Override + public java.lang.String getErrorMessage() { + java.lang.Object ref = errorMessage_; + if (ref instanceof java.lang.String) { + return (java.lang.String) ref; + } else { + com.google.protobuf.ByteString bs = + (com.google.protobuf.ByteString) ref; + java.lang.String s = bs.toStringUtf8(); + errorMessage_ = s; + return s; + } + } + /** + * string error_message = 6; + * @return The bytes for errorMessage. + */ + @java.lang.Override + public com.google.protobuf.ByteString + getErrorMessageBytes() { + java.lang.Object ref = errorMessage_; + if (ref instanceof java.lang.String) { + com.google.protobuf.ByteString b = + com.google.protobuf.ByteString.copyFromUtf8( + (java.lang.String) ref); + errorMessage_ = b; + return b; + } else { + return (com.google.protobuf.ByteString) ref; + } + } + + private byte memoizedIsInitialized = -1; + @java.lang.Override + public final boolean isInitialized() { + byte isInitialized = memoizedIsInitialized; + if (isInitialized == 1) return true; + if (isInitialized == 0) return false; + + memoizedIsInitialized = 1; + return true; + } + + @java.lang.Override + public void writeTo(com.google.protobuf.CodedOutputStream output) + throws java.io.IOException { + if (serverHandle_ != 0) { + output.writeInt32(1, serverHandle_); + } + if (itemHandle_ != 0) { + output.writeInt32(2, itemHandle_); + } + if (wasSuccessful_ != false) { + output.writeBool(3, wasSuccessful_); + } + if (((bitField0_ & 0x00000001) != 0)) { + output.writeInt32(4, hresult_); + } + for (int i = 0; i < statuses_.size(); i++) { + output.writeMessage(5, statuses_.get(i)); + } + if (!com.google.protobuf.GeneratedMessage.isStringEmpty(errorMessage_)) { + com.google.protobuf.GeneratedMessage.writeString(output, 6, errorMessage_); + } + getUnknownFields().writeTo(output); + } + + @java.lang.Override + public int getSerializedSize() { + int size = memoizedSize; + if (size != -1) return size; + + size = 0; + if (serverHandle_ != 0) { + size += com.google.protobuf.CodedOutputStream + .computeInt32Size(1, serverHandle_); + } + if (itemHandle_ != 0) { + size += com.google.protobuf.CodedOutputStream + .computeInt32Size(2, itemHandle_); + } + if (wasSuccessful_ != false) { + size += com.google.protobuf.CodedOutputStream + .computeBoolSize(3, wasSuccessful_); + } + if (((bitField0_ & 0x00000001) != 0)) { + size += com.google.protobuf.CodedOutputStream + .computeInt32Size(4, hresult_); + } + for (int i = 0; i < statuses_.size(); i++) { + size += com.google.protobuf.CodedOutputStream + .computeMessageSize(5, statuses_.get(i)); + } + if (!com.google.protobuf.GeneratedMessage.isStringEmpty(errorMessage_)) { + size += com.google.protobuf.GeneratedMessage.computeStringSize(6, errorMessage_); + } + size += getUnknownFields().getSerializedSize(); + memoizedSize = size; + return size; + } + + @java.lang.Override + public boolean equals(final java.lang.Object obj) { + if (obj == this) { + return true; + } + if (!(obj instanceof mxaccess_gateway.v1.MxaccessGateway.BulkWriteResult)) { + return super.equals(obj); + } + mxaccess_gateway.v1.MxaccessGateway.BulkWriteResult other = (mxaccess_gateway.v1.MxaccessGateway.BulkWriteResult) obj; + + if (getServerHandle() + != other.getServerHandle()) return false; + if (getItemHandle() + != other.getItemHandle()) return false; + if (getWasSuccessful() + != other.getWasSuccessful()) return false; + if (hasHresult() != other.hasHresult()) return false; + if (hasHresult()) { + if (getHresult() + != other.getHresult()) return false; + } + if (!getStatusesList() + .equals(other.getStatusesList())) return false; + if (!getErrorMessage() + .equals(other.getErrorMessage())) return false; + if (!getUnknownFields().equals(other.getUnknownFields())) return false; + return true; + } + + @java.lang.Override + public int hashCode() { + if (memoizedHashCode != 0) { + return memoizedHashCode; + } + int hash = 41; + hash = (19 * hash) + getDescriptor().hashCode(); + hash = (37 * hash) + SERVER_HANDLE_FIELD_NUMBER; + hash = (53 * hash) + getServerHandle(); + hash = (37 * hash) + ITEM_HANDLE_FIELD_NUMBER; + hash = (53 * hash) + getItemHandle(); + hash = (37 * hash) + WAS_SUCCESSFUL_FIELD_NUMBER; + hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean( + getWasSuccessful()); + if (hasHresult()) { + hash = (37 * hash) + HRESULT_FIELD_NUMBER; + hash = (53 * hash) + getHresult(); + } + if (getStatusesCount() > 0) { + hash = (37 * hash) + STATUSES_FIELD_NUMBER; + hash = (53 * hash) + getStatusesList().hashCode(); + } + hash = (37 * hash) + ERROR_MESSAGE_FIELD_NUMBER; + hash = (53 * hash) + getErrorMessage().hashCode(); + hash = (29 * hash) + getUnknownFields().hashCode(); + memoizedHashCode = hash; + return hash; + } + + public static mxaccess_gateway.v1.MxaccessGateway.BulkWriteResult parseFrom( + java.nio.ByteBuffer data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static mxaccess_gateway.v1.MxaccessGateway.BulkWriteResult parseFrom( + java.nio.ByteBuffer data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static mxaccess_gateway.v1.MxaccessGateway.BulkWriteResult parseFrom( + com.google.protobuf.ByteString data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static mxaccess_gateway.v1.MxaccessGateway.BulkWriteResult parseFrom( + com.google.protobuf.ByteString data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static mxaccess_gateway.v1.MxaccessGateway.BulkWriteResult parseFrom(byte[] data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static mxaccess_gateway.v1.MxaccessGateway.BulkWriteResult parseFrom( + byte[] data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static mxaccess_gateway.v1.MxaccessGateway.BulkWriteResult parseFrom(java.io.InputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessage + .parseWithIOException(PARSER, input); + } + public static mxaccess_gateway.v1.MxaccessGateway.BulkWriteResult parseFrom( + java.io.InputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessage + .parseWithIOException(PARSER, input, extensionRegistry); + } + + public static mxaccess_gateway.v1.MxaccessGateway.BulkWriteResult parseDelimitedFrom(java.io.InputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessage + .parseDelimitedWithIOException(PARSER, input); + } + + public static mxaccess_gateway.v1.MxaccessGateway.BulkWriteResult parseDelimitedFrom( + java.io.InputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessage + .parseDelimitedWithIOException(PARSER, input, extensionRegistry); + } + public static mxaccess_gateway.v1.MxaccessGateway.BulkWriteResult parseFrom( + com.google.protobuf.CodedInputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessage + .parseWithIOException(PARSER, input); + } + public static mxaccess_gateway.v1.MxaccessGateway.BulkWriteResult parseFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessage + .parseWithIOException(PARSER, input, extensionRegistry); + } + + @java.lang.Override + public Builder newBuilderForType() { return newBuilder(); } + public static Builder newBuilder() { + return DEFAULT_INSTANCE.toBuilder(); + } + public static Builder newBuilder(mxaccess_gateway.v1.MxaccessGateway.BulkWriteResult prototype) { + return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype); + } + @java.lang.Override + public Builder toBuilder() { + return this == DEFAULT_INSTANCE + ? new Builder() : new Builder().mergeFrom(this); + } + + @java.lang.Override + protected Builder newBuilderForType( + com.google.protobuf.GeneratedMessage.BuilderParent parent) { + Builder builder = new Builder(parent); + return builder; + } + /** + *
+     * Per-item result for the four bulk write families. `item_handle` mirrors the
+     * request entry's item_handle so callers can correlate inputs to outputs even
+     * when the gateway's tag-allowlist filter dropped some entries before reaching
+     * the worker. Per-item failures populate `error_message` + `hresult` and never
+     * raise — callers iterate and inspect each entry.
+     * 
+ * + * Protobuf type {@code mxaccess_gateway.v1.BulkWriteResult} + */ + public static final class Builder extends + com.google.protobuf.GeneratedMessage.Builder implements + // @@protoc_insertion_point(builder_implements:mxaccess_gateway.v1.BulkWriteResult) + mxaccess_gateway.v1.MxaccessGateway.BulkWriteResultOrBuilder { + public static final com.google.protobuf.Descriptors.Descriptor + getDescriptor() { + return mxaccess_gateway.v1.MxaccessGateway.internal_static_mxaccess_gateway_v1_BulkWriteResult_descriptor; + } + + @java.lang.Override + protected com.google.protobuf.GeneratedMessage.FieldAccessorTable + internalGetFieldAccessorTable() { + return mxaccess_gateway.v1.MxaccessGateway.internal_static_mxaccess_gateway_v1_BulkWriteResult_fieldAccessorTable + .ensureFieldAccessorsInitialized( + mxaccess_gateway.v1.MxaccessGateway.BulkWriteResult.class, mxaccess_gateway.v1.MxaccessGateway.BulkWriteResult.Builder.class); + } + + // Construct using mxaccess_gateway.v1.MxaccessGateway.BulkWriteResult.newBuilder() + private Builder() { + + } + + private Builder( + com.google.protobuf.GeneratedMessage.BuilderParent parent) { + super(parent); + + } + @java.lang.Override + public Builder clear() { + super.clear(); + bitField0_ = 0; + serverHandle_ = 0; + itemHandle_ = 0; + wasSuccessful_ = false; + hresult_ = 0; + if (statusesBuilder_ == null) { + statuses_ = java.util.Collections.emptyList(); + } else { + statuses_ = null; + statusesBuilder_.clear(); + } + bitField0_ = (bitField0_ & ~0x00000010); + errorMessage_ = ""; + return this; + } + + @java.lang.Override + public com.google.protobuf.Descriptors.Descriptor + getDescriptorForType() { + return mxaccess_gateway.v1.MxaccessGateway.internal_static_mxaccess_gateway_v1_BulkWriteResult_descriptor; + } + + @java.lang.Override + public mxaccess_gateway.v1.MxaccessGateway.BulkWriteResult getDefaultInstanceForType() { + return mxaccess_gateway.v1.MxaccessGateway.BulkWriteResult.getDefaultInstance(); + } + + @java.lang.Override + public mxaccess_gateway.v1.MxaccessGateway.BulkWriteResult build() { + mxaccess_gateway.v1.MxaccessGateway.BulkWriteResult result = buildPartial(); + if (!result.isInitialized()) { + throw newUninitializedMessageException(result); + } + return result; + } + + @java.lang.Override + public mxaccess_gateway.v1.MxaccessGateway.BulkWriteResult buildPartial() { + mxaccess_gateway.v1.MxaccessGateway.BulkWriteResult result = new mxaccess_gateway.v1.MxaccessGateway.BulkWriteResult(this); + buildPartialRepeatedFields(result); + if (bitField0_ != 0) { buildPartial0(result); } + onBuilt(); + return result; + } + + private void buildPartialRepeatedFields(mxaccess_gateway.v1.MxaccessGateway.BulkWriteResult result) { + if (statusesBuilder_ == null) { + if (((bitField0_ & 0x00000010) != 0)) { + statuses_ = java.util.Collections.unmodifiableList(statuses_); + bitField0_ = (bitField0_ & ~0x00000010); + } + result.statuses_ = statuses_; + } else { + result.statuses_ = statusesBuilder_.build(); + } + } + + private void buildPartial0(mxaccess_gateway.v1.MxaccessGateway.BulkWriteResult result) { + int from_bitField0_ = bitField0_; + if (((from_bitField0_ & 0x00000001) != 0)) { + result.serverHandle_ = serverHandle_; + } + if (((from_bitField0_ & 0x00000002) != 0)) { + result.itemHandle_ = itemHandle_; + } + if (((from_bitField0_ & 0x00000004) != 0)) { + result.wasSuccessful_ = wasSuccessful_; + } + int to_bitField0_ = 0; + if (((from_bitField0_ & 0x00000008) != 0)) { + result.hresult_ = hresult_; + to_bitField0_ |= 0x00000001; + } + if (((from_bitField0_ & 0x00000020) != 0)) { + result.errorMessage_ = errorMessage_; + } + result.bitField0_ |= to_bitField0_; + } + + @java.lang.Override + public Builder mergeFrom(com.google.protobuf.Message other) { + if (other instanceof mxaccess_gateway.v1.MxaccessGateway.BulkWriteResult) { + return mergeFrom((mxaccess_gateway.v1.MxaccessGateway.BulkWriteResult)other); + } else { + super.mergeFrom(other); + return this; + } + } + + public Builder mergeFrom(mxaccess_gateway.v1.MxaccessGateway.BulkWriteResult other) { + if (other == mxaccess_gateway.v1.MxaccessGateway.BulkWriteResult.getDefaultInstance()) return this; + if (other.getServerHandle() != 0) { + setServerHandle(other.getServerHandle()); + } + if (other.getItemHandle() != 0) { + setItemHandle(other.getItemHandle()); + } + if (other.getWasSuccessful() != false) { + setWasSuccessful(other.getWasSuccessful()); + } + if (other.hasHresult()) { + setHresult(other.getHresult()); + } + if (statusesBuilder_ == null) { + if (!other.statuses_.isEmpty()) { + if (statuses_.isEmpty()) { + statuses_ = other.statuses_; + bitField0_ = (bitField0_ & ~0x00000010); + } else { + ensureStatusesIsMutable(); + statuses_.addAll(other.statuses_); + } + onChanged(); + } + } else { + if (!other.statuses_.isEmpty()) { + if (statusesBuilder_.isEmpty()) { + statusesBuilder_.dispose(); + statusesBuilder_ = null; + statuses_ = other.statuses_; + bitField0_ = (bitField0_ & ~0x00000010); + statusesBuilder_ = + com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders ? + internalGetStatusesFieldBuilder() : null; + } else { + statusesBuilder_.addAllMessages(other.statuses_); + } + } + } + if (!other.getErrorMessage().isEmpty()) { + errorMessage_ = other.errorMessage_; + bitField0_ |= 0x00000020; + onChanged(); + } + this.mergeUnknownFields(other.getUnknownFields()); + onChanged(); + return this; + } + + @java.lang.Override + public final boolean isInitialized() { + return true; + } + + @java.lang.Override + public Builder mergeFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + if (extensionRegistry == null) { + throw new java.lang.NullPointerException(); + } + try { + boolean done = false; + while (!done) { + int tag = input.readTag(); + switch (tag) { + case 0: + done = true; + break; + case 8: { + serverHandle_ = input.readInt32(); + bitField0_ |= 0x00000001; + break; + } // case 8 + case 16: { + itemHandle_ = input.readInt32(); + bitField0_ |= 0x00000002; + break; + } // case 16 + case 24: { + wasSuccessful_ = input.readBool(); + bitField0_ |= 0x00000004; + break; + } // case 24 + case 32: { + hresult_ = input.readInt32(); + bitField0_ |= 0x00000008; + break; + } // case 32 + case 42: { + mxaccess_gateway.v1.MxaccessGateway.MxStatusProxy m = + input.readMessage( + mxaccess_gateway.v1.MxaccessGateway.MxStatusProxy.parser(), + extensionRegistry); + if (statusesBuilder_ == null) { + ensureStatusesIsMutable(); + statuses_.add(m); + } else { + statusesBuilder_.addMessage(m); + } + break; + } // case 42 + case 50: { + errorMessage_ = input.readStringRequireUtf8(); + bitField0_ |= 0x00000020; + break; + } // case 50 + default: { + if (!super.parseUnknownField(input, extensionRegistry, tag)) { + done = true; // was an endgroup tag + } + break; + } // default: + } // switch (tag) + } // while (!done) + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + throw e.unwrapIOException(); + } finally { + onChanged(); + } // finally + return this; + } + private int bitField0_; + + private int serverHandle_ ; + /** + * int32 server_handle = 1; + * @return The serverHandle. + */ + @java.lang.Override + public int getServerHandle() { + return serverHandle_; + } + /** + * int32 server_handle = 1; + * @param value The serverHandle to set. + * @return This builder for chaining. + */ + public Builder setServerHandle(int value) { + + serverHandle_ = value; + bitField0_ |= 0x00000001; + onChanged(); + return this; + } + /** + * int32 server_handle = 1; + * @return This builder for chaining. + */ + public Builder clearServerHandle() { + bitField0_ = (bitField0_ & ~0x00000001); + serverHandle_ = 0; + onChanged(); + return this; + } + + private int itemHandle_ ; + /** + * int32 item_handle = 2; + * @return The itemHandle. + */ + @java.lang.Override + public int getItemHandle() { + return itemHandle_; + } + /** + * int32 item_handle = 2; + * @param value The itemHandle to set. + * @return This builder for chaining. + */ + public Builder setItemHandle(int value) { + + itemHandle_ = value; + bitField0_ |= 0x00000002; + onChanged(); + return this; + } + /** + * int32 item_handle = 2; + * @return This builder for chaining. + */ + public Builder clearItemHandle() { + bitField0_ = (bitField0_ & ~0x00000002); + itemHandle_ = 0; + onChanged(); + return this; + } + + private boolean wasSuccessful_ ; + /** + * bool was_successful = 3; + * @return The wasSuccessful. + */ + @java.lang.Override + public boolean getWasSuccessful() { + return wasSuccessful_; + } + /** + * bool was_successful = 3; + * @param value The wasSuccessful to set. + * @return This builder for chaining. + */ + public Builder setWasSuccessful(boolean value) { + + wasSuccessful_ = value; + bitField0_ |= 0x00000004; + onChanged(); + return this; + } + /** + * bool was_successful = 3; + * @return This builder for chaining. + */ + public Builder clearWasSuccessful() { + bitField0_ = (bitField0_ & ~0x00000004); + wasSuccessful_ = false; + onChanged(); + return this; + } + + private int hresult_ ; + /** + * optional int32 hresult = 4; + * @return Whether the hresult field is set. + */ + @java.lang.Override + public boolean hasHresult() { + return ((bitField0_ & 0x00000008) != 0); + } + /** + * optional int32 hresult = 4; + * @return The hresult. + */ + @java.lang.Override + public int getHresult() { + return hresult_; + } + /** + * optional int32 hresult = 4; + * @param value The hresult to set. + * @return This builder for chaining. + */ + public Builder setHresult(int value) { + + hresult_ = value; + bitField0_ |= 0x00000008; + onChanged(); + return this; + } + /** + * optional int32 hresult = 4; + * @return This builder for chaining. + */ + public Builder clearHresult() { + bitField0_ = (bitField0_ & ~0x00000008); + hresult_ = 0; + onChanged(); + return this; + } + + private java.util.List statuses_ = + java.util.Collections.emptyList(); + private void ensureStatusesIsMutable() { + if (!((bitField0_ & 0x00000010) != 0)) { + statuses_ = new java.util.ArrayList(statuses_); + bitField0_ |= 0x00000010; + } + } + + private com.google.protobuf.RepeatedFieldBuilder< + mxaccess_gateway.v1.MxaccessGateway.MxStatusProxy, mxaccess_gateway.v1.MxaccessGateway.MxStatusProxy.Builder, mxaccess_gateway.v1.MxaccessGateway.MxStatusProxyOrBuilder> statusesBuilder_; + + /** + * repeated .mxaccess_gateway.v1.MxStatusProxy statuses = 5; + */ + public java.util.List getStatusesList() { + if (statusesBuilder_ == null) { + return java.util.Collections.unmodifiableList(statuses_); + } else { + return statusesBuilder_.getMessageList(); + } + } + /** + * repeated .mxaccess_gateway.v1.MxStatusProxy statuses = 5; + */ + public int getStatusesCount() { + if (statusesBuilder_ == null) { + return statuses_.size(); + } else { + return statusesBuilder_.getCount(); + } + } + /** + * repeated .mxaccess_gateway.v1.MxStatusProxy statuses = 5; + */ + public mxaccess_gateway.v1.MxaccessGateway.MxStatusProxy getStatuses(int index) { + if (statusesBuilder_ == null) { + return statuses_.get(index); + } else { + return statusesBuilder_.getMessage(index); + } + } + /** + * repeated .mxaccess_gateway.v1.MxStatusProxy statuses = 5; + */ + public Builder setStatuses( + int index, mxaccess_gateway.v1.MxaccessGateway.MxStatusProxy value) { + if (statusesBuilder_ == null) { + if (value == null) { + throw new NullPointerException(); + } + ensureStatusesIsMutable(); + statuses_.set(index, value); + onChanged(); + } else { + statusesBuilder_.setMessage(index, value); + } + return this; + } + /** + * repeated .mxaccess_gateway.v1.MxStatusProxy statuses = 5; + */ + public Builder setStatuses( + int index, mxaccess_gateway.v1.MxaccessGateway.MxStatusProxy.Builder builderForValue) { + if (statusesBuilder_ == null) { + ensureStatusesIsMutable(); + statuses_.set(index, builderForValue.build()); + onChanged(); + } else { + statusesBuilder_.setMessage(index, builderForValue.build()); + } + return this; + } + /** + * repeated .mxaccess_gateway.v1.MxStatusProxy statuses = 5; + */ + public Builder addStatuses(mxaccess_gateway.v1.MxaccessGateway.MxStatusProxy value) { + if (statusesBuilder_ == null) { + if (value == null) { + throw new NullPointerException(); + } + ensureStatusesIsMutable(); + statuses_.add(value); + onChanged(); + } else { + statusesBuilder_.addMessage(value); + } + return this; + } + /** + * repeated .mxaccess_gateway.v1.MxStatusProxy statuses = 5; + */ + public Builder addStatuses( + int index, mxaccess_gateway.v1.MxaccessGateway.MxStatusProxy value) { + if (statusesBuilder_ == null) { + if (value == null) { + throw new NullPointerException(); + } + ensureStatusesIsMutable(); + statuses_.add(index, value); + onChanged(); + } else { + statusesBuilder_.addMessage(index, value); + } + return this; + } + /** + * repeated .mxaccess_gateway.v1.MxStatusProxy statuses = 5; + */ + public Builder addStatuses( + mxaccess_gateway.v1.MxaccessGateway.MxStatusProxy.Builder builderForValue) { + if (statusesBuilder_ == null) { + ensureStatusesIsMutable(); + statuses_.add(builderForValue.build()); + onChanged(); + } else { + statusesBuilder_.addMessage(builderForValue.build()); + } + return this; + } + /** + * repeated .mxaccess_gateway.v1.MxStatusProxy statuses = 5; + */ + public Builder addStatuses( + int index, mxaccess_gateway.v1.MxaccessGateway.MxStatusProxy.Builder builderForValue) { + if (statusesBuilder_ == null) { + ensureStatusesIsMutable(); + statuses_.add(index, builderForValue.build()); + onChanged(); + } else { + statusesBuilder_.addMessage(index, builderForValue.build()); + } + return this; + } + /** + * repeated .mxaccess_gateway.v1.MxStatusProxy statuses = 5; + */ + public Builder addAllStatuses( + java.lang.Iterable values) { + if (statusesBuilder_ == null) { + ensureStatusesIsMutable(); + com.google.protobuf.AbstractMessageLite.Builder.addAll( + values, statuses_); + onChanged(); + } else { + statusesBuilder_.addAllMessages(values); + } + return this; + } + /** + * repeated .mxaccess_gateway.v1.MxStatusProxy statuses = 5; + */ + public Builder clearStatuses() { + if (statusesBuilder_ == null) { + statuses_ = java.util.Collections.emptyList(); + bitField0_ = (bitField0_ & ~0x00000010); + onChanged(); + } else { + statusesBuilder_.clear(); + } + return this; + } + /** + * repeated .mxaccess_gateway.v1.MxStatusProxy statuses = 5; + */ + public Builder removeStatuses(int index) { + if (statusesBuilder_ == null) { + ensureStatusesIsMutable(); + statuses_.remove(index); + onChanged(); + } else { + statusesBuilder_.remove(index); + } + return this; + } + /** + * repeated .mxaccess_gateway.v1.MxStatusProxy statuses = 5; + */ + public mxaccess_gateway.v1.MxaccessGateway.MxStatusProxy.Builder getStatusesBuilder( + int index) { + return internalGetStatusesFieldBuilder().getBuilder(index); + } + /** + * repeated .mxaccess_gateway.v1.MxStatusProxy statuses = 5; + */ + public mxaccess_gateway.v1.MxaccessGateway.MxStatusProxyOrBuilder getStatusesOrBuilder( + int index) { + if (statusesBuilder_ == null) { + return statuses_.get(index); } else { + return statusesBuilder_.getMessageOrBuilder(index); + } + } + /** + * repeated .mxaccess_gateway.v1.MxStatusProxy statuses = 5; + */ + public java.util.List + getStatusesOrBuilderList() { + if (statusesBuilder_ != null) { + return statusesBuilder_.getMessageOrBuilderList(); + } else { + return java.util.Collections.unmodifiableList(statuses_); + } + } + /** + * repeated .mxaccess_gateway.v1.MxStatusProxy statuses = 5; + */ + public mxaccess_gateway.v1.MxaccessGateway.MxStatusProxy.Builder addStatusesBuilder() { + return internalGetStatusesFieldBuilder().addBuilder( + mxaccess_gateway.v1.MxaccessGateway.MxStatusProxy.getDefaultInstance()); + } + /** + * repeated .mxaccess_gateway.v1.MxStatusProxy statuses = 5; + */ + public mxaccess_gateway.v1.MxaccessGateway.MxStatusProxy.Builder addStatusesBuilder( + int index) { + return internalGetStatusesFieldBuilder().addBuilder( + index, mxaccess_gateway.v1.MxaccessGateway.MxStatusProxy.getDefaultInstance()); + } + /** + * repeated .mxaccess_gateway.v1.MxStatusProxy statuses = 5; + */ + public java.util.List + getStatusesBuilderList() { + return internalGetStatusesFieldBuilder().getBuilderList(); + } + private com.google.protobuf.RepeatedFieldBuilder< + mxaccess_gateway.v1.MxaccessGateway.MxStatusProxy, mxaccess_gateway.v1.MxaccessGateway.MxStatusProxy.Builder, mxaccess_gateway.v1.MxaccessGateway.MxStatusProxyOrBuilder> + internalGetStatusesFieldBuilder() { + if (statusesBuilder_ == null) { + statusesBuilder_ = new com.google.protobuf.RepeatedFieldBuilder< + mxaccess_gateway.v1.MxaccessGateway.MxStatusProxy, mxaccess_gateway.v1.MxaccessGateway.MxStatusProxy.Builder, mxaccess_gateway.v1.MxaccessGateway.MxStatusProxyOrBuilder>( + statuses_, + ((bitField0_ & 0x00000010) != 0), + getParentForChildren(), + isClean()); + statuses_ = null; + } + return statusesBuilder_; + } + + private java.lang.Object errorMessage_ = ""; + /** + * string error_message = 6; + * @return The errorMessage. + */ + public java.lang.String getErrorMessage() { + java.lang.Object ref = errorMessage_; + if (!(ref instanceof java.lang.String)) { + com.google.protobuf.ByteString bs = + (com.google.protobuf.ByteString) ref; + java.lang.String s = bs.toStringUtf8(); + errorMessage_ = s; + return s; + } else { + return (java.lang.String) ref; + } + } + /** + * string error_message = 6; + * @return The bytes for errorMessage. + */ + public com.google.protobuf.ByteString + getErrorMessageBytes() { + java.lang.Object ref = errorMessage_; + if (ref instanceof String) { + com.google.protobuf.ByteString b = + com.google.protobuf.ByteString.copyFromUtf8( + (java.lang.String) ref); + errorMessage_ = b; + return b; + } else { + return (com.google.protobuf.ByteString) ref; + } + } + /** + * string error_message = 6; + * @param value The errorMessage to set. + * @return This builder for chaining. + */ + public Builder setErrorMessage( + java.lang.String value) { + if (value == null) { throw new NullPointerException(); } + errorMessage_ = value; + bitField0_ |= 0x00000020; + onChanged(); + return this; + } + /** + * string error_message = 6; + * @return This builder for chaining. + */ + public Builder clearErrorMessage() { + errorMessage_ = getDefaultInstance().getErrorMessage(); + bitField0_ = (bitField0_ & ~0x00000020); + onChanged(); + return this; + } + /** + * string error_message = 6; + * @param value The bytes for errorMessage to set. + * @return This builder for chaining. + */ + public Builder setErrorMessageBytes( + com.google.protobuf.ByteString value) { + if (value == null) { throw new NullPointerException(); } + checkByteStringIsUtf8(value); + errorMessage_ = value; + bitField0_ |= 0x00000020; + onChanged(); + return this; + } + + // @@protoc_insertion_point(builder_scope:mxaccess_gateway.v1.BulkWriteResult) + } + + // @@protoc_insertion_point(class_scope:mxaccess_gateway.v1.BulkWriteResult) + private static final mxaccess_gateway.v1.MxaccessGateway.BulkWriteResult DEFAULT_INSTANCE; + static { + DEFAULT_INSTANCE = new mxaccess_gateway.v1.MxaccessGateway.BulkWriteResult(); + } + + public static mxaccess_gateway.v1.MxaccessGateway.BulkWriteResult getDefaultInstance() { + return DEFAULT_INSTANCE; + } + + private static final com.google.protobuf.Parser + PARSER = new com.google.protobuf.AbstractParser() { + @java.lang.Override + public BulkWriteResult parsePartialFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + Builder builder = newBuilder(); + try { + builder.mergeFrom(input, extensionRegistry); + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + throw e.setUnfinishedMessage(builder.buildPartial()); + } catch (com.google.protobuf.UninitializedMessageException e) { + throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial()); + } catch (java.io.IOException e) { + throw new com.google.protobuf.InvalidProtocolBufferException(e) + .setUnfinishedMessage(builder.buildPartial()); + } + return builder.buildPartial(); + } + }; + + public static com.google.protobuf.Parser parser() { + return PARSER; + } + + @java.lang.Override + public com.google.protobuf.Parser getParserForType() { + return PARSER; + } + + @java.lang.Override + public mxaccess_gateway.v1.MxaccessGateway.BulkWriteResult getDefaultInstanceForType() { + return DEFAULT_INSTANCE; + } + + } + + public interface BulkWriteReplyOrBuilder extends + // @@protoc_insertion_point(interface_extends:mxaccess_gateway.v1.BulkWriteReply) + com.google.protobuf.MessageOrBuilder { + + /** + * repeated .mxaccess_gateway.v1.BulkWriteResult results = 1; + */ + java.util.List + getResultsList(); + /** + * repeated .mxaccess_gateway.v1.BulkWriteResult results = 1; + */ + mxaccess_gateway.v1.MxaccessGateway.BulkWriteResult getResults(int index); + /** + * repeated .mxaccess_gateway.v1.BulkWriteResult results = 1; + */ + int getResultsCount(); + /** + * repeated .mxaccess_gateway.v1.BulkWriteResult results = 1; + */ + java.util.List + getResultsOrBuilderList(); + /** + * repeated .mxaccess_gateway.v1.BulkWriteResult results = 1; + */ + mxaccess_gateway.v1.MxaccessGateway.BulkWriteResultOrBuilder getResultsOrBuilder( + int index); + } + /** + * Protobuf type {@code mxaccess_gateway.v1.BulkWriteReply} + */ + public static final class BulkWriteReply extends + com.google.protobuf.GeneratedMessage implements + // @@protoc_insertion_point(message_implements:mxaccess_gateway.v1.BulkWriteReply) + BulkWriteReplyOrBuilder { + private static final long serialVersionUID = 0L; + static { + com.google.protobuf.RuntimeVersion.validateProtobufGencodeVersion( + com.google.protobuf.RuntimeVersion.RuntimeDomain.PUBLIC, + /* major= */ 4, + /* minor= */ 33, + /* patch= */ 1, + /* suffix= */ "", + "BulkWriteReply"); + } + // Use BulkWriteReply.newBuilder() to construct. + private BulkWriteReply(com.google.protobuf.GeneratedMessage.Builder builder) { + super(builder); + } + private BulkWriteReply() { + results_ = java.util.Collections.emptyList(); + } + + public static final com.google.protobuf.Descriptors.Descriptor + getDescriptor() { + return mxaccess_gateway.v1.MxaccessGateway.internal_static_mxaccess_gateway_v1_BulkWriteReply_descriptor; + } + + @java.lang.Override + protected com.google.protobuf.GeneratedMessage.FieldAccessorTable + internalGetFieldAccessorTable() { + return mxaccess_gateway.v1.MxaccessGateway.internal_static_mxaccess_gateway_v1_BulkWriteReply_fieldAccessorTable + .ensureFieldAccessorsInitialized( + mxaccess_gateway.v1.MxaccessGateway.BulkWriteReply.class, mxaccess_gateway.v1.MxaccessGateway.BulkWriteReply.Builder.class); + } + + public static final int RESULTS_FIELD_NUMBER = 1; + @SuppressWarnings("serial") + private java.util.List results_; + /** + * repeated .mxaccess_gateway.v1.BulkWriteResult results = 1; + */ + @java.lang.Override + public java.util.List getResultsList() { + return results_; + } + /** + * repeated .mxaccess_gateway.v1.BulkWriteResult results = 1; + */ + @java.lang.Override + public java.util.List + getResultsOrBuilderList() { + return results_; + } + /** + * repeated .mxaccess_gateway.v1.BulkWriteResult results = 1; + */ + @java.lang.Override + public int getResultsCount() { + return results_.size(); + } + /** + * repeated .mxaccess_gateway.v1.BulkWriteResult results = 1; + */ + @java.lang.Override + public mxaccess_gateway.v1.MxaccessGateway.BulkWriteResult getResults(int index) { + return results_.get(index); + } + /** + * repeated .mxaccess_gateway.v1.BulkWriteResult results = 1; + */ + @java.lang.Override + public mxaccess_gateway.v1.MxaccessGateway.BulkWriteResultOrBuilder getResultsOrBuilder( + int index) { + return results_.get(index); + } + + private byte memoizedIsInitialized = -1; + @java.lang.Override + public final boolean isInitialized() { + byte isInitialized = memoizedIsInitialized; + if (isInitialized == 1) return true; + if (isInitialized == 0) return false; + + memoizedIsInitialized = 1; + return true; + } + + @java.lang.Override + public void writeTo(com.google.protobuf.CodedOutputStream output) + throws java.io.IOException { + for (int i = 0; i < results_.size(); i++) { + output.writeMessage(1, results_.get(i)); + } + getUnknownFields().writeTo(output); + } + + @java.lang.Override + public int getSerializedSize() { + int size = memoizedSize; + if (size != -1) return size; + + size = 0; + for (int i = 0; i < results_.size(); i++) { + size += com.google.protobuf.CodedOutputStream + .computeMessageSize(1, results_.get(i)); + } + size += getUnknownFields().getSerializedSize(); + memoizedSize = size; + return size; + } + + @java.lang.Override + public boolean equals(final java.lang.Object obj) { + if (obj == this) { + return true; + } + if (!(obj instanceof mxaccess_gateway.v1.MxaccessGateway.BulkWriteReply)) { + return super.equals(obj); + } + mxaccess_gateway.v1.MxaccessGateway.BulkWriteReply other = (mxaccess_gateway.v1.MxaccessGateway.BulkWriteReply) obj; + + if (!getResultsList() + .equals(other.getResultsList())) return false; + if (!getUnknownFields().equals(other.getUnknownFields())) return false; + return true; + } + + @java.lang.Override + public int hashCode() { + if (memoizedHashCode != 0) { + return memoizedHashCode; + } + int hash = 41; + hash = (19 * hash) + getDescriptor().hashCode(); + if (getResultsCount() > 0) { + hash = (37 * hash) + RESULTS_FIELD_NUMBER; + hash = (53 * hash) + getResultsList().hashCode(); + } + hash = (29 * hash) + getUnknownFields().hashCode(); + memoizedHashCode = hash; + return hash; + } + + public static mxaccess_gateway.v1.MxaccessGateway.BulkWriteReply parseFrom( + java.nio.ByteBuffer data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static mxaccess_gateway.v1.MxaccessGateway.BulkWriteReply parseFrom( + java.nio.ByteBuffer data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static mxaccess_gateway.v1.MxaccessGateway.BulkWriteReply parseFrom( + com.google.protobuf.ByteString data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static mxaccess_gateway.v1.MxaccessGateway.BulkWriteReply parseFrom( + com.google.protobuf.ByteString data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static mxaccess_gateway.v1.MxaccessGateway.BulkWriteReply parseFrom(byte[] data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static mxaccess_gateway.v1.MxaccessGateway.BulkWriteReply parseFrom( + byte[] data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static mxaccess_gateway.v1.MxaccessGateway.BulkWriteReply parseFrom(java.io.InputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessage + .parseWithIOException(PARSER, input); + } + public static mxaccess_gateway.v1.MxaccessGateway.BulkWriteReply parseFrom( + java.io.InputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessage + .parseWithIOException(PARSER, input, extensionRegistry); + } + + public static mxaccess_gateway.v1.MxaccessGateway.BulkWriteReply parseDelimitedFrom(java.io.InputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessage + .parseDelimitedWithIOException(PARSER, input); + } + + public static mxaccess_gateway.v1.MxaccessGateway.BulkWriteReply parseDelimitedFrom( + java.io.InputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessage + .parseDelimitedWithIOException(PARSER, input, extensionRegistry); + } + public static mxaccess_gateway.v1.MxaccessGateway.BulkWriteReply parseFrom( + com.google.protobuf.CodedInputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessage + .parseWithIOException(PARSER, input); + } + public static mxaccess_gateway.v1.MxaccessGateway.BulkWriteReply parseFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessage + .parseWithIOException(PARSER, input, extensionRegistry); + } + + @java.lang.Override + public Builder newBuilderForType() { return newBuilder(); } + public static Builder newBuilder() { + return DEFAULT_INSTANCE.toBuilder(); + } + public static Builder newBuilder(mxaccess_gateway.v1.MxaccessGateway.BulkWriteReply prototype) { + return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype); + } + @java.lang.Override + public Builder toBuilder() { + return this == DEFAULT_INSTANCE + ? new Builder() : new Builder().mergeFrom(this); + } + + @java.lang.Override + protected Builder newBuilderForType( + com.google.protobuf.GeneratedMessage.BuilderParent parent) { + Builder builder = new Builder(parent); + return builder; + } + /** + * Protobuf type {@code mxaccess_gateway.v1.BulkWriteReply} + */ + public static final class Builder extends + com.google.protobuf.GeneratedMessage.Builder implements + // @@protoc_insertion_point(builder_implements:mxaccess_gateway.v1.BulkWriteReply) + mxaccess_gateway.v1.MxaccessGateway.BulkWriteReplyOrBuilder { + public static final com.google.protobuf.Descriptors.Descriptor + getDescriptor() { + return mxaccess_gateway.v1.MxaccessGateway.internal_static_mxaccess_gateway_v1_BulkWriteReply_descriptor; + } + + @java.lang.Override + protected com.google.protobuf.GeneratedMessage.FieldAccessorTable + internalGetFieldAccessorTable() { + return mxaccess_gateway.v1.MxaccessGateway.internal_static_mxaccess_gateway_v1_BulkWriteReply_fieldAccessorTable + .ensureFieldAccessorsInitialized( + mxaccess_gateway.v1.MxaccessGateway.BulkWriteReply.class, mxaccess_gateway.v1.MxaccessGateway.BulkWriteReply.Builder.class); + } + + // Construct using mxaccess_gateway.v1.MxaccessGateway.BulkWriteReply.newBuilder() + private Builder() { + + } + + private Builder( + com.google.protobuf.GeneratedMessage.BuilderParent parent) { + super(parent); + + } + @java.lang.Override + public Builder clear() { + super.clear(); + bitField0_ = 0; + if (resultsBuilder_ == null) { + results_ = java.util.Collections.emptyList(); + } else { + results_ = null; + resultsBuilder_.clear(); + } + bitField0_ = (bitField0_ & ~0x00000001); + return this; + } + + @java.lang.Override + public com.google.protobuf.Descriptors.Descriptor + getDescriptorForType() { + return mxaccess_gateway.v1.MxaccessGateway.internal_static_mxaccess_gateway_v1_BulkWriteReply_descriptor; + } + + @java.lang.Override + public mxaccess_gateway.v1.MxaccessGateway.BulkWriteReply getDefaultInstanceForType() { + return mxaccess_gateway.v1.MxaccessGateway.BulkWriteReply.getDefaultInstance(); + } + + @java.lang.Override + public mxaccess_gateway.v1.MxaccessGateway.BulkWriteReply build() { + mxaccess_gateway.v1.MxaccessGateway.BulkWriteReply result = buildPartial(); + if (!result.isInitialized()) { + throw newUninitializedMessageException(result); + } + return result; + } + + @java.lang.Override + public mxaccess_gateway.v1.MxaccessGateway.BulkWriteReply buildPartial() { + mxaccess_gateway.v1.MxaccessGateway.BulkWriteReply result = new mxaccess_gateway.v1.MxaccessGateway.BulkWriteReply(this); + buildPartialRepeatedFields(result); + if (bitField0_ != 0) { buildPartial0(result); } + onBuilt(); + return result; + } + + private void buildPartialRepeatedFields(mxaccess_gateway.v1.MxaccessGateway.BulkWriteReply result) { + if (resultsBuilder_ == null) { + if (((bitField0_ & 0x00000001) != 0)) { + results_ = java.util.Collections.unmodifiableList(results_); + bitField0_ = (bitField0_ & ~0x00000001); + } + result.results_ = results_; + } else { + result.results_ = resultsBuilder_.build(); + } + } + + private void buildPartial0(mxaccess_gateway.v1.MxaccessGateway.BulkWriteReply result) { + int from_bitField0_ = bitField0_; + } + + @java.lang.Override + public Builder mergeFrom(com.google.protobuf.Message other) { + if (other instanceof mxaccess_gateway.v1.MxaccessGateway.BulkWriteReply) { + return mergeFrom((mxaccess_gateway.v1.MxaccessGateway.BulkWriteReply)other); + } else { + super.mergeFrom(other); + return this; + } + } + + public Builder mergeFrom(mxaccess_gateway.v1.MxaccessGateway.BulkWriteReply other) { + if (other == mxaccess_gateway.v1.MxaccessGateway.BulkWriteReply.getDefaultInstance()) return this; + if (resultsBuilder_ == null) { + if (!other.results_.isEmpty()) { + if (results_.isEmpty()) { + results_ = other.results_; + bitField0_ = (bitField0_ & ~0x00000001); + } else { + ensureResultsIsMutable(); + results_.addAll(other.results_); + } + onChanged(); + } + } else { + if (!other.results_.isEmpty()) { + if (resultsBuilder_.isEmpty()) { + resultsBuilder_.dispose(); + resultsBuilder_ = null; + results_ = other.results_; + bitField0_ = (bitField0_ & ~0x00000001); + resultsBuilder_ = + com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders ? + internalGetResultsFieldBuilder() : null; + } else { + resultsBuilder_.addAllMessages(other.results_); + } + } + } + this.mergeUnknownFields(other.getUnknownFields()); + onChanged(); + return this; + } + + @java.lang.Override + public final boolean isInitialized() { + return true; + } + + @java.lang.Override + public Builder mergeFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + if (extensionRegistry == null) { + throw new java.lang.NullPointerException(); + } + try { + boolean done = false; + while (!done) { + int tag = input.readTag(); + switch (tag) { + case 0: + done = true; + break; + case 10: { + mxaccess_gateway.v1.MxaccessGateway.BulkWriteResult m = + input.readMessage( + mxaccess_gateway.v1.MxaccessGateway.BulkWriteResult.parser(), + extensionRegistry); + if (resultsBuilder_ == null) { + ensureResultsIsMutable(); + results_.add(m); + } else { + resultsBuilder_.addMessage(m); + } + break; + } // case 10 + default: { + if (!super.parseUnknownField(input, extensionRegistry, tag)) { + done = true; // was an endgroup tag + } + break; + } // default: + } // switch (tag) + } // while (!done) + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + throw e.unwrapIOException(); + } finally { + onChanged(); + } // finally + return this; + } + private int bitField0_; + + private java.util.List results_ = + java.util.Collections.emptyList(); + private void ensureResultsIsMutable() { + if (!((bitField0_ & 0x00000001) != 0)) { + results_ = new java.util.ArrayList(results_); + bitField0_ |= 0x00000001; + } + } + + private com.google.protobuf.RepeatedFieldBuilder< + mxaccess_gateway.v1.MxaccessGateway.BulkWriteResult, mxaccess_gateway.v1.MxaccessGateway.BulkWriteResult.Builder, mxaccess_gateway.v1.MxaccessGateway.BulkWriteResultOrBuilder> resultsBuilder_; + + /** + * repeated .mxaccess_gateway.v1.BulkWriteResult results = 1; + */ + public java.util.List getResultsList() { + if (resultsBuilder_ == null) { + return java.util.Collections.unmodifiableList(results_); + } else { + return resultsBuilder_.getMessageList(); + } + } + /** + * repeated .mxaccess_gateway.v1.BulkWriteResult results = 1; + */ + public int getResultsCount() { + if (resultsBuilder_ == null) { + return results_.size(); + } else { + return resultsBuilder_.getCount(); + } + } + /** + * repeated .mxaccess_gateway.v1.BulkWriteResult results = 1; + */ + public mxaccess_gateway.v1.MxaccessGateway.BulkWriteResult getResults(int index) { + if (resultsBuilder_ == null) { + return results_.get(index); + } else { + return resultsBuilder_.getMessage(index); + } + } + /** + * repeated .mxaccess_gateway.v1.BulkWriteResult results = 1; + */ + public Builder setResults( + int index, mxaccess_gateway.v1.MxaccessGateway.BulkWriteResult value) { + if (resultsBuilder_ == null) { + if (value == null) { + throw new NullPointerException(); + } + ensureResultsIsMutable(); + results_.set(index, value); + onChanged(); + } else { + resultsBuilder_.setMessage(index, value); + } + return this; + } + /** + * repeated .mxaccess_gateway.v1.BulkWriteResult results = 1; + */ + public Builder setResults( + int index, mxaccess_gateway.v1.MxaccessGateway.BulkWriteResult.Builder builderForValue) { + if (resultsBuilder_ == null) { + ensureResultsIsMutable(); + results_.set(index, builderForValue.build()); + onChanged(); + } else { + resultsBuilder_.setMessage(index, builderForValue.build()); + } + return this; + } + /** + * repeated .mxaccess_gateway.v1.BulkWriteResult results = 1; + */ + public Builder addResults(mxaccess_gateway.v1.MxaccessGateway.BulkWriteResult value) { + if (resultsBuilder_ == null) { + if (value == null) { + throw new NullPointerException(); + } + ensureResultsIsMutable(); + results_.add(value); + onChanged(); + } else { + resultsBuilder_.addMessage(value); + } + return this; + } + /** + * repeated .mxaccess_gateway.v1.BulkWriteResult results = 1; + */ + public Builder addResults( + int index, mxaccess_gateway.v1.MxaccessGateway.BulkWriteResult value) { + if (resultsBuilder_ == null) { + if (value == null) { + throw new NullPointerException(); + } + ensureResultsIsMutable(); + results_.add(index, value); + onChanged(); + } else { + resultsBuilder_.addMessage(index, value); + } + return this; + } + /** + * repeated .mxaccess_gateway.v1.BulkWriteResult results = 1; + */ + public Builder addResults( + mxaccess_gateway.v1.MxaccessGateway.BulkWriteResult.Builder builderForValue) { + if (resultsBuilder_ == null) { + ensureResultsIsMutable(); + results_.add(builderForValue.build()); + onChanged(); + } else { + resultsBuilder_.addMessage(builderForValue.build()); + } + return this; + } + /** + * repeated .mxaccess_gateway.v1.BulkWriteResult results = 1; + */ + public Builder addResults( + int index, mxaccess_gateway.v1.MxaccessGateway.BulkWriteResult.Builder builderForValue) { + if (resultsBuilder_ == null) { + ensureResultsIsMutable(); + results_.add(index, builderForValue.build()); + onChanged(); + } else { + resultsBuilder_.addMessage(index, builderForValue.build()); + } + return this; + } + /** + * repeated .mxaccess_gateway.v1.BulkWriteResult results = 1; + */ + public Builder addAllResults( + java.lang.Iterable values) { + if (resultsBuilder_ == null) { + ensureResultsIsMutable(); + com.google.protobuf.AbstractMessageLite.Builder.addAll( + values, results_); + onChanged(); + } else { + resultsBuilder_.addAllMessages(values); + } + return this; + } + /** + * repeated .mxaccess_gateway.v1.BulkWriteResult results = 1; + */ + public Builder clearResults() { + if (resultsBuilder_ == null) { + results_ = java.util.Collections.emptyList(); + bitField0_ = (bitField0_ & ~0x00000001); + onChanged(); + } else { + resultsBuilder_.clear(); + } + return this; + } + /** + * repeated .mxaccess_gateway.v1.BulkWriteResult results = 1; + */ + public Builder removeResults(int index) { + if (resultsBuilder_ == null) { + ensureResultsIsMutable(); + results_.remove(index); + onChanged(); + } else { + resultsBuilder_.remove(index); + } + return this; + } + /** + * repeated .mxaccess_gateway.v1.BulkWriteResult results = 1; + */ + public mxaccess_gateway.v1.MxaccessGateway.BulkWriteResult.Builder getResultsBuilder( + int index) { + return internalGetResultsFieldBuilder().getBuilder(index); + } + /** + * repeated .mxaccess_gateway.v1.BulkWriteResult results = 1; + */ + public mxaccess_gateway.v1.MxaccessGateway.BulkWriteResultOrBuilder getResultsOrBuilder( + int index) { + if (resultsBuilder_ == null) { + return results_.get(index); } else { + return resultsBuilder_.getMessageOrBuilder(index); + } + } + /** + * repeated .mxaccess_gateway.v1.BulkWriteResult results = 1; + */ + public java.util.List + getResultsOrBuilderList() { + if (resultsBuilder_ != null) { + return resultsBuilder_.getMessageOrBuilderList(); + } else { + return java.util.Collections.unmodifiableList(results_); + } + } + /** + * repeated .mxaccess_gateway.v1.BulkWriteResult results = 1; + */ + public mxaccess_gateway.v1.MxaccessGateway.BulkWriteResult.Builder addResultsBuilder() { + return internalGetResultsFieldBuilder().addBuilder( + mxaccess_gateway.v1.MxaccessGateway.BulkWriteResult.getDefaultInstance()); + } + /** + * repeated .mxaccess_gateway.v1.BulkWriteResult results = 1; + */ + public mxaccess_gateway.v1.MxaccessGateway.BulkWriteResult.Builder addResultsBuilder( + int index) { + return internalGetResultsFieldBuilder().addBuilder( + index, mxaccess_gateway.v1.MxaccessGateway.BulkWriteResult.getDefaultInstance()); + } + /** + * repeated .mxaccess_gateway.v1.BulkWriteResult results = 1; + */ + public java.util.List + getResultsBuilderList() { + return internalGetResultsFieldBuilder().getBuilderList(); + } + private com.google.protobuf.RepeatedFieldBuilder< + mxaccess_gateway.v1.MxaccessGateway.BulkWriteResult, mxaccess_gateway.v1.MxaccessGateway.BulkWriteResult.Builder, mxaccess_gateway.v1.MxaccessGateway.BulkWriteResultOrBuilder> + internalGetResultsFieldBuilder() { + if (resultsBuilder_ == null) { + resultsBuilder_ = new com.google.protobuf.RepeatedFieldBuilder< + mxaccess_gateway.v1.MxaccessGateway.BulkWriteResult, mxaccess_gateway.v1.MxaccessGateway.BulkWriteResult.Builder, mxaccess_gateway.v1.MxaccessGateway.BulkWriteResultOrBuilder>( + results_, + ((bitField0_ & 0x00000001) != 0), + getParentForChildren(), + isClean()); + results_ = null; + } + return resultsBuilder_; + } + + // @@protoc_insertion_point(builder_scope:mxaccess_gateway.v1.BulkWriteReply) + } + + // @@protoc_insertion_point(class_scope:mxaccess_gateway.v1.BulkWriteReply) + private static final mxaccess_gateway.v1.MxaccessGateway.BulkWriteReply DEFAULT_INSTANCE; + static { + DEFAULT_INSTANCE = new mxaccess_gateway.v1.MxaccessGateway.BulkWriteReply(); + } + + public static mxaccess_gateway.v1.MxaccessGateway.BulkWriteReply getDefaultInstance() { + return DEFAULT_INSTANCE; + } + + private static final com.google.protobuf.Parser + PARSER = new com.google.protobuf.AbstractParser() { + @java.lang.Override + public BulkWriteReply parsePartialFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + Builder builder = newBuilder(); + try { + builder.mergeFrom(input, extensionRegistry); + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + throw e.setUnfinishedMessage(builder.buildPartial()); + } catch (com.google.protobuf.UninitializedMessageException e) { + throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial()); + } catch (java.io.IOException e) { + throw new com.google.protobuf.InvalidProtocolBufferException(e) + .setUnfinishedMessage(builder.buildPartial()); + } + return builder.buildPartial(); + } + }; + + public static com.google.protobuf.Parser parser() { + return PARSER; + } + + @java.lang.Override + public com.google.protobuf.Parser getParserForType() { + return PARSER; + } + + @java.lang.Override + public mxaccess_gateway.v1.MxaccessGateway.BulkWriteReply getDefaultInstanceForType() { + return DEFAULT_INSTANCE; + } + + } + + public interface BulkReadResultOrBuilder extends + // @@protoc_insertion_point(interface_extends:mxaccess_gateway.v1.BulkReadResult) + com.google.protobuf.MessageOrBuilder { + + /** + * int32 server_handle = 1; + * @return The serverHandle. + */ + int getServerHandle(); + + /** + * string tag_address = 2; + * @return The tagAddress. + */ + java.lang.String getTagAddress(); + /** + * string tag_address = 2; + * @return The bytes for tagAddress. + */ + com.google.protobuf.ByteString + getTagAddressBytes(); + + /** + * int32 item_handle = 3; + * @return The itemHandle. + */ + int getItemHandle(); + + /** + * bool was_successful = 4; + * @return The wasSuccessful. + */ + boolean getWasSuccessful(); + + /** + * bool was_cached = 5; + * @return The wasCached. + */ + boolean getWasCached(); + + /** + * .mxaccess_gateway.v1.MxValue value = 6; + * @return Whether the value field is set. + */ + boolean hasValue(); + /** + * .mxaccess_gateway.v1.MxValue value = 6; + * @return The value. + */ + mxaccess_gateway.v1.MxaccessGateway.MxValue getValue(); + /** + * .mxaccess_gateway.v1.MxValue value = 6; + */ + mxaccess_gateway.v1.MxaccessGateway.MxValueOrBuilder getValueOrBuilder(); + + /** + * int32 quality = 7; + * @return The quality. + */ + int getQuality(); + + /** + * .google.protobuf.Timestamp source_timestamp = 8; + * @return Whether the sourceTimestamp field is set. + */ + boolean hasSourceTimestamp(); + /** + * .google.protobuf.Timestamp source_timestamp = 8; + * @return The sourceTimestamp. + */ + com.google.protobuf.Timestamp getSourceTimestamp(); + /** + * .google.protobuf.Timestamp source_timestamp = 8; + */ + com.google.protobuf.TimestampOrBuilder getSourceTimestampOrBuilder(); + + /** + * repeated .mxaccess_gateway.v1.MxStatusProxy statuses = 9; + */ + java.util.List + getStatusesList(); + /** + * repeated .mxaccess_gateway.v1.MxStatusProxy statuses = 9; + */ + mxaccess_gateway.v1.MxaccessGateway.MxStatusProxy getStatuses(int index); + /** + * repeated .mxaccess_gateway.v1.MxStatusProxy statuses = 9; + */ + int getStatusesCount(); + /** + * repeated .mxaccess_gateway.v1.MxStatusProxy statuses = 9; + */ + java.util.List + getStatusesOrBuilderList(); + /** + * repeated .mxaccess_gateway.v1.MxStatusProxy statuses = 9; + */ + mxaccess_gateway.v1.MxaccessGateway.MxStatusProxyOrBuilder getStatusesOrBuilder( + int index); + + /** + * string error_message = 10; + * @return The errorMessage. + */ + java.lang.String getErrorMessage(); + /** + * string error_message = 10; + * @return The bytes for errorMessage. + */ + com.google.protobuf.ByteString + getErrorMessageBytes(); + } + /** + *
+   * Per-tag result for ReadBulk. `was_cached` is true when the value came from
+   * an existing live subscription's last OnDataChange (the worker did not touch
+   * the subscription); false when the worker took the AddItem + Advise + wait +
+   * UnAdvise + RemoveItem snapshot lifecycle itself.
+   * 
+ * + * Protobuf type {@code mxaccess_gateway.v1.BulkReadResult} + */ + public static final class BulkReadResult extends + com.google.protobuf.GeneratedMessage implements + // @@protoc_insertion_point(message_implements:mxaccess_gateway.v1.BulkReadResult) + BulkReadResultOrBuilder { + private static final long serialVersionUID = 0L; + static { + com.google.protobuf.RuntimeVersion.validateProtobufGencodeVersion( + com.google.protobuf.RuntimeVersion.RuntimeDomain.PUBLIC, + /* major= */ 4, + /* minor= */ 33, + /* patch= */ 1, + /* suffix= */ "", + "BulkReadResult"); + } + // Use BulkReadResult.newBuilder() to construct. + private BulkReadResult(com.google.protobuf.GeneratedMessage.Builder builder) { + super(builder); + } + private BulkReadResult() { + tagAddress_ = ""; + statuses_ = java.util.Collections.emptyList(); + errorMessage_ = ""; + } + + public static final com.google.protobuf.Descriptors.Descriptor + getDescriptor() { + return mxaccess_gateway.v1.MxaccessGateway.internal_static_mxaccess_gateway_v1_BulkReadResult_descriptor; + } + + @java.lang.Override + protected com.google.protobuf.GeneratedMessage.FieldAccessorTable + internalGetFieldAccessorTable() { + return mxaccess_gateway.v1.MxaccessGateway.internal_static_mxaccess_gateway_v1_BulkReadResult_fieldAccessorTable + .ensureFieldAccessorsInitialized( + mxaccess_gateway.v1.MxaccessGateway.BulkReadResult.class, mxaccess_gateway.v1.MxaccessGateway.BulkReadResult.Builder.class); + } + + private int bitField0_; + public static final int SERVER_HANDLE_FIELD_NUMBER = 1; + private int serverHandle_ = 0; + /** + * int32 server_handle = 1; + * @return The serverHandle. + */ + @java.lang.Override + public int getServerHandle() { + return serverHandle_; + } + + public static final int TAG_ADDRESS_FIELD_NUMBER = 2; + @SuppressWarnings("serial") + private volatile java.lang.Object tagAddress_ = ""; + /** + * string tag_address = 2; + * @return The tagAddress. + */ + @java.lang.Override + public java.lang.String getTagAddress() { + java.lang.Object ref = tagAddress_; + if (ref instanceof java.lang.String) { + return (java.lang.String) ref; + } else { + com.google.protobuf.ByteString bs = + (com.google.protobuf.ByteString) ref; + java.lang.String s = bs.toStringUtf8(); + tagAddress_ = s; + return s; + } + } + /** + * string tag_address = 2; + * @return The bytes for tagAddress. + */ + @java.lang.Override + public com.google.protobuf.ByteString + getTagAddressBytes() { + java.lang.Object ref = tagAddress_; + if (ref instanceof java.lang.String) { + com.google.protobuf.ByteString b = + com.google.protobuf.ByteString.copyFromUtf8( + (java.lang.String) ref); + tagAddress_ = b; + return b; + } else { + return (com.google.protobuf.ByteString) ref; + } + } + + public static final int ITEM_HANDLE_FIELD_NUMBER = 3; + private int itemHandle_ = 0; + /** + * int32 item_handle = 3; + * @return The itemHandle. + */ + @java.lang.Override + public int getItemHandle() { + return itemHandle_; + } + + public static final int WAS_SUCCESSFUL_FIELD_NUMBER = 4; + private boolean wasSuccessful_ = false; + /** + * bool was_successful = 4; + * @return The wasSuccessful. + */ + @java.lang.Override + public boolean getWasSuccessful() { + return wasSuccessful_; + } + + public static final int WAS_CACHED_FIELD_NUMBER = 5; + private boolean wasCached_ = false; + /** + * bool was_cached = 5; + * @return The wasCached. + */ + @java.lang.Override + public boolean getWasCached() { + return wasCached_; + } + + public static final int VALUE_FIELD_NUMBER = 6; + private mxaccess_gateway.v1.MxaccessGateway.MxValue value_; + /** + * .mxaccess_gateway.v1.MxValue value = 6; + * @return Whether the value field is set. + */ + @java.lang.Override + public boolean hasValue() { + return ((bitField0_ & 0x00000001) != 0); + } + /** + * .mxaccess_gateway.v1.MxValue value = 6; + * @return The value. + */ + @java.lang.Override + public mxaccess_gateway.v1.MxaccessGateway.MxValue getValue() { + return value_ == null ? mxaccess_gateway.v1.MxaccessGateway.MxValue.getDefaultInstance() : value_; + } + /** + * .mxaccess_gateway.v1.MxValue value = 6; + */ + @java.lang.Override + public mxaccess_gateway.v1.MxaccessGateway.MxValueOrBuilder getValueOrBuilder() { + return value_ == null ? mxaccess_gateway.v1.MxaccessGateway.MxValue.getDefaultInstance() : value_; + } + + public static final int QUALITY_FIELD_NUMBER = 7; + private int quality_ = 0; + /** + * int32 quality = 7; + * @return The quality. + */ + @java.lang.Override + public int getQuality() { + return quality_; + } + + public static final int SOURCE_TIMESTAMP_FIELD_NUMBER = 8; + private com.google.protobuf.Timestamp sourceTimestamp_; + /** + * .google.protobuf.Timestamp source_timestamp = 8; + * @return Whether the sourceTimestamp field is set. + */ + @java.lang.Override + public boolean hasSourceTimestamp() { + return ((bitField0_ & 0x00000002) != 0); + } + /** + * .google.protobuf.Timestamp source_timestamp = 8; + * @return The sourceTimestamp. + */ + @java.lang.Override + public com.google.protobuf.Timestamp getSourceTimestamp() { + return sourceTimestamp_ == null ? com.google.protobuf.Timestamp.getDefaultInstance() : sourceTimestamp_; + } + /** + * .google.protobuf.Timestamp source_timestamp = 8; + */ + @java.lang.Override + public com.google.protobuf.TimestampOrBuilder getSourceTimestampOrBuilder() { + return sourceTimestamp_ == null ? com.google.protobuf.Timestamp.getDefaultInstance() : sourceTimestamp_; + } + + public static final int STATUSES_FIELD_NUMBER = 9; + @SuppressWarnings("serial") + private java.util.List statuses_; + /** + * repeated .mxaccess_gateway.v1.MxStatusProxy statuses = 9; + */ + @java.lang.Override + public java.util.List getStatusesList() { + return statuses_; + } + /** + * repeated .mxaccess_gateway.v1.MxStatusProxy statuses = 9; + */ + @java.lang.Override + public java.util.List + getStatusesOrBuilderList() { + return statuses_; + } + /** + * repeated .mxaccess_gateway.v1.MxStatusProxy statuses = 9; + */ + @java.lang.Override + public int getStatusesCount() { + return statuses_.size(); + } + /** + * repeated .mxaccess_gateway.v1.MxStatusProxy statuses = 9; + */ + @java.lang.Override + public mxaccess_gateway.v1.MxaccessGateway.MxStatusProxy getStatuses(int index) { + return statuses_.get(index); + } + /** + * repeated .mxaccess_gateway.v1.MxStatusProxy statuses = 9; + */ + @java.lang.Override + public mxaccess_gateway.v1.MxaccessGateway.MxStatusProxyOrBuilder getStatusesOrBuilder( + int index) { + return statuses_.get(index); + } + + public static final int ERROR_MESSAGE_FIELD_NUMBER = 10; + @SuppressWarnings("serial") + private volatile java.lang.Object errorMessage_ = ""; + /** + * string error_message = 10; + * @return The errorMessage. + */ + @java.lang.Override + public java.lang.String getErrorMessage() { + java.lang.Object ref = errorMessage_; + if (ref instanceof java.lang.String) { + return (java.lang.String) ref; + } else { + com.google.protobuf.ByteString bs = + (com.google.protobuf.ByteString) ref; + java.lang.String s = bs.toStringUtf8(); + errorMessage_ = s; + return s; + } + } + /** + * string error_message = 10; + * @return The bytes for errorMessage. + */ + @java.lang.Override + public com.google.protobuf.ByteString + getErrorMessageBytes() { + java.lang.Object ref = errorMessage_; + if (ref instanceof java.lang.String) { + com.google.protobuf.ByteString b = + com.google.protobuf.ByteString.copyFromUtf8( + (java.lang.String) ref); + errorMessage_ = b; + return b; + } else { + return (com.google.protobuf.ByteString) ref; + } + } + + private byte memoizedIsInitialized = -1; + @java.lang.Override + public final boolean isInitialized() { + byte isInitialized = memoizedIsInitialized; + if (isInitialized == 1) return true; + if (isInitialized == 0) return false; + + memoizedIsInitialized = 1; + return true; + } + + @java.lang.Override + public void writeTo(com.google.protobuf.CodedOutputStream output) + throws java.io.IOException { + if (serverHandle_ != 0) { + output.writeInt32(1, serverHandle_); + } + if (!com.google.protobuf.GeneratedMessage.isStringEmpty(tagAddress_)) { + com.google.protobuf.GeneratedMessage.writeString(output, 2, tagAddress_); + } + if (itemHandle_ != 0) { + output.writeInt32(3, itemHandle_); + } + if (wasSuccessful_ != false) { + output.writeBool(4, wasSuccessful_); + } + if (wasCached_ != false) { + output.writeBool(5, wasCached_); + } + if (((bitField0_ & 0x00000001) != 0)) { + output.writeMessage(6, getValue()); + } + if (quality_ != 0) { + output.writeInt32(7, quality_); + } + if (((bitField0_ & 0x00000002) != 0)) { + output.writeMessage(8, getSourceTimestamp()); + } + for (int i = 0; i < statuses_.size(); i++) { + output.writeMessage(9, statuses_.get(i)); + } + if (!com.google.protobuf.GeneratedMessage.isStringEmpty(errorMessage_)) { + com.google.protobuf.GeneratedMessage.writeString(output, 10, errorMessage_); + } + getUnknownFields().writeTo(output); + } + + @java.lang.Override + public int getSerializedSize() { + int size = memoizedSize; + if (size != -1) return size; + + size = 0; + if (serverHandle_ != 0) { + size += com.google.protobuf.CodedOutputStream + .computeInt32Size(1, serverHandle_); + } + if (!com.google.protobuf.GeneratedMessage.isStringEmpty(tagAddress_)) { + size += com.google.protobuf.GeneratedMessage.computeStringSize(2, tagAddress_); + } + if (itemHandle_ != 0) { + size += com.google.protobuf.CodedOutputStream + .computeInt32Size(3, itemHandle_); + } + if (wasSuccessful_ != false) { + size += com.google.protobuf.CodedOutputStream + .computeBoolSize(4, wasSuccessful_); + } + if (wasCached_ != false) { + size += com.google.protobuf.CodedOutputStream + .computeBoolSize(5, wasCached_); + } + if (((bitField0_ & 0x00000001) != 0)) { + size += com.google.protobuf.CodedOutputStream + .computeMessageSize(6, getValue()); + } + if (quality_ != 0) { + size += com.google.protobuf.CodedOutputStream + .computeInt32Size(7, quality_); + } + if (((bitField0_ & 0x00000002) != 0)) { + size += com.google.protobuf.CodedOutputStream + .computeMessageSize(8, getSourceTimestamp()); + } + for (int i = 0; i < statuses_.size(); i++) { + size += com.google.protobuf.CodedOutputStream + .computeMessageSize(9, statuses_.get(i)); + } + if (!com.google.protobuf.GeneratedMessage.isStringEmpty(errorMessage_)) { + size += com.google.protobuf.GeneratedMessage.computeStringSize(10, errorMessage_); + } + size += getUnknownFields().getSerializedSize(); + memoizedSize = size; + return size; + } + + @java.lang.Override + public boolean equals(final java.lang.Object obj) { + if (obj == this) { + return true; + } + if (!(obj instanceof mxaccess_gateway.v1.MxaccessGateway.BulkReadResult)) { + return super.equals(obj); + } + mxaccess_gateway.v1.MxaccessGateway.BulkReadResult other = (mxaccess_gateway.v1.MxaccessGateway.BulkReadResult) obj; + + if (getServerHandle() + != other.getServerHandle()) return false; + if (!getTagAddress() + .equals(other.getTagAddress())) return false; + if (getItemHandle() + != other.getItemHandle()) return false; + if (getWasSuccessful() + != other.getWasSuccessful()) return false; + if (getWasCached() + != other.getWasCached()) return false; + if (hasValue() != other.hasValue()) return false; + if (hasValue()) { + if (!getValue() + .equals(other.getValue())) return false; + } + if (getQuality() + != other.getQuality()) return false; + if (hasSourceTimestamp() != other.hasSourceTimestamp()) return false; + if (hasSourceTimestamp()) { + if (!getSourceTimestamp() + .equals(other.getSourceTimestamp())) return false; + } + if (!getStatusesList() + .equals(other.getStatusesList())) return false; + if (!getErrorMessage() + .equals(other.getErrorMessage())) return false; + if (!getUnknownFields().equals(other.getUnknownFields())) return false; + return true; + } + + @java.lang.Override + public int hashCode() { + if (memoizedHashCode != 0) { + return memoizedHashCode; + } + int hash = 41; + hash = (19 * hash) + getDescriptor().hashCode(); + hash = (37 * hash) + SERVER_HANDLE_FIELD_NUMBER; + hash = (53 * hash) + getServerHandle(); + hash = (37 * hash) + TAG_ADDRESS_FIELD_NUMBER; + hash = (53 * hash) + getTagAddress().hashCode(); + hash = (37 * hash) + ITEM_HANDLE_FIELD_NUMBER; + hash = (53 * hash) + getItemHandle(); + hash = (37 * hash) + WAS_SUCCESSFUL_FIELD_NUMBER; + hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean( + getWasSuccessful()); + hash = (37 * hash) + WAS_CACHED_FIELD_NUMBER; + hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean( + getWasCached()); + if (hasValue()) { + hash = (37 * hash) + VALUE_FIELD_NUMBER; + hash = (53 * hash) + getValue().hashCode(); + } + hash = (37 * hash) + QUALITY_FIELD_NUMBER; + hash = (53 * hash) + getQuality(); + if (hasSourceTimestamp()) { + hash = (37 * hash) + SOURCE_TIMESTAMP_FIELD_NUMBER; + hash = (53 * hash) + getSourceTimestamp().hashCode(); + } + if (getStatusesCount() > 0) { + hash = (37 * hash) + STATUSES_FIELD_NUMBER; + hash = (53 * hash) + getStatusesList().hashCode(); + } + hash = (37 * hash) + ERROR_MESSAGE_FIELD_NUMBER; + hash = (53 * hash) + getErrorMessage().hashCode(); + hash = (29 * hash) + getUnknownFields().hashCode(); + memoizedHashCode = hash; + return hash; + } + + public static mxaccess_gateway.v1.MxaccessGateway.BulkReadResult parseFrom( + java.nio.ByteBuffer data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static mxaccess_gateway.v1.MxaccessGateway.BulkReadResult parseFrom( + java.nio.ByteBuffer data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static mxaccess_gateway.v1.MxaccessGateway.BulkReadResult parseFrom( + com.google.protobuf.ByteString data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static mxaccess_gateway.v1.MxaccessGateway.BulkReadResult parseFrom( + com.google.protobuf.ByteString data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static mxaccess_gateway.v1.MxaccessGateway.BulkReadResult parseFrom(byte[] data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static mxaccess_gateway.v1.MxaccessGateway.BulkReadResult parseFrom( + byte[] data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static mxaccess_gateway.v1.MxaccessGateway.BulkReadResult parseFrom(java.io.InputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessage + .parseWithIOException(PARSER, input); + } + public static mxaccess_gateway.v1.MxaccessGateway.BulkReadResult parseFrom( + java.io.InputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessage + .parseWithIOException(PARSER, input, extensionRegistry); + } + + public static mxaccess_gateway.v1.MxaccessGateway.BulkReadResult parseDelimitedFrom(java.io.InputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessage + .parseDelimitedWithIOException(PARSER, input); + } + + public static mxaccess_gateway.v1.MxaccessGateway.BulkReadResult parseDelimitedFrom( + java.io.InputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessage + .parseDelimitedWithIOException(PARSER, input, extensionRegistry); + } + public static mxaccess_gateway.v1.MxaccessGateway.BulkReadResult parseFrom( + com.google.protobuf.CodedInputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessage + .parseWithIOException(PARSER, input); + } + public static mxaccess_gateway.v1.MxaccessGateway.BulkReadResult parseFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessage + .parseWithIOException(PARSER, input, extensionRegistry); + } + + @java.lang.Override + public Builder newBuilderForType() { return newBuilder(); } + public static Builder newBuilder() { + return DEFAULT_INSTANCE.toBuilder(); + } + public static Builder newBuilder(mxaccess_gateway.v1.MxaccessGateway.BulkReadResult prototype) { + return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype); + } + @java.lang.Override + public Builder toBuilder() { + return this == DEFAULT_INSTANCE + ? new Builder() : new Builder().mergeFrom(this); + } + + @java.lang.Override + protected Builder newBuilderForType( + com.google.protobuf.GeneratedMessage.BuilderParent parent) { + Builder builder = new Builder(parent); + return builder; + } + /** + *
+     * Per-tag result for ReadBulk. `was_cached` is true when the value came from
+     * an existing live subscription's last OnDataChange (the worker did not touch
+     * the subscription); false when the worker took the AddItem + Advise + wait +
+     * UnAdvise + RemoveItem snapshot lifecycle itself.
+     * 
+ * + * Protobuf type {@code mxaccess_gateway.v1.BulkReadResult} + */ + public static final class Builder extends + com.google.protobuf.GeneratedMessage.Builder implements + // @@protoc_insertion_point(builder_implements:mxaccess_gateway.v1.BulkReadResult) + mxaccess_gateway.v1.MxaccessGateway.BulkReadResultOrBuilder { + public static final com.google.protobuf.Descriptors.Descriptor + getDescriptor() { + return mxaccess_gateway.v1.MxaccessGateway.internal_static_mxaccess_gateway_v1_BulkReadResult_descriptor; + } + + @java.lang.Override + protected com.google.protobuf.GeneratedMessage.FieldAccessorTable + internalGetFieldAccessorTable() { + return mxaccess_gateway.v1.MxaccessGateway.internal_static_mxaccess_gateway_v1_BulkReadResult_fieldAccessorTable + .ensureFieldAccessorsInitialized( + mxaccess_gateway.v1.MxaccessGateway.BulkReadResult.class, mxaccess_gateway.v1.MxaccessGateway.BulkReadResult.Builder.class); + } + + // Construct using mxaccess_gateway.v1.MxaccessGateway.BulkReadResult.newBuilder() + private Builder() { + maybeForceBuilderInitialization(); + } + + private Builder( + com.google.protobuf.GeneratedMessage.BuilderParent parent) { + super(parent); + maybeForceBuilderInitialization(); + } + private void maybeForceBuilderInitialization() { + if (com.google.protobuf.GeneratedMessage + .alwaysUseFieldBuilders) { + internalGetValueFieldBuilder(); + internalGetSourceTimestampFieldBuilder(); + internalGetStatusesFieldBuilder(); + } + } + @java.lang.Override + public Builder clear() { + super.clear(); + bitField0_ = 0; + serverHandle_ = 0; + tagAddress_ = ""; + itemHandle_ = 0; + wasSuccessful_ = false; + wasCached_ = false; + value_ = null; + if (valueBuilder_ != null) { + valueBuilder_.dispose(); + valueBuilder_ = null; + } + quality_ = 0; + sourceTimestamp_ = null; + if (sourceTimestampBuilder_ != null) { + sourceTimestampBuilder_.dispose(); + sourceTimestampBuilder_ = null; + } + if (statusesBuilder_ == null) { + statuses_ = java.util.Collections.emptyList(); + } else { + statuses_ = null; + statusesBuilder_.clear(); + } + bitField0_ = (bitField0_ & ~0x00000100); + errorMessage_ = ""; + return this; + } + + @java.lang.Override + public com.google.protobuf.Descriptors.Descriptor + getDescriptorForType() { + return mxaccess_gateway.v1.MxaccessGateway.internal_static_mxaccess_gateway_v1_BulkReadResult_descriptor; + } + + @java.lang.Override + public mxaccess_gateway.v1.MxaccessGateway.BulkReadResult getDefaultInstanceForType() { + return mxaccess_gateway.v1.MxaccessGateway.BulkReadResult.getDefaultInstance(); + } + + @java.lang.Override + public mxaccess_gateway.v1.MxaccessGateway.BulkReadResult build() { + mxaccess_gateway.v1.MxaccessGateway.BulkReadResult result = buildPartial(); + if (!result.isInitialized()) { + throw newUninitializedMessageException(result); + } + return result; + } + + @java.lang.Override + public mxaccess_gateway.v1.MxaccessGateway.BulkReadResult buildPartial() { + mxaccess_gateway.v1.MxaccessGateway.BulkReadResult result = new mxaccess_gateway.v1.MxaccessGateway.BulkReadResult(this); + buildPartialRepeatedFields(result); + if (bitField0_ != 0) { buildPartial0(result); } + onBuilt(); + return result; + } + + private void buildPartialRepeatedFields(mxaccess_gateway.v1.MxaccessGateway.BulkReadResult result) { + if (statusesBuilder_ == null) { + if (((bitField0_ & 0x00000100) != 0)) { + statuses_ = java.util.Collections.unmodifiableList(statuses_); + bitField0_ = (bitField0_ & ~0x00000100); + } + result.statuses_ = statuses_; + } else { + result.statuses_ = statusesBuilder_.build(); + } + } + + private void buildPartial0(mxaccess_gateway.v1.MxaccessGateway.BulkReadResult result) { + int from_bitField0_ = bitField0_; + if (((from_bitField0_ & 0x00000001) != 0)) { + result.serverHandle_ = serverHandle_; + } + if (((from_bitField0_ & 0x00000002) != 0)) { + result.tagAddress_ = tagAddress_; + } + if (((from_bitField0_ & 0x00000004) != 0)) { + result.itemHandle_ = itemHandle_; + } + if (((from_bitField0_ & 0x00000008) != 0)) { + result.wasSuccessful_ = wasSuccessful_; + } + if (((from_bitField0_ & 0x00000010) != 0)) { + result.wasCached_ = wasCached_; + } + int to_bitField0_ = 0; + if (((from_bitField0_ & 0x00000020) != 0)) { + result.value_ = valueBuilder_ == null + ? value_ + : valueBuilder_.build(); + to_bitField0_ |= 0x00000001; + } + if (((from_bitField0_ & 0x00000040) != 0)) { + result.quality_ = quality_; + } + if (((from_bitField0_ & 0x00000080) != 0)) { + result.sourceTimestamp_ = sourceTimestampBuilder_ == null + ? sourceTimestamp_ + : sourceTimestampBuilder_.build(); + to_bitField0_ |= 0x00000002; + } + if (((from_bitField0_ & 0x00000200) != 0)) { + result.errorMessage_ = errorMessage_; + } + result.bitField0_ |= to_bitField0_; + } + + @java.lang.Override + public Builder mergeFrom(com.google.protobuf.Message other) { + if (other instanceof mxaccess_gateway.v1.MxaccessGateway.BulkReadResult) { + return mergeFrom((mxaccess_gateway.v1.MxaccessGateway.BulkReadResult)other); + } else { + super.mergeFrom(other); + return this; + } + } + + public Builder mergeFrom(mxaccess_gateway.v1.MxaccessGateway.BulkReadResult other) { + if (other == mxaccess_gateway.v1.MxaccessGateway.BulkReadResult.getDefaultInstance()) return this; + if (other.getServerHandle() != 0) { + setServerHandle(other.getServerHandle()); + } + if (!other.getTagAddress().isEmpty()) { + tagAddress_ = other.tagAddress_; + bitField0_ |= 0x00000002; + onChanged(); + } + if (other.getItemHandle() != 0) { + setItemHandle(other.getItemHandle()); + } + if (other.getWasSuccessful() != false) { + setWasSuccessful(other.getWasSuccessful()); + } + if (other.getWasCached() != false) { + setWasCached(other.getWasCached()); + } + if (other.hasValue()) { + mergeValue(other.getValue()); + } + if (other.getQuality() != 0) { + setQuality(other.getQuality()); + } + if (other.hasSourceTimestamp()) { + mergeSourceTimestamp(other.getSourceTimestamp()); + } + if (statusesBuilder_ == null) { + if (!other.statuses_.isEmpty()) { + if (statuses_.isEmpty()) { + statuses_ = other.statuses_; + bitField0_ = (bitField0_ & ~0x00000100); + } else { + ensureStatusesIsMutable(); + statuses_.addAll(other.statuses_); + } + onChanged(); + } + } else { + if (!other.statuses_.isEmpty()) { + if (statusesBuilder_.isEmpty()) { + statusesBuilder_.dispose(); + statusesBuilder_ = null; + statuses_ = other.statuses_; + bitField0_ = (bitField0_ & ~0x00000100); + statusesBuilder_ = + com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders ? + internalGetStatusesFieldBuilder() : null; + } else { + statusesBuilder_.addAllMessages(other.statuses_); + } + } + } + if (!other.getErrorMessage().isEmpty()) { + errorMessage_ = other.errorMessage_; + bitField0_ |= 0x00000200; + onChanged(); + } + this.mergeUnknownFields(other.getUnknownFields()); + onChanged(); + return this; + } + + @java.lang.Override + public final boolean isInitialized() { + return true; + } + + @java.lang.Override + public Builder mergeFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + if (extensionRegistry == null) { + throw new java.lang.NullPointerException(); + } + try { + boolean done = false; + while (!done) { + int tag = input.readTag(); + switch (tag) { + case 0: + done = true; + break; + case 8: { + serverHandle_ = input.readInt32(); + bitField0_ |= 0x00000001; + break; + } // case 8 + case 18: { + tagAddress_ = input.readStringRequireUtf8(); + bitField0_ |= 0x00000002; + break; + } // case 18 + case 24: { + itemHandle_ = input.readInt32(); + bitField0_ |= 0x00000004; + break; + } // case 24 + case 32: { + wasSuccessful_ = input.readBool(); + bitField0_ |= 0x00000008; + break; + } // case 32 + case 40: { + wasCached_ = input.readBool(); + bitField0_ |= 0x00000010; + break; + } // case 40 + case 50: { + input.readMessage( + internalGetValueFieldBuilder().getBuilder(), + extensionRegistry); + bitField0_ |= 0x00000020; + break; + } // case 50 + case 56: { + quality_ = input.readInt32(); + bitField0_ |= 0x00000040; + break; + } // case 56 + case 66: { + input.readMessage( + internalGetSourceTimestampFieldBuilder().getBuilder(), + extensionRegistry); + bitField0_ |= 0x00000080; + break; + } // case 66 + case 74: { + mxaccess_gateway.v1.MxaccessGateway.MxStatusProxy m = + input.readMessage( + mxaccess_gateway.v1.MxaccessGateway.MxStatusProxy.parser(), + extensionRegistry); + if (statusesBuilder_ == null) { + ensureStatusesIsMutable(); + statuses_.add(m); + } else { + statusesBuilder_.addMessage(m); + } + break; + } // case 74 + case 82: { + errorMessage_ = input.readStringRequireUtf8(); + bitField0_ |= 0x00000200; + break; + } // case 82 + default: { + if (!super.parseUnknownField(input, extensionRegistry, tag)) { + done = true; // was an endgroup tag + } + break; + } // default: + } // switch (tag) + } // while (!done) + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + throw e.unwrapIOException(); + } finally { + onChanged(); + } // finally + return this; + } + private int bitField0_; + + private int serverHandle_ ; + /** + * int32 server_handle = 1; + * @return The serverHandle. + */ + @java.lang.Override + public int getServerHandle() { + return serverHandle_; + } + /** + * int32 server_handle = 1; + * @param value The serverHandle to set. + * @return This builder for chaining. + */ + public Builder setServerHandle(int value) { + + serverHandle_ = value; + bitField0_ |= 0x00000001; + onChanged(); + return this; + } + /** + * int32 server_handle = 1; + * @return This builder for chaining. + */ + public Builder clearServerHandle() { + bitField0_ = (bitField0_ & ~0x00000001); + serverHandle_ = 0; + onChanged(); + return this; + } + + private java.lang.Object tagAddress_ = ""; + /** + * string tag_address = 2; + * @return The tagAddress. + */ + public java.lang.String getTagAddress() { + java.lang.Object ref = tagAddress_; + if (!(ref instanceof java.lang.String)) { + com.google.protobuf.ByteString bs = + (com.google.protobuf.ByteString) ref; + java.lang.String s = bs.toStringUtf8(); + tagAddress_ = s; + return s; + } else { + return (java.lang.String) ref; + } + } + /** + * string tag_address = 2; + * @return The bytes for tagAddress. + */ + public com.google.protobuf.ByteString + getTagAddressBytes() { + java.lang.Object ref = tagAddress_; + if (ref instanceof String) { + com.google.protobuf.ByteString b = + com.google.protobuf.ByteString.copyFromUtf8( + (java.lang.String) ref); + tagAddress_ = b; + return b; + } else { + return (com.google.protobuf.ByteString) ref; + } + } + /** + * string tag_address = 2; + * @param value The tagAddress to set. + * @return This builder for chaining. + */ + public Builder setTagAddress( + java.lang.String value) { + if (value == null) { throw new NullPointerException(); } + tagAddress_ = value; + bitField0_ |= 0x00000002; + onChanged(); + return this; + } + /** + * string tag_address = 2; + * @return This builder for chaining. + */ + public Builder clearTagAddress() { + tagAddress_ = getDefaultInstance().getTagAddress(); + bitField0_ = (bitField0_ & ~0x00000002); + onChanged(); + return this; + } + /** + * string tag_address = 2; + * @param value The bytes for tagAddress to set. + * @return This builder for chaining. + */ + public Builder setTagAddressBytes( + com.google.protobuf.ByteString value) { + if (value == null) { throw new NullPointerException(); } + checkByteStringIsUtf8(value); + tagAddress_ = value; + bitField0_ |= 0x00000002; + onChanged(); + return this; + } + + private int itemHandle_ ; + /** + * int32 item_handle = 3; + * @return The itemHandle. + */ + @java.lang.Override + public int getItemHandle() { + return itemHandle_; + } + /** + * int32 item_handle = 3; + * @param value The itemHandle to set. + * @return This builder for chaining. + */ + public Builder setItemHandle(int value) { + + itemHandle_ = value; + bitField0_ |= 0x00000004; + onChanged(); + return this; + } + /** + * int32 item_handle = 3; + * @return This builder for chaining. + */ + public Builder clearItemHandle() { + bitField0_ = (bitField0_ & ~0x00000004); + itemHandle_ = 0; + onChanged(); + return this; + } + + private boolean wasSuccessful_ ; + /** + * bool was_successful = 4; + * @return The wasSuccessful. + */ + @java.lang.Override + public boolean getWasSuccessful() { + return wasSuccessful_; + } + /** + * bool was_successful = 4; + * @param value The wasSuccessful to set. + * @return This builder for chaining. + */ + public Builder setWasSuccessful(boolean value) { + + wasSuccessful_ = value; + bitField0_ |= 0x00000008; + onChanged(); + return this; + } + /** + * bool was_successful = 4; + * @return This builder for chaining. + */ + public Builder clearWasSuccessful() { + bitField0_ = (bitField0_ & ~0x00000008); + wasSuccessful_ = false; + onChanged(); + return this; + } + + private boolean wasCached_ ; + /** + * bool was_cached = 5; + * @return The wasCached. + */ + @java.lang.Override + public boolean getWasCached() { + return wasCached_; + } + /** + * bool was_cached = 5; + * @param value The wasCached to set. + * @return This builder for chaining. + */ + public Builder setWasCached(boolean value) { + + wasCached_ = value; + bitField0_ |= 0x00000010; + onChanged(); + return this; + } + /** + * bool was_cached = 5; + * @return This builder for chaining. + */ + public Builder clearWasCached() { + bitField0_ = (bitField0_ & ~0x00000010); + wasCached_ = false; + onChanged(); + return this; + } + + private mxaccess_gateway.v1.MxaccessGateway.MxValue value_; + private com.google.protobuf.SingleFieldBuilder< + mxaccess_gateway.v1.MxaccessGateway.MxValue, mxaccess_gateway.v1.MxaccessGateway.MxValue.Builder, mxaccess_gateway.v1.MxaccessGateway.MxValueOrBuilder> valueBuilder_; + /** + * .mxaccess_gateway.v1.MxValue value = 6; + * @return Whether the value field is set. + */ + public boolean hasValue() { + return ((bitField0_ & 0x00000020) != 0); + } + /** + * .mxaccess_gateway.v1.MxValue value = 6; + * @return The value. + */ + public mxaccess_gateway.v1.MxaccessGateway.MxValue getValue() { + if (valueBuilder_ == null) { + return value_ == null ? mxaccess_gateway.v1.MxaccessGateway.MxValue.getDefaultInstance() : value_; + } else { + return valueBuilder_.getMessage(); + } + } + /** + * .mxaccess_gateway.v1.MxValue value = 6; + */ + public Builder setValue(mxaccess_gateway.v1.MxaccessGateway.MxValue value) { + if (valueBuilder_ == null) { + if (value == null) { + throw new NullPointerException(); + } + value_ = value; + } else { + valueBuilder_.setMessage(value); + } + bitField0_ |= 0x00000020; + onChanged(); + return this; + } + /** + * .mxaccess_gateway.v1.MxValue value = 6; + */ + public Builder setValue( + mxaccess_gateway.v1.MxaccessGateway.MxValue.Builder builderForValue) { + if (valueBuilder_ == null) { + value_ = builderForValue.build(); + } else { + valueBuilder_.setMessage(builderForValue.build()); + } + bitField0_ |= 0x00000020; + onChanged(); + return this; + } + /** + * .mxaccess_gateway.v1.MxValue value = 6; + */ + public Builder mergeValue(mxaccess_gateway.v1.MxaccessGateway.MxValue value) { + if (valueBuilder_ == null) { + if (((bitField0_ & 0x00000020) != 0) && + value_ != null && + value_ != mxaccess_gateway.v1.MxaccessGateway.MxValue.getDefaultInstance()) { + getValueBuilder().mergeFrom(value); + } else { + value_ = value; + } + } else { + valueBuilder_.mergeFrom(value); + } + if (value_ != null) { + bitField0_ |= 0x00000020; + onChanged(); + } + return this; + } + /** + * .mxaccess_gateway.v1.MxValue value = 6; + */ + public Builder clearValue() { + bitField0_ = (bitField0_ & ~0x00000020); + value_ = null; + if (valueBuilder_ != null) { + valueBuilder_.dispose(); + valueBuilder_ = null; + } + onChanged(); + return this; + } + /** + * .mxaccess_gateway.v1.MxValue value = 6; + */ + public mxaccess_gateway.v1.MxaccessGateway.MxValue.Builder getValueBuilder() { + bitField0_ |= 0x00000020; + onChanged(); + return internalGetValueFieldBuilder().getBuilder(); + } + /** + * .mxaccess_gateway.v1.MxValue value = 6; + */ + public mxaccess_gateway.v1.MxaccessGateway.MxValueOrBuilder getValueOrBuilder() { + if (valueBuilder_ != null) { + return valueBuilder_.getMessageOrBuilder(); + } else { + return value_ == null ? + mxaccess_gateway.v1.MxaccessGateway.MxValue.getDefaultInstance() : value_; + } + } + /** + * .mxaccess_gateway.v1.MxValue value = 6; + */ + private com.google.protobuf.SingleFieldBuilder< + mxaccess_gateway.v1.MxaccessGateway.MxValue, mxaccess_gateway.v1.MxaccessGateway.MxValue.Builder, mxaccess_gateway.v1.MxaccessGateway.MxValueOrBuilder> + internalGetValueFieldBuilder() { + if (valueBuilder_ == null) { + valueBuilder_ = new com.google.protobuf.SingleFieldBuilder< + mxaccess_gateway.v1.MxaccessGateway.MxValue, mxaccess_gateway.v1.MxaccessGateway.MxValue.Builder, mxaccess_gateway.v1.MxaccessGateway.MxValueOrBuilder>( + getValue(), + getParentForChildren(), + isClean()); + value_ = null; + } + return valueBuilder_; + } + + private int quality_ ; + /** + * int32 quality = 7; + * @return The quality. + */ + @java.lang.Override + public int getQuality() { + return quality_; + } + /** + * int32 quality = 7; + * @param value The quality to set. + * @return This builder for chaining. + */ + public Builder setQuality(int value) { + + quality_ = value; + bitField0_ |= 0x00000040; + onChanged(); + return this; + } + /** + * int32 quality = 7; + * @return This builder for chaining. + */ + public Builder clearQuality() { + bitField0_ = (bitField0_ & ~0x00000040); + quality_ = 0; + onChanged(); + return this; + } + + private com.google.protobuf.Timestamp sourceTimestamp_; + private com.google.protobuf.SingleFieldBuilder< + com.google.protobuf.Timestamp, com.google.protobuf.Timestamp.Builder, com.google.protobuf.TimestampOrBuilder> sourceTimestampBuilder_; + /** + * .google.protobuf.Timestamp source_timestamp = 8; + * @return Whether the sourceTimestamp field is set. + */ + public boolean hasSourceTimestamp() { + return ((bitField0_ & 0x00000080) != 0); + } + /** + * .google.protobuf.Timestamp source_timestamp = 8; + * @return The sourceTimestamp. + */ + public com.google.protobuf.Timestamp getSourceTimestamp() { + if (sourceTimestampBuilder_ == null) { + return sourceTimestamp_ == null ? com.google.protobuf.Timestamp.getDefaultInstance() : sourceTimestamp_; + } else { + return sourceTimestampBuilder_.getMessage(); + } + } + /** + * .google.protobuf.Timestamp source_timestamp = 8; + */ + public Builder setSourceTimestamp(com.google.protobuf.Timestamp value) { + if (sourceTimestampBuilder_ == null) { + if (value == null) { + throw new NullPointerException(); + } + sourceTimestamp_ = value; + } else { + sourceTimestampBuilder_.setMessage(value); + } + bitField0_ |= 0x00000080; + onChanged(); + return this; + } + /** + * .google.protobuf.Timestamp source_timestamp = 8; + */ + public Builder setSourceTimestamp( + com.google.protobuf.Timestamp.Builder builderForValue) { + if (sourceTimestampBuilder_ == null) { + sourceTimestamp_ = builderForValue.build(); + } else { + sourceTimestampBuilder_.setMessage(builderForValue.build()); + } + bitField0_ |= 0x00000080; + onChanged(); + return this; + } + /** + * .google.protobuf.Timestamp source_timestamp = 8; + */ + public Builder mergeSourceTimestamp(com.google.protobuf.Timestamp value) { + if (sourceTimestampBuilder_ == null) { + if (((bitField0_ & 0x00000080) != 0) && + sourceTimestamp_ != null && + sourceTimestamp_ != com.google.protobuf.Timestamp.getDefaultInstance()) { + getSourceTimestampBuilder().mergeFrom(value); + } else { + sourceTimestamp_ = value; + } + } else { + sourceTimestampBuilder_.mergeFrom(value); + } + if (sourceTimestamp_ != null) { + bitField0_ |= 0x00000080; + onChanged(); + } + return this; + } + /** + * .google.protobuf.Timestamp source_timestamp = 8; + */ + public Builder clearSourceTimestamp() { + bitField0_ = (bitField0_ & ~0x00000080); + sourceTimestamp_ = null; + if (sourceTimestampBuilder_ != null) { + sourceTimestampBuilder_.dispose(); + sourceTimestampBuilder_ = null; + } + onChanged(); + return this; + } + /** + * .google.protobuf.Timestamp source_timestamp = 8; + */ + public com.google.protobuf.Timestamp.Builder getSourceTimestampBuilder() { + bitField0_ |= 0x00000080; + onChanged(); + return internalGetSourceTimestampFieldBuilder().getBuilder(); + } + /** + * .google.protobuf.Timestamp source_timestamp = 8; + */ + public com.google.protobuf.TimestampOrBuilder getSourceTimestampOrBuilder() { + if (sourceTimestampBuilder_ != null) { + return sourceTimestampBuilder_.getMessageOrBuilder(); + } else { + return sourceTimestamp_ == null ? + com.google.protobuf.Timestamp.getDefaultInstance() : sourceTimestamp_; + } + } + /** + * .google.protobuf.Timestamp source_timestamp = 8; + */ + private com.google.protobuf.SingleFieldBuilder< + com.google.protobuf.Timestamp, com.google.protobuf.Timestamp.Builder, com.google.protobuf.TimestampOrBuilder> + internalGetSourceTimestampFieldBuilder() { + if (sourceTimestampBuilder_ == null) { + sourceTimestampBuilder_ = new com.google.protobuf.SingleFieldBuilder< + com.google.protobuf.Timestamp, com.google.protobuf.Timestamp.Builder, com.google.protobuf.TimestampOrBuilder>( + getSourceTimestamp(), + getParentForChildren(), + isClean()); + sourceTimestamp_ = null; + } + return sourceTimestampBuilder_; + } + + private java.util.List statuses_ = + java.util.Collections.emptyList(); + private void ensureStatusesIsMutable() { + if (!((bitField0_ & 0x00000100) != 0)) { + statuses_ = new java.util.ArrayList(statuses_); + bitField0_ |= 0x00000100; + } + } + + private com.google.protobuf.RepeatedFieldBuilder< + mxaccess_gateway.v1.MxaccessGateway.MxStatusProxy, mxaccess_gateway.v1.MxaccessGateway.MxStatusProxy.Builder, mxaccess_gateway.v1.MxaccessGateway.MxStatusProxyOrBuilder> statusesBuilder_; + + /** + * repeated .mxaccess_gateway.v1.MxStatusProxy statuses = 9; + */ + public java.util.List getStatusesList() { + if (statusesBuilder_ == null) { + return java.util.Collections.unmodifiableList(statuses_); + } else { + return statusesBuilder_.getMessageList(); + } + } + /** + * repeated .mxaccess_gateway.v1.MxStatusProxy statuses = 9; + */ + public int getStatusesCount() { + if (statusesBuilder_ == null) { + return statuses_.size(); + } else { + return statusesBuilder_.getCount(); + } + } + /** + * repeated .mxaccess_gateway.v1.MxStatusProxy statuses = 9; + */ + public mxaccess_gateway.v1.MxaccessGateway.MxStatusProxy getStatuses(int index) { + if (statusesBuilder_ == null) { + return statuses_.get(index); + } else { + return statusesBuilder_.getMessage(index); + } + } + /** + * repeated .mxaccess_gateway.v1.MxStatusProxy statuses = 9; + */ + public Builder setStatuses( + int index, mxaccess_gateway.v1.MxaccessGateway.MxStatusProxy value) { + if (statusesBuilder_ == null) { + if (value == null) { + throw new NullPointerException(); + } + ensureStatusesIsMutable(); + statuses_.set(index, value); + onChanged(); + } else { + statusesBuilder_.setMessage(index, value); + } + return this; + } + /** + * repeated .mxaccess_gateway.v1.MxStatusProxy statuses = 9; + */ + public Builder setStatuses( + int index, mxaccess_gateway.v1.MxaccessGateway.MxStatusProxy.Builder builderForValue) { + if (statusesBuilder_ == null) { + ensureStatusesIsMutable(); + statuses_.set(index, builderForValue.build()); + onChanged(); + } else { + statusesBuilder_.setMessage(index, builderForValue.build()); + } + return this; + } + /** + * repeated .mxaccess_gateway.v1.MxStatusProxy statuses = 9; + */ + public Builder addStatuses(mxaccess_gateway.v1.MxaccessGateway.MxStatusProxy value) { + if (statusesBuilder_ == null) { + if (value == null) { + throw new NullPointerException(); + } + ensureStatusesIsMutable(); + statuses_.add(value); + onChanged(); + } else { + statusesBuilder_.addMessage(value); + } + return this; + } + /** + * repeated .mxaccess_gateway.v1.MxStatusProxy statuses = 9; + */ + public Builder addStatuses( + int index, mxaccess_gateway.v1.MxaccessGateway.MxStatusProxy value) { + if (statusesBuilder_ == null) { + if (value == null) { + throw new NullPointerException(); + } + ensureStatusesIsMutable(); + statuses_.add(index, value); + onChanged(); + } else { + statusesBuilder_.addMessage(index, value); + } + return this; + } + /** + * repeated .mxaccess_gateway.v1.MxStatusProxy statuses = 9; + */ + public Builder addStatuses( + mxaccess_gateway.v1.MxaccessGateway.MxStatusProxy.Builder builderForValue) { + if (statusesBuilder_ == null) { + ensureStatusesIsMutable(); + statuses_.add(builderForValue.build()); + onChanged(); + } else { + statusesBuilder_.addMessage(builderForValue.build()); + } + return this; + } + /** + * repeated .mxaccess_gateway.v1.MxStatusProxy statuses = 9; + */ + public Builder addStatuses( + int index, mxaccess_gateway.v1.MxaccessGateway.MxStatusProxy.Builder builderForValue) { + if (statusesBuilder_ == null) { + ensureStatusesIsMutable(); + statuses_.add(index, builderForValue.build()); + onChanged(); + } else { + statusesBuilder_.addMessage(index, builderForValue.build()); + } + return this; + } + /** + * repeated .mxaccess_gateway.v1.MxStatusProxy statuses = 9; + */ + public Builder addAllStatuses( + java.lang.Iterable values) { + if (statusesBuilder_ == null) { + ensureStatusesIsMutable(); + com.google.protobuf.AbstractMessageLite.Builder.addAll( + values, statuses_); + onChanged(); + } else { + statusesBuilder_.addAllMessages(values); + } + return this; + } + /** + * repeated .mxaccess_gateway.v1.MxStatusProxy statuses = 9; + */ + public Builder clearStatuses() { + if (statusesBuilder_ == null) { + statuses_ = java.util.Collections.emptyList(); + bitField0_ = (bitField0_ & ~0x00000100); + onChanged(); + } else { + statusesBuilder_.clear(); + } + return this; + } + /** + * repeated .mxaccess_gateway.v1.MxStatusProxy statuses = 9; + */ + public Builder removeStatuses(int index) { + if (statusesBuilder_ == null) { + ensureStatusesIsMutable(); + statuses_.remove(index); + onChanged(); + } else { + statusesBuilder_.remove(index); + } + return this; + } + /** + * repeated .mxaccess_gateway.v1.MxStatusProxy statuses = 9; + */ + public mxaccess_gateway.v1.MxaccessGateway.MxStatusProxy.Builder getStatusesBuilder( + int index) { + return internalGetStatusesFieldBuilder().getBuilder(index); + } + /** + * repeated .mxaccess_gateway.v1.MxStatusProxy statuses = 9; + */ + public mxaccess_gateway.v1.MxaccessGateway.MxStatusProxyOrBuilder getStatusesOrBuilder( + int index) { + if (statusesBuilder_ == null) { + return statuses_.get(index); } else { + return statusesBuilder_.getMessageOrBuilder(index); + } + } + /** + * repeated .mxaccess_gateway.v1.MxStatusProxy statuses = 9; + */ + public java.util.List + getStatusesOrBuilderList() { + if (statusesBuilder_ != null) { + return statusesBuilder_.getMessageOrBuilderList(); + } else { + return java.util.Collections.unmodifiableList(statuses_); + } + } + /** + * repeated .mxaccess_gateway.v1.MxStatusProxy statuses = 9; + */ + public mxaccess_gateway.v1.MxaccessGateway.MxStatusProxy.Builder addStatusesBuilder() { + return internalGetStatusesFieldBuilder().addBuilder( + mxaccess_gateway.v1.MxaccessGateway.MxStatusProxy.getDefaultInstance()); + } + /** + * repeated .mxaccess_gateway.v1.MxStatusProxy statuses = 9; + */ + public mxaccess_gateway.v1.MxaccessGateway.MxStatusProxy.Builder addStatusesBuilder( + int index) { + return internalGetStatusesFieldBuilder().addBuilder( + index, mxaccess_gateway.v1.MxaccessGateway.MxStatusProxy.getDefaultInstance()); + } + /** + * repeated .mxaccess_gateway.v1.MxStatusProxy statuses = 9; + */ + public java.util.List + getStatusesBuilderList() { + return internalGetStatusesFieldBuilder().getBuilderList(); + } + private com.google.protobuf.RepeatedFieldBuilder< + mxaccess_gateway.v1.MxaccessGateway.MxStatusProxy, mxaccess_gateway.v1.MxaccessGateway.MxStatusProxy.Builder, mxaccess_gateway.v1.MxaccessGateway.MxStatusProxyOrBuilder> + internalGetStatusesFieldBuilder() { + if (statusesBuilder_ == null) { + statusesBuilder_ = new com.google.protobuf.RepeatedFieldBuilder< + mxaccess_gateway.v1.MxaccessGateway.MxStatusProxy, mxaccess_gateway.v1.MxaccessGateway.MxStatusProxy.Builder, mxaccess_gateway.v1.MxaccessGateway.MxStatusProxyOrBuilder>( + statuses_, + ((bitField0_ & 0x00000100) != 0), + getParentForChildren(), + isClean()); + statuses_ = null; + } + return statusesBuilder_; + } + + private java.lang.Object errorMessage_ = ""; + /** + * string error_message = 10; + * @return The errorMessage. + */ + public java.lang.String getErrorMessage() { + java.lang.Object ref = errorMessage_; + if (!(ref instanceof java.lang.String)) { + com.google.protobuf.ByteString bs = + (com.google.protobuf.ByteString) ref; + java.lang.String s = bs.toStringUtf8(); + errorMessage_ = s; + return s; + } else { + return (java.lang.String) ref; + } + } + /** + * string error_message = 10; + * @return The bytes for errorMessage. + */ + public com.google.protobuf.ByteString + getErrorMessageBytes() { + java.lang.Object ref = errorMessage_; + if (ref instanceof String) { + com.google.protobuf.ByteString b = + com.google.protobuf.ByteString.copyFromUtf8( + (java.lang.String) ref); + errorMessage_ = b; + return b; + } else { + return (com.google.protobuf.ByteString) ref; + } + } + /** + * string error_message = 10; + * @param value The errorMessage to set. + * @return This builder for chaining. + */ + public Builder setErrorMessage( + java.lang.String value) { + if (value == null) { throw new NullPointerException(); } + errorMessage_ = value; + bitField0_ |= 0x00000200; + onChanged(); + return this; + } + /** + * string error_message = 10; + * @return This builder for chaining. + */ + public Builder clearErrorMessage() { + errorMessage_ = getDefaultInstance().getErrorMessage(); + bitField0_ = (bitField0_ & ~0x00000200); + onChanged(); + return this; + } + /** + * string error_message = 10; + * @param value The bytes for errorMessage to set. + * @return This builder for chaining. + */ + public Builder setErrorMessageBytes( + com.google.protobuf.ByteString value) { + if (value == null) { throw new NullPointerException(); } + checkByteStringIsUtf8(value); + errorMessage_ = value; + bitField0_ |= 0x00000200; + onChanged(); + return this; + } + + // @@protoc_insertion_point(builder_scope:mxaccess_gateway.v1.BulkReadResult) + } + + // @@protoc_insertion_point(class_scope:mxaccess_gateway.v1.BulkReadResult) + private static final mxaccess_gateway.v1.MxaccessGateway.BulkReadResult DEFAULT_INSTANCE; + static { + DEFAULT_INSTANCE = new mxaccess_gateway.v1.MxaccessGateway.BulkReadResult(); + } + + public static mxaccess_gateway.v1.MxaccessGateway.BulkReadResult getDefaultInstance() { + return DEFAULT_INSTANCE; + } + + private static final com.google.protobuf.Parser + PARSER = new com.google.protobuf.AbstractParser() { + @java.lang.Override + public BulkReadResult parsePartialFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + Builder builder = newBuilder(); + try { + builder.mergeFrom(input, extensionRegistry); + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + throw e.setUnfinishedMessage(builder.buildPartial()); + } catch (com.google.protobuf.UninitializedMessageException e) { + throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial()); + } catch (java.io.IOException e) { + throw new com.google.protobuf.InvalidProtocolBufferException(e) + .setUnfinishedMessage(builder.buildPartial()); + } + return builder.buildPartial(); + } + }; + + public static com.google.protobuf.Parser parser() { + return PARSER; + } + + @java.lang.Override + public com.google.protobuf.Parser getParserForType() { + return PARSER; + } + + @java.lang.Override + public mxaccess_gateway.v1.MxaccessGateway.BulkReadResult getDefaultInstanceForType() { + return DEFAULT_INSTANCE; + } + + } + + public interface BulkReadReplyOrBuilder extends + // @@protoc_insertion_point(interface_extends:mxaccess_gateway.v1.BulkReadReply) + com.google.protobuf.MessageOrBuilder { + + /** + * repeated .mxaccess_gateway.v1.BulkReadResult results = 1; + */ + java.util.List + getResultsList(); + /** + * repeated .mxaccess_gateway.v1.BulkReadResult results = 1; + */ + mxaccess_gateway.v1.MxaccessGateway.BulkReadResult getResults(int index); + /** + * repeated .mxaccess_gateway.v1.BulkReadResult results = 1; + */ + int getResultsCount(); + /** + * repeated .mxaccess_gateway.v1.BulkReadResult results = 1; + */ + java.util.List + getResultsOrBuilderList(); + /** + * repeated .mxaccess_gateway.v1.BulkReadResult results = 1; + */ + mxaccess_gateway.v1.MxaccessGateway.BulkReadResultOrBuilder getResultsOrBuilder( + int index); + } + /** + * Protobuf type {@code mxaccess_gateway.v1.BulkReadReply} + */ + public static final class BulkReadReply extends + com.google.protobuf.GeneratedMessage implements + // @@protoc_insertion_point(message_implements:mxaccess_gateway.v1.BulkReadReply) + BulkReadReplyOrBuilder { + private static final long serialVersionUID = 0L; + static { + com.google.protobuf.RuntimeVersion.validateProtobufGencodeVersion( + com.google.protobuf.RuntimeVersion.RuntimeDomain.PUBLIC, + /* major= */ 4, + /* minor= */ 33, + /* patch= */ 1, + /* suffix= */ "", + "BulkReadReply"); + } + // Use BulkReadReply.newBuilder() to construct. + private BulkReadReply(com.google.protobuf.GeneratedMessage.Builder builder) { + super(builder); + } + private BulkReadReply() { + results_ = java.util.Collections.emptyList(); + } + + public static final com.google.protobuf.Descriptors.Descriptor + getDescriptor() { + return mxaccess_gateway.v1.MxaccessGateway.internal_static_mxaccess_gateway_v1_BulkReadReply_descriptor; + } + + @java.lang.Override + protected com.google.protobuf.GeneratedMessage.FieldAccessorTable + internalGetFieldAccessorTable() { + return mxaccess_gateway.v1.MxaccessGateway.internal_static_mxaccess_gateway_v1_BulkReadReply_fieldAccessorTable + .ensureFieldAccessorsInitialized( + mxaccess_gateway.v1.MxaccessGateway.BulkReadReply.class, mxaccess_gateway.v1.MxaccessGateway.BulkReadReply.Builder.class); + } + + public static final int RESULTS_FIELD_NUMBER = 1; + @SuppressWarnings("serial") + private java.util.List results_; + /** + * repeated .mxaccess_gateway.v1.BulkReadResult results = 1; + */ + @java.lang.Override + public java.util.List getResultsList() { + return results_; + } + /** + * repeated .mxaccess_gateway.v1.BulkReadResult results = 1; + */ + @java.lang.Override + public java.util.List + getResultsOrBuilderList() { + return results_; + } + /** + * repeated .mxaccess_gateway.v1.BulkReadResult results = 1; + */ + @java.lang.Override + public int getResultsCount() { + return results_.size(); + } + /** + * repeated .mxaccess_gateway.v1.BulkReadResult results = 1; + */ + @java.lang.Override + public mxaccess_gateway.v1.MxaccessGateway.BulkReadResult getResults(int index) { + return results_.get(index); + } + /** + * repeated .mxaccess_gateway.v1.BulkReadResult results = 1; + */ + @java.lang.Override + public mxaccess_gateway.v1.MxaccessGateway.BulkReadResultOrBuilder getResultsOrBuilder( + int index) { + return results_.get(index); + } + + private byte memoizedIsInitialized = -1; + @java.lang.Override + public final boolean isInitialized() { + byte isInitialized = memoizedIsInitialized; + if (isInitialized == 1) return true; + if (isInitialized == 0) return false; + + memoizedIsInitialized = 1; + return true; + } + + @java.lang.Override + public void writeTo(com.google.protobuf.CodedOutputStream output) + throws java.io.IOException { + for (int i = 0; i < results_.size(); i++) { + output.writeMessage(1, results_.get(i)); + } + getUnknownFields().writeTo(output); + } + + @java.lang.Override + public int getSerializedSize() { + int size = memoizedSize; + if (size != -1) return size; + + size = 0; + for (int i = 0; i < results_.size(); i++) { + size += com.google.protobuf.CodedOutputStream + .computeMessageSize(1, results_.get(i)); + } + size += getUnknownFields().getSerializedSize(); + memoizedSize = size; + return size; + } + + @java.lang.Override + public boolean equals(final java.lang.Object obj) { + if (obj == this) { + return true; + } + if (!(obj instanceof mxaccess_gateway.v1.MxaccessGateway.BulkReadReply)) { + return super.equals(obj); + } + mxaccess_gateway.v1.MxaccessGateway.BulkReadReply other = (mxaccess_gateway.v1.MxaccessGateway.BulkReadReply) obj; + + if (!getResultsList() + .equals(other.getResultsList())) return false; + if (!getUnknownFields().equals(other.getUnknownFields())) return false; + return true; + } + + @java.lang.Override + public int hashCode() { + if (memoizedHashCode != 0) { + return memoizedHashCode; + } + int hash = 41; + hash = (19 * hash) + getDescriptor().hashCode(); + if (getResultsCount() > 0) { + hash = (37 * hash) + RESULTS_FIELD_NUMBER; + hash = (53 * hash) + getResultsList().hashCode(); + } + hash = (29 * hash) + getUnknownFields().hashCode(); + memoizedHashCode = hash; + return hash; + } + + public static mxaccess_gateway.v1.MxaccessGateway.BulkReadReply parseFrom( + java.nio.ByteBuffer data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static mxaccess_gateway.v1.MxaccessGateway.BulkReadReply parseFrom( + java.nio.ByteBuffer data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static mxaccess_gateway.v1.MxaccessGateway.BulkReadReply parseFrom( + com.google.protobuf.ByteString data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static mxaccess_gateway.v1.MxaccessGateway.BulkReadReply parseFrom( + com.google.protobuf.ByteString data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static mxaccess_gateway.v1.MxaccessGateway.BulkReadReply parseFrom(byte[] data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static mxaccess_gateway.v1.MxaccessGateway.BulkReadReply parseFrom( + byte[] data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static mxaccess_gateway.v1.MxaccessGateway.BulkReadReply parseFrom(java.io.InputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessage + .parseWithIOException(PARSER, input); + } + public static mxaccess_gateway.v1.MxaccessGateway.BulkReadReply parseFrom( + java.io.InputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessage + .parseWithIOException(PARSER, input, extensionRegistry); + } + + public static mxaccess_gateway.v1.MxaccessGateway.BulkReadReply parseDelimitedFrom(java.io.InputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessage + .parseDelimitedWithIOException(PARSER, input); + } + + public static mxaccess_gateway.v1.MxaccessGateway.BulkReadReply parseDelimitedFrom( + java.io.InputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessage + .parseDelimitedWithIOException(PARSER, input, extensionRegistry); + } + public static mxaccess_gateway.v1.MxaccessGateway.BulkReadReply parseFrom( + com.google.protobuf.CodedInputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessage + .parseWithIOException(PARSER, input); + } + public static mxaccess_gateway.v1.MxaccessGateway.BulkReadReply parseFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessage + .parseWithIOException(PARSER, input, extensionRegistry); + } + + @java.lang.Override + public Builder newBuilderForType() { return newBuilder(); } + public static Builder newBuilder() { + return DEFAULT_INSTANCE.toBuilder(); + } + public static Builder newBuilder(mxaccess_gateway.v1.MxaccessGateway.BulkReadReply prototype) { + return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype); + } + @java.lang.Override + public Builder toBuilder() { + return this == DEFAULT_INSTANCE + ? new Builder() : new Builder().mergeFrom(this); + } + + @java.lang.Override + protected Builder newBuilderForType( + com.google.protobuf.GeneratedMessage.BuilderParent parent) { + Builder builder = new Builder(parent); + return builder; + } + /** + * Protobuf type {@code mxaccess_gateway.v1.BulkReadReply} + */ + public static final class Builder extends + com.google.protobuf.GeneratedMessage.Builder implements + // @@protoc_insertion_point(builder_implements:mxaccess_gateway.v1.BulkReadReply) + mxaccess_gateway.v1.MxaccessGateway.BulkReadReplyOrBuilder { + public static final com.google.protobuf.Descriptors.Descriptor + getDescriptor() { + return mxaccess_gateway.v1.MxaccessGateway.internal_static_mxaccess_gateway_v1_BulkReadReply_descriptor; + } + + @java.lang.Override + protected com.google.protobuf.GeneratedMessage.FieldAccessorTable + internalGetFieldAccessorTable() { + return mxaccess_gateway.v1.MxaccessGateway.internal_static_mxaccess_gateway_v1_BulkReadReply_fieldAccessorTable + .ensureFieldAccessorsInitialized( + mxaccess_gateway.v1.MxaccessGateway.BulkReadReply.class, mxaccess_gateway.v1.MxaccessGateway.BulkReadReply.Builder.class); + } + + // Construct using mxaccess_gateway.v1.MxaccessGateway.BulkReadReply.newBuilder() + private Builder() { + + } + + private Builder( + com.google.protobuf.GeneratedMessage.BuilderParent parent) { + super(parent); + + } + @java.lang.Override + public Builder clear() { + super.clear(); + bitField0_ = 0; + if (resultsBuilder_ == null) { + results_ = java.util.Collections.emptyList(); + } else { + results_ = null; + resultsBuilder_.clear(); + } + bitField0_ = (bitField0_ & ~0x00000001); + return this; + } + + @java.lang.Override + public com.google.protobuf.Descriptors.Descriptor + getDescriptorForType() { + return mxaccess_gateway.v1.MxaccessGateway.internal_static_mxaccess_gateway_v1_BulkReadReply_descriptor; + } + + @java.lang.Override + public mxaccess_gateway.v1.MxaccessGateway.BulkReadReply getDefaultInstanceForType() { + return mxaccess_gateway.v1.MxaccessGateway.BulkReadReply.getDefaultInstance(); + } + + @java.lang.Override + public mxaccess_gateway.v1.MxaccessGateway.BulkReadReply build() { + mxaccess_gateway.v1.MxaccessGateway.BulkReadReply result = buildPartial(); + if (!result.isInitialized()) { + throw newUninitializedMessageException(result); + } + return result; + } + + @java.lang.Override + public mxaccess_gateway.v1.MxaccessGateway.BulkReadReply buildPartial() { + mxaccess_gateway.v1.MxaccessGateway.BulkReadReply result = new mxaccess_gateway.v1.MxaccessGateway.BulkReadReply(this); + buildPartialRepeatedFields(result); + if (bitField0_ != 0) { buildPartial0(result); } + onBuilt(); + return result; + } + + private void buildPartialRepeatedFields(mxaccess_gateway.v1.MxaccessGateway.BulkReadReply result) { + if (resultsBuilder_ == null) { + if (((bitField0_ & 0x00000001) != 0)) { + results_ = java.util.Collections.unmodifiableList(results_); + bitField0_ = (bitField0_ & ~0x00000001); + } + result.results_ = results_; + } else { + result.results_ = resultsBuilder_.build(); + } + } + + private void buildPartial0(mxaccess_gateway.v1.MxaccessGateway.BulkReadReply result) { + int from_bitField0_ = bitField0_; + } + + @java.lang.Override + public Builder mergeFrom(com.google.protobuf.Message other) { + if (other instanceof mxaccess_gateway.v1.MxaccessGateway.BulkReadReply) { + return mergeFrom((mxaccess_gateway.v1.MxaccessGateway.BulkReadReply)other); + } else { + super.mergeFrom(other); + return this; + } + } + + public Builder mergeFrom(mxaccess_gateway.v1.MxaccessGateway.BulkReadReply other) { + if (other == mxaccess_gateway.v1.MxaccessGateway.BulkReadReply.getDefaultInstance()) return this; + if (resultsBuilder_ == null) { + if (!other.results_.isEmpty()) { + if (results_.isEmpty()) { + results_ = other.results_; + bitField0_ = (bitField0_ & ~0x00000001); + } else { + ensureResultsIsMutable(); + results_.addAll(other.results_); + } + onChanged(); + } + } else { + if (!other.results_.isEmpty()) { + if (resultsBuilder_.isEmpty()) { + resultsBuilder_.dispose(); + resultsBuilder_ = null; + results_ = other.results_; + bitField0_ = (bitField0_ & ~0x00000001); + resultsBuilder_ = + com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders ? + internalGetResultsFieldBuilder() : null; + } else { + resultsBuilder_.addAllMessages(other.results_); + } + } + } + this.mergeUnknownFields(other.getUnknownFields()); + onChanged(); + return this; + } + + @java.lang.Override + public final boolean isInitialized() { + return true; + } + + @java.lang.Override + public Builder mergeFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + if (extensionRegistry == null) { + throw new java.lang.NullPointerException(); + } + try { + boolean done = false; + while (!done) { + int tag = input.readTag(); + switch (tag) { + case 0: + done = true; + break; + case 10: { + mxaccess_gateway.v1.MxaccessGateway.BulkReadResult m = + input.readMessage( + mxaccess_gateway.v1.MxaccessGateway.BulkReadResult.parser(), + extensionRegistry); + if (resultsBuilder_ == null) { + ensureResultsIsMutable(); + results_.add(m); + } else { + resultsBuilder_.addMessage(m); + } + break; + } // case 10 + default: { + if (!super.parseUnknownField(input, extensionRegistry, tag)) { + done = true; // was an endgroup tag + } + break; + } // default: + } // switch (tag) + } // while (!done) + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + throw e.unwrapIOException(); + } finally { + onChanged(); + } // finally + return this; + } + private int bitField0_; + + private java.util.List results_ = + java.util.Collections.emptyList(); + private void ensureResultsIsMutable() { + if (!((bitField0_ & 0x00000001) != 0)) { + results_ = new java.util.ArrayList(results_); + bitField0_ |= 0x00000001; + } + } + + private com.google.protobuf.RepeatedFieldBuilder< + mxaccess_gateway.v1.MxaccessGateway.BulkReadResult, mxaccess_gateway.v1.MxaccessGateway.BulkReadResult.Builder, mxaccess_gateway.v1.MxaccessGateway.BulkReadResultOrBuilder> resultsBuilder_; + + /** + * repeated .mxaccess_gateway.v1.BulkReadResult results = 1; + */ + public java.util.List getResultsList() { + if (resultsBuilder_ == null) { + return java.util.Collections.unmodifiableList(results_); + } else { + return resultsBuilder_.getMessageList(); + } + } + /** + * repeated .mxaccess_gateway.v1.BulkReadResult results = 1; + */ + public int getResultsCount() { + if (resultsBuilder_ == null) { + return results_.size(); + } else { + return resultsBuilder_.getCount(); + } + } + /** + * repeated .mxaccess_gateway.v1.BulkReadResult results = 1; + */ + public mxaccess_gateway.v1.MxaccessGateway.BulkReadResult getResults(int index) { + if (resultsBuilder_ == null) { + return results_.get(index); + } else { + return resultsBuilder_.getMessage(index); + } + } + /** + * repeated .mxaccess_gateway.v1.BulkReadResult results = 1; + */ + public Builder setResults( + int index, mxaccess_gateway.v1.MxaccessGateway.BulkReadResult value) { + if (resultsBuilder_ == null) { + if (value == null) { + throw new NullPointerException(); + } + ensureResultsIsMutable(); + results_.set(index, value); + onChanged(); + } else { + resultsBuilder_.setMessage(index, value); + } + return this; + } + /** + * repeated .mxaccess_gateway.v1.BulkReadResult results = 1; + */ + public Builder setResults( + int index, mxaccess_gateway.v1.MxaccessGateway.BulkReadResult.Builder builderForValue) { + if (resultsBuilder_ == null) { + ensureResultsIsMutable(); + results_.set(index, builderForValue.build()); + onChanged(); + } else { + resultsBuilder_.setMessage(index, builderForValue.build()); + } + return this; + } + /** + * repeated .mxaccess_gateway.v1.BulkReadResult results = 1; + */ + public Builder addResults(mxaccess_gateway.v1.MxaccessGateway.BulkReadResult value) { + if (resultsBuilder_ == null) { + if (value == null) { + throw new NullPointerException(); + } + ensureResultsIsMutable(); + results_.add(value); + onChanged(); + } else { + resultsBuilder_.addMessage(value); + } + return this; + } + /** + * repeated .mxaccess_gateway.v1.BulkReadResult results = 1; + */ + public Builder addResults( + int index, mxaccess_gateway.v1.MxaccessGateway.BulkReadResult value) { + if (resultsBuilder_ == null) { + if (value == null) { + throw new NullPointerException(); + } + ensureResultsIsMutable(); + results_.add(index, value); + onChanged(); + } else { + resultsBuilder_.addMessage(index, value); + } + return this; + } + /** + * repeated .mxaccess_gateway.v1.BulkReadResult results = 1; + */ + public Builder addResults( + mxaccess_gateway.v1.MxaccessGateway.BulkReadResult.Builder builderForValue) { + if (resultsBuilder_ == null) { + ensureResultsIsMutable(); + results_.add(builderForValue.build()); + onChanged(); + } else { + resultsBuilder_.addMessage(builderForValue.build()); + } + return this; + } + /** + * repeated .mxaccess_gateway.v1.BulkReadResult results = 1; + */ + public Builder addResults( + int index, mxaccess_gateway.v1.MxaccessGateway.BulkReadResult.Builder builderForValue) { + if (resultsBuilder_ == null) { + ensureResultsIsMutable(); + results_.add(index, builderForValue.build()); + onChanged(); + } else { + resultsBuilder_.addMessage(index, builderForValue.build()); + } + return this; + } + /** + * repeated .mxaccess_gateway.v1.BulkReadResult results = 1; + */ + public Builder addAllResults( + java.lang.Iterable values) { + if (resultsBuilder_ == null) { + ensureResultsIsMutable(); + com.google.protobuf.AbstractMessageLite.Builder.addAll( + values, results_); + onChanged(); + } else { + resultsBuilder_.addAllMessages(values); + } + return this; + } + /** + * repeated .mxaccess_gateway.v1.BulkReadResult results = 1; + */ + public Builder clearResults() { + if (resultsBuilder_ == null) { + results_ = java.util.Collections.emptyList(); + bitField0_ = (bitField0_ & ~0x00000001); + onChanged(); + } else { + resultsBuilder_.clear(); + } + return this; + } + /** + * repeated .mxaccess_gateway.v1.BulkReadResult results = 1; + */ + public Builder removeResults(int index) { + if (resultsBuilder_ == null) { + ensureResultsIsMutable(); + results_.remove(index); + onChanged(); + } else { + resultsBuilder_.remove(index); + } + return this; + } + /** + * repeated .mxaccess_gateway.v1.BulkReadResult results = 1; + */ + public mxaccess_gateway.v1.MxaccessGateway.BulkReadResult.Builder getResultsBuilder( + int index) { + return internalGetResultsFieldBuilder().getBuilder(index); + } + /** + * repeated .mxaccess_gateway.v1.BulkReadResult results = 1; + */ + public mxaccess_gateway.v1.MxaccessGateway.BulkReadResultOrBuilder getResultsOrBuilder( + int index) { + if (resultsBuilder_ == null) { + return results_.get(index); } else { + return resultsBuilder_.getMessageOrBuilder(index); + } + } + /** + * repeated .mxaccess_gateway.v1.BulkReadResult results = 1; + */ + public java.util.List + getResultsOrBuilderList() { + if (resultsBuilder_ != null) { + return resultsBuilder_.getMessageOrBuilderList(); + } else { + return java.util.Collections.unmodifiableList(results_); + } + } + /** + * repeated .mxaccess_gateway.v1.BulkReadResult results = 1; + */ + public mxaccess_gateway.v1.MxaccessGateway.BulkReadResult.Builder addResultsBuilder() { + return internalGetResultsFieldBuilder().addBuilder( + mxaccess_gateway.v1.MxaccessGateway.BulkReadResult.getDefaultInstance()); + } + /** + * repeated .mxaccess_gateway.v1.BulkReadResult results = 1; + */ + public mxaccess_gateway.v1.MxaccessGateway.BulkReadResult.Builder addResultsBuilder( + int index) { + return internalGetResultsFieldBuilder().addBuilder( + index, mxaccess_gateway.v1.MxaccessGateway.BulkReadResult.getDefaultInstance()); + } + /** + * repeated .mxaccess_gateway.v1.BulkReadResult results = 1; + */ + public java.util.List + getResultsBuilderList() { + return internalGetResultsFieldBuilder().getBuilderList(); + } + private com.google.protobuf.RepeatedFieldBuilder< + mxaccess_gateway.v1.MxaccessGateway.BulkReadResult, mxaccess_gateway.v1.MxaccessGateway.BulkReadResult.Builder, mxaccess_gateway.v1.MxaccessGateway.BulkReadResultOrBuilder> + internalGetResultsFieldBuilder() { + if (resultsBuilder_ == null) { + resultsBuilder_ = new com.google.protobuf.RepeatedFieldBuilder< + mxaccess_gateway.v1.MxaccessGateway.BulkReadResult, mxaccess_gateway.v1.MxaccessGateway.BulkReadResult.Builder, mxaccess_gateway.v1.MxaccessGateway.BulkReadResultOrBuilder>( + results_, + ((bitField0_ & 0x00000001) != 0), + getParentForChildren(), + isClean()); + results_ = null; + } + return resultsBuilder_; + } + + // @@protoc_insertion_point(builder_scope:mxaccess_gateway.v1.BulkReadReply) + } + + // @@protoc_insertion_point(class_scope:mxaccess_gateway.v1.BulkReadReply) + private static final mxaccess_gateway.v1.MxaccessGateway.BulkReadReply DEFAULT_INSTANCE; + static { + DEFAULT_INSTANCE = new mxaccess_gateway.v1.MxaccessGateway.BulkReadReply(); + } + + public static mxaccess_gateway.v1.MxaccessGateway.BulkReadReply getDefaultInstance() { + return DEFAULT_INSTANCE; + } + + private static final com.google.protobuf.Parser + PARSER = new com.google.protobuf.AbstractParser() { + @java.lang.Override + public BulkReadReply parsePartialFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + Builder builder = newBuilder(); + try { + builder.mergeFrom(input, extensionRegistry); + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + throw e.setUnfinishedMessage(builder.buildPartial()); + } catch (com.google.protobuf.UninitializedMessageException e) { + throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial()); + } catch (java.io.IOException e) { + throw new com.google.protobuf.InvalidProtocolBufferException(e) + .setUnfinishedMessage(builder.buildPartial()); + } + return builder.buildPartial(); + } + }; + + public static com.google.protobuf.Parser parser() { + return PARSER; + } + + @java.lang.Override + public com.google.protobuf.Parser getParserForType() { + return PARSER; + } + + @java.lang.Override + public mxaccess_gateway.v1.MxaccessGateway.BulkReadReply getDefaultInstanceForType() { + return DEFAULT_INSTANCE; + } + + } + public interface SessionStateReplyOrBuilder extends // @@protoc_insertion_point(interface_extends:mxaccess_gateway.v1.SessionStateReply) com.google.protobuf.MessageOrBuilder { @@ -79002,6 +93243,51 @@ public final class MxaccessGateway extends com.google.protobuf.GeneratedFile { private static final com.google.protobuf.GeneratedMessage.FieldAccessorTable internal_static_mxaccess_gateway_v1_UnsubscribeBulkCommand_fieldAccessorTable; + private static final com.google.protobuf.Descriptors.Descriptor + internal_static_mxaccess_gateway_v1_WriteBulkCommand_descriptor; + private static final + com.google.protobuf.GeneratedMessage.FieldAccessorTable + internal_static_mxaccess_gateway_v1_WriteBulkCommand_fieldAccessorTable; + private static final com.google.protobuf.Descriptors.Descriptor + internal_static_mxaccess_gateway_v1_WriteBulkEntry_descriptor; + private static final + com.google.protobuf.GeneratedMessage.FieldAccessorTable + internal_static_mxaccess_gateway_v1_WriteBulkEntry_fieldAccessorTable; + private static final com.google.protobuf.Descriptors.Descriptor + internal_static_mxaccess_gateway_v1_Write2BulkCommand_descriptor; + private static final + com.google.protobuf.GeneratedMessage.FieldAccessorTable + internal_static_mxaccess_gateway_v1_Write2BulkCommand_fieldAccessorTable; + private static final com.google.protobuf.Descriptors.Descriptor + internal_static_mxaccess_gateway_v1_Write2BulkEntry_descriptor; + private static final + com.google.protobuf.GeneratedMessage.FieldAccessorTable + internal_static_mxaccess_gateway_v1_Write2BulkEntry_fieldAccessorTable; + private static final com.google.protobuf.Descriptors.Descriptor + internal_static_mxaccess_gateway_v1_WriteSecuredBulkCommand_descriptor; + private static final + com.google.protobuf.GeneratedMessage.FieldAccessorTable + internal_static_mxaccess_gateway_v1_WriteSecuredBulkCommand_fieldAccessorTable; + private static final com.google.protobuf.Descriptors.Descriptor + internal_static_mxaccess_gateway_v1_WriteSecuredBulkEntry_descriptor; + private static final + com.google.protobuf.GeneratedMessage.FieldAccessorTable + internal_static_mxaccess_gateway_v1_WriteSecuredBulkEntry_fieldAccessorTable; + private static final com.google.protobuf.Descriptors.Descriptor + internal_static_mxaccess_gateway_v1_WriteSecured2BulkCommand_descriptor; + private static final + com.google.protobuf.GeneratedMessage.FieldAccessorTable + internal_static_mxaccess_gateway_v1_WriteSecured2BulkCommand_fieldAccessorTable; + private static final com.google.protobuf.Descriptors.Descriptor + internal_static_mxaccess_gateway_v1_WriteSecured2BulkEntry_descriptor; + private static final + com.google.protobuf.GeneratedMessage.FieldAccessorTable + internal_static_mxaccess_gateway_v1_WriteSecured2BulkEntry_fieldAccessorTable; + private static final com.google.protobuf.Descriptors.Descriptor + internal_static_mxaccess_gateway_v1_ReadBulkCommand_descriptor; + private static final + com.google.protobuf.GeneratedMessage.FieldAccessorTable + internal_static_mxaccess_gateway_v1_ReadBulkCommand_fieldAccessorTable; private static final com.google.protobuf.Descriptors.Descriptor internal_static_mxaccess_gateway_v1_PingCommand_descriptor; private static final @@ -79082,6 +93368,26 @@ public final class MxaccessGateway extends com.google.protobuf.GeneratedFile { private static final com.google.protobuf.GeneratedMessage.FieldAccessorTable internal_static_mxaccess_gateway_v1_BulkSubscribeReply_fieldAccessorTable; + private static final com.google.protobuf.Descriptors.Descriptor + internal_static_mxaccess_gateway_v1_BulkWriteResult_descriptor; + private static final + com.google.protobuf.GeneratedMessage.FieldAccessorTable + internal_static_mxaccess_gateway_v1_BulkWriteResult_fieldAccessorTable; + private static final com.google.protobuf.Descriptors.Descriptor + internal_static_mxaccess_gateway_v1_BulkWriteReply_descriptor; + private static final + com.google.protobuf.GeneratedMessage.FieldAccessorTable + internal_static_mxaccess_gateway_v1_BulkWriteReply_fieldAccessorTable; + private static final com.google.protobuf.Descriptors.Descriptor + internal_static_mxaccess_gateway_v1_BulkReadResult_descriptor; + private static final + com.google.protobuf.GeneratedMessage.FieldAccessorTable + internal_static_mxaccess_gateway_v1_BulkReadResult_fieldAccessorTable; + private static final com.google.protobuf.Descriptors.Descriptor + internal_static_mxaccess_gateway_v1_BulkReadReply_descriptor; + private static final + com.google.protobuf.GeneratedMessage.FieldAccessorTable + internal_static_mxaccess_gateway_v1_BulkReadReply_fieldAccessorTable; private static final com.google.protobuf.Descriptors.Descriptor internal_static_mxaccess_gateway_v1_SessionStateReply_descriptor; private static final @@ -79251,7 +93557,7 @@ public final class MxaccessGateway extends com.google.protobuf.GeneratedFile { "\004\"v\n\020MxCommandRequest\022\022\n\nsession_id\030\001 \001(" + "\t\022\035\n\025client_correlation_id\030\002 \001(\t\022/\n\007comm" + "and\030\003 \001(\0132\036.mxaccess_gateway.v1.MxComman" + - "d\"\357\022\n\tMxCommand\0220\n\004kind\030\001 \001(\0162\".mxaccess" + + "d\"\300\025\n\tMxCommand\0220\n\004kind\030\001 \001(\0162\".mxaccess" + "_gateway.v1.MxCommandKind\0228\n\010register\030\n " + "\001(\0132$.mxaccess_gateway.v1.RegisterComman" + "dH\000\022<\n\nunregister\030\013 \001(\0132&.mxaccess_gatew" + @@ -79302,377 +93608,442 @@ public final class MxaccessGateway extends com.google.protobuf.GeneratedFile { "ommand\030% \001(\0132-.mxaccess_gateway.v1.Query" + "ActiveAlarmsCommandH\000\022_\n!acknowledge_ala" + "rm_by_name_command\030& \001(\01322.mxaccess_gate" + - "way.v1.AcknowledgeAlarmByNameCommandH\000\0220" + - "\n\004ping\030d \001(\0132 .mxaccess_gateway.v1.PingC" + - "ommandH\000\022H\n\021get_session_state\030e \001(\0132+.mx" + - "access_gateway.v1.GetSessionStateCommand" + - "H\000\022D\n\017get_worker_info\030f \001(\0132).mxaccess_g" + - "ateway.v1.GetWorkerInfoCommandH\000\022?\n\014drai" + - "n_events\030g \001(\0132\'.mxaccess_gateway.v1.Dra" + - "inEventsCommandH\000\022E\n\017shutdown_worker\030h \001" + - "(\0132*.mxaccess_gateway.v1.ShutdownWorkerC" + - "ommandH\000B\t\n\007payload\"&\n\017RegisterCommand\022\023" + - "\n\013client_name\030\001 \001(\t\"*\n\021UnregisterCommand" + - "\022\025\n\rserver_handle\030\001 \001(\005\"@\n\016AddItemComman" + - "d\022\025\n\rserver_handle\030\001 \001(\005\022\027\n\017item_definit" + - "ion\030\002 \001(\t\"W\n\017AddItem2Command\022\025\n\rserver_h" + - "andle\030\001 \001(\005\022\027\n\017item_definition\030\002 \001(\t\022\024\n\014" + - "item_context\030\003 \001(\t\"?\n\021RemoveItemCommand\022" + - "\025\n\rserver_handle\030\001 \001(\005\022\023\n\013item_handle\030\002 " + - "\001(\005\";\n\rAdviseCommand\022\025\n\rserver_handle\030\001 " + - "\001(\005\022\023\n\013item_handle\030\002 \001(\005\"=\n\017UnAdviseComm" + - "and\022\025\n\rserver_handle\030\001 \001(\005\022\023\n\013item_handl" + - "e\030\002 \001(\005\"F\n\030AdviseSupervisoryCommand\022\025\n\rs" + - "erver_handle\030\001 \001(\005\022\023\n\013item_handle\030\002 \001(\005\"" + - "^\n\026AddBufferedItemCommand\022\025\n\rserver_hand" + - "le\030\001 \001(\005\022\027\n\017item_definition\030\002 \001(\t\022\024\n\014ite" + - "m_context\030\003 \001(\t\"_\n SetBufferedUpdateInte" + - "rvalCommand\022\025\n\rserver_handle\030\001 \001(\005\022$\n\034up" + - "date_interval_milliseconds\030\002 \001(\005\"<\n\016Susp" + - "endCommand\022\025\n\rserver_handle\030\001 \001(\005\022\023\n\013ite" + - "m_handle\030\002 \001(\005\"=\n\017ActivateCommand\022\025\n\rser" + - "ver_handle\030\001 \001(\005\022\023\n\013item_handle\030\002 \001(\005\"x\n" + - "\014WriteCommand\022\025\n\rserver_handle\030\001 \001(\005\022\023\n\013" + - "item_handle\030\002 \001(\005\022+\n\005value\030\003 \001(\0132\034.mxacc" + - "ess_gateway.v1.MxValue\022\017\n\007user_id\030\004 \001(\005\"" + - "\260\001\n\rWrite2Command\022\025\n\rserver_handle\030\001 \001(\005" + - "\022\023\n\013item_handle\030\002 \001(\005\022+\n\005value\030\003 \001(\0132\034.m" + - "xaccess_gateway.v1.MxValue\0225\n\017timestamp_" + - "value\030\004 \001(\0132\034.mxaccess_gateway.v1.MxValu" + - "e\022\017\n\007user_id\030\005 \001(\005\"\241\001\n\023WriteSecuredComma" + - "nd\022\025\n\rserver_handle\030\001 \001(\005\022\023\n\013item_handle" + - "\030\002 \001(\005\022\027\n\017current_user_id\030\003 \001(\005\022\030\n\020verif" + - "ier_user_id\030\004 \001(\005\022+\n\005value\030\005 \001(\0132\034.mxacc" + - "ess_gateway.v1.MxValue\"\331\001\n\024WriteSecured2" + - "Command\022\025\n\rserver_handle\030\001 \001(\005\022\023\n\013item_h" + - "andle\030\002 \001(\005\022\027\n\017current_user_id\030\003 \001(\005\022\030\n\020" + - "verifier_user_id\030\004 \001(\005\022+\n\005value\030\005 \001(\0132\034." + - "mxaccess_gateway.v1.MxValue\0225\n\017timestamp" + - "_value\030\006 \001(\0132\034.mxaccess_gateway.v1.MxVal" + - "ue\"c\n\027AuthenticateUserCommand\022\025\n\rserver_" + - "handle\030\001 \001(\005\022\023\n\013verify_user\030\002 \001(\t\022\034\n\024ver" + - "ify_user_password\030\003 \001(\t\"G\n\030ArchestrAUser" + - "ToIdCommand\022\025\n\rserver_handle\030\001 \001(\005\022\024\n\014us" + - "er_id_guid\030\002 \001(\t\"B\n\022AddItemBulkCommand\022\025" + - "\n\rserver_handle\030\001 \001(\005\022\025\n\rtag_addresses\030\002" + - " \003(\t\"D\n\025AdviseItemBulkCommand\022\025\n\rserver_" + - "handle\030\001 \001(\005\022\024\n\014item_handles\030\002 \003(\005\"D\n\025Re" + - "moveItemBulkCommand\022\025\n\rserver_handle\030\001 \001" + - "(\005\022\024\n\014item_handles\030\002 \003(\005\"F\n\027UnAdviseItem" + - "BulkCommand\022\025\n\rserver_handle\030\001 \001(\005\022\024\n\014it" + - "em_handles\030\002 \003(\005\"D\n\024SubscribeBulkCommand" + - "\022\025\n\rserver_handle\030\001 \001(\005\022\025\n\rtag_addresses" + - "\030\002 \003(\t\"9\n\026SubscribeAlarmsCommand\022\037\n\027subs" + - "cription_expression\030\001 \001(\t\"\032\n\030Unsubscribe" + - "AlarmsCommand\"\241\001\n\027AcknowledgeAlarmComman" + - "d\022\022\n\nalarm_guid\030\001 \001(\t\022\017\n\007comment\030\002 \001(\t\022\025" + - "\n\roperator_user\030\003 \001(\t\022\025\n\roperator_node\030\004" + - " \001(\t\022\027\n\017operator_domain\030\005 \001(\t\022\032\n\022operato" + - "r_full_name\030\006 \001(\t\"7\n\030QueryActiveAlarmsCo" + - "mmand\022\033\n\023alarm_filter_prefix\030\001 \001(\t\"\322\001\n\035A" + - "cknowledgeAlarmByNameCommand\022\022\n\nalarm_na" + - "me\030\001 \001(\t\022\025\n\rprovider_name\030\002 \001(\t\022\022\n\ngroup" + - "_name\030\003 \001(\t\022\017\n\007comment\030\004 \001(\t\022\025\n\roperator" + - "_user\030\005 \001(\t\022\025\n\roperator_node\030\006 \001(\t\022\027\n\017op" + - "erator_domain\030\007 \001(\t\022\032\n\022operator_full_nam" + - "e\030\010 \001(\t\"E\n\026UnsubscribeBulkCommand\022\025\n\rser" + - "ver_handle\030\001 \001(\005\022\024\n\014item_handles\030\002 \003(\005\"\036" + - "\n\013PingCommand\022\017\n\007message\030\001 \001(\t\"\030\n\026GetSes" + - "sionStateCommand\"\026\n\024GetWorkerInfoCommand" + - "\"(\n\022DrainEventsCommand\022\022\n\nmax_events\030\001 \001" + - "(\r\"H\n\025ShutdownWorkerCommand\022/\n\014grace_per" + - "iod\030\001 \001(\0132\031.google.protobuf.Duration\"\317\014\n" + - "\016MxCommandReply\022\022\n\nsession_id\030\001 \001(\t\022\026\n\016c" + - "orrelation_id\030\002 \001(\t\0220\n\004kind\030\003 \001(\0162\".mxac" + - "cess_gateway.v1.MxCommandKind\022<\n\017protoco" + - "l_status\030\004 \001(\0132#.mxaccess_gateway.v1.Pro" + - "tocolStatus\022\024\n\007hresult\030\005 \001(\005H\001\210\001\001\0222\n\014ret" + - "urn_value\030\006 \001(\0132\034.mxaccess_gateway.v1.Mx" + - "Value\0224\n\010statuses\030\007 \003(\0132\".mxaccess_gatew" + - "ay.v1.MxStatusProxy\022\032\n\022diagnostic_messag" + - "e\030\010 \001(\t\0226\n\010register\030\024 \001(\0132\".mxaccess_gat" + - "eway.v1.RegisterReplyH\000\0225\n\010add_item\030\025 \001(" + - "\0132!.mxaccess_gateway.v1.AddItemReplyH\000\0227" + - "\n\tadd_item2\030\026 \001(\0132\".mxaccess_gateway.v1." + - "AddItem2ReplyH\000\022F\n\021add_buffered_item\030\027 \001" + - "(\0132).mxaccess_gateway.v1.AddBufferedItem" + - "ReplyH\000\0224\n\007suspend\030\030 \001(\0132!.mxaccess_gate" + - "way.v1.SuspendReplyH\000\0226\n\010activate\030\031 \001(\0132" + - "\".mxaccess_gateway.v1.ActivateReplyH\000\022G\n" + - "\021authenticate_user\030\032 \001(\0132*.mxaccess_gate" + - "way.v1.AuthenticateUserReplyH\000\022K\n\024arches" + - "tra_user_to_id\030\033 \001(\0132+.mxaccess_gateway." + - "v1.ArchestrAUserToIdReplyH\000\022@\n\radd_item_" + - "bulk\030\034 \001(\0132\'.mxaccess_gateway.v1.BulkSub" + - "scribeReplyH\000\022C\n\020advise_item_bulk\030\035 \001(\0132" + + "way.v1.AcknowledgeAlarmByNameCommandH\000\022;" + + "\n\nwrite_bulk\030\' \001(\0132%.mxaccess_gateway.v1" + + ".WriteBulkCommandH\000\022=\n\013write2_bulk\030( \001(\013" + + "2&.mxaccess_gateway.v1.Write2BulkCommand" + + "H\000\022J\n\022write_secured_bulk\030) \001(\0132,.mxacces" + + "s_gateway.v1.WriteSecuredBulkCommandH\000\022L" + + "\n\023write_secured2_bulk\030* \001(\0132-.mxaccess_g" + + "ateway.v1.WriteSecured2BulkCommandH\000\0229\n\t" + + "read_bulk\030+ \001(\0132$.mxaccess_gateway.v1.Re" + + "adBulkCommandH\000\0220\n\004ping\030d \001(\0132 .mxaccess" + + "_gateway.v1.PingCommandH\000\022H\n\021get_session" + + "_state\030e \001(\0132+.mxaccess_gateway.v1.GetSe" + + "ssionStateCommandH\000\022D\n\017get_worker_info\030f" + + " \001(\0132).mxaccess_gateway.v1.GetWorkerInfo" + + "CommandH\000\022?\n\014drain_events\030g \001(\0132\'.mxacce" + + "ss_gateway.v1.DrainEventsCommandH\000\022E\n\017sh" + + "utdown_worker\030h \001(\0132*.mxaccess_gateway.v" + + "1.ShutdownWorkerCommandH\000B\t\n\007payload\"&\n\017" + + "RegisterCommand\022\023\n\013client_name\030\001 \001(\t\"*\n\021" + + "UnregisterCommand\022\025\n\rserver_handle\030\001 \001(\005" + + "\"@\n\016AddItemCommand\022\025\n\rserver_handle\030\001 \001(" + + "\005\022\027\n\017item_definition\030\002 \001(\t\"W\n\017AddItem2Co" + + "mmand\022\025\n\rserver_handle\030\001 \001(\005\022\027\n\017item_def" + + "inition\030\002 \001(\t\022\024\n\014item_context\030\003 \001(\t\"?\n\021R" + + "emoveItemCommand\022\025\n\rserver_handle\030\001 \001(\005\022" + + "\023\n\013item_handle\030\002 \001(\005\";\n\rAdviseCommand\022\025\n" + + "\rserver_handle\030\001 \001(\005\022\023\n\013item_handle\030\002 \001(" + + "\005\"=\n\017UnAdviseCommand\022\025\n\rserver_handle\030\001 " + + "\001(\005\022\023\n\013item_handle\030\002 \001(\005\"F\n\030AdviseSuperv" + + "isoryCommand\022\025\n\rserver_handle\030\001 \001(\005\022\023\n\013i" + + "tem_handle\030\002 \001(\005\"^\n\026AddBufferedItemComma" + + "nd\022\025\n\rserver_handle\030\001 \001(\005\022\027\n\017item_defini" + + "tion\030\002 \001(\t\022\024\n\014item_context\030\003 \001(\t\"_\n SetB" + + "ufferedUpdateIntervalCommand\022\025\n\rserver_h" + + "andle\030\001 \001(\005\022$\n\034update_interval_milliseco" + + "nds\030\002 \001(\005\"<\n\016SuspendCommand\022\025\n\rserver_ha" + + "ndle\030\001 \001(\005\022\023\n\013item_handle\030\002 \001(\005\"=\n\017Activ" + + "ateCommand\022\025\n\rserver_handle\030\001 \001(\005\022\023\n\013ite" + + "m_handle\030\002 \001(\005\"x\n\014WriteCommand\022\025\n\rserver" + + "_handle\030\001 \001(\005\022\023\n\013item_handle\030\002 \001(\005\022+\n\005va" + + "lue\030\003 \001(\0132\034.mxaccess_gateway.v1.MxValue\022" + + "\017\n\007user_id\030\004 \001(\005\"\260\001\n\rWrite2Command\022\025\n\rse" + + "rver_handle\030\001 \001(\005\022\023\n\013item_handle\030\002 \001(\005\022+" + + "\n\005value\030\003 \001(\0132\034.mxaccess_gateway.v1.MxVa" + + "lue\0225\n\017timestamp_value\030\004 \001(\0132\034.mxaccess_" + + "gateway.v1.MxValue\022\017\n\007user_id\030\005 \001(\005\"\241\001\n\023" + + "WriteSecuredCommand\022\025\n\rserver_handle\030\001 \001" + + "(\005\022\023\n\013item_handle\030\002 \001(\005\022\027\n\017current_user_" + + "id\030\003 \001(\005\022\030\n\020verifier_user_id\030\004 \001(\005\022+\n\005va" + + "lue\030\005 \001(\0132\034.mxaccess_gateway.v1.MxValue\"" + + "\331\001\n\024WriteSecured2Command\022\025\n\rserver_handl" + + "e\030\001 \001(\005\022\023\n\013item_handle\030\002 \001(\005\022\027\n\017current_" + + "user_id\030\003 \001(\005\022\030\n\020verifier_user_id\030\004 \001(\005\022" + + "+\n\005value\030\005 \001(\0132\034.mxaccess_gateway.v1.MxV" + + "alue\0225\n\017timestamp_value\030\006 \001(\0132\034.mxaccess" + + "_gateway.v1.MxValue\"c\n\027AuthenticateUserC" + + "ommand\022\025\n\rserver_handle\030\001 \001(\005\022\023\n\013verify_" + + "user\030\002 \001(\t\022\034\n\024verify_user_password\030\003 \001(\t" + + "\"G\n\030ArchestrAUserToIdCommand\022\025\n\rserver_h" + + "andle\030\001 \001(\005\022\024\n\014user_id_guid\030\002 \001(\t\"B\n\022Add" + + "ItemBulkCommand\022\025\n\rserver_handle\030\001 \001(\005\022\025" + + "\n\rtag_addresses\030\002 \003(\t\"D\n\025AdviseItemBulkC" + + "ommand\022\025\n\rserver_handle\030\001 \001(\005\022\024\n\014item_ha" + + "ndles\030\002 \003(\005\"D\n\025RemoveItemBulkCommand\022\025\n\r" + + "server_handle\030\001 \001(\005\022\024\n\014item_handles\030\002 \003(" + + "\005\"F\n\027UnAdviseItemBulkCommand\022\025\n\rserver_h" + + "andle\030\001 \001(\005\022\024\n\014item_handles\030\002 \003(\005\"D\n\024Sub" + + "scribeBulkCommand\022\025\n\rserver_handle\030\001 \001(\005" + + "\022\025\n\rtag_addresses\030\002 \003(\t\"9\n\026SubscribeAlar" + + "msCommand\022\037\n\027subscription_expression\030\001 \001" + + "(\t\"\032\n\030UnsubscribeAlarmsCommand\"\241\001\n\027Ackno" + + "wledgeAlarmCommand\022\022\n\nalarm_guid\030\001 \001(\t\022\017" + + "\n\007comment\030\002 \001(\t\022\025\n\roperator_user\030\003 \001(\t\022\025" + + "\n\roperator_node\030\004 \001(\t\022\027\n\017operator_domain" + + "\030\005 \001(\t\022\032\n\022operator_full_name\030\006 \001(\t\"7\n\030Qu" + + "eryActiveAlarmsCommand\022\033\n\023alarm_filter_p" + + "refix\030\001 \001(\t\"\322\001\n\035AcknowledgeAlarmByNameCo" + + "mmand\022\022\n\nalarm_name\030\001 \001(\t\022\025\n\rprovider_na" + + "me\030\002 \001(\t\022\022\n\ngroup_name\030\003 \001(\t\022\017\n\007comment\030" + + "\004 \001(\t\022\025\n\roperator_user\030\005 \001(\t\022\025\n\roperator" + + "_node\030\006 \001(\t\022\027\n\017operator_domain\030\007 \001(\t\022\032\n\022" + + "operator_full_name\030\010 \001(\t\"E\n\026UnsubscribeB" + + "ulkCommand\022\025\n\rserver_handle\030\001 \001(\005\022\024\n\014ite" + + "m_handles\030\002 \003(\005\"_\n\020WriteBulkCommand\022\025\n\rs" + + "erver_handle\030\001 \001(\005\0224\n\007entries\030\002 \003(\0132#.mx" + + "access_gateway.v1.WriteBulkEntry\"c\n\016Writ" + + "eBulkEntry\022\023\n\013item_handle\030\001 \001(\005\022+\n\005value" + + "\030\002 \001(\0132\034.mxaccess_gateway.v1.MxValue\022\017\n\007" + + "user_id\030\003 \001(\005\"a\n\021Write2BulkCommand\022\025\n\rse" + + "rver_handle\030\001 \001(\005\0225\n\007entries\030\002 \003(\0132$.mxa" + + "ccess_gateway.v1.Write2BulkEntry\"\233\001\n\017Wri" + + "te2BulkEntry\022\023\n\013item_handle\030\001 \001(\005\022+\n\005val" + + "ue\030\002 \001(\0132\034.mxaccess_gateway.v1.MxValue\0225" + + "\n\017timestamp_value\030\003 \001(\0132\034.mxaccess_gatew" + + "ay.v1.MxValue\022\017\n\007user_id\030\004 \001(\005\"m\n\027WriteS" + + "ecuredBulkCommand\022\025\n\rserver_handle\030\001 \001(\005" + + "\022;\n\007entries\030\002 \003(\0132*.mxaccess_gateway.v1." + + "WriteSecuredBulkEntry\"\214\001\n\025WriteSecuredBu" + + "lkEntry\022\023\n\013item_handle\030\001 \001(\005\022\027\n\017current_" + + "user_id\030\002 \001(\005\022\030\n\020verifier_user_id\030\003 \001(\005\022" + + "+\n\005value\030\004 \001(\0132\034.mxaccess_gateway.v1.MxV" + + "alue\"o\n\030WriteSecured2BulkCommand\022\025\n\rserv" + + "er_handle\030\001 \001(\005\022<\n\007entries\030\002 \003(\0132+.mxacc" + + "ess_gateway.v1.WriteSecured2BulkEntry\"\304\001" + + "\n\026WriteSecured2BulkEntry\022\023\n\013item_handle\030" + + "\001 \001(\005\022\027\n\017current_user_id\030\002 \001(\005\022\030\n\020verifi" + + "er_user_id\030\003 \001(\005\022+\n\005value\030\004 \001(\0132\034.mxacce" + + "ss_gateway.v1.MxValue\0225\n\017timestamp_value" + + "\030\005 \001(\0132\034.mxaccess_gateway.v1.MxValue\"S\n\017" + + "ReadBulkCommand\022\025\n\rserver_handle\030\001 \001(\005\022\025" + + "\n\rtag_addresses\030\002 \003(\t\022\022\n\ntimeout_ms\030\003 \001(" + + "\r\"\036\n\013PingCommand\022\017\n\007message\030\001 \001(\t\"\030\n\026Get" + + "SessionStateCommand\"\026\n\024GetWorkerInfoComm" + + "and\"(\n\022DrainEventsCommand\022\022\n\nmax_events\030" + + "\001 \001(\r\"H\n\025ShutdownWorkerCommand\022/\n\014grace_" + + "period\030\001 \001(\0132\031.google.protobuf.Duration\"" + + "\206\017\n\016MxCommandReply\022\022\n\nsession_id\030\001 \001(\t\022\026" + + "\n\016correlation_id\030\002 \001(\t\0220\n\004kind\030\003 \001(\0162\".m" + + "xaccess_gateway.v1.MxCommandKind\022<\n\017prot" + + "ocol_status\030\004 \001(\0132#.mxaccess_gateway.v1." + + "ProtocolStatus\022\024\n\007hresult\030\005 \001(\005H\001\210\001\001\0222\n\014" + + "return_value\030\006 \001(\0132\034.mxaccess_gateway.v1" + + ".MxValue\0224\n\010statuses\030\007 \003(\0132\".mxaccess_ga" + + "teway.v1.MxStatusProxy\022\032\n\022diagnostic_mes" + + "sage\030\010 \001(\t\0226\n\010register\030\024 \001(\0132\".mxaccess_" + + "gateway.v1.RegisterReplyH\000\0225\n\010add_item\030\025" + + " \001(\0132!.mxaccess_gateway.v1.AddItemReplyH" + + "\000\0227\n\tadd_item2\030\026 \001(\0132\".mxaccess_gateway." + + "v1.AddItem2ReplyH\000\022F\n\021add_buffered_item\030" + + "\027 \001(\0132).mxaccess_gateway.v1.AddBufferedI" + + "temReplyH\000\0224\n\007suspend\030\030 \001(\0132!.mxaccess_g" + + "ateway.v1.SuspendReplyH\000\0226\n\010activate\030\031 \001" + + "(\0132\".mxaccess_gateway.v1.ActivateReplyH\000" + + "\022G\n\021authenticate_user\030\032 \001(\0132*.mxaccess_g" + + "ateway.v1.AuthenticateUserReplyH\000\022K\n\024arc" + + "hestra_user_to_id\030\033 \001(\0132+.mxaccess_gatew" + + "ay.v1.ArchestrAUserToIdReplyH\000\022@\n\radd_it" + + "em_bulk\030\034 \001(\0132\'.mxaccess_gateway.v1.Bulk" + + "SubscribeReplyH\000\022C\n\020advise_item_bulk\030\035 \001" + + "(\0132\'.mxaccess_gateway.v1.BulkSubscribeRe" + + "plyH\000\022C\n\020remove_item_bulk\030\036 \001(\0132\'.mxacce" + + "ss_gateway.v1.BulkSubscribeReplyH\000\022F\n\023un" + + "_advise_item_bulk\030\037 \001(\0132\'.mxaccess_gatew" + + "ay.v1.BulkSubscribeReplyH\000\022A\n\016subscribe_" + + "bulk\030 \001(\0132\'.mxaccess_gateway.v1.BulkSub" + + "scribeReplyH\000\022C\n\020unsubscribe_bulk\030! \001(\0132" + "\'.mxaccess_gateway.v1.BulkSubscribeReply" + - "H\000\022C\n\020remove_item_bulk\030\036 \001(\0132\'.mxaccess_" + - "gateway.v1.BulkSubscribeReplyH\000\022F\n\023un_ad" + - "vise_item_bulk\030\037 \001(\0132\'.mxaccess_gateway." + - "v1.BulkSubscribeReplyH\000\022A\n\016subscribe_bul" + - "k\030 \001(\0132\'.mxaccess_gateway.v1.BulkSubscr" + - "ibeReplyH\000\022C\n\020unsubscribe_bulk\030! \001(\0132\'.m" + - "xaccess_gateway.v1.BulkSubscribeReplyH\000\022" + - "N\n\021acknowledge_alarm\030\" \001(\01321.mxaccess_ga" + - "teway.v1.AcknowledgeAlarmReplyPayloadH\000\022" + - "Q\n\023query_active_alarms\030# \001(\01322.mxaccess_" + - "gateway.v1.QueryActiveAlarmsReplyPayload" + - "H\000\022?\n\rsession_state\030d \001(\0132&.mxaccess_gat" + - "eway.v1.SessionStateReplyH\000\022;\n\013worker_in" + - "fo\030e \001(\0132$.mxaccess_gateway.v1.WorkerInf" + - "oReplyH\000\022=\n\014drain_events\030f \001(\0132%.mxacces" + - "s_gateway.v1.DrainEventsReplyH\000B\t\n\007paylo" + - "adB\n\n\010_hresult\"&\n\rRegisterReply\022\025\n\rserve" + - "r_handle\030\001 \001(\005\"#\n\014AddItemReply\022\023\n\013item_h" + - "andle\030\001 \001(\005\"$\n\rAddItem2Reply\022\023\n\013item_han" + - "dle\030\001 \001(\005\"+\n\024AddBufferedItemReply\022\023\n\013ite" + - "m_handle\030\001 \001(\005\"B\n\014SuspendReply\0222\n\006status" + - "\030\001 \001(\0132\".mxaccess_gateway.v1.MxStatusPro" + - "xy\"C\n\rActivateReply\0222\n\006status\030\001 \001(\0132\".mx" + - "access_gateway.v1.MxStatusProxy\"(\n\025Authe" + - "nticateUserReply\022\017\n\007user_id\030\001 \001(\005\")\n\026Arc" + - "hestrAUserToIdReply\022\017\n\007user_id\030\001 \001(\005\"\201\001\n" + - "\017SubscribeResult\022\025\n\rserver_handle\030\001 \001(\005\022" + - "\023\n\013tag_address\030\002 \001(\t\022\023\n\013item_handle\030\003 \001(" + - "\005\022\026\n\016was_successful\030\004 \001(\010\022\025\n\rerror_messa" + - "ge\030\005 \001(\t\"K\n\022BulkSubscribeReply\0225\n\007result" + - "s\030\001 \003(\0132$.mxaccess_gateway.v1.SubscribeR" + - "esult\"E\n\021SessionStateReply\0220\n\005state\030\001 \001(" + - "\0162!.mxaccess_gateway.v1.SessionState\"u\n\017" + - "WorkerInfoReply\022\031\n\021worker_process_id\030\001 \001" + - "(\005\022\026\n\016worker_version\030\002 \001(\t\022\027\n\017mxaccess_p" + - "rogid\030\003 \001(\t\022\026\n\016mxaccess_clsid\030\004 \001(\t\"@\n\020D" + - "rainEventsReply\022,\n\006events\030\001 \003(\0132\034.mxacce" + - "ss_gateway.v1.MxEvent\"5\n\034AcknowledgeAlar" + - "mReplyPayload\022\025\n\rnative_status\030\001 \001(\005\"\\\n\035" + - "QueryActiveAlarmsReplyPayload\022;\n\tsnapsho" + - "ts\030\001 \003(\0132(.mxaccess_gateway.v1.ActiveAla" + - "rmSnapshot\"\347\006\n\007MxEvent\0222\n\006family\030\001 \001(\0162\"" + - ".mxaccess_gateway.v1.MxEventFamily\022\022\n\nse" + - "ssion_id\030\002 \001(\t\022\025\n\rserver_handle\030\003 \001(\005\022\023\n" + - "\013item_handle\030\004 \001(\005\022+\n\005value\030\005 \001(\0132\034.mxac" + - "cess_gateway.v1.MxValue\022\017\n\007quality\030\006 \001(\005" + - "\0224\n\020source_timestamp\030\007 \001(\0132\032.google.prot" + - "obuf.Timestamp\0224\n\010statuses\030\010 \003(\0132\".mxacc" + - "ess_gateway.v1.MxStatusProxy\022\027\n\017worker_s" + - "equence\030\t \001(\004\0224\n\020worker_timestamp\030\n \001(\0132" + - "\032.google.protobuf.Timestamp\022=\n\031gateway_r" + - "eceive_timestamp\030\013 \001(\0132\032.google.protobuf" + - ".Timestamp\022\024\n\007hresult\030\014 \001(\005H\001\210\001\001\022\022\n\nraw_" + - "status\030\r \001(\t\022@\n\016on_data_change\030\024 \001(\0132&.m" + - "xaccess_gateway.v1.OnDataChangeEventH\000\022F" + - "\n\021on_write_complete\030\025 \001(\0132).mxaccess_gat" + - "eway.v1.OnWriteCompleteEventH\000\022I\n\022operat" + - "ion_complete\030\026 \001(\0132+.mxaccess_gateway.v1" + - ".OperationCompleteEventH\000\022Q\n\027on_buffered" + - "_data_change\030\027 \001(\0132..mxaccess_gateway.v1" + - ".OnBufferedDataChangeEventH\000\022J\n\023on_alarm" + - "_transition\030\030 \001(\0132+.mxaccess_gateway.v1." + - "OnAlarmTransitionEventH\000B\006\n\004bodyB\n\n\010_hre" + - "sult\"\023\n\021OnDataChangeEvent\"\026\n\024OnWriteComp" + - "leteEvent\"\030\n\026OperationCompleteEvent\"\324\001\n\031" + - "OnBufferedDataChangeEvent\0222\n\tdata_type\030\001" + - " \001(\0162\037.mxaccess_gateway.v1.MxDataType\0224\n" + - "\016quality_values\030\002 \001(\0132\034.mxaccess_gateway" + - ".v1.MxArray\0226\n\020timestamp_values\030\003 \001(\0132\034." + - "mxaccess_gateway.v1.MxArray\022\025\n\rraw_data_" + - "type\030\004 \001(\005\"\375\003\n\026OnAlarmTransitionEvent\022\034\n" + - "\024alarm_full_reference\030\001 \001(\t\022\037\n\027source_ob" + - "ject_reference\030\002 \001(\t\022\027\n\017alarm_type_name\030" + - "\003 \001(\t\022A\n\017transition_kind\030\004 \001(\0162(.mxacces" + - "s_gateway.v1.AlarmTransitionKind\022\020\n\010seve" + - "rity\030\005 \001(\005\022<\n\030original_raise_timestamp\030\006" + - " \001(\0132\032.google.protobuf.Timestamp\0228\n\024tran" + - "sition_timestamp\030\007 \001(\0132\032.google.protobuf" + - ".Timestamp\022\025\n\roperator_user\030\010 \001(\t\022\030\n\020ope" + - "rator_comment\030\t \001(\t\022\020\n\010category\030\n \001(\t\022\023\n" + - "\013description\030\013 \001(\t\0223\n\rcurrent_value\030\014 \001(" + - "\0132\034.mxaccess_gateway.v1.MxValue\0221\n\013limit" + - "_value\030\r \001(\0132\034.mxaccess_gateway.v1.MxVal" + - "ue\"\375\003\n\023ActiveAlarmSnapshot\022\034\n\024alarm_full" + - "_reference\030\001 \001(\t\022\037\n\027source_object_refere" + - "nce\030\002 \001(\t\022\027\n\017alarm_type_name\030\003 \001(\t\022\020\n\010se" + - "verity\030\004 \001(\005\022<\n\030original_raise_timestamp" + - "\030\005 \001(\0132\032.google.protobuf.Timestamp\022?\n\rcu" + - "rrent_state\030\006 \001(\0162(.mxaccess_gateway.v1." + - "AlarmConditionState\022\020\n\010category\030\007 \001(\t\022\023\n" + - "\013description\030\010 \001(\t\022=\n\031last_transition_ti" + - "mestamp\030\t \001(\0132\032.google.protobuf.Timestam" + - "p\022\025\n\roperator_user\030\n \001(\t\022\030\n\020operator_com" + - "ment\030\013 \001(\t\0223\n\rcurrent_value\030\014 \001(\0132\034.mxac" + - "cess_gateway.v1.MxValue\0221\n\013limit_value\030\r" + - " \001(\0132\034.mxaccess_gateway.v1.MxValue\"\222\001\n\027A" + - "cknowledgeAlarmRequest\022\022\n\nsession_id\030\001 \001" + - "(\t\022\035\n\025client_correlation_id\030\002 \001(\t\022\034\n\024ala" + - "rm_full_reference\030\003 \001(\t\022\017\n\007comment\030\004 \001(\t" + - "\022\025\n\roperator_user\030\005 \001(\t\"\363\001\n\025AcknowledgeA" + - "larmReply\022\022\n\nsession_id\030\001 \001(\t\022\026\n\016correla" + - "tion_id\030\002 \001(\t\022<\n\017protocol_status\030\003 \001(\0132#" + - ".mxaccess_gateway.v1.ProtocolStatus\022\024\n\007h" + - "result\030\004 \001(\005H\000\210\001\001\0222\n\006status\030\005 \001(\0132\".mxac" + - "cess_gateway.v1.MxStatusProxy\022\032\n\022diagnos" + - "tic_message\030\006 \001(\tB\n\n\010_hresult\"j\n\030QueryAc" + - "tiveAlarmsRequest\022\022\n\nsession_id\030\001 \001(\t\022\035\n" + - "\025client_correlation_id\030\002 \001(\t\022\033\n\023alarm_fi" + - "lter_prefix\030\003 \001(\t\"\353\001\n\rMxStatusProxy\022\017\n\007s" + - "uccess\030\001 \001(\005\0227\n\010category\030\002 \001(\0162%.mxacces" + - "s_gateway.v1.MxStatusCategory\0228\n\013detecte" + - "d_by\030\003 \001(\0162#.mxaccess_gateway.v1.MxStatu" + - "sSource\022\016\n\006detail\030\004 \001(\005\022\024\n\014raw_category\030" + - "\005 \001(\005\022\027\n\017raw_detected_by\030\006 \001(\005\022\027\n\017diagno" + - "stic_text\030\007 \001(\t\"\247\003\n\007MxValue\0222\n\tdata_type" + - "\030\001 \001(\0162\037.mxaccess_gateway.v1.MxDataType\022" + - "\024\n\014variant_type\030\002 \001(\t\022\017\n\007is_null\030\003 \001(\010\022\026" + - "\n\016raw_diagnostic\030\004 \001(\t\022\025\n\rraw_data_type\030" + - "\005 \001(\005\022\024\n\nbool_value\030\n \001(\010H\000\022\025\n\013int32_val" + - "ue\030\013 \001(\005H\000\022\025\n\013int64_value\030\014 \001(\003H\000\022\025\n\013flo" + - "at_value\030\r \001(\002H\000\022\026\n\014double_value\030\016 \001(\001H\000" + - "\022\026\n\014string_value\030\017 \001(\tH\000\0225\n\017timestamp_va" + - "lue\030\020 \001(\0132\032.google.protobuf.TimestampH\000\022" + - "3\n\013array_value\030\021 \001(\0132\034.mxaccess_gateway." + - "v1.MxArrayH\000\022\023\n\traw_value\030\022 \001(\014H\000B\006\n\004kin" + - "d\"\376\004\n\007MxArray\022:\n\021element_data_type\030\001 \001(\016" + - "2\037.mxaccess_gateway.v1.MxDataType\022\024\n\014var" + - "iant_type\030\002 \001(\t\022\022\n\ndimensions\030\003 \003(\r\022\026\n\016r" + - "aw_diagnostic\030\004 \001(\t\022\035\n\025raw_element_data_" + - "type\030\005 \001(\005\0225\n\013bool_values\030\n \001(\0132\036.mxacce" + - "ss_gateway.v1.BoolArrayH\000\0227\n\014int32_value" + - "s\030\013 \001(\0132\037.mxaccess_gateway.v1.Int32Array" + - "H\000\0227\n\014int64_values\030\014 \001(\0132\037.mxaccess_gate" + - "way.v1.Int64ArrayH\000\0227\n\014float_values\030\r \001(" + - "\0132\037.mxaccess_gateway.v1.FloatArrayH\000\0229\n\r" + - "double_values\030\016 \001(\0132 .mxaccess_gateway.v" + - "1.DoubleArrayH\000\0229\n\rstring_values\030\017 \001(\0132 " + - ".mxaccess_gateway.v1.StringArrayH\000\022?\n\020ti" + - "mestamp_values\030\020 \001(\0132#.mxaccess_gateway." + - "v1.TimestampArrayH\000\0223\n\nraw_values\030\021 \001(\0132" + - "\035.mxaccess_gateway.v1.RawArrayH\000B\010\n\006valu" + - "es\"\033\n\tBoolArray\022\016\n\006values\030\001 \003(\010\"\034\n\nInt32" + - "Array\022\016\n\006values\030\001 \003(\005\"\034\n\nInt64Array\022\016\n\006v" + - "alues\030\001 \003(\003\"\034\n\nFloatArray\022\016\n\006values\030\001 \003(" + - "\002\"\035\n\013DoubleArray\022\016\n\006values\030\001 \003(\001\"\035\n\013Stri" + - "ngArray\022\016\n\006values\030\001 \003(\t\"<\n\016TimestampArra" + - "y\022*\n\006values\030\001 \003(\0132\032.google.protobuf.Time" + - "stamp\"\032\n\010RawArray\022\016\n\006values\030\001 \003(\014\"X\n\016Pro" + - "tocolStatus\0225\n\004code\030\001 \001(\0162\'.mxaccess_gat" + - "eway.v1.ProtocolStatusCode\022\017\n\007message\030\002 " + - "\001(\t*\356\t\n\rMxCommandKind\022\037\n\033MX_COMMAND_KIND" + - "_UNSPECIFIED\020\000\022\034\n\030MX_COMMAND_KIND_REGIST" + - "ER\020\001\022\036\n\032MX_COMMAND_KIND_UNREGISTER\020\002\022\034\n\030" + - "MX_COMMAND_KIND_ADD_ITEM\020\003\022\035\n\031MX_COMMAND" + - "_KIND_ADD_ITEM2\020\004\022\037\n\033MX_COMMAND_KIND_REM" + - "OVE_ITEM\020\005\022\032\n\026MX_COMMAND_KIND_ADVISE\020\006\022\035" + - "\n\031MX_COMMAND_KIND_UN_ADVISE\020\007\022&\n\"MX_COMM" + - "AND_KIND_ADVISE_SUPERVISORY\020\010\022%\n!MX_COMM" + - "AND_KIND_ADD_BUFFERED_ITEM\020\t\0220\n,MX_COMMA" + - "ND_KIND_SET_BUFFERED_UPDATE_INTERVAL\020\n\022\033" + - "\n\027MX_COMMAND_KIND_SUSPEND\020\013\022\034\n\030MX_COMMAN" + - "D_KIND_ACTIVATE\020\014\022\031\n\025MX_COMMAND_KIND_WRI" + - "TE\020\r\022\032\n\026MX_COMMAND_KIND_WRITE2\020\016\022!\n\035MX_C" + - "OMMAND_KIND_WRITE_SECURED\020\017\022\"\n\036MX_COMMAN" + - "D_KIND_WRITE_SECURED2\020\020\022%\n!MX_COMMAND_KI" + - "ND_AUTHENTICATE_USER\020\021\022(\n$MX_COMMAND_KIN" + - "D_ARCHESTRA_USER_TO_ID\020\022\022!\n\035MX_COMMAND_K" + - "IND_ADD_ITEM_BULK\020\023\022$\n MX_COMMAND_KIND_A" + - "DVISE_ITEM_BULK\020\024\022$\n MX_COMMAND_KIND_REM" + - "OVE_ITEM_BULK\020\025\022\'\n#MX_COMMAND_KIND_UN_AD" + - "VISE_ITEM_BULK\020\026\022\"\n\036MX_COMMAND_KIND_SUBS" + - "CRIBE_BULK\020\027\022$\n MX_COMMAND_KIND_UNSUBSCR" + - "IBE_BULK\020\030\022$\n MX_COMMAND_KIND_SUBSCRIBE_" + - "ALARMS\020\031\022&\n\"MX_COMMAND_KIND_UNSUBSCRIBE_" + - "ALARMS\020\032\022%\n!MX_COMMAND_KIND_ACKNOWLEDGE_" + - "ALARM\020\033\022\'\n#MX_COMMAND_KIND_QUERY_ACTIVE_" + - "ALARMS\020\034\022-\n)MX_COMMAND_KIND_ACKNOWLEDGE_" + - "ALARM_BY_NAME\020\035\022\030\n\024MX_COMMAND_KIND_PING\020" + - "d\022%\n!MX_COMMAND_KIND_GET_SESSION_STATE\020e" + - "\022#\n\037MX_COMMAND_KIND_GET_WORKER_INFO\020f\022 \n" + - "\034MX_COMMAND_KIND_DRAIN_EVENTS\020g\022#\n\037MX_CO" + - "MMAND_KIND_SHUTDOWN_WORKER\020h*\371\001\n\rMxEvent" + - "Family\022\037\n\033MX_EVENT_FAMILY_UNSPECIFIED\020\000\022" + - "\"\n\036MX_EVENT_FAMILY_ON_DATA_CHANGE\020\001\022%\n!M" + - "X_EVENT_FAMILY_ON_WRITE_COMPLETE\020\002\022&\n\"MX" + - "_EVENT_FAMILY_OPERATION_COMPLETE\020\003\022+\n\'MX" + - "_EVENT_FAMILY_ON_BUFFERED_DATA_CHANGE\020\004\022" + - "\'\n#MX_EVENT_FAMILY_ON_ALARM_TRANSITION\020\005" + - "*\312\001\n\023AlarmTransitionKind\022%\n!ALARM_TRANSI" + - "TION_KIND_UNSPECIFIED\020\000\022\037\n\033ALARM_TRANSIT" + - "ION_KIND_RAISE\020\001\022%\n!ALARM_TRANSITION_KIN" + - "D_ACKNOWLEDGE\020\002\022\037\n\033ALARM_TRANSITION_KIND" + - "_CLEAR\020\003\022#\n\037ALARM_TRANSITION_KIND_RETRIG" + - "GER\020\004*\252\001\n\023AlarmConditionState\022%\n!ALARM_C" + - "ONDITION_STATE_UNSPECIFIED\020\000\022 \n\034ALARM_CO" + - "NDITION_STATE_ACTIVE\020\001\022&\n\"ALARM_CONDITIO" + - "N_STATE_ACTIVE_ACKED\020\002\022\"\n\036ALARM_CONDITIO" + - "N_STATE_INACTIVE\020\003*\245\003\n\020MxStatusCategory\022" + - "\"\n\036MX_STATUS_CATEGORY_UNSPECIFIED\020\000\022\036\n\032M" + - "X_STATUS_CATEGORY_UNKNOWN\020\001\022\031\n\025MX_STATUS" + - "_CATEGORY_OK\020\002\022\036\n\032MX_STATUS_CATEGORY_PEN" + - "DING\020\003\022\036\n\032MX_STATUS_CATEGORY_WARNING\020\004\022*" + - "\n&MX_STATUS_CATEGORY_COMMUNICATION_ERROR" + - "\020\005\022*\n&MX_STATUS_CATEGORY_CONFIGURATION_E" + - "RROR\020\006\022(\n$MX_STATUS_CATEGORY_OPERATIONAL" + - "_ERROR\020\007\022%\n!MX_STATUS_CATEGORY_SECURITY_" + - "ERROR\020\010\022%\n!MX_STATUS_CATEGORY_SOFTWARE_E" + - "RROR\020\t\022\"\n\036MX_STATUS_CATEGORY_OTHER_ERROR" + - "\020\n*\312\002\n\016MxStatusSource\022 \n\034MX_STATUS_SOURC" + - "E_UNSPECIFIED\020\000\022\034\n\030MX_STATUS_SOURCE_UNKN" + - "OWN\020\001\022#\n\037MX_STATUS_SOURCE_REQUESTING_LMX" + - "\020\002\022#\n\037MX_STATUS_SOURCE_RESPONDING_LMX\020\003\022" + - "#\n\037MX_STATUS_SOURCE_REQUESTING_NMX\020\004\022#\n\037" + - "MX_STATUS_SOURCE_RESPONDING_NMX\020\005\0221\n-MX_" + - "STATUS_SOURCE_REQUESTING_AUTOMATION_OBJE" + - "CT\020\006\0221\n-MX_STATUS_SOURCE_RESPONDING_AUTO" + - "MATION_OBJECT\020\007*\335\004\n\nMxDataType\022\034\n\030MX_DAT" + - "A_TYPE_UNSPECIFIED\020\000\022\030\n\024MX_DATA_TYPE_UNK" + - "NOWN\020\001\022\030\n\024MX_DATA_TYPE_NO_DATA\020\002\022\030\n\024MX_D" + - "ATA_TYPE_BOOLEAN\020\003\022\030\n\024MX_DATA_TYPE_INTEG", - "ER\020\004\022\026\n\022MX_DATA_TYPE_FLOAT\020\005\022\027\n\023MX_DATA_" + - "TYPE_DOUBLE\020\006\022\027\n\023MX_DATA_TYPE_STRING\020\007\022\025" + - "\n\021MX_DATA_TYPE_TIME\020\010\022\035\n\031MX_DATA_TYPE_EL" + - "APSED_TIME\020\t\022\037\n\033MX_DATA_TYPE_REFERENCE_T" + - "YPE\020\n\022\034\n\030MX_DATA_TYPE_STATUS_TYPE\020\013\022\025\n\021M" + - "X_DATA_TYPE_ENUM\020\014\022-\n)MX_DATA_TYPE_SECUR" + - "ITY_CLASSIFICATION_ENUM\020\r\022\"\n\036MX_DATA_TYP" + - "E_DATA_QUALITY_TYPE\020\016\022\037\n\033MX_DATA_TYPE_QU" + - "ALIFIED_ENUM\020\017\022!\n\035MX_DATA_TYPE_QUALIFIED" + - "_STRUCT\020\020\022)\n%MX_DATA_TYPE_INTERNATIONALI" + - "ZED_STRING\020\021\022\033\n\027MX_DATA_TYPE_BIG_STRING\020" + - "\022\022\024\n\020MX_DATA_TYPE_END\020\023*\243\003\n\022ProtocolStat" + - "usCode\022$\n PROTOCOL_STATUS_CODE_UNSPECIFI" + - "ED\020\000\022\033\n\027PROTOCOL_STATUS_CODE_OK\020\001\022(\n$PRO" + - "TOCOL_STATUS_CODE_INVALID_REQUEST\020\002\022*\n&P" + - "ROTOCOL_STATUS_CODE_SESSION_NOT_FOUND\020\003\022" + - "*\n&PROTOCOL_STATUS_CODE_SESSION_NOT_READ" + - "Y\020\004\022+\n\'PROTOCOL_STATUS_CODE_WORKER_UNAVA" + - "ILABLE\020\005\022 \n\034PROTOCOL_STATUS_CODE_TIMEOUT" + - "\020\006\022!\n\035PROTOCOL_STATUS_CODE_CANCELED\020\007\022+\n" + - "\'PROTOCOL_STATUS_CODE_PROTOCOL_VIOLATION" + - "\020\010\022)\n%PROTOCOL_STATUS_CODE_MXACCESS_FAIL" + - "URE\020\t*\277\002\n\014SessionState\022\035\n\031SESSION_STATE_" + - "UNSPECIFIED\020\000\022\032\n\026SESSION_STATE_CREATING\020" + - "\001\022!\n\035SESSION_STATE_STARTING_WORKER\020\002\022\"\n\036" + - "SESSION_STATE_WAITING_FOR_PIPE\020\003\022\035\n\031SESS" + - "ION_STATE_HANDSHAKING\020\004\022%\n!SESSION_STATE" + - "_INITIALIZING_WORKER\020\005\022\027\n\023SESSION_STATE_" + - "READY\020\006\022\031\n\025SESSION_STATE_CLOSING\020\007\022\030\n\024SE" + - "SSION_STATE_CLOSED\020\010\022\031\n\025SESSION_STATE_FA" + - "ULTED\020\t2\340\004\n\017MxAccessGateway\022]\n\013OpenSessi" + - "on\022\'.mxaccess_gateway.v1.OpenSessionRequ" + - "est\032%.mxaccess_gateway.v1.OpenSessionRep" + - "ly\022`\n\014CloseSession\022(.mxaccess_gateway.v1" + - ".CloseSessionRequest\032&.mxaccess_gateway." + - "v1.CloseSessionReply\022T\n\006Invoke\022%.mxacces" + - "s_gateway.v1.MxCommandRequest\032#.mxaccess" + - "_gateway.v1.MxCommandReply\022X\n\014StreamEven" + - "ts\022(.mxaccess_gateway.v1.StreamEventsReq" + - "uest\032\034.mxaccess_gateway.v1.MxEvent0\001\022l\n\020" + - "AcknowledgeAlarm\022,.mxaccess_gateway.v1.A" + - "cknowledgeAlarmRequest\032*.mxaccess_gatewa" + - "y.v1.AcknowledgeAlarmReply\022n\n\021QueryActiv" + - "eAlarms\022-.mxaccess_gateway.v1.QueryActiv" + - "eAlarmsRequest\032(.mxaccess_gateway.v1.Act" + - "iveAlarmSnapshot0\001B\034\252\002\031MxGateway.Contrac" + - "ts.Protob\006proto3" + "H\000\022N\n\021acknowledge_alarm\030\" \001(\01321.mxaccess" + + "_gateway.v1.AcknowledgeAlarmReplyPayload" + + "H\000\022Q\n\023query_active_alarms\030# \001(\01322.mxacce" + + "ss_gateway.v1.QueryActiveAlarmsReplyPayl" + + "oadH\000\0229\n\nwrite_bulk\030$ \001(\0132#.mxaccess_gat" + + "eway.v1.BulkWriteReplyH\000\022:\n\013write2_bulk\030" + + "% \001(\0132#.mxaccess_gateway.v1.BulkWriteRep" + + "lyH\000\022A\n\022write_secured_bulk\030& \001(\0132#.mxacc" + + "ess_gateway.v1.BulkWriteReplyH\000\022B\n\023write" + + "_secured2_bulk\030\' \001(\0132#.mxaccess_gateway." + + "v1.BulkWriteReplyH\000\0227\n\tread_bulk\030( \001(\0132\"" + + ".mxaccess_gateway.v1.BulkReadReplyH\000\022?\n\r" + + "session_state\030d \001(\0132&.mxaccess_gateway.v" + + "1.SessionStateReplyH\000\022;\n\013worker_info\030e \001" + + "(\0132$.mxaccess_gateway.v1.WorkerInfoReply" + + "H\000\022=\n\014drain_events\030f \001(\0132%.mxaccess_gate" + + "way.v1.DrainEventsReplyH\000B\t\n\007payloadB\n\n\010" + + "_hresult\"&\n\rRegisterReply\022\025\n\rserver_hand" + + "le\030\001 \001(\005\"#\n\014AddItemReply\022\023\n\013item_handle\030" + + "\001 \001(\005\"$\n\rAddItem2Reply\022\023\n\013item_handle\030\001 " + + "\001(\005\"+\n\024AddBufferedItemReply\022\023\n\013item_hand" + + "le\030\001 \001(\005\"B\n\014SuspendReply\0222\n\006status\030\001 \001(\013" + + "2\".mxaccess_gateway.v1.MxStatusProxy\"C\n\r" + + "ActivateReply\0222\n\006status\030\001 \001(\0132\".mxaccess" + + "_gateway.v1.MxStatusProxy\"(\n\025Authenticat" + + "eUserReply\022\017\n\007user_id\030\001 \001(\005\")\n\026ArchestrA" + + "UserToIdReply\022\017\n\007user_id\030\001 \001(\005\"\201\001\n\017Subsc" + + "ribeResult\022\025\n\rserver_handle\030\001 \001(\005\022\023\n\013tag" + + "_address\030\002 \001(\t\022\023\n\013item_handle\030\003 \001(\005\022\026\n\016w" + + "as_successful\030\004 \001(\010\022\025\n\rerror_message\030\005 \001" + + "(\t\"K\n\022BulkSubscribeReply\0225\n\007results\030\001 \003(" + + "\0132$.mxaccess_gateway.v1.SubscribeResult\"" + + "\304\001\n\017BulkWriteResult\022\025\n\rserver_handle\030\001 \001" + + "(\005\022\023\n\013item_handle\030\002 \001(\005\022\026\n\016was_successfu" + + "l\030\003 \001(\010\022\024\n\007hresult\030\004 \001(\005H\000\210\001\001\0224\n\010statuse" + + "s\030\005 \003(\0132\".mxaccess_gateway.v1.MxStatusPr" + + "oxy\022\025\n\rerror_message\030\006 \001(\tB\n\n\010_hresult\"G" + + "\n\016BulkWriteReply\0225\n\007results\030\001 \003(\0132$.mxac" + + "cess_gateway.v1.BulkWriteResult\"\276\002\n\016Bulk" + + "ReadResult\022\025\n\rserver_handle\030\001 \001(\005\022\023\n\013tag" + + "_address\030\002 \001(\t\022\023\n\013item_handle\030\003 \001(\005\022\026\n\016w" + + "as_successful\030\004 \001(\010\022\022\n\nwas_cached\030\005 \001(\010\022" + + "+\n\005value\030\006 \001(\0132\034.mxaccess_gateway.v1.MxV" + + "alue\022\017\n\007quality\030\007 \001(\005\0224\n\020source_timestam" + + "p\030\010 \001(\0132\032.google.protobuf.Timestamp\0224\n\010s" + + "tatuses\030\t \003(\0132\".mxaccess_gateway.v1.MxSt" + + "atusProxy\022\025\n\rerror_message\030\n \001(\t\"E\n\rBulk" + + "ReadReply\0224\n\007results\030\001 \003(\0132#.mxaccess_ga" + + "teway.v1.BulkReadResult\"E\n\021SessionStateR" + + "eply\0220\n\005state\030\001 \001(\0162!.mxaccess_gateway.v" + + "1.SessionState\"u\n\017WorkerInfoReply\022\031\n\021wor" + + "ker_process_id\030\001 \001(\005\022\026\n\016worker_version\030\002" + + " \001(\t\022\027\n\017mxaccess_progid\030\003 \001(\t\022\026\n\016mxacces" + + "s_clsid\030\004 \001(\t\"@\n\020DrainEventsReply\022,\n\006eve" + + "nts\030\001 \003(\0132\034.mxaccess_gateway.v1.MxEvent\"" + + "5\n\034AcknowledgeAlarmReplyPayload\022\025\n\rnativ" + + "e_status\030\001 \001(\005\"\\\n\035QueryActiveAlarmsReply" + + "Payload\022;\n\tsnapshots\030\001 \003(\0132(.mxaccess_ga" + + "teway.v1.ActiveAlarmSnapshot\"\347\006\n\007MxEvent" + + "\0222\n\006family\030\001 \001(\0162\".mxaccess_gateway.v1.M" + + "xEventFamily\022\022\n\nsession_id\030\002 \001(\t\022\025\n\rserv" + + "er_handle\030\003 \001(\005\022\023\n\013item_handle\030\004 \001(\005\022+\n\005" + + "value\030\005 \001(\0132\034.mxaccess_gateway.v1.MxValu" + + "e\022\017\n\007quality\030\006 \001(\005\0224\n\020source_timestamp\030\007" + + " \001(\0132\032.google.protobuf.Timestamp\0224\n\010stat" + + "uses\030\010 \003(\0132\".mxaccess_gateway.v1.MxStatu" + + "sProxy\022\027\n\017worker_sequence\030\t \001(\004\0224\n\020worke" + + "r_timestamp\030\n \001(\0132\032.google.protobuf.Time" + + "stamp\022=\n\031gateway_receive_timestamp\030\013 \001(\013" + + "2\032.google.protobuf.Timestamp\022\024\n\007hresult\030" + + "\014 \001(\005H\001\210\001\001\022\022\n\nraw_status\030\r \001(\t\022@\n\016on_dat" + + "a_change\030\024 \001(\0132&.mxaccess_gateway.v1.OnD" + + "ataChangeEventH\000\022F\n\021on_write_complete\030\025 " + + "\001(\0132).mxaccess_gateway.v1.OnWriteComplet" + + "eEventH\000\022I\n\022operation_complete\030\026 \001(\0132+.m" + + "xaccess_gateway.v1.OperationCompleteEven" + + "tH\000\022Q\n\027on_buffered_data_change\030\027 \001(\0132..m" + + "xaccess_gateway.v1.OnBufferedDataChangeE" + + "ventH\000\022J\n\023on_alarm_transition\030\030 \001(\0132+.mx" + + "access_gateway.v1.OnAlarmTransitionEvent" + + "H\000B\006\n\004bodyB\n\n\010_hresult\"\023\n\021OnDataChangeEv" + + "ent\"\026\n\024OnWriteCompleteEvent\"\030\n\026Operation" + + "CompleteEvent\"\324\001\n\031OnBufferedDataChangeEv" + + "ent\0222\n\tdata_type\030\001 \001(\0162\037.mxaccess_gatewa" + + "y.v1.MxDataType\0224\n\016quality_values\030\002 \001(\0132" + + "\034.mxaccess_gateway.v1.MxArray\0226\n\020timesta" + + "mp_values\030\003 \001(\0132\034.mxaccess_gateway.v1.Mx" + + "Array\022\025\n\rraw_data_type\030\004 \001(\005\"\375\003\n\026OnAlarm" + + "TransitionEvent\022\034\n\024alarm_full_reference\030" + + "\001 \001(\t\022\037\n\027source_object_reference\030\002 \001(\t\022\027" + + "\n\017alarm_type_name\030\003 \001(\t\022A\n\017transition_ki" + + "nd\030\004 \001(\0162(.mxaccess_gateway.v1.AlarmTran" + + "sitionKind\022\020\n\010severity\030\005 \001(\005\022<\n\030original" + + "_raise_timestamp\030\006 \001(\0132\032.google.protobuf" + + ".Timestamp\0228\n\024transition_timestamp\030\007 \001(\013" + + "2\032.google.protobuf.Timestamp\022\025\n\roperator" + + "_user\030\010 \001(\t\022\030\n\020operator_comment\030\t \001(\t\022\020\n" + + "\010category\030\n \001(\t\022\023\n\013description\030\013 \001(\t\0223\n\r" + + "current_value\030\014 \001(\0132\034.mxaccess_gateway.v" + + "1.MxValue\0221\n\013limit_value\030\r \001(\0132\034.mxacces" + + "s_gateway.v1.MxValue\"\375\003\n\023ActiveAlarmSnap" + + "shot\022\034\n\024alarm_full_reference\030\001 \001(\t\022\037\n\027so" + + "urce_object_reference\030\002 \001(\t\022\027\n\017alarm_typ" + + "e_name\030\003 \001(\t\022\020\n\010severity\030\004 \001(\005\022<\n\030origin" + + "al_raise_timestamp\030\005 \001(\0132\032.google.protob" + + "uf.Timestamp\022?\n\rcurrent_state\030\006 \001(\0162(.mx" + + "access_gateway.v1.AlarmConditionState\022\020\n" + + "\010category\030\007 \001(\t\022\023\n\013description\030\010 \001(\t\022=\n\031" + + "last_transition_timestamp\030\t \001(\0132\032.google" + + ".protobuf.Timestamp\022\025\n\roperator_user\030\n \001" + + "(\t\022\030\n\020operator_comment\030\013 \001(\t\0223\n\rcurrent_" + + "value\030\014 \001(\0132\034.mxaccess_gateway.v1.MxValu" + + "e\0221\n\013limit_value\030\r \001(\0132\034.mxaccess_gatewa" + + "y.v1.MxValue\"\222\001\n\027AcknowledgeAlarmRequest" + + "\022\022\n\nsession_id\030\001 \001(\t\022\035\n\025client_correlati" + + "on_id\030\002 \001(\t\022\034\n\024alarm_full_reference\030\003 \001(" + + "\t\022\017\n\007comment\030\004 \001(\t\022\025\n\roperator_user\030\005 \001(" + + "\t\"\363\001\n\025AcknowledgeAlarmReply\022\022\n\nsession_i" + + "d\030\001 \001(\t\022\026\n\016correlation_id\030\002 \001(\t\022<\n\017proto" + + "col_status\030\003 \001(\0132#.mxaccess_gateway.v1.P" + + "rotocolStatus\022\024\n\007hresult\030\004 \001(\005H\000\210\001\001\0222\n\006s" + + "tatus\030\005 \001(\0132\".mxaccess_gateway.v1.MxStat" + + "usProxy\022\032\n\022diagnostic_message\030\006 \001(\tB\n\n\010_" + + "hresult\"j\n\030QueryActiveAlarmsRequest\022\022\n\ns" + + "ession_id\030\001 \001(\t\022\035\n\025client_correlation_id" + + "\030\002 \001(\t\022\033\n\023alarm_filter_prefix\030\003 \001(\t\"\353\001\n\r" + + "MxStatusProxy\022\017\n\007success\030\001 \001(\005\0227\n\010catego" + + "ry\030\002 \001(\0162%.mxaccess_gateway.v1.MxStatusC" + + "ategory\0228\n\013detected_by\030\003 \001(\0162#.mxaccess_" + + "gateway.v1.MxStatusSource\022\016\n\006detail\030\004 \001(" + + "\005\022\024\n\014raw_category\030\005 \001(\005\022\027\n\017raw_detected_" + + "by\030\006 \001(\005\022\027\n\017diagnostic_text\030\007 \001(\t\"\247\003\n\007Mx" + + "Value\0222\n\tdata_type\030\001 \001(\0162\037.mxaccess_gate" + + "way.v1.MxDataType\022\024\n\014variant_type\030\002 \001(\t\022" + + "\017\n\007is_null\030\003 \001(\010\022\026\n\016raw_diagnostic\030\004 \001(\t" + + "\022\025\n\rraw_data_type\030\005 \001(\005\022\024\n\nbool_value\030\n " + + "\001(\010H\000\022\025\n\013int32_value\030\013 \001(\005H\000\022\025\n\013int64_va" + + "lue\030\014 \001(\003H\000\022\025\n\013float_value\030\r \001(\002H\000\022\026\n\014do" + + "uble_value\030\016 \001(\001H\000\022\026\n\014string_value\030\017 \001(\t" + + "H\000\0225\n\017timestamp_value\030\020 \001(\0132\032.google.pro" + + "tobuf.TimestampH\000\0223\n\013array_value\030\021 \001(\0132\034" + + ".mxaccess_gateway.v1.MxArrayH\000\022\023\n\traw_va" + + "lue\030\022 \001(\014H\000B\006\n\004kind\"\376\004\n\007MxArray\022:\n\021eleme" + + "nt_data_type\030\001 \001(\0162\037.mxaccess_gateway.v1" + + ".MxDataType\022\024\n\014variant_type\030\002 \001(\t\022\022\n\ndim" + + "ensions\030\003 \003(\r\022\026\n\016raw_diagnostic\030\004 \001(\t\022\035\n" + + "\025raw_element_data_type\030\005 \001(\005\0225\n\013bool_val" + + "ues\030\n \001(\0132\036.mxaccess_gateway.v1.BoolArra" + + "yH\000\0227\n\014int32_values\030\013 \001(\0132\037.mxaccess_gat" + + "eway.v1.Int32ArrayH\000\0227\n\014int64_values\030\014 \001" + + "(\0132\037.mxaccess_gateway.v1.Int64ArrayH\000\0227\n" + + "\014float_values\030\r \001(\0132\037.mxaccess_gateway.v" + + "1.FloatArrayH\000\0229\n\rdouble_values\030\016 \001(\0132 ." + + "mxaccess_gateway.v1.DoubleArrayH\000\0229\n\rstr" + + "ing_values\030\017 \001(\0132 .mxaccess_gateway.v1.S" + + "tringArrayH\000\022?\n\020timestamp_values\030\020 \001(\0132#" + + ".mxaccess_gateway.v1.TimestampArrayH\000\0223\n" + + "\nraw_values\030\021 \001(\0132\035.mxaccess_gateway.v1." + + "RawArrayH\000B\010\n\006values\"\033\n\tBoolArray\022\016\n\006val" + + "ues\030\001 \003(\010\"\034\n\nInt32Array\022\016\n\006values\030\001 \003(\005\"" + + "\034\n\nInt64Array\022\016\n\006values\030\001 \003(\003\"\034\n\nFloatAr" + + "ray\022\016\n\006values\030\001 \003(\002\"\035\n\013DoubleArray\022\016\n\006va" + + "lues\030\001 \003(\001\"\035\n\013StringArray\022\016\n\006values\030\001 \003(" + + "\t\"<\n\016TimestampArray\022*\n\006values\030\001 \003(\0132\032.go" + + "ogle.protobuf.Timestamp\"\032\n\010RawArray\022\016\n\006v" + + "alues\030\001 \003(\014\"X\n\016ProtocolStatus\0225\n\004code\030\001 " + + "\001(\0162\'.mxaccess_gateway.v1.ProtocolStatus" + + "Code\022\017\n\007message\030\002 \001(\t*\237\013\n\rMxCommandKind\022" + + "\037\n\033MX_COMMAND_KIND_UNSPECIFIED\020\000\022\034\n\030MX_C" + + "OMMAND_KIND_REGISTER\020\001\022\036\n\032MX_COMMAND_KIN" + + "D_UNREGISTER\020\002\022\034\n\030MX_COMMAND_KIND_ADD_IT" + + "EM\020\003\022\035\n\031MX_COMMAND_KIND_ADD_ITEM2\020\004\022\037\n\033M" + + "X_COMMAND_KIND_REMOVE_ITEM\020\005\022\032\n\026MX_COMMA" + + "ND_KIND_ADVISE\020\006\022\035\n\031MX_COMMAND_KIND_UN_A" + + "DVISE\020\007\022&\n\"MX_COMMAND_KIND_ADVISE_SUPERV" + + "ISORY\020\010\022%\n!MX_COMMAND_KIND_ADD_BUFFERED_" + + "ITEM\020\t\0220\n,MX_COMMAND_KIND_SET_BUFFERED_U", + "PDATE_INTERVAL\020\n\022\033\n\027MX_COMMAND_KIND_SUSP" + + "END\020\013\022\034\n\030MX_COMMAND_KIND_ACTIVATE\020\014\022\031\n\025M" + + "X_COMMAND_KIND_WRITE\020\r\022\032\n\026MX_COMMAND_KIN" + + "D_WRITE2\020\016\022!\n\035MX_COMMAND_KIND_WRITE_SECU" + + "RED\020\017\022\"\n\036MX_COMMAND_KIND_WRITE_SECURED2\020" + + "\020\022%\n!MX_COMMAND_KIND_AUTHENTICATE_USER\020\021" + + "\022(\n$MX_COMMAND_KIND_ARCHESTRA_USER_TO_ID" + + "\020\022\022!\n\035MX_COMMAND_KIND_ADD_ITEM_BULK\020\023\022$\n" + + " MX_COMMAND_KIND_ADVISE_ITEM_BULK\020\024\022$\n M" + + "X_COMMAND_KIND_REMOVE_ITEM_BULK\020\025\022\'\n#MX_" + + "COMMAND_KIND_UN_ADVISE_ITEM_BULK\020\026\022\"\n\036MX" + + "_COMMAND_KIND_SUBSCRIBE_BULK\020\027\022$\n MX_COM" + + "MAND_KIND_UNSUBSCRIBE_BULK\020\030\022$\n MX_COMMA" + + "ND_KIND_SUBSCRIBE_ALARMS\020\031\022&\n\"MX_COMMAND" + + "_KIND_UNSUBSCRIBE_ALARMS\020\032\022%\n!MX_COMMAND" + + "_KIND_ACKNOWLEDGE_ALARM\020\033\022\'\n#MX_COMMAND_" + + "KIND_QUERY_ACTIVE_ALARMS\020\034\022-\n)MX_COMMAND" + + "_KIND_ACKNOWLEDGE_ALARM_BY_NAME\020\035\022\036\n\032MX_" + + "COMMAND_KIND_WRITE_BULK\020\036\022\037\n\033MX_COMMAND_" + + "KIND_WRITE2_BULK\020\037\022&\n\"MX_COMMAND_KIND_WR" + + "ITE_SECURED_BULK\020 \022\'\n#MX_COMMAND_KIND_WR" + + "ITE_SECURED2_BULK\020!\022\035\n\031MX_COMMAND_KIND_R" + + "EAD_BULK\020\"\022\030\n\024MX_COMMAND_KIND_PING\020d\022%\n!" + + "MX_COMMAND_KIND_GET_SESSION_STATE\020e\022#\n\037M" + + "X_COMMAND_KIND_GET_WORKER_INFO\020f\022 \n\034MX_C" + + "OMMAND_KIND_DRAIN_EVENTS\020g\022#\n\037MX_COMMAND" + + "_KIND_SHUTDOWN_WORKER\020h*\371\001\n\rMxEventFamil" + + "y\022\037\n\033MX_EVENT_FAMILY_UNSPECIFIED\020\000\022\"\n\036MX" + + "_EVENT_FAMILY_ON_DATA_CHANGE\020\001\022%\n!MX_EVE" + + "NT_FAMILY_ON_WRITE_COMPLETE\020\002\022&\n\"MX_EVEN" + + "T_FAMILY_OPERATION_COMPLETE\020\003\022+\n\'MX_EVEN" + + "T_FAMILY_ON_BUFFERED_DATA_CHANGE\020\004\022\'\n#MX" + + "_EVENT_FAMILY_ON_ALARM_TRANSITION\020\005*\312\001\n\023" + + "AlarmTransitionKind\022%\n!ALARM_TRANSITION_" + + "KIND_UNSPECIFIED\020\000\022\037\n\033ALARM_TRANSITION_K" + + "IND_RAISE\020\001\022%\n!ALARM_TRANSITION_KIND_ACK" + + "NOWLEDGE\020\002\022\037\n\033ALARM_TRANSITION_KIND_CLEA" + + "R\020\003\022#\n\037ALARM_TRANSITION_KIND_RETRIGGER\020\004" + + "*\252\001\n\023AlarmConditionState\022%\n!ALARM_CONDIT" + + "ION_STATE_UNSPECIFIED\020\000\022 \n\034ALARM_CONDITI" + + "ON_STATE_ACTIVE\020\001\022&\n\"ALARM_CONDITION_STA" + + "TE_ACTIVE_ACKED\020\002\022\"\n\036ALARM_CONDITION_STA" + + "TE_INACTIVE\020\003*\245\003\n\020MxStatusCategory\022\"\n\036MX" + + "_STATUS_CATEGORY_UNSPECIFIED\020\000\022\036\n\032MX_STA" + + "TUS_CATEGORY_UNKNOWN\020\001\022\031\n\025MX_STATUS_CATE" + + "GORY_OK\020\002\022\036\n\032MX_STATUS_CATEGORY_PENDING\020" + + "\003\022\036\n\032MX_STATUS_CATEGORY_WARNING\020\004\022*\n&MX_" + + "STATUS_CATEGORY_COMMUNICATION_ERROR\020\005\022*\n" + + "&MX_STATUS_CATEGORY_CONFIGURATION_ERROR\020" + + "\006\022(\n$MX_STATUS_CATEGORY_OPERATIONAL_ERRO" + + "R\020\007\022%\n!MX_STATUS_CATEGORY_SECURITY_ERROR" + + "\020\010\022%\n!MX_STATUS_CATEGORY_SOFTWARE_ERROR\020" + + "\t\022\"\n\036MX_STATUS_CATEGORY_OTHER_ERROR\020\n*\312\002" + + "\n\016MxStatusSource\022 \n\034MX_STATUS_SOURCE_UNS" + + "PECIFIED\020\000\022\034\n\030MX_STATUS_SOURCE_UNKNOWN\020\001" + + "\022#\n\037MX_STATUS_SOURCE_REQUESTING_LMX\020\002\022#\n" + + "\037MX_STATUS_SOURCE_RESPONDING_LMX\020\003\022#\n\037MX" + + "_STATUS_SOURCE_REQUESTING_NMX\020\004\022#\n\037MX_ST" + + "ATUS_SOURCE_RESPONDING_NMX\020\005\0221\n-MX_STATU" + + "S_SOURCE_REQUESTING_AUTOMATION_OBJECT\020\006\022" + + "1\n-MX_STATUS_SOURCE_RESPONDING_AUTOMATIO" + + "N_OBJECT\020\007*\335\004\n\nMxDataType\022\034\n\030MX_DATA_TYP" + + "E_UNSPECIFIED\020\000\022\030\n\024MX_DATA_TYPE_UNKNOWN\020" + + "\001\022\030\n\024MX_DATA_TYPE_NO_DATA\020\002\022\030\n\024MX_DATA_T" + + "YPE_BOOLEAN\020\003\022\030\n\024MX_DATA_TYPE_INTEGER\020\004\022" + + "\026\n\022MX_DATA_TYPE_FLOAT\020\005\022\027\n\023MX_DATA_TYPE_" + + "DOUBLE\020\006\022\027\n\023MX_DATA_TYPE_STRING\020\007\022\025\n\021MX_" + + "DATA_TYPE_TIME\020\010\022\035\n\031MX_DATA_TYPE_ELAPSED" + + "_TIME\020\t\022\037\n\033MX_DATA_TYPE_REFERENCE_TYPE\020\n" + + "\022\034\n\030MX_DATA_TYPE_STATUS_TYPE\020\013\022\025\n\021MX_DAT" + + "A_TYPE_ENUM\020\014\022-\n)MX_DATA_TYPE_SECURITY_C" + + "LASSIFICATION_ENUM\020\r\022\"\n\036MX_DATA_TYPE_DAT" + + "A_QUALITY_TYPE\020\016\022\037\n\033MX_DATA_TYPE_QUALIFI" + + "ED_ENUM\020\017\022!\n\035MX_DATA_TYPE_QUALIFIED_STRU" + + "CT\020\020\022)\n%MX_DATA_TYPE_INTERNATIONALIZED_S" + + "TRING\020\021\022\033\n\027MX_DATA_TYPE_BIG_STRING\020\022\022\024\n\020" + + "MX_DATA_TYPE_END\020\023*\243\003\n\022ProtocolStatusCod" + + "e\022$\n PROTOCOL_STATUS_CODE_UNSPECIFIED\020\000\022" + + "\033\n\027PROTOCOL_STATUS_CODE_OK\020\001\022(\n$PROTOCOL" + + "_STATUS_CODE_INVALID_REQUEST\020\002\022*\n&PROTOC" + + "OL_STATUS_CODE_SESSION_NOT_FOUND\020\003\022*\n&PR" + + "OTOCOL_STATUS_CODE_SESSION_NOT_READY\020\004\022+" + + "\n\'PROTOCOL_STATUS_CODE_WORKER_UNAVAILABL" + + "E\020\005\022 \n\034PROTOCOL_STATUS_CODE_TIMEOUT\020\006\022!\n" + + "\035PROTOCOL_STATUS_CODE_CANCELED\020\007\022+\n\'PROT" + + "OCOL_STATUS_CODE_PROTOCOL_VIOLATION\020\010\022)\n" + + "%PROTOCOL_STATUS_CODE_MXACCESS_FAILURE\020\t" + + "*\277\002\n\014SessionState\022\035\n\031SESSION_STATE_UNSPE" + + "CIFIED\020\000\022\032\n\026SESSION_STATE_CREATING\020\001\022!\n\035" + + "SESSION_STATE_STARTING_WORKER\020\002\022\"\n\036SESSI" + + "ON_STATE_WAITING_FOR_PIPE\020\003\022\035\n\031SESSION_S" + + "TATE_HANDSHAKING\020\004\022%\n!SESSION_STATE_INIT" + + "IALIZING_WORKER\020\005\022\027\n\023SESSION_STATE_READY" + + "\020\006\022\031\n\025SESSION_STATE_CLOSING\020\007\022\030\n\024SESSION" + + "_STATE_CLOSED\020\010\022\031\n\025SESSION_STATE_FAULTED" + + "\020\t2\340\004\n\017MxAccessGateway\022]\n\013OpenSession\022\'." + + "mxaccess_gateway.v1.OpenSessionRequest\032%" + + ".mxaccess_gateway.v1.OpenSessionReply\022`\n" + + "\014CloseSession\022(.mxaccess_gateway.v1.Clos" + + "eSessionRequest\032&.mxaccess_gateway.v1.Cl" + + "oseSessionReply\022T\n\006Invoke\022%.mxaccess_gat" + + "eway.v1.MxCommandRequest\032#.mxaccess_gate" + + "way.v1.MxCommandReply\022X\n\014StreamEvents\022(." + + "mxaccess_gateway.v1.StreamEventsRequest\032" + + "\034.mxaccess_gateway.v1.MxEvent0\001\022l\n\020Ackno" + + "wledgeAlarm\022,.mxaccess_gateway.v1.Acknow" + + "ledgeAlarmRequest\032*.mxaccess_gateway.v1." + + "AcknowledgeAlarmReply\022n\n\021QueryActiveAlar" + + "ms\022-.mxaccess_gateway.v1.QueryActiveAlar" + + "msRequest\032(.mxaccess_gateway.v1.ActiveAl" + + "armSnapshot0\001B\034\252\002\031MxGateway.Contracts.Pr" + + "otob\006proto3" }; descriptor = com.google.protobuf.Descriptors.FileDescriptor .internalBuildGeneratedFileFrom(descriptorData, @@ -79721,7 +94092,7 @@ public final class MxaccessGateway extends com.google.protobuf.GeneratedFile { internal_static_mxaccess_gateway_v1_MxCommand_fieldAccessorTable = new com.google.protobuf.GeneratedMessage.FieldAccessorTable( internal_static_mxaccess_gateway_v1_MxCommand_descriptor, - new java.lang.String[] { "Kind", "Register", "Unregister", "AddItem", "AddItem2", "RemoveItem", "Advise", "UnAdvise", "AdviseSupervisory", "AddBufferedItem", "SetBufferedUpdateInterval", "Suspend", "Activate", "Write", "Write2", "WriteSecured", "WriteSecured2", "AuthenticateUser", "ArchestraUserToId", "AddItemBulk", "AdviseItemBulk", "RemoveItemBulk", "UnAdviseItemBulk", "SubscribeBulk", "UnsubscribeBulk", "SubscribeAlarms", "UnsubscribeAlarms", "AcknowledgeAlarmCommand", "QueryActiveAlarmsCommand", "AcknowledgeAlarmByNameCommand", "Ping", "GetSessionState", "GetWorkerInfo", "DrainEvents", "ShutdownWorker", "Payload", }); + new java.lang.String[] { "Kind", "Register", "Unregister", "AddItem", "AddItem2", "RemoveItem", "Advise", "UnAdvise", "AdviseSupervisory", "AddBufferedItem", "SetBufferedUpdateInterval", "Suspend", "Activate", "Write", "Write2", "WriteSecured", "WriteSecured2", "AuthenticateUser", "ArchestraUserToId", "AddItemBulk", "AdviseItemBulk", "RemoveItemBulk", "UnAdviseItemBulk", "SubscribeBulk", "UnsubscribeBulk", "SubscribeAlarms", "UnsubscribeAlarms", "AcknowledgeAlarmCommand", "QueryActiveAlarmsCommand", "AcknowledgeAlarmByNameCommand", "WriteBulk", "Write2Bulk", "WriteSecuredBulk", "WriteSecured2Bulk", "ReadBulk", "Ping", "GetSessionState", "GetWorkerInfo", "DrainEvents", "ShutdownWorker", "Payload", }); internal_static_mxaccess_gateway_v1_RegisterCommand_descriptor = getDescriptor().getMessageType(7); internal_static_mxaccess_gateway_v1_RegisterCommand_fieldAccessorTable = new @@ -79896,260 +94267,338 @@ public final class MxaccessGateway extends com.google.protobuf.GeneratedFile { com.google.protobuf.GeneratedMessage.FieldAccessorTable( internal_static_mxaccess_gateway_v1_UnsubscribeBulkCommand_descriptor, new java.lang.String[] { "ServerHandle", "ItemHandles", }); - internal_static_mxaccess_gateway_v1_PingCommand_descriptor = + internal_static_mxaccess_gateway_v1_WriteBulkCommand_descriptor = getDescriptor().getMessageType(36); + internal_static_mxaccess_gateway_v1_WriteBulkCommand_fieldAccessorTable = new + com.google.protobuf.GeneratedMessage.FieldAccessorTable( + internal_static_mxaccess_gateway_v1_WriteBulkCommand_descriptor, + new java.lang.String[] { "ServerHandle", "Entries", }); + internal_static_mxaccess_gateway_v1_WriteBulkEntry_descriptor = + getDescriptor().getMessageType(37); + internal_static_mxaccess_gateway_v1_WriteBulkEntry_fieldAccessorTable = new + com.google.protobuf.GeneratedMessage.FieldAccessorTable( + internal_static_mxaccess_gateway_v1_WriteBulkEntry_descriptor, + new java.lang.String[] { "ItemHandle", "Value", "UserId", }); + internal_static_mxaccess_gateway_v1_Write2BulkCommand_descriptor = + getDescriptor().getMessageType(38); + internal_static_mxaccess_gateway_v1_Write2BulkCommand_fieldAccessorTable = new + com.google.protobuf.GeneratedMessage.FieldAccessorTable( + internal_static_mxaccess_gateway_v1_Write2BulkCommand_descriptor, + new java.lang.String[] { "ServerHandle", "Entries", }); + internal_static_mxaccess_gateway_v1_Write2BulkEntry_descriptor = + getDescriptor().getMessageType(39); + internal_static_mxaccess_gateway_v1_Write2BulkEntry_fieldAccessorTable = new + com.google.protobuf.GeneratedMessage.FieldAccessorTable( + internal_static_mxaccess_gateway_v1_Write2BulkEntry_descriptor, + new java.lang.String[] { "ItemHandle", "Value", "TimestampValue", "UserId", }); + internal_static_mxaccess_gateway_v1_WriteSecuredBulkCommand_descriptor = + getDescriptor().getMessageType(40); + internal_static_mxaccess_gateway_v1_WriteSecuredBulkCommand_fieldAccessorTable = new + com.google.protobuf.GeneratedMessage.FieldAccessorTable( + internal_static_mxaccess_gateway_v1_WriteSecuredBulkCommand_descriptor, + new java.lang.String[] { "ServerHandle", "Entries", }); + internal_static_mxaccess_gateway_v1_WriteSecuredBulkEntry_descriptor = + getDescriptor().getMessageType(41); + internal_static_mxaccess_gateway_v1_WriteSecuredBulkEntry_fieldAccessorTable = new + com.google.protobuf.GeneratedMessage.FieldAccessorTable( + internal_static_mxaccess_gateway_v1_WriteSecuredBulkEntry_descriptor, + new java.lang.String[] { "ItemHandle", "CurrentUserId", "VerifierUserId", "Value", }); + internal_static_mxaccess_gateway_v1_WriteSecured2BulkCommand_descriptor = + getDescriptor().getMessageType(42); + internal_static_mxaccess_gateway_v1_WriteSecured2BulkCommand_fieldAccessorTable = new + com.google.protobuf.GeneratedMessage.FieldAccessorTable( + internal_static_mxaccess_gateway_v1_WriteSecured2BulkCommand_descriptor, + new java.lang.String[] { "ServerHandle", "Entries", }); + internal_static_mxaccess_gateway_v1_WriteSecured2BulkEntry_descriptor = + getDescriptor().getMessageType(43); + internal_static_mxaccess_gateway_v1_WriteSecured2BulkEntry_fieldAccessorTable = new + com.google.protobuf.GeneratedMessage.FieldAccessorTable( + internal_static_mxaccess_gateway_v1_WriteSecured2BulkEntry_descriptor, + new java.lang.String[] { "ItemHandle", "CurrentUserId", "VerifierUserId", "Value", "TimestampValue", }); + internal_static_mxaccess_gateway_v1_ReadBulkCommand_descriptor = + getDescriptor().getMessageType(44); + internal_static_mxaccess_gateway_v1_ReadBulkCommand_fieldAccessorTable = new + com.google.protobuf.GeneratedMessage.FieldAccessorTable( + internal_static_mxaccess_gateway_v1_ReadBulkCommand_descriptor, + new java.lang.String[] { "ServerHandle", "TagAddresses", "TimeoutMs", }); + internal_static_mxaccess_gateway_v1_PingCommand_descriptor = + getDescriptor().getMessageType(45); internal_static_mxaccess_gateway_v1_PingCommand_fieldAccessorTable = new com.google.protobuf.GeneratedMessage.FieldAccessorTable( internal_static_mxaccess_gateway_v1_PingCommand_descriptor, new java.lang.String[] { "Message", }); internal_static_mxaccess_gateway_v1_GetSessionStateCommand_descriptor = - getDescriptor().getMessageType(37); + getDescriptor().getMessageType(46); internal_static_mxaccess_gateway_v1_GetSessionStateCommand_fieldAccessorTable = new com.google.protobuf.GeneratedMessage.FieldAccessorTable( internal_static_mxaccess_gateway_v1_GetSessionStateCommand_descriptor, new java.lang.String[] { }); internal_static_mxaccess_gateway_v1_GetWorkerInfoCommand_descriptor = - getDescriptor().getMessageType(38); + getDescriptor().getMessageType(47); internal_static_mxaccess_gateway_v1_GetWorkerInfoCommand_fieldAccessorTable = new com.google.protobuf.GeneratedMessage.FieldAccessorTable( internal_static_mxaccess_gateway_v1_GetWorkerInfoCommand_descriptor, new java.lang.String[] { }); internal_static_mxaccess_gateway_v1_DrainEventsCommand_descriptor = - getDescriptor().getMessageType(39); + getDescriptor().getMessageType(48); internal_static_mxaccess_gateway_v1_DrainEventsCommand_fieldAccessorTable = new com.google.protobuf.GeneratedMessage.FieldAccessorTable( internal_static_mxaccess_gateway_v1_DrainEventsCommand_descriptor, new java.lang.String[] { "MaxEvents", }); internal_static_mxaccess_gateway_v1_ShutdownWorkerCommand_descriptor = - getDescriptor().getMessageType(40); + getDescriptor().getMessageType(49); internal_static_mxaccess_gateway_v1_ShutdownWorkerCommand_fieldAccessorTable = new com.google.protobuf.GeneratedMessage.FieldAccessorTable( internal_static_mxaccess_gateway_v1_ShutdownWorkerCommand_descriptor, new java.lang.String[] { "GracePeriod", }); internal_static_mxaccess_gateway_v1_MxCommandReply_descriptor = - getDescriptor().getMessageType(41); + getDescriptor().getMessageType(50); internal_static_mxaccess_gateway_v1_MxCommandReply_fieldAccessorTable = new com.google.protobuf.GeneratedMessage.FieldAccessorTable( internal_static_mxaccess_gateway_v1_MxCommandReply_descriptor, - new java.lang.String[] { "SessionId", "CorrelationId", "Kind", "ProtocolStatus", "Hresult", "ReturnValue", "Statuses", "DiagnosticMessage", "Register", "AddItem", "AddItem2", "AddBufferedItem", "Suspend", "Activate", "AuthenticateUser", "ArchestraUserToId", "AddItemBulk", "AdviseItemBulk", "RemoveItemBulk", "UnAdviseItemBulk", "SubscribeBulk", "UnsubscribeBulk", "AcknowledgeAlarm", "QueryActiveAlarms", "SessionState", "WorkerInfo", "DrainEvents", "Payload", }); + new java.lang.String[] { "SessionId", "CorrelationId", "Kind", "ProtocolStatus", "Hresult", "ReturnValue", "Statuses", "DiagnosticMessage", "Register", "AddItem", "AddItem2", "AddBufferedItem", "Suspend", "Activate", "AuthenticateUser", "ArchestraUserToId", "AddItemBulk", "AdviseItemBulk", "RemoveItemBulk", "UnAdviseItemBulk", "SubscribeBulk", "UnsubscribeBulk", "AcknowledgeAlarm", "QueryActiveAlarms", "WriteBulk", "Write2Bulk", "WriteSecuredBulk", "WriteSecured2Bulk", "ReadBulk", "SessionState", "WorkerInfo", "DrainEvents", "Payload", }); internal_static_mxaccess_gateway_v1_RegisterReply_descriptor = - getDescriptor().getMessageType(42); + getDescriptor().getMessageType(51); internal_static_mxaccess_gateway_v1_RegisterReply_fieldAccessorTable = new com.google.protobuf.GeneratedMessage.FieldAccessorTable( internal_static_mxaccess_gateway_v1_RegisterReply_descriptor, new java.lang.String[] { "ServerHandle", }); internal_static_mxaccess_gateway_v1_AddItemReply_descriptor = - getDescriptor().getMessageType(43); + getDescriptor().getMessageType(52); internal_static_mxaccess_gateway_v1_AddItemReply_fieldAccessorTable = new com.google.protobuf.GeneratedMessage.FieldAccessorTable( internal_static_mxaccess_gateway_v1_AddItemReply_descriptor, new java.lang.String[] { "ItemHandle", }); internal_static_mxaccess_gateway_v1_AddItem2Reply_descriptor = - getDescriptor().getMessageType(44); + getDescriptor().getMessageType(53); internal_static_mxaccess_gateway_v1_AddItem2Reply_fieldAccessorTable = new com.google.protobuf.GeneratedMessage.FieldAccessorTable( internal_static_mxaccess_gateway_v1_AddItem2Reply_descriptor, new java.lang.String[] { "ItemHandle", }); internal_static_mxaccess_gateway_v1_AddBufferedItemReply_descriptor = - getDescriptor().getMessageType(45); + getDescriptor().getMessageType(54); internal_static_mxaccess_gateway_v1_AddBufferedItemReply_fieldAccessorTable = new com.google.protobuf.GeneratedMessage.FieldAccessorTable( internal_static_mxaccess_gateway_v1_AddBufferedItemReply_descriptor, new java.lang.String[] { "ItemHandle", }); internal_static_mxaccess_gateway_v1_SuspendReply_descriptor = - getDescriptor().getMessageType(46); + getDescriptor().getMessageType(55); internal_static_mxaccess_gateway_v1_SuspendReply_fieldAccessorTable = new com.google.protobuf.GeneratedMessage.FieldAccessorTable( internal_static_mxaccess_gateway_v1_SuspendReply_descriptor, new java.lang.String[] { "Status", }); internal_static_mxaccess_gateway_v1_ActivateReply_descriptor = - getDescriptor().getMessageType(47); + getDescriptor().getMessageType(56); internal_static_mxaccess_gateway_v1_ActivateReply_fieldAccessorTable = new com.google.protobuf.GeneratedMessage.FieldAccessorTable( internal_static_mxaccess_gateway_v1_ActivateReply_descriptor, new java.lang.String[] { "Status", }); internal_static_mxaccess_gateway_v1_AuthenticateUserReply_descriptor = - getDescriptor().getMessageType(48); + getDescriptor().getMessageType(57); internal_static_mxaccess_gateway_v1_AuthenticateUserReply_fieldAccessorTable = new com.google.protobuf.GeneratedMessage.FieldAccessorTable( internal_static_mxaccess_gateway_v1_AuthenticateUserReply_descriptor, new java.lang.String[] { "UserId", }); internal_static_mxaccess_gateway_v1_ArchestrAUserToIdReply_descriptor = - getDescriptor().getMessageType(49); + getDescriptor().getMessageType(58); internal_static_mxaccess_gateway_v1_ArchestrAUserToIdReply_fieldAccessorTable = new com.google.protobuf.GeneratedMessage.FieldAccessorTable( internal_static_mxaccess_gateway_v1_ArchestrAUserToIdReply_descriptor, new java.lang.String[] { "UserId", }); internal_static_mxaccess_gateway_v1_SubscribeResult_descriptor = - getDescriptor().getMessageType(50); + getDescriptor().getMessageType(59); internal_static_mxaccess_gateway_v1_SubscribeResult_fieldAccessorTable = new com.google.protobuf.GeneratedMessage.FieldAccessorTable( internal_static_mxaccess_gateway_v1_SubscribeResult_descriptor, new java.lang.String[] { "ServerHandle", "TagAddress", "ItemHandle", "WasSuccessful", "ErrorMessage", }); internal_static_mxaccess_gateway_v1_BulkSubscribeReply_descriptor = - getDescriptor().getMessageType(51); + getDescriptor().getMessageType(60); internal_static_mxaccess_gateway_v1_BulkSubscribeReply_fieldAccessorTable = new com.google.protobuf.GeneratedMessage.FieldAccessorTable( internal_static_mxaccess_gateway_v1_BulkSubscribeReply_descriptor, new java.lang.String[] { "Results", }); + internal_static_mxaccess_gateway_v1_BulkWriteResult_descriptor = + getDescriptor().getMessageType(61); + internal_static_mxaccess_gateway_v1_BulkWriteResult_fieldAccessorTable = new + com.google.protobuf.GeneratedMessage.FieldAccessorTable( + internal_static_mxaccess_gateway_v1_BulkWriteResult_descriptor, + new java.lang.String[] { "ServerHandle", "ItemHandle", "WasSuccessful", "Hresult", "Statuses", "ErrorMessage", }); + internal_static_mxaccess_gateway_v1_BulkWriteReply_descriptor = + getDescriptor().getMessageType(62); + internal_static_mxaccess_gateway_v1_BulkWriteReply_fieldAccessorTable = new + com.google.protobuf.GeneratedMessage.FieldAccessorTable( + internal_static_mxaccess_gateway_v1_BulkWriteReply_descriptor, + new java.lang.String[] { "Results", }); + internal_static_mxaccess_gateway_v1_BulkReadResult_descriptor = + getDescriptor().getMessageType(63); + internal_static_mxaccess_gateway_v1_BulkReadResult_fieldAccessorTable = new + com.google.protobuf.GeneratedMessage.FieldAccessorTable( + internal_static_mxaccess_gateway_v1_BulkReadResult_descriptor, + new java.lang.String[] { "ServerHandle", "TagAddress", "ItemHandle", "WasSuccessful", "WasCached", "Value", "Quality", "SourceTimestamp", "Statuses", "ErrorMessage", }); + internal_static_mxaccess_gateway_v1_BulkReadReply_descriptor = + getDescriptor().getMessageType(64); + internal_static_mxaccess_gateway_v1_BulkReadReply_fieldAccessorTable = new + com.google.protobuf.GeneratedMessage.FieldAccessorTable( + internal_static_mxaccess_gateway_v1_BulkReadReply_descriptor, + new java.lang.String[] { "Results", }); internal_static_mxaccess_gateway_v1_SessionStateReply_descriptor = - getDescriptor().getMessageType(52); + getDescriptor().getMessageType(65); internal_static_mxaccess_gateway_v1_SessionStateReply_fieldAccessorTable = new com.google.protobuf.GeneratedMessage.FieldAccessorTable( internal_static_mxaccess_gateway_v1_SessionStateReply_descriptor, new java.lang.String[] { "State", }); internal_static_mxaccess_gateway_v1_WorkerInfoReply_descriptor = - getDescriptor().getMessageType(53); + getDescriptor().getMessageType(66); internal_static_mxaccess_gateway_v1_WorkerInfoReply_fieldAccessorTable = new com.google.protobuf.GeneratedMessage.FieldAccessorTable( internal_static_mxaccess_gateway_v1_WorkerInfoReply_descriptor, new java.lang.String[] { "WorkerProcessId", "WorkerVersion", "MxaccessProgid", "MxaccessClsid", }); internal_static_mxaccess_gateway_v1_DrainEventsReply_descriptor = - getDescriptor().getMessageType(54); + getDescriptor().getMessageType(67); internal_static_mxaccess_gateway_v1_DrainEventsReply_fieldAccessorTable = new com.google.protobuf.GeneratedMessage.FieldAccessorTable( internal_static_mxaccess_gateway_v1_DrainEventsReply_descriptor, new java.lang.String[] { "Events", }); internal_static_mxaccess_gateway_v1_AcknowledgeAlarmReplyPayload_descriptor = - getDescriptor().getMessageType(55); + getDescriptor().getMessageType(68); internal_static_mxaccess_gateway_v1_AcknowledgeAlarmReplyPayload_fieldAccessorTable = new com.google.protobuf.GeneratedMessage.FieldAccessorTable( internal_static_mxaccess_gateway_v1_AcknowledgeAlarmReplyPayload_descriptor, new java.lang.String[] { "NativeStatus", }); internal_static_mxaccess_gateway_v1_QueryActiveAlarmsReplyPayload_descriptor = - getDescriptor().getMessageType(56); + getDescriptor().getMessageType(69); internal_static_mxaccess_gateway_v1_QueryActiveAlarmsReplyPayload_fieldAccessorTable = new com.google.protobuf.GeneratedMessage.FieldAccessorTable( internal_static_mxaccess_gateway_v1_QueryActiveAlarmsReplyPayload_descriptor, new java.lang.String[] { "Snapshots", }); internal_static_mxaccess_gateway_v1_MxEvent_descriptor = - getDescriptor().getMessageType(57); + getDescriptor().getMessageType(70); internal_static_mxaccess_gateway_v1_MxEvent_fieldAccessorTable = new com.google.protobuf.GeneratedMessage.FieldAccessorTable( internal_static_mxaccess_gateway_v1_MxEvent_descriptor, new java.lang.String[] { "Family", "SessionId", "ServerHandle", "ItemHandle", "Value", "Quality", "SourceTimestamp", "Statuses", "WorkerSequence", "WorkerTimestamp", "GatewayReceiveTimestamp", "Hresult", "RawStatus", "OnDataChange", "OnWriteComplete", "OperationComplete", "OnBufferedDataChange", "OnAlarmTransition", "Body", }); internal_static_mxaccess_gateway_v1_OnDataChangeEvent_descriptor = - getDescriptor().getMessageType(58); + getDescriptor().getMessageType(71); internal_static_mxaccess_gateway_v1_OnDataChangeEvent_fieldAccessorTable = new com.google.protobuf.GeneratedMessage.FieldAccessorTable( internal_static_mxaccess_gateway_v1_OnDataChangeEvent_descriptor, new java.lang.String[] { }); internal_static_mxaccess_gateway_v1_OnWriteCompleteEvent_descriptor = - getDescriptor().getMessageType(59); + getDescriptor().getMessageType(72); internal_static_mxaccess_gateway_v1_OnWriteCompleteEvent_fieldAccessorTable = new com.google.protobuf.GeneratedMessage.FieldAccessorTable( internal_static_mxaccess_gateway_v1_OnWriteCompleteEvent_descriptor, new java.lang.String[] { }); internal_static_mxaccess_gateway_v1_OperationCompleteEvent_descriptor = - getDescriptor().getMessageType(60); + getDescriptor().getMessageType(73); internal_static_mxaccess_gateway_v1_OperationCompleteEvent_fieldAccessorTable = new com.google.protobuf.GeneratedMessage.FieldAccessorTable( internal_static_mxaccess_gateway_v1_OperationCompleteEvent_descriptor, new java.lang.String[] { }); internal_static_mxaccess_gateway_v1_OnBufferedDataChangeEvent_descriptor = - getDescriptor().getMessageType(61); + getDescriptor().getMessageType(74); internal_static_mxaccess_gateway_v1_OnBufferedDataChangeEvent_fieldAccessorTable = new com.google.protobuf.GeneratedMessage.FieldAccessorTable( internal_static_mxaccess_gateway_v1_OnBufferedDataChangeEvent_descriptor, new java.lang.String[] { "DataType", "QualityValues", "TimestampValues", "RawDataType", }); internal_static_mxaccess_gateway_v1_OnAlarmTransitionEvent_descriptor = - getDescriptor().getMessageType(62); + getDescriptor().getMessageType(75); internal_static_mxaccess_gateway_v1_OnAlarmTransitionEvent_fieldAccessorTable = new com.google.protobuf.GeneratedMessage.FieldAccessorTable( internal_static_mxaccess_gateway_v1_OnAlarmTransitionEvent_descriptor, new java.lang.String[] { "AlarmFullReference", "SourceObjectReference", "AlarmTypeName", "TransitionKind", "Severity", "OriginalRaiseTimestamp", "TransitionTimestamp", "OperatorUser", "OperatorComment", "Category", "Description", "CurrentValue", "LimitValue", }); internal_static_mxaccess_gateway_v1_ActiveAlarmSnapshot_descriptor = - getDescriptor().getMessageType(63); + getDescriptor().getMessageType(76); internal_static_mxaccess_gateway_v1_ActiveAlarmSnapshot_fieldAccessorTable = new com.google.protobuf.GeneratedMessage.FieldAccessorTable( internal_static_mxaccess_gateway_v1_ActiveAlarmSnapshot_descriptor, new java.lang.String[] { "AlarmFullReference", "SourceObjectReference", "AlarmTypeName", "Severity", "OriginalRaiseTimestamp", "CurrentState", "Category", "Description", "LastTransitionTimestamp", "OperatorUser", "OperatorComment", "CurrentValue", "LimitValue", }); internal_static_mxaccess_gateway_v1_AcknowledgeAlarmRequest_descriptor = - getDescriptor().getMessageType(64); + getDescriptor().getMessageType(77); internal_static_mxaccess_gateway_v1_AcknowledgeAlarmRequest_fieldAccessorTable = new com.google.protobuf.GeneratedMessage.FieldAccessorTable( internal_static_mxaccess_gateway_v1_AcknowledgeAlarmRequest_descriptor, new java.lang.String[] { "SessionId", "ClientCorrelationId", "AlarmFullReference", "Comment", "OperatorUser", }); internal_static_mxaccess_gateway_v1_AcknowledgeAlarmReply_descriptor = - getDescriptor().getMessageType(65); + getDescriptor().getMessageType(78); internal_static_mxaccess_gateway_v1_AcknowledgeAlarmReply_fieldAccessorTable = new com.google.protobuf.GeneratedMessage.FieldAccessorTable( internal_static_mxaccess_gateway_v1_AcknowledgeAlarmReply_descriptor, new java.lang.String[] { "SessionId", "CorrelationId", "ProtocolStatus", "Hresult", "Status", "DiagnosticMessage", }); internal_static_mxaccess_gateway_v1_QueryActiveAlarmsRequest_descriptor = - getDescriptor().getMessageType(66); + getDescriptor().getMessageType(79); internal_static_mxaccess_gateway_v1_QueryActiveAlarmsRequest_fieldAccessorTable = new com.google.protobuf.GeneratedMessage.FieldAccessorTable( internal_static_mxaccess_gateway_v1_QueryActiveAlarmsRequest_descriptor, new java.lang.String[] { "SessionId", "ClientCorrelationId", "AlarmFilterPrefix", }); internal_static_mxaccess_gateway_v1_MxStatusProxy_descriptor = - getDescriptor().getMessageType(67); + getDescriptor().getMessageType(80); internal_static_mxaccess_gateway_v1_MxStatusProxy_fieldAccessorTable = new com.google.protobuf.GeneratedMessage.FieldAccessorTable( internal_static_mxaccess_gateway_v1_MxStatusProxy_descriptor, new java.lang.String[] { "Success", "Category", "DetectedBy", "Detail", "RawCategory", "RawDetectedBy", "DiagnosticText", }); internal_static_mxaccess_gateway_v1_MxValue_descriptor = - getDescriptor().getMessageType(68); + getDescriptor().getMessageType(81); internal_static_mxaccess_gateway_v1_MxValue_fieldAccessorTable = new com.google.protobuf.GeneratedMessage.FieldAccessorTable( internal_static_mxaccess_gateway_v1_MxValue_descriptor, new java.lang.String[] { "DataType", "VariantType", "IsNull", "RawDiagnostic", "RawDataType", "BoolValue", "Int32Value", "Int64Value", "FloatValue", "DoubleValue", "StringValue", "TimestampValue", "ArrayValue", "RawValue", "Kind", }); internal_static_mxaccess_gateway_v1_MxArray_descriptor = - getDescriptor().getMessageType(69); + getDescriptor().getMessageType(82); internal_static_mxaccess_gateway_v1_MxArray_fieldAccessorTable = new com.google.protobuf.GeneratedMessage.FieldAccessorTable( internal_static_mxaccess_gateway_v1_MxArray_descriptor, new java.lang.String[] { "ElementDataType", "VariantType", "Dimensions", "RawDiagnostic", "RawElementDataType", "BoolValues", "Int32Values", "Int64Values", "FloatValues", "DoubleValues", "StringValues", "TimestampValues", "RawValues", "Values", }); internal_static_mxaccess_gateway_v1_BoolArray_descriptor = - getDescriptor().getMessageType(70); + getDescriptor().getMessageType(83); internal_static_mxaccess_gateway_v1_BoolArray_fieldAccessorTable = new com.google.protobuf.GeneratedMessage.FieldAccessorTable( internal_static_mxaccess_gateway_v1_BoolArray_descriptor, new java.lang.String[] { "Values", }); internal_static_mxaccess_gateway_v1_Int32Array_descriptor = - getDescriptor().getMessageType(71); + getDescriptor().getMessageType(84); internal_static_mxaccess_gateway_v1_Int32Array_fieldAccessorTable = new com.google.protobuf.GeneratedMessage.FieldAccessorTable( internal_static_mxaccess_gateway_v1_Int32Array_descriptor, new java.lang.String[] { "Values", }); internal_static_mxaccess_gateway_v1_Int64Array_descriptor = - getDescriptor().getMessageType(72); + getDescriptor().getMessageType(85); internal_static_mxaccess_gateway_v1_Int64Array_fieldAccessorTable = new com.google.protobuf.GeneratedMessage.FieldAccessorTable( internal_static_mxaccess_gateway_v1_Int64Array_descriptor, new java.lang.String[] { "Values", }); internal_static_mxaccess_gateway_v1_FloatArray_descriptor = - getDescriptor().getMessageType(73); + getDescriptor().getMessageType(86); internal_static_mxaccess_gateway_v1_FloatArray_fieldAccessorTable = new com.google.protobuf.GeneratedMessage.FieldAccessorTable( internal_static_mxaccess_gateway_v1_FloatArray_descriptor, new java.lang.String[] { "Values", }); internal_static_mxaccess_gateway_v1_DoubleArray_descriptor = - getDescriptor().getMessageType(74); + getDescriptor().getMessageType(87); internal_static_mxaccess_gateway_v1_DoubleArray_fieldAccessorTable = new com.google.protobuf.GeneratedMessage.FieldAccessorTable( internal_static_mxaccess_gateway_v1_DoubleArray_descriptor, new java.lang.String[] { "Values", }); internal_static_mxaccess_gateway_v1_StringArray_descriptor = - getDescriptor().getMessageType(75); + getDescriptor().getMessageType(88); internal_static_mxaccess_gateway_v1_StringArray_fieldAccessorTable = new com.google.protobuf.GeneratedMessage.FieldAccessorTable( internal_static_mxaccess_gateway_v1_StringArray_descriptor, new java.lang.String[] { "Values", }); internal_static_mxaccess_gateway_v1_TimestampArray_descriptor = - getDescriptor().getMessageType(76); + getDescriptor().getMessageType(89); internal_static_mxaccess_gateway_v1_TimestampArray_fieldAccessorTable = new com.google.protobuf.GeneratedMessage.FieldAccessorTable( internal_static_mxaccess_gateway_v1_TimestampArray_descriptor, new java.lang.String[] { "Values", }); internal_static_mxaccess_gateway_v1_RawArray_descriptor = - getDescriptor().getMessageType(77); + getDescriptor().getMessageType(90); internal_static_mxaccess_gateway_v1_RawArray_fieldAccessorTable = new com.google.protobuf.GeneratedMessage.FieldAccessorTable( internal_static_mxaccess_gateway_v1_RawArray_descriptor, new java.lang.String[] { "Values", }); internal_static_mxaccess_gateway_v1_ProtocolStatus_descriptor = - getDescriptor().getMessageType(78); + getDescriptor().getMessageType(91); internal_static_mxaccess_gateway_v1_ProtocolStatus_fieldAccessorTable = new com.google.protobuf.GeneratedMessage.FieldAccessorTable( internal_static_mxaccess_gateway_v1_ProtocolStatus_descriptor, diff --git a/clients/python/README.md b/clients/python/README.md index 42d2393..1953bc4 100644 --- a/clients/python/README.md +++ b/clients/python/README.md @@ -95,6 +95,17 @@ async with await GatewayClient.connect( events available for parity tests. `Session` helpers call the method-specific MXAccess commands and preserve raw replies on typed command exceptions. +The full bulk family is available — `add_item_bulk`, `advise_item_bulk`, +`remove_item_bulk`, `unadvise_item_bulk`, `subscribe_bulk`, `unsubscribe_bulk`, +`write_bulk`, `write2_bulk`, `write_secured_bulk`, `write_secured2_bulk`, and +`read_bulk`. Bulk methods carry a list of entries in one round-trip and +return a `list[pb.SubscribeResult]` / `list[pb.BulkWriteResult]` / +`list[pb.BulkReadResult]`; per-entry MXAccess failures appear as result +entries with `was_successful = False` and never raise. `read_bulk` accepts +a per-tag `timeout_ms` (`0` = worker default) and returns cached +`OnDataChange` values when the tag is already advised +(`was_cached = True`) without touching the existing subscription. + `*_raw` methods (`GatewayClient.invoke_raw`, `Session.invoke_raw`) surface gateway protocol failures by raising the typed `MxGateway*` exceptions, but they deliberately do **not** run MXAccess-failure detection: an MXAccess diff --git a/clients/python/src/mxgateway/generated/galaxy_repository_pb2_grpc.py b/clients/python/src/mxgateway/generated/galaxy_repository_pb2_grpc.py index 815002b..ac350f5 100644 --- a/clients/python/src/mxgateway/generated/galaxy_repository_pb2_grpc.py +++ b/clients/python/src/mxgateway/generated/galaxy_repository_pb2_grpc.py @@ -26,7 +26,14 @@ if _version_not_supported: class GalaxyRepositoryStub(object): - """Read-only browse over the AVEVA System Platform Galaxy Repository (ZB SQL + """Wire-compatibility policy (ProtobufStyleGuide): this contract evolves + additively only. Never renumber or repurpose an existing field number or + enum value. When a field or enum value is removed, add a `reserved` range + (and `reserved` name) covering it in the same change so a future editor + cannot accidentally reuse the retired tag. There are no `reserved` + declarations today because no field or enum value has ever been removed. + + Read-only browse over the AVEVA System Platform Galaxy Repository (ZB SQL database). Lets clients enumerate the deployed object hierarchy and each object's dynamic attributes so they know what tag references to subscribe to via the MxAccessGateway service. @@ -61,7 +68,14 @@ class GalaxyRepositoryStub(object): class GalaxyRepositoryServicer(object): - """Read-only browse over the AVEVA System Platform Galaxy Repository (ZB SQL + """Wire-compatibility policy (ProtobufStyleGuide): this contract evolves + additively only. Never renumber or repurpose an existing field number or + enum value. When a field or enum value is removed, add a `reserved` range + (and `reserved` name) covering it in the same change so a future editor + cannot accidentally reuse the retired tag. There are no `reserved` + declarations today because no field or enum value has ever been removed. + + Read-only browse over the AVEVA System Platform Galaxy Repository (ZB SQL database). Lets clients enumerate the deployed object hierarchy and each object's dynamic attributes so they know what tag references to subscribe to via the MxAccessGateway service. @@ -129,7 +143,14 @@ def add_GalaxyRepositoryServicer_to_server(servicer, server): # This class is part of an EXPERIMENTAL API. class GalaxyRepository(object): - """Read-only browse over the AVEVA System Platform Galaxy Repository (ZB SQL + """Wire-compatibility policy (ProtobufStyleGuide): this contract evolves + additively only. Never renumber or repurpose an existing field number or + enum value. When a field or enum value is removed, add a `reserved` range + (and `reserved` name) covering it in the same change so a future editor + cannot accidentally reuse the retired tag. There are no `reserved` + declarations today because no field or enum value has ever been removed. + + Read-only browse over the AVEVA System Platform Galaxy Repository (ZB SQL database). Lets clients enumerate the deployed object hierarchy and each object's dynamic attributes so they know what tag references to subscribe to via the MxAccessGateway service. diff --git a/clients/python/src/mxgateway/generated/mxaccess_gateway_pb2.py b/clients/python/src/mxgateway/generated/mxaccess_gateway_pb2.py index ef6516d..18106c6 100644 --- a/clients/python/src/mxgateway/generated/mxaccess_gateway_pb2.py +++ b/clients/python/src/mxgateway/generated/mxaccess_gateway_pb2.py @@ -26,7 +26,7 @@ from google.protobuf import duration_pb2 as google_dot_protobuf_dot_duration__pb from google.protobuf import timestamp_pb2 as google_dot_protobuf_dot_timestamp__pb2 -DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\x16mxaccess_gateway.proto\x12\x13mxaccess_gateway.v1\x1a\x1egoogle/protobuf/duration.proto\x1a\x1fgoogle/protobuf/timestamp.proto\"\x9f\x01\n\x12OpenSessionRequest\x12\x19\n\x11requested_backend\x18\x01 \x01(\t\x12\x1b\n\x13\x63lient_session_name\x18\x02 \x01(\t\x12\x1d\n\x15\x63lient_correlation_id\x18\x03 \x01(\t\x12\x32\n\x0f\x63ommand_timeout\x18\x04 \x01(\x0b\x32\x19.google.protobuf.Duration\"\xaa\x02\n\x10OpenSessionReply\x12\x12\n\nsession_id\x18\x01 \x01(\t\x12\x14\n\x0c\x62\x61\x63kend_name\x18\x02 \x01(\t\x12\x19\n\x11worker_process_id\x18\x03 \x01(\x05\x12\x1f\n\x17worker_protocol_version\x18\x04 \x01(\r\x12\x14\n\x0c\x63\x61pabilities\x18\x05 \x03(\t\x12:\n\x17\x64\x65\x66\x61ult_command_timeout\x18\x06 \x01(\x0b\x32\x19.google.protobuf.Duration\x12<\n\x0fprotocol_status\x18\x07 \x01(\x0b\x32#.mxaccess_gateway.v1.ProtocolStatus\x12 \n\x18gateway_protocol_version\x18\x08 \x01(\r\"H\n\x13\x43loseSessionRequest\x12\x12\n\nsession_id\x18\x01 \x01(\t\x12\x1d\n\x15\x63lient_correlation_id\x18\x02 \x01(\t\"\x9d\x01\n\x11\x43loseSessionReply\x12\x12\n\nsession_id\x18\x01 \x01(\t\x12\x36\n\x0b\x66inal_state\x18\x02 \x01(\x0e\x32!.mxaccess_gateway.v1.SessionState\x12<\n\x0fprotocol_status\x18\x03 \x01(\x0b\x32#.mxaccess_gateway.v1.ProtocolStatus\"H\n\x13StreamEventsRequest\x12\x12\n\nsession_id\x18\x01 \x01(\t\x12\x1d\n\x15\x61\x66ter_worker_sequence\x18\x02 \x01(\x04\"v\n\x10MxCommandRequest\x12\x12\n\nsession_id\x18\x01 \x01(\t\x12\x1d\n\x15\x63lient_correlation_id\x18\x02 \x01(\t\x12/\n\x07\x63ommand\x18\x03 \x01(\x0b\x32\x1e.mxaccess_gateway.v1.MxCommand\"\xcf\x0f\n\tMxCommand\x12\x30\n\x04kind\x18\x01 \x01(\x0e\x32\".mxaccess_gateway.v1.MxCommandKind\x12\x38\n\x08register\x18\n \x01(\x0b\x32$.mxaccess_gateway.v1.RegisterCommandH\x00\x12<\n\nunregister\x18\x0b \x01(\x0b\x32&.mxaccess_gateway.v1.UnregisterCommandH\x00\x12\x37\n\x08\x61\x64\x64_item\x18\x0c \x01(\x0b\x32#.mxaccess_gateway.v1.AddItemCommandH\x00\x12\x39\n\tadd_item2\x18\r \x01(\x0b\x32$.mxaccess_gateway.v1.AddItem2CommandH\x00\x12=\n\x0bremove_item\x18\x0e \x01(\x0b\x32&.mxaccess_gateway.v1.RemoveItemCommandH\x00\x12\x34\n\x06\x61\x64vise\x18\x0f \x01(\x0b\x32\".mxaccess_gateway.v1.AdviseCommandH\x00\x12\x39\n\tun_advise\x18\x10 \x01(\x0b\x32$.mxaccess_gateway.v1.UnAdviseCommandH\x00\x12K\n\x12\x61\x64vise_supervisory\x18\x11 \x01(\x0b\x32-.mxaccess_gateway.v1.AdviseSupervisoryCommandH\x00\x12H\n\x11\x61\x64\x64_buffered_item\x18\x12 \x01(\x0b\x32+.mxaccess_gateway.v1.AddBufferedItemCommandH\x00\x12]\n\x1cset_buffered_update_interval\x18\x13 \x01(\x0b\x32\x35.mxaccess_gateway.v1.SetBufferedUpdateIntervalCommandH\x00\x12\x36\n\x07suspend\x18\x14 \x01(\x0b\x32#.mxaccess_gateway.v1.SuspendCommandH\x00\x12\x38\n\x08\x61\x63tivate\x18\x15 \x01(\x0b\x32$.mxaccess_gateway.v1.ActivateCommandH\x00\x12\x32\n\x05write\x18\x16 \x01(\x0b\x32!.mxaccess_gateway.v1.WriteCommandH\x00\x12\x34\n\x06write2\x18\x17 \x01(\x0b\x32\".mxaccess_gateway.v1.Write2CommandH\x00\x12\x41\n\rwrite_secured\x18\x18 \x01(\x0b\x32(.mxaccess_gateway.v1.WriteSecuredCommandH\x00\x12\x43\n\x0ewrite_secured2\x18\x19 \x01(\x0b\x32).mxaccess_gateway.v1.WriteSecured2CommandH\x00\x12I\n\x11\x61uthenticate_user\x18\x1a \x01(\x0b\x32,.mxaccess_gateway.v1.AuthenticateUserCommandH\x00\x12M\n\x14\x61rchestra_user_to_id\x18\x1b \x01(\x0b\x32-.mxaccess_gateway.v1.ArchestrAUserToIdCommandH\x00\x12@\n\radd_item_bulk\x18\x1c \x01(\x0b\x32\'.mxaccess_gateway.v1.AddItemBulkCommandH\x00\x12\x46\n\x10\x61\x64vise_item_bulk\x18\x1d \x01(\x0b\x32*.mxaccess_gateway.v1.AdviseItemBulkCommandH\x00\x12\x46\n\x10remove_item_bulk\x18\x1e \x01(\x0b\x32*.mxaccess_gateway.v1.RemoveItemBulkCommandH\x00\x12K\n\x13un_advise_item_bulk\x18\x1f \x01(\x0b\x32,.mxaccess_gateway.v1.UnAdviseItemBulkCommandH\x00\x12\x43\n\x0esubscribe_bulk\x18 \x01(\x0b\x32).mxaccess_gateway.v1.SubscribeBulkCommandH\x00\x12G\n\x10unsubscribe_bulk\x18! \x01(\x0b\x32+.mxaccess_gateway.v1.UnsubscribeBulkCommandH\x00\x12\x30\n\x04ping\x18\x64 \x01(\x0b\x32 .mxaccess_gateway.v1.PingCommandH\x00\x12H\n\x11get_session_state\x18\x65 \x01(\x0b\x32+.mxaccess_gateway.v1.GetSessionStateCommandH\x00\x12\x44\n\x0fget_worker_info\x18\x66 \x01(\x0b\x32).mxaccess_gateway.v1.GetWorkerInfoCommandH\x00\x12?\n\x0c\x64rain_events\x18g \x01(\x0b\x32\'.mxaccess_gateway.v1.DrainEventsCommandH\x00\x12\x45\n\x0fshutdown_worker\x18h \x01(\x0b\x32*.mxaccess_gateway.v1.ShutdownWorkerCommandH\x00\x42\t\n\x07payload\"&\n\x0fRegisterCommand\x12\x13\n\x0b\x63lient_name\x18\x01 \x01(\t\"*\n\x11UnregisterCommand\x12\x15\n\rserver_handle\x18\x01 \x01(\x05\"@\n\x0e\x41\x64\x64ItemCommand\x12\x15\n\rserver_handle\x18\x01 \x01(\x05\x12\x17\n\x0fitem_definition\x18\x02 \x01(\t\"W\n\x0f\x41\x64\x64Item2Command\x12\x15\n\rserver_handle\x18\x01 \x01(\x05\x12\x17\n\x0fitem_definition\x18\x02 \x01(\t\x12\x14\n\x0citem_context\x18\x03 \x01(\t\"?\n\x11RemoveItemCommand\x12\x15\n\rserver_handle\x18\x01 \x01(\x05\x12\x13\n\x0bitem_handle\x18\x02 \x01(\x05\";\n\rAdviseCommand\x12\x15\n\rserver_handle\x18\x01 \x01(\x05\x12\x13\n\x0bitem_handle\x18\x02 \x01(\x05\"=\n\x0fUnAdviseCommand\x12\x15\n\rserver_handle\x18\x01 \x01(\x05\x12\x13\n\x0bitem_handle\x18\x02 \x01(\x05\"F\n\x18\x41\x64viseSupervisoryCommand\x12\x15\n\rserver_handle\x18\x01 \x01(\x05\x12\x13\n\x0bitem_handle\x18\x02 \x01(\x05\"^\n\x16\x41\x64\x64\x42ufferedItemCommand\x12\x15\n\rserver_handle\x18\x01 \x01(\x05\x12\x17\n\x0fitem_definition\x18\x02 \x01(\t\x12\x14\n\x0citem_context\x18\x03 \x01(\t\"_\n SetBufferedUpdateIntervalCommand\x12\x15\n\rserver_handle\x18\x01 \x01(\x05\x12$\n\x1cupdate_interval_milliseconds\x18\x02 \x01(\x05\"<\n\x0eSuspendCommand\x12\x15\n\rserver_handle\x18\x01 \x01(\x05\x12\x13\n\x0bitem_handle\x18\x02 \x01(\x05\"=\n\x0f\x41\x63tivateCommand\x12\x15\n\rserver_handle\x18\x01 \x01(\x05\x12\x13\n\x0bitem_handle\x18\x02 \x01(\x05\"x\n\x0cWriteCommand\x12\x15\n\rserver_handle\x18\x01 \x01(\x05\x12\x13\n\x0bitem_handle\x18\x02 \x01(\x05\x12+\n\x05value\x18\x03 \x01(\x0b\x32\x1c.mxaccess_gateway.v1.MxValue\x12\x0f\n\x07user_id\x18\x04 \x01(\x05\"\xb0\x01\n\rWrite2Command\x12\x15\n\rserver_handle\x18\x01 \x01(\x05\x12\x13\n\x0bitem_handle\x18\x02 \x01(\x05\x12+\n\x05value\x18\x03 \x01(\x0b\x32\x1c.mxaccess_gateway.v1.MxValue\x12\x35\n\x0ftimestamp_value\x18\x04 \x01(\x0b\x32\x1c.mxaccess_gateway.v1.MxValue\x12\x0f\n\x07user_id\x18\x05 \x01(\x05\"\xa1\x01\n\x13WriteSecuredCommand\x12\x15\n\rserver_handle\x18\x01 \x01(\x05\x12\x13\n\x0bitem_handle\x18\x02 \x01(\x05\x12\x17\n\x0f\x63urrent_user_id\x18\x03 \x01(\x05\x12\x18\n\x10verifier_user_id\x18\x04 \x01(\x05\x12+\n\x05value\x18\x05 \x01(\x0b\x32\x1c.mxaccess_gateway.v1.MxValue\"\xd9\x01\n\x14WriteSecured2Command\x12\x15\n\rserver_handle\x18\x01 \x01(\x05\x12\x13\n\x0bitem_handle\x18\x02 \x01(\x05\x12\x17\n\x0f\x63urrent_user_id\x18\x03 \x01(\x05\x12\x18\n\x10verifier_user_id\x18\x04 \x01(\x05\x12+\n\x05value\x18\x05 \x01(\x0b\x32\x1c.mxaccess_gateway.v1.MxValue\x12\x35\n\x0ftimestamp_value\x18\x06 \x01(\x0b\x32\x1c.mxaccess_gateway.v1.MxValue\"c\n\x17\x41uthenticateUserCommand\x12\x15\n\rserver_handle\x18\x01 \x01(\x05\x12\x13\n\x0bverify_user\x18\x02 \x01(\t\x12\x1c\n\x14verify_user_password\x18\x03 \x01(\t\"G\n\x18\x41rchestrAUserToIdCommand\x12\x15\n\rserver_handle\x18\x01 \x01(\x05\x12\x14\n\x0cuser_id_guid\x18\x02 \x01(\t\"B\n\x12\x41\x64\x64ItemBulkCommand\x12\x15\n\rserver_handle\x18\x01 \x01(\x05\x12\x15\n\rtag_addresses\x18\x02 \x03(\t\"D\n\x15\x41\x64viseItemBulkCommand\x12\x15\n\rserver_handle\x18\x01 \x01(\x05\x12\x14\n\x0citem_handles\x18\x02 \x03(\x05\"D\n\x15RemoveItemBulkCommand\x12\x15\n\rserver_handle\x18\x01 \x01(\x05\x12\x14\n\x0citem_handles\x18\x02 \x03(\x05\"F\n\x17UnAdviseItemBulkCommand\x12\x15\n\rserver_handle\x18\x01 \x01(\x05\x12\x14\n\x0citem_handles\x18\x02 \x03(\x05\"D\n\x14SubscribeBulkCommand\x12\x15\n\rserver_handle\x18\x01 \x01(\x05\x12\x15\n\rtag_addresses\x18\x02 \x03(\t\"E\n\x16UnsubscribeBulkCommand\x12\x15\n\rserver_handle\x18\x01 \x01(\x05\x12\x14\n\x0citem_handles\x18\x02 \x03(\x05\"\x1e\n\x0bPingCommand\x12\x0f\n\x07message\x18\x01 \x01(\t\"\x18\n\x16GetSessionStateCommand\"\x16\n\x14GetWorkerInfoCommand\"(\n\x12\x44rainEventsCommand\x12\x12\n\nmax_events\x18\x01 \x01(\r\"H\n\x15ShutdownWorkerCommand\x12/\n\x0cgrace_period\x18\x01 \x01(\x0b\x32\x19.google.protobuf.Duration\"\xac\x0b\n\x0eMxCommandReply\x12\x12\n\nsession_id\x18\x01 \x01(\t\x12\x16\n\x0e\x63orrelation_id\x18\x02 \x01(\t\x12\x30\n\x04kind\x18\x03 \x01(\x0e\x32\".mxaccess_gateway.v1.MxCommandKind\x12<\n\x0fprotocol_status\x18\x04 \x01(\x0b\x32#.mxaccess_gateway.v1.ProtocolStatus\x12\x14\n\x07hresult\x18\x05 \x01(\x05H\x01\x88\x01\x01\x12\x32\n\x0creturn_value\x18\x06 \x01(\x0b\x32\x1c.mxaccess_gateway.v1.MxValue\x12\x34\n\x08statuses\x18\x07 \x03(\x0b\x32\".mxaccess_gateway.v1.MxStatusProxy\x12\x1a\n\x12\x64iagnostic_message\x18\x08 \x01(\t\x12\x36\n\x08register\x18\x14 \x01(\x0b\x32\".mxaccess_gateway.v1.RegisterReplyH\x00\x12\x35\n\x08\x61\x64\x64_item\x18\x15 \x01(\x0b\x32!.mxaccess_gateway.v1.AddItemReplyH\x00\x12\x37\n\tadd_item2\x18\x16 \x01(\x0b\x32\".mxaccess_gateway.v1.AddItem2ReplyH\x00\x12\x46\n\x11\x61\x64\x64_buffered_item\x18\x17 \x01(\x0b\x32).mxaccess_gateway.v1.AddBufferedItemReplyH\x00\x12\x34\n\x07suspend\x18\x18 \x01(\x0b\x32!.mxaccess_gateway.v1.SuspendReplyH\x00\x12\x36\n\x08\x61\x63tivate\x18\x19 \x01(\x0b\x32\".mxaccess_gateway.v1.ActivateReplyH\x00\x12G\n\x11\x61uthenticate_user\x18\x1a \x01(\x0b\x32*.mxaccess_gateway.v1.AuthenticateUserReplyH\x00\x12K\n\x14\x61rchestra_user_to_id\x18\x1b \x01(\x0b\x32+.mxaccess_gateway.v1.ArchestrAUserToIdReplyH\x00\x12@\n\radd_item_bulk\x18\x1c \x01(\x0b\x32\'.mxaccess_gateway.v1.BulkSubscribeReplyH\x00\x12\x43\n\x10\x61\x64vise_item_bulk\x18\x1d \x01(\x0b\x32\'.mxaccess_gateway.v1.BulkSubscribeReplyH\x00\x12\x43\n\x10remove_item_bulk\x18\x1e \x01(\x0b\x32\'.mxaccess_gateway.v1.BulkSubscribeReplyH\x00\x12\x46\n\x13un_advise_item_bulk\x18\x1f \x01(\x0b\x32\'.mxaccess_gateway.v1.BulkSubscribeReplyH\x00\x12\x41\n\x0esubscribe_bulk\x18 \x01(\x0b\x32\'.mxaccess_gateway.v1.BulkSubscribeReplyH\x00\x12\x43\n\x10unsubscribe_bulk\x18! \x01(\x0b\x32\'.mxaccess_gateway.v1.BulkSubscribeReplyH\x00\x12?\n\rsession_state\x18\x64 \x01(\x0b\x32&.mxaccess_gateway.v1.SessionStateReplyH\x00\x12;\n\x0bworker_info\x18\x65 \x01(\x0b\x32$.mxaccess_gateway.v1.WorkerInfoReplyH\x00\x12=\n\x0c\x64rain_events\x18\x66 \x01(\x0b\x32%.mxaccess_gateway.v1.DrainEventsReplyH\x00\x42\t\n\x07payloadB\n\n\x08_hresult\"&\n\rRegisterReply\x12\x15\n\rserver_handle\x18\x01 \x01(\x05\"#\n\x0c\x41\x64\x64ItemReply\x12\x13\n\x0bitem_handle\x18\x01 \x01(\x05\"$\n\rAddItem2Reply\x12\x13\n\x0bitem_handle\x18\x01 \x01(\x05\"+\n\x14\x41\x64\x64\x42ufferedItemReply\x12\x13\n\x0bitem_handle\x18\x01 \x01(\x05\"B\n\x0cSuspendReply\x12\x32\n\x06status\x18\x01 \x01(\x0b\x32\".mxaccess_gateway.v1.MxStatusProxy\"C\n\rActivateReply\x12\x32\n\x06status\x18\x01 \x01(\x0b\x32\".mxaccess_gateway.v1.MxStatusProxy\"(\n\x15\x41uthenticateUserReply\x12\x0f\n\x07user_id\x18\x01 \x01(\x05\")\n\x16\x41rchestrAUserToIdReply\x12\x0f\n\x07user_id\x18\x01 \x01(\x05\"\x81\x01\n\x0fSubscribeResult\x12\x15\n\rserver_handle\x18\x01 \x01(\x05\x12\x13\n\x0btag_address\x18\x02 \x01(\t\x12\x13\n\x0bitem_handle\x18\x03 \x01(\x05\x12\x16\n\x0ewas_successful\x18\x04 \x01(\x08\x12\x15\n\rerror_message\x18\x05 \x01(\t\"K\n\x12\x42ulkSubscribeReply\x12\x35\n\x07results\x18\x01 \x03(\x0b\x32$.mxaccess_gateway.v1.SubscribeResult\"E\n\x11SessionStateReply\x12\x30\n\x05state\x18\x01 \x01(\x0e\x32!.mxaccess_gateway.v1.SessionState\"u\n\x0fWorkerInfoReply\x12\x19\n\x11worker_process_id\x18\x01 \x01(\x05\x12\x16\n\x0eworker_version\x18\x02 \x01(\t\x12\x17\n\x0fmxaccess_progid\x18\x03 \x01(\t\x12\x16\n\x0emxaccess_clsid\x18\x04 \x01(\t\"@\n\x10\x44rainEventsReply\x12,\n\x06\x65vents\x18\x01 \x03(\x0b\x32\x1c.mxaccess_gateway.v1.MxEvent\"\xe7\x06\n\x07MxEvent\x12\x32\n\x06\x66\x61mily\x18\x01 \x01(\x0e\x32\".mxaccess_gateway.v1.MxEventFamily\x12\x12\n\nsession_id\x18\x02 \x01(\t\x12\x15\n\rserver_handle\x18\x03 \x01(\x05\x12\x13\n\x0bitem_handle\x18\x04 \x01(\x05\x12+\n\x05value\x18\x05 \x01(\x0b\x32\x1c.mxaccess_gateway.v1.MxValue\x12\x0f\n\x07quality\x18\x06 \x01(\x05\x12\x34\n\x10source_timestamp\x18\x07 \x01(\x0b\x32\x1a.google.protobuf.Timestamp\x12\x34\n\x08statuses\x18\x08 \x03(\x0b\x32\".mxaccess_gateway.v1.MxStatusProxy\x12\x17\n\x0fworker_sequence\x18\t \x01(\x04\x12\x34\n\x10worker_timestamp\x18\n \x01(\x0b\x32\x1a.google.protobuf.Timestamp\x12=\n\x19gateway_receive_timestamp\x18\x0b \x01(\x0b\x32\x1a.google.protobuf.Timestamp\x12\x14\n\x07hresult\x18\x0c \x01(\x05H\x01\x88\x01\x01\x12\x12\n\nraw_status\x18\r \x01(\t\x12@\n\x0eon_data_change\x18\x14 \x01(\x0b\x32&.mxaccess_gateway.v1.OnDataChangeEventH\x00\x12\x46\n\x11on_write_complete\x18\x15 \x01(\x0b\x32).mxaccess_gateway.v1.OnWriteCompleteEventH\x00\x12I\n\x12operation_complete\x18\x16 \x01(\x0b\x32+.mxaccess_gateway.v1.OperationCompleteEventH\x00\x12Q\n\x17on_buffered_data_change\x18\x17 \x01(\x0b\x32..mxaccess_gateway.v1.OnBufferedDataChangeEventH\x00\x12J\n\x13on_alarm_transition\x18\x18 \x01(\x0b\x32+.mxaccess_gateway.v1.OnAlarmTransitionEventH\x00\x42\x06\n\x04\x62odyB\n\n\x08_hresult\"\x13\n\x11OnDataChangeEvent\"\x16\n\x14OnWriteCompleteEvent\"\x18\n\x16OperationCompleteEvent\"\xd4\x01\n\x19OnBufferedDataChangeEvent\x12\x32\n\tdata_type\x18\x01 \x01(\x0e\x32\x1f.mxaccess_gateway.v1.MxDataType\x12\x34\n\x0equality_values\x18\x02 \x01(\x0b\x32\x1c.mxaccess_gateway.v1.MxArray\x12\x36\n\x10timestamp_values\x18\x03 \x01(\x0b\x32\x1c.mxaccess_gateway.v1.MxArray\x12\x15\n\rraw_data_type\x18\x04 \x01(\x05\"\xfd\x03\n\x16OnAlarmTransitionEvent\x12\x1c\n\x14\x61larm_full_reference\x18\x01 \x01(\t\x12\x1f\n\x17source_object_reference\x18\x02 \x01(\t\x12\x17\n\x0f\x61larm_type_name\x18\x03 \x01(\t\x12\x41\n\x0ftransition_kind\x18\x04 \x01(\x0e\x32(.mxaccess_gateway.v1.AlarmTransitionKind\x12\x10\n\x08severity\x18\x05 \x01(\x05\x12<\n\x18original_raise_timestamp\x18\x06 \x01(\x0b\x32\x1a.google.protobuf.Timestamp\x12\x38\n\x14transition_timestamp\x18\x07 \x01(\x0b\x32\x1a.google.protobuf.Timestamp\x12\x15\n\roperator_user\x18\x08 \x01(\t\x12\x18\n\x10operator_comment\x18\t \x01(\t\x12\x10\n\x08\x63\x61tegory\x18\n \x01(\t\x12\x13\n\x0b\x64\x65scription\x18\x0b \x01(\t\x12\x33\n\rcurrent_value\x18\x0c \x01(\x0b\x32\x1c.mxaccess_gateway.v1.MxValue\x12\x31\n\x0blimit_value\x18\r \x01(\x0b\x32\x1c.mxaccess_gateway.v1.MxValue\"\xfd\x03\n\x13\x41\x63tiveAlarmSnapshot\x12\x1c\n\x14\x61larm_full_reference\x18\x01 \x01(\t\x12\x1f\n\x17source_object_reference\x18\x02 \x01(\t\x12\x17\n\x0f\x61larm_type_name\x18\x03 \x01(\t\x12\x10\n\x08severity\x18\x04 \x01(\x05\x12<\n\x18original_raise_timestamp\x18\x05 \x01(\x0b\x32\x1a.google.protobuf.Timestamp\x12?\n\rcurrent_state\x18\x06 \x01(\x0e\x32(.mxaccess_gateway.v1.AlarmConditionState\x12\x10\n\x08\x63\x61tegory\x18\x07 \x01(\t\x12\x13\n\x0b\x64\x65scription\x18\x08 \x01(\t\x12=\n\x19last_transition_timestamp\x18\t \x01(\x0b\x32\x1a.google.protobuf.Timestamp\x12\x15\n\roperator_user\x18\n \x01(\t\x12\x18\n\x10operator_comment\x18\x0b \x01(\t\x12\x33\n\rcurrent_value\x18\x0c \x01(\x0b\x32\x1c.mxaccess_gateway.v1.MxValue\x12\x31\n\x0blimit_value\x18\r \x01(\x0b\x32\x1c.mxaccess_gateway.v1.MxValue\"\x92\x01\n\x17\x41\x63knowledgeAlarmRequest\x12\x12\n\nsession_id\x18\x01 \x01(\t\x12\x1d\n\x15\x63lient_correlation_id\x18\x02 \x01(\t\x12\x1c\n\x14\x61larm_full_reference\x18\x03 \x01(\t\x12\x0f\n\x07\x63omment\x18\x04 \x01(\t\x12\x15\n\roperator_user\x18\x05 \x01(\t\"\xf3\x01\n\x15\x41\x63knowledgeAlarmReply\x12\x12\n\nsession_id\x18\x01 \x01(\t\x12\x16\n\x0e\x63orrelation_id\x18\x02 \x01(\t\x12<\n\x0fprotocol_status\x18\x03 \x01(\x0b\x32#.mxaccess_gateway.v1.ProtocolStatus\x12\x14\n\x07hresult\x18\x04 \x01(\x05H\x00\x88\x01\x01\x12\x32\n\x06status\x18\x05 \x01(\x0b\x32\".mxaccess_gateway.v1.MxStatusProxy\x12\x1a\n\x12\x64iagnostic_message\x18\x06 \x01(\tB\n\n\x08_hresult\"j\n\x18QueryActiveAlarmsRequest\x12\x12\n\nsession_id\x18\x01 \x01(\t\x12\x1d\n\x15\x63lient_correlation_id\x18\x02 \x01(\t\x12\x1b\n\x13\x61larm_filter_prefix\x18\x03 \x01(\t\"\xeb\x01\n\rMxStatusProxy\x12\x0f\n\x07success\x18\x01 \x01(\x05\x12\x37\n\x08\x63\x61tegory\x18\x02 \x01(\x0e\x32%.mxaccess_gateway.v1.MxStatusCategory\x12\x38\n\x0b\x64\x65tected_by\x18\x03 \x01(\x0e\x32#.mxaccess_gateway.v1.MxStatusSource\x12\x0e\n\x06\x64\x65tail\x18\x04 \x01(\x05\x12\x14\n\x0craw_category\x18\x05 \x01(\x05\x12\x17\n\x0fraw_detected_by\x18\x06 \x01(\x05\x12\x17\n\x0f\x64iagnostic_text\x18\x07 \x01(\t\"\xa7\x03\n\x07MxValue\x12\x32\n\tdata_type\x18\x01 \x01(\x0e\x32\x1f.mxaccess_gateway.v1.MxDataType\x12\x14\n\x0cvariant_type\x18\x02 \x01(\t\x12\x0f\n\x07is_null\x18\x03 \x01(\x08\x12\x16\n\x0eraw_diagnostic\x18\x04 \x01(\t\x12\x15\n\rraw_data_type\x18\x05 \x01(\x05\x12\x14\n\nbool_value\x18\n \x01(\x08H\x00\x12\x15\n\x0bint32_value\x18\x0b \x01(\x05H\x00\x12\x15\n\x0bint64_value\x18\x0c \x01(\x03H\x00\x12\x15\n\x0b\x66loat_value\x18\r \x01(\x02H\x00\x12\x16\n\x0c\x64ouble_value\x18\x0e \x01(\x01H\x00\x12\x16\n\x0cstring_value\x18\x0f \x01(\tH\x00\x12\x35\n\x0ftimestamp_value\x18\x10 \x01(\x0b\x32\x1a.google.protobuf.TimestampH\x00\x12\x33\n\x0b\x61rray_value\x18\x11 \x01(\x0b\x32\x1c.mxaccess_gateway.v1.MxArrayH\x00\x12\x13\n\traw_value\x18\x12 \x01(\x0cH\x00\x42\x06\n\x04kind\"\xfe\x04\n\x07MxArray\x12:\n\x11\x65lement_data_type\x18\x01 \x01(\x0e\x32\x1f.mxaccess_gateway.v1.MxDataType\x12\x14\n\x0cvariant_type\x18\x02 \x01(\t\x12\x12\n\ndimensions\x18\x03 \x03(\r\x12\x16\n\x0eraw_diagnostic\x18\x04 \x01(\t\x12\x1d\n\x15raw_element_data_type\x18\x05 \x01(\x05\x12\x35\n\x0b\x62ool_values\x18\n \x01(\x0b\x32\x1e.mxaccess_gateway.v1.BoolArrayH\x00\x12\x37\n\x0cint32_values\x18\x0b \x01(\x0b\x32\x1f.mxaccess_gateway.v1.Int32ArrayH\x00\x12\x37\n\x0cint64_values\x18\x0c \x01(\x0b\x32\x1f.mxaccess_gateway.v1.Int64ArrayH\x00\x12\x37\n\x0c\x66loat_values\x18\r \x01(\x0b\x32\x1f.mxaccess_gateway.v1.FloatArrayH\x00\x12\x39\n\rdouble_values\x18\x0e \x01(\x0b\x32 .mxaccess_gateway.v1.DoubleArrayH\x00\x12\x39\n\rstring_values\x18\x0f \x01(\x0b\x32 .mxaccess_gateway.v1.StringArrayH\x00\x12?\n\x10timestamp_values\x18\x10 \x01(\x0b\x32#.mxaccess_gateway.v1.TimestampArrayH\x00\x12\x33\n\nraw_values\x18\x11 \x01(\x0b\x32\x1d.mxaccess_gateway.v1.RawArrayH\x00\x42\x08\n\x06values\"\x1b\n\tBoolArray\x12\x0e\n\x06values\x18\x01 \x03(\x08\"\x1c\n\nInt32Array\x12\x0e\n\x06values\x18\x01 \x03(\x05\"\x1c\n\nInt64Array\x12\x0e\n\x06values\x18\x01 \x03(\x03\"\x1c\n\nFloatArray\x12\x0e\n\x06values\x18\x01 \x03(\x02\"\x1d\n\x0b\x44oubleArray\x12\x0e\n\x06values\x18\x01 \x03(\x01\"\x1d\n\x0bStringArray\x12\x0e\n\x06values\x18\x01 \x03(\t\"<\n\x0eTimestampArray\x12*\n\x06values\x18\x01 \x03(\x0b\x32\x1a.google.protobuf.Timestamp\"\x1a\n\x08RawArray\x12\x0e\n\x06values\x18\x01 \x03(\x0c\"X\n\x0eProtocolStatus\x12\x35\n\x04\x63ode\x18\x01 \x01(\x0e\x32\'.mxaccess_gateway.v1.ProtocolStatusCode\x12\x0f\n\x07message\x18\x02 \x01(\t*\xa1\x08\n\rMxCommandKind\x12\x1f\n\x1bMX_COMMAND_KIND_UNSPECIFIED\x10\x00\x12\x1c\n\x18MX_COMMAND_KIND_REGISTER\x10\x01\x12\x1e\n\x1aMX_COMMAND_KIND_UNREGISTER\x10\x02\x12\x1c\n\x18MX_COMMAND_KIND_ADD_ITEM\x10\x03\x12\x1d\n\x19MX_COMMAND_KIND_ADD_ITEM2\x10\x04\x12\x1f\n\x1bMX_COMMAND_KIND_REMOVE_ITEM\x10\x05\x12\x1a\n\x16MX_COMMAND_KIND_ADVISE\x10\x06\x12\x1d\n\x19MX_COMMAND_KIND_UN_ADVISE\x10\x07\x12&\n\"MX_COMMAND_KIND_ADVISE_SUPERVISORY\x10\x08\x12%\n!MX_COMMAND_KIND_ADD_BUFFERED_ITEM\x10\t\x12\x30\n,MX_COMMAND_KIND_SET_BUFFERED_UPDATE_INTERVAL\x10\n\x12\x1b\n\x17MX_COMMAND_KIND_SUSPEND\x10\x0b\x12\x1c\n\x18MX_COMMAND_KIND_ACTIVATE\x10\x0c\x12\x19\n\x15MX_COMMAND_KIND_WRITE\x10\r\x12\x1a\n\x16MX_COMMAND_KIND_WRITE2\x10\x0e\x12!\n\x1dMX_COMMAND_KIND_WRITE_SECURED\x10\x0f\x12\"\n\x1eMX_COMMAND_KIND_WRITE_SECURED2\x10\x10\x12%\n!MX_COMMAND_KIND_AUTHENTICATE_USER\x10\x11\x12(\n$MX_COMMAND_KIND_ARCHESTRA_USER_TO_ID\x10\x12\x12!\n\x1dMX_COMMAND_KIND_ADD_ITEM_BULK\x10\x13\x12$\n MX_COMMAND_KIND_ADVISE_ITEM_BULK\x10\x14\x12$\n MX_COMMAND_KIND_REMOVE_ITEM_BULK\x10\x15\x12\'\n#MX_COMMAND_KIND_UN_ADVISE_ITEM_BULK\x10\x16\x12\"\n\x1eMX_COMMAND_KIND_SUBSCRIBE_BULK\x10\x17\x12$\n MX_COMMAND_KIND_UNSUBSCRIBE_BULK\x10\x18\x12\x18\n\x14MX_COMMAND_KIND_PING\x10\x64\x12%\n!MX_COMMAND_KIND_GET_SESSION_STATE\x10\x65\x12#\n\x1fMX_COMMAND_KIND_GET_WORKER_INFO\x10\x66\x12 \n\x1cMX_COMMAND_KIND_DRAIN_EVENTS\x10g\x12#\n\x1fMX_COMMAND_KIND_SHUTDOWN_WORKER\x10h*\xf9\x01\n\rMxEventFamily\x12\x1f\n\x1bMX_EVENT_FAMILY_UNSPECIFIED\x10\x00\x12\"\n\x1eMX_EVENT_FAMILY_ON_DATA_CHANGE\x10\x01\x12%\n!MX_EVENT_FAMILY_ON_WRITE_COMPLETE\x10\x02\x12&\n\"MX_EVENT_FAMILY_OPERATION_COMPLETE\x10\x03\x12+\n\'MX_EVENT_FAMILY_ON_BUFFERED_DATA_CHANGE\x10\x04\x12\'\n#MX_EVENT_FAMILY_ON_ALARM_TRANSITION\x10\x05*\xca\x01\n\x13\x41larmTransitionKind\x12%\n!ALARM_TRANSITION_KIND_UNSPECIFIED\x10\x00\x12\x1f\n\x1b\x41LARM_TRANSITION_KIND_RAISE\x10\x01\x12%\n!ALARM_TRANSITION_KIND_ACKNOWLEDGE\x10\x02\x12\x1f\n\x1b\x41LARM_TRANSITION_KIND_CLEAR\x10\x03\x12#\n\x1f\x41LARM_TRANSITION_KIND_RETRIGGER\x10\x04*\xaa\x01\n\x13\x41larmConditionState\x12%\n!ALARM_CONDITION_STATE_UNSPECIFIED\x10\x00\x12 \n\x1c\x41LARM_CONDITION_STATE_ACTIVE\x10\x01\x12&\n\"ALARM_CONDITION_STATE_ACTIVE_ACKED\x10\x02\x12\"\n\x1e\x41LARM_CONDITION_STATE_INACTIVE\x10\x03*\xa5\x03\n\x10MxStatusCategory\x12\"\n\x1eMX_STATUS_CATEGORY_UNSPECIFIED\x10\x00\x12\x1e\n\x1aMX_STATUS_CATEGORY_UNKNOWN\x10\x01\x12\x19\n\x15MX_STATUS_CATEGORY_OK\x10\x02\x12\x1e\n\x1aMX_STATUS_CATEGORY_PENDING\x10\x03\x12\x1e\n\x1aMX_STATUS_CATEGORY_WARNING\x10\x04\x12*\n&MX_STATUS_CATEGORY_COMMUNICATION_ERROR\x10\x05\x12*\n&MX_STATUS_CATEGORY_CONFIGURATION_ERROR\x10\x06\x12(\n$MX_STATUS_CATEGORY_OPERATIONAL_ERROR\x10\x07\x12%\n!MX_STATUS_CATEGORY_SECURITY_ERROR\x10\x08\x12%\n!MX_STATUS_CATEGORY_SOFTWARE_ERROR\x10\t\x12\"\n\x1eMX_STATUS_CATEGORY_OTHER_ERROR\x10\n*\xca\x02\n\x0eMxStatusSource\x12 \n\x1cMX_STATUS_SOURCE_UNSPECIFIED\x10\x00\x12\x1c\n\x18MX_STATUS_SOURCE_UNKNOWN\x10\x01\x12#\n\x1fMX_STATUS_SOURCE_REQUESTING_LMX\x10\x02\x12#\n\x1fMX_STATUS_SOURCE_RESPONDING_LMX\x10\x03\x12#\n\x1fMX_STATUS_SOURCE_REQUESTING_NMX\x10\x04\x12#\n\x1fMX_STATUS_SOURCE_RESPONDING_NMX\x10\x05\x12\x31\n-MX_STATUS_SOURCE_REQUESTING_AUTOMATION_OBJECT\x10\x06\x12\x31\n-MX_STATUS_SOURCE_RESPONDING_AUTOMATION_OBJECT\x10\x07*\xdd\x04\n\nMxDataType\x12\x1c\n\x18MX_DATA_TYPE_UNSPECIFIED\x10\x00\x12\x18\n\x14MX_DATA_TYPE_UNKNOWN\x10\x01\x12\x18\n\x14MX_DATA_TYPE_NO_DATA\x10\x02\x12\x18\n\x14MX_DATA_TYPE_BOOLEAN\x10\x03\x12\x18\n\x14MX_DATA_TYPE_INTEGER\x10\x04\x12\x16\n\x12MX_DATA_TYPE_FLOAT\x10\x05\x12\x17\n\x13MX_DATA_TYPE_DOUBLE\x10\x06\x12\x17\n\x13MX_DATA_TYPE_STRING\x10\x07\x12\x15\n\x11MX_DATA_TYPE_TIME\x10\x08\x12\x1d\n\x19MX_DATA_TYPE_ELAPSED_TIME\x10\t\x12\x1f\n\x1bMX_DATA_TYPE_REFERENCE_TYPE\x10\n\x12\x1c\n\x18MX_DATA_TYPE_STATUS_TYPE\x10\x0b\x12\x15\n\x11MX_DATA_TYPE_ENUM\x10\x0c\x12-\n)MX_DATA_TYPE_SECURITY_CLASSIFICATION_ENUM\x10\r\x12\"\n\x1eMX_DATA_TYPE_DATA_QUALITY_TYPE\x10\x0e\x12\x1f\n\x1bMX_DATA_TYPE_QUALIFIED_ENUM\x10\x0f\x12!\n\x1dMX_DATA_TYPE_QUALIFIED_STRUCT\x10\x10\x12)\n%MX_DATA_TYPE_INTERNATIONALIZED_STRING\x10\x11\x12\x1b\n\x17MX_DATA_TYPE_BIG_STRING\x10\x12\x12\x14\n\x10MX_DATA_TYPE_END\x10\x13*\xa3\x03\n\x12ProtocolStatusCode\x12$\n PROTOCOL_STATUS_CODE_UNSPECIFIED\x10\x00\x12\x1b\n\x17PROTOCOL_STATUS_CODE_OK\x10\x01\x12(\n$PROTOCOL_STATUS_CODE_INVALID_REQUEST\x10\x02\x12*\n&PROTOCOL_STATUS_CODE_SESSION_NOT_FOUND\x10\x03\x12*\n&PROTOCOL_STATUS_CODE_SESSION_NOT_READY\x10\x04\x12+\n\'PROTOCOL_STATUS_CODE_WORKER_UNAVAILABLE\x10\x05\x12 \n\x1cPROTOCOL_STATUS_CODE_TIMEOUT\x10\x06\x12!\n\x1dPROTOCOL_STATUS_CODE_CANCELED\x10\x07\x12+\n\'PROTOCOL_STATUS_CODE_PROTOCOL_VIOLATION\x10\x08\x12)\n%PROTOCOL_STATUS_CODE_MXACCESS_FAILURE\x10\t*\xbf\x02\n\x0cSessionState\x12\x1d\n\x19SESSION_STATE_UNSPECIFIED\x10\x00\x12\x1a\n\x16SESSION_STATE_CREATING\x10\x01\x12!\n\x1dSESSION_STATE_STARTING_WORKER\x10\x02\x12\"\n\x1eSESSION_STATE_WAITING_FOR_PIPE\x10\x03\x12\x1d\n\x19SESSION_STATE_HANDSHAKING\x10\x04\x12%\n!SESSION_STATE_INITIALIZING_WORKER\x10\x05\x12\x17\n\x13SESSION_STATE_READY\x10\x06\x12\x19\n\x15SESSION_STATE_CLOSING\x10\x07\x12\x18\n\x14SESSION_STATE_CLOSED\x10\x08\x12\x19\n\x15SESSION_STATE_FAULTED\x10\t2\xe0\x04\n\x0fMxAccessGateway\x12]\n\x0bOpenSession\x12\'.mxaccess_gateway.v1.OpenSessionRequest\x1a%.mxaccess_gateway.v1.OpenSessionReply\x12`\n\x0c\x43loseSession\x12(.mxaccess_gateway.v1.CloseSessionRequest\x1a&.mxaccess_gateway.v1.CloseSessionReply\x12T\n\x06Invoke\x12%.mxaccess_gateway.v1.MxCommandRequest\x1a#.mxaccess_gateway.v1.MxCommandReply\x12X\n\x0cStreamEvents\x12(.mxaccess_gateway.v1.StreamEventsRequest\x1a\x1c.mxaccess_gateway.v1.MxEvent0\x01\x12l\n\x10\x41\x63knowledgeAlarm\x12,.mxaccess_gateway.v1.AcknowledgeAlarmRequest\x1a*.mxaccess_gateway.v1.AcknowledgeAlarmReply\x12n\n\x11QueryActiveAlarms\x12-.mxaccess_gateway.v1.QueryActiveAlarmsRequest\x1a(.mxaccess_gateway.v1.ActiveAlarmSnapshot0\x01\x42\x1c\xaa\x02\x19MxGateway.Contracts.Protob\x06proto3') +DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\x16mxaccess_gateway.proto\x12\x13mxaccess_gateway.v1\x1a\x1egoogle/protobuf/duration.proto\x1a\x1fgoogle/protobuf/timestamp.proto\"\x9f\x01\n\x12OpenSessionRequest\x12\x19\n\x11requested_backend\x18\x01 \x01(\t\x12\x1b\n\x13\x63lient_session_name\x18\x02 \x01(\t\x12\x1d\n\x15\x63lient_correlation_id\x18\x03 \x01(\t\x12\x32\n\x0f\x63ommand_timeout\x18\x04 \x01(\x0b\x32\x19.google.protobuf.Duration\"\xaa\x02\n\x10OpenSessionReply\x12\x12\n\nsession_id\x18\x01 \x01(\t\x12\x14\n\x0c\x62\x61\x63kend_name\x18\x02 \x01(\t\x12\x19\n\x11worker_process_id\x18\x03 \x01(\x05\x12\x1f\n\x17worker_protocol_version\x18\x04 \x01(\r\x12\x14\n\x0c\x63\x61pabilities\x18\x05 \x03(\t\x12:\n\x17\x64\x65\x66\x61ult_command_timeout\x18\x06 \x01(\x0b\x32\x19.google.protobuf.Duration\x12<\n\x0fprotocol_status\x18\x07 \x01(\x0b\x32#.mxaccess_gateway.v1.ProtocolStatus\x12 \n\x18gateway_protocol_version\x18\x08 \x01(\r\"H\n\x13\x43loseSessionRequest\x12\x12\n\nsession_id\x18\x01 \x01(\t\x12\x1d\n\x15\x63lient_correlation_id\x18\x02 \x01(\t\"\x9d\x01\n\x11\x43loseSessionReply\x12\x12\n\nsession_id\x18\x01 \x01(\t\x12\x36\n\x0b\x66inal_state\x18\x02 \x01(\x0e\x32!.mxaccess_gateway.v1.SessionState\x12<\n\x0fprotocol_status\x18\x03 \x01(\x0b\x32#.mxaccess_gateway.v1.ProtocolStatus\"H\n\x13StreamEventsRequest\x12\x12\n\nsession_id\x18\x01 \x01(\t\x12\x1d\n\x15\x61\x66ter_worker_sequence\x18\x02 \x01(\x04\"v\n\x10MxCommandRequest\x12\x12\n\nsession_id\x18\x01 \x01(\t\x12\x1d\n\x15\x63lient_correlation_id\x18\x02 \x01(\t\x12/\n\x07\x63ommand\x18\x03 \x01(\x0b\x32\x1e.mxaccess_gateway.v1.MxCommand\"\xc0\x15\n\tMxCommand\x12\x30\n\x04kind\x18\x01 \x01(\x0e\x32\".mxaccess_gateway.v1.MxCommandKind\x12\x38\n\x08register\x18\n \x01(\x0b\x32$.mxaccess_gateway.v1.RegisterCommandH\x00\x12<\n\nunregister\x18\x0b \x01(\x0b\x32&.mxaccess_gateway.v1.UnregisterCommandH\x00\x12\x37\n\x08\x61\x64\x64_item\x18\x0c \x01(\x0b\x32#.mxaccess_gateway.v1.AddItemCommandH\x00\x12\x39\n\tadd_item2\x18\r \x01(\x0b\x32$.mxaccess_gateway.v1.AddItem2CommandH\x00\x12=\n\x0bremove_item\x18\x0e \x01(\x0b\x32&.mxaccess_gateway.v1.RemoveItemCommandH\x00\x12\x34\n\x06\x61\x64vise\x18\x0f \x01(\x0b\x32\".mxaccess_gateway.v1.AdviseCommandH\x00\x12\x39\n\tun_advise\x18\x10 \x01(\x0b\x32$.mxaccess_gateway.v1.UnAdviseCommandH\x00\x12K\n\x12\x61\x64vise_supervisory\x18\x11 \x01(\x0b\x32-.mxaccess_gateway.v1.AdviseSupervisoryCommandH\x00\x12H\n\x11\x61\x64\x64_buffered_item\x18\x12 \x01(\x0b\x32+.mxaccess_gateway.v1.AddBufferedItemCommandH\x00\x12]\n\x1cset_buffered_update_interval\x18\x13 \x01(\x0b\x32\x35.mxaccess_gateway.v1.SetBufferedUpdateIntervalCommandH\x00\x12\x36\n\x07suspend\x18\x14 \x01(\x0b\x32#.mxaccess_gateway.v1.SuspendCommandH\x00\x12\x38\n\x08\x61\x63tivate\x18\x15 \x01(\x0b\x32$.mxaccess_gateway.v1.ActivateCommandH\x00\x12\x32\n\x05write\x18\x16 \x01(\x0b\x32!.mxaccess_gateway.v1.WriteCommandH\x00\x12\x34\n\x06write2\x18\x17 \x01(\x0b\x32\".mxaccess_gateway.v1.Write2CommandH\x00\x12\x41\n\rwrite_secured\x18\x18 \x01(\x0b\x32(.mxaccess_gateway.v1.WriteSecuredCommandH\x00\x12\x43\n\x0ewrite_secured2\x18\x19 \x01(\x0b\x32).mxaccess_gateway.v1.WriteSecured2CommandH\x00\x12I\n\x11\x61uthenticate_user\x18\x1a \x01(\x0b\x32,.mxaccess_gateway.v1.AuthenticateUserCommandH\x00\x12M\n\x14\x61rchestra_user_to_id\x18\x1b \x01(\x0b\x32-.mxaccess_gateway.v1.ArchestrAUserToIdCommandH\x00\x12@\n\radd_item_bulk\x18\x1c \x01(\x0b\x32\'.mxaccess_gateway.v1.AddItemBulkCommandH\x00\x12\x46\n\x10\x61\x64vise_item_bulk\x18\x1d \x01(\x0b\x32*.mxaccess_gateway.v1.AdviseItemBulkCommandH\x00\x12\x46\n\x10remove_item_bulk\x18\x1e \x01(\x0b\x32*.mxaccess_gateway.v1.RemoveItemBulkCommandH\x00\x12K\n\x13un_advise_item_bulk\x18\x1f \x01(\x0b\x32,.mxaccess_gateway.v1.UnAdviseItemBulkCommandH\x00\x12\x43\n\x0esubscribe_bulk\x18 \x01(\x0b\x32).mxaccess_gateway.v1.SubscribeBulkCommandH\x00\x12G\n\x10unsubscribe_bulk\x18! \x01(\x0b\x32+.mxaccess_gateway.v1.UnsubscribeBulkCommandH\x00\x12G\n\x10subscribe_alarms\x18\" \x01(\x0b\x32+.mxaccess_gateway.v1.SubscribeAlarmsCommandH\x00\x12K\n\x12unsubscribe_alarms\x18# \x01(\x0b\x32-.mxaccess_gateway.v1.UnsubscribeAlarmsCommandH\x00\x12Q\n\x19\x61\x63knowledge_alarm_command\x18$ \x01(\x0b\x32,.mxaccess_gateway.v1.AcknowledgeAlarmCommandH\x00\x12T\n\x1bquery_active_alarms_command\x18% \x01(\x0b\x32-.mxaccess_gateway.v1.QueryActiveAlarmsCommandH\x00\x12_\n!acknowledge_alarm_by_name_command\x18& \x01(\x0b\x32\x32.mxaccess_gateway.v1.AcknowledgeAlarmByNameCommandH\x00\x12;\n\nwrite_bulk\x18\' \x01(\x0b\x32%.mxaccess_gateway.v1.WriteBulkCommandH\x00\x12=\n\x0bwrite2_bulk\x18( \x01(\x0b\x32&.mxaccess_gateway.v1.Write2BulkCommandH\x00\x12J\n\x12write_secured_bulk\x18) \x01(\x0b\x32,.mxaccess_gateway.v1.WriteSecuredBulkCommandH\x00\x12L\n\x13write_secured2_bulk\x18* \x01(\x0b\x32-.mxaccess_gateway.v1.WriteSecured2BulkCommandH\x00\x12\x39\n\tread_bulk\x18+ \x01(\x0b\x32$.mxaccess_gateway.v1.ReadBulkCommandH\x00\x12\x30\n\x04ping\x18\x64 \x01(\x0b\x32 .mxaccess_gateway.v1.PingCommandH\x00\x12H\n\x11get_session_state\x18\x65 \x01(\x0b\x32+.mxaccess_gateway.v1.GetSessionStateCommandH\x00\x12\x44\n\x0fget_worker_info\x18\x66 \x01(\x0b\x32).mxaccess_gateway.v1.GetWorkerInfoCommandH\x00\x12?\n\x0c\x64rain_events\x18g \x01(\x0b\x32\'.mxaccess_gateway.v1.DrainEventsCommandH\x00\x12\x45\n\x0fshutdown_worker\x18h \x01(\x0b\x32*.mxaccess_gateway.v1.ShutdownWorkerCommandH\x00\x42\t\n\x07payload\"&\n\x0fRegisterCommand\x12\x13\n\x0b\x63lient_name\x18\x01 \x01(\t\"*\n\x11UnregisterCommand\x12\x15\n\rserver_handle\x18\x01 \x01(\x05\"@\n\x0e\x41\x64\x64ItemCommand\x12\x15\n\rserver_handle\x18\x01 \x01(\x05\x12\x17\n\x0fitem_definition\x18\x02 \x01(\t\"W\n\x0f\x41\x64\x64Item2Command\x12\x15\n\rserver_handle\x18\x01 \x01(\x05\x12\x17\n\x0fitem_definition\x18\x02 \x01(\t\x12\x14\n\x0citem_context\x18\x03 \x01(\t\"?\n\x11RemoveItemCommand\x12\x15\n\rserver_handle\x18\x01 \x01(\x05\x12\x13\n\x0bitem_handle\x18\x02 \x01(\x05\";\n\rAdviseCommand\x12\x15\n\rserver_handle\x18\x01 \x01(\x05\x12\x13\n\x0bitem_handle\x18\x02 \x01(\x05\"=\n\x0fUnAdviseCommand\x12\x15\n\rserver_handle\x18\x01 \x01(\x05\x12\x13\n\x0bitem_handle\x18\x02 \x01(\x05\"F\n\x18\x41\x64viseSupervisoryCommand\x12\x15\n\rserver_handle\x18\x01 \x01(\x05\x12\x13\n\x0bitem_handle\x18\x02 \x01(\x05\"^\n\x16\x41\x64\x64\x42ufferedItemCommand\x12\x15\n\rserver_handle\x18\x01 \x01(\x05\x12\x17\n\x0fitem_definition\x18\x02 \x01(\t\x12\x14\n\x0citem_context\x18\x03 \x01(\t\"_\n SetBufferedUpdateIntervalCommand\x12\x15\n\rserver_handle\x18\x01 \x01(\x05\x12$\n\x1cupdate_interval_milliseconds\x18\x02 \x01(\x05\"<\n\x0eSuspendCommand\x12\x15\n\rserver_handle\x18\x01 \x01(\x05\x12\x13\n\x0bitem_handle\x18\x02 \x01(\x05\"=\n\x0f\x41\x63tivateCommand\x12\x15\n\rserver_handle\x18\x01 \x01(\x05\x12\x13\n\x0bitem_handle\x18\x02 \x01(\x05\"x\n\x0cWriteCommand\x12\x15\n\rserver_handle\x18\x01 \x01(\x05\x12\x13\n\x0bitem_handle\x18\x02 \x01(\x05\x12+\n\x05value\x18\x03 \x01(\x0b\x32\x1c.mxaccess_gateway.v1.MxValue\x12\x0f\n\x07user_id\x18\x04 \x01(\x05\"\xb0\x01\n\rWrite2Command\x12\x15\n\rserver_handle\x18\x01 \x01(\x05\x12\x13\n\x0bitem_handle\x18\x02 \x01(\x05\x12+\n\x05value\x18\x03 \x01(\x0b\x32\x1c.mxaccess_gateway.v1.MxValue\x12\x35\n\x0ftimestamp_value\x18\x04 \x01(\x0b\x32\x1c.mxaccess_gateway.v1.MxValue\x12\x0f\n\x07user_id\x18\x05 \x01(\x05\"\xa1\x01\n\x13WriteSecuredCommand\x12\x15\n\rserver_handle\x18\x01 \x01(\x05\x12\x13\n\x0bitem_handle\x18\x02 \x01(\x05\x12\x17\n\x0f\x63urrent_user_id\x18\x03 \x01(\x05\x12\x18\n\x10verifier_user_id\x18\x04 \x01(\x05\x12+\n\x05value\x18\x05 \x01(\x0b\x32\x1c.mxaccess_gateway.v1.MxValue\"\xd9\x01\n\x14WriteSecured2Command\x12\x15\n\rserver_handle\x18\x01 \x01(\x05\x12\x13\n\x0bitem_handle\x18\x02 \x01(\x05\x12\x17\n\x0f\x63urrent_user_id\x18\x03 \x01(\x05\x12\x18\n\x10verifier_user_id\x18\x04 \x01(\x05\x12+\n\x05value\x18\x05 \x01(\x0b\x32\x1c.mxaccess_gateway.v1.MxValue\x12\x35\n\x0ftimestamp_value\x18\x06 \x01(\x0b\x32\x1c.mxaccess_gateway.v1.MxValue\"c\n\x17\x41uthenticateUserCommand\x12\x15\n\rserver_handle\x18\x01 \x01(\x05\x12\x13\n\x0bverify_user\x18\x02 \x01(\t\x12\x1c\n\x14verify_user_password\x18\x03 \x01(\t\"G\n\x18\x41rchestrAUserToIdCommand\x12\x15\n\rserver_handle\x18\x01 \x01(\x05\x12\x14\n\x0cuser_id_guid\x18\x02 \x01(\t\"B\n\x12\x41\x64\x64ItemBulkCommand\x12\x15\n\rserver_handle\x18\x01 \x01(\x05\x12\x15\n\rtag_addresses\x18\x02 \x03(\t\"D\n\x15\x41\x64viseItemBulkCommand\x12\x15\n\rserver_handle\x18\x01 \x01(\x05\x12\x14\n\x0citem_handles\x18\x02 \x03(\x05\"D\n\x15RemoveItemBulkCommand\x12\x15\n\rserver_handle\x18\x01 \x01(\x05\x12\x14\n\x0citem_handles\x18\x02 \x03(\x05\"F\n\x17UnAdviseItemBulkCommand\x12\x15\n\rserver_handle\x18\x01 \x01(\x05\x12\x14\n\x0citem_handles\x18\x02 \x03(\x05\"D\n\x14SubscribeBulkCommand\x12\x15\n\rserver_handle\x18\x01 \x01(\x05\x12\x15\n\rtag_addresses\x18\x02 \x03(\t\"9\n\x16SubscribeAlarmsCommand\x12\x1f\n\x17subscription_expression\x18\x01 \x01(\t\"\x1a\n\x18UnsubscribeAlarmsCommand\"\xa1\x01\n\x17\x41\x63knowledgeAlarmCommand\x12\x12\n\nalarm_guid\x18\x01 \x01(\t\x12\x0f\n\x07\x63omment\x18\x02 \x01(\t\x12\x15\n\roperator_user\x18\x03 \x01(\t\x12\x15\n\roperator_node\x18\x04 \x01(\t\x12\x17\n\x0foperator_domain\x18\x05 \x01(\t\x12\x1a\n\x12operator_full_name\x18\x06 \x01(\t\"7\n\x18QueryActiveAlarmsCommand\x12\x1b\n\x13\x61larm_filter_prefix\x18\x01 \x01(\t\"\xd2\x01\n\x1d\x41\x63knowledgeAlarmByNameCommand\x12\x12\n\nalarm_name\x18\x01 \x01(\t\x12\x15\n\rprovider_name\x18\x02 \x01(\t\x12\x12\n\ngroup_name\x18\x03 \x01(\t\x12\x0f\n\x07\x63omment\x18\x04 \x01(\t\x12\x15\n\roperator_user\x18\x05 \x01(\t\x12\x15\n\roperator_node\x18\x06 \x01(\t\x12\x17\n\x0foperator_domain\x18\x07 \x01(\t\x12\x1a\n\x12operator_full_name\x18\x08 \x01(\t\"E\n\x16UnsubscribeBulkCommand\x12\x15\n\rserver_handle\x18\x01 \x01(\x05\x12\x14\n\x0citem_handles\x18\x02 \x03(\x05\"_\n\x10WriteBulkCommand\x12\x15\n\rserver_handle\x18\x01 \x01(\x05\x12\x34\n\x07\x65ntries\x18\x02 \x03(\x0b\x32#.mxaccess_gateway.v1.WriteBulkEntry\"c\n\x0eWriteBulkEntry\x12\x13\n\x0bitem_handle\x18\x01 \x01(\x05\x12+\n\x05value\x18\x02 \x01(\x0b\x32\x1c.mxaccess_gateway.v1.MxValue\x12\x0f\n\x07user_id\x18\x03 \x01(\x05\"a\n\x11Write2BulkCommand\x12\x15\n\rserver_handle\x18\x01 \x01(\x05\x12\x35\n\x07\x65ntries\x18\x02 \x03(\x0b\x32$.mxaccess_gateway.v1.Write2BulkEntry\"\x9b\x01\n\x0fWrite2BulkEntry\x12\x13\n\x0bitem_handle\x18\x01 \x01(\x05\x12+\n\x05value\x18\x02 \x01(\x0b\x32\x1c.mxaccess_gateway.v1.MxValue\x12\x35\n\x0ftimestamp_value\x18\x03 \x01(\x0b\x32\x1c.mxaccess_gateway.v1.MxValue\x12\x0f\n\x07user_id\x18\x04 \x01(\x05\"m\n\x17WriteSecuredBulkCommand\x12\x15\n\rserver_handle\x18\x01 \x01(\x05\x12;\n\x07\x65ntries\x18\x02 \x03(\x0b\x32*.mxaccess_gateway.v1.WriteSecuredBulkEntry\"\x8c\x01\n\x15WriteSecuredBulkEntry\x12\x13\n\x0bitem_handle\x18\x01 \x01(\x05\x12\x17\n\x0f\x63urrent_user_id\x18\x02 \x01(\x05\x12\x18\n\x10verifier_user_id\x18\x03 \x01(\x05\x12+\n\x05value\x18\x04 \x01(\x0b\x32\x1c.mxaccess_gateway.v1.MxValue\"o\n\x18WriteSecured2BulkCommand\x12\x15\n\rserver_handle\x18\x01 \x01(\x05\x12<\n\x07\x65ntries\x18\x02 \x03(\x0b\x32+.mxaccess_gateway.v1.WriteSecured2BulkEntry\"\xc4\x01\n\x16WriteSecured2BulkEntry\x12\x13\n\x0bitem_handle\x18\x01 \x01(\x05\x12\x17\n\x0f\x63urrent_user_id\x18\x02 \x01(\x05\x12\x18\n\x10verifier_user_id\x18\x03 \x01(\x05\x12+\n\x05value\x18\x04 \x01(\x0b\x32\x1c.mxaccess_gateway.v1.MxValue\x12\x35\n\x0ftimestamp_value\x18\x05 \x01(\x0b\x32\x1c.mxaccess_gateway.v1.MxValue\"S\n\x0fReadBulkCommand\x12\x15\n\rserver_handle\x18\x01 \x01(\x05\x12\x15\n\rtag_addresses\x18\x02 \x03(\t\x12\x12\n\ntimeout_ms\x18\x03 \x01(\r\"\x1e\n\x0bPingCommand\x12\x0f\n\x07message\x18\x01 \x01(\t\"\x18\n\x16GetSessionStateCommand\"\x16\n\x14GetWorkerInfoCommand\"(\n\x12\x44rainEventsCommand\x12\x12\n\nmax_events\x18\x01 \x01(\r\"H\n\x15ShutdownWorkerCommand\x12/\n\x0cgrace_period\x18\x01 \x01(\x0b\x32\x19.google.protobuf.Duration\"\x86\x0f\n\x0eMxCommandReply\x12\x12\n\nsession_id\x18\x01 \x01(\t\x12\x16\n\x0e\x63orrelation_id\x18\x02 \x01(\t\x12\x30\n\x04kind\x18\x03 \x01(\x0e\x32\".mxaccess_gateway.v1.MxCommandKind\x12<\n\x0fprotocol_status\x18\x04 \x01(\x0b\x32#.mxaccess_gateway.v1.ProtocolStatus\x12\x14\n\x07hresult\x18\x05 \x01(\x05H\x01\x88\x01\x01\x12\x32\n\x0creturn_value\x18\x06 \x01(\x0b\x32\x1c.mxaccess_gateway.v1.MxValue\x12\x34\n\x08statuses\x18\x07 \x03(\x0b\x32\".mxaccess_gateway.v1.MxStatusProxy\x12\x1a\n\x12\x64iagnostic_message\x18\x08 \x01(\t\x12\x36\n\x08register\x18\x14 \x01(\x0b\x32\".mxaccess_gateway.v1.RegisterReplyH\x00\x12\x35\n\x08\x61\x64\x64_item\x18\x15 \x01(\x0b\x32!.mxaccess_gateway.v1.AddItemReplyH\x00\x12\x37\n\tadd_item2\x18\x16 \x01(\x0b\x32\".mxaccess_gateway.v1.AddItem2ReplyH\x00\x12\x46\n\x11\x61\x64\x64_buffered_item\x18\x17 \x01(\x0b\x32).mxaccess_gateway.v1.AddBufferedItemReplyH\x00\x12\x34\n\x07suspend\x18\x18 \x01(\x0b\x32!.mxaccess_gateway.v1.SuspendReplyH\x00\x12\x36\n\x08\x61\x63tivate\x18\x19 \x01(\x0b\x32\".mxaccess_gateway.v1.ActivateReplyH\x00\x12G\n\x11\x61uthenticate_user\x18\x1a \x01(\x0b\x32*.mxaccess_gateway.v1.AuthenticateUserReplyH\x00\x12K\n\x14\x61rchestra_user_to_id\x18\x1b \x01(\x0b\x32+.mxaccess_gateway.v1.ArchestrAUserToIdReplyH\x00\x12@\n\radd_item_bulk\x18\x1c \x01(\x0b\x32\'.mxaccess_gateway.v1.BulkSubscribeReplyH\x00\x12\x43\n\x10\x61\x64vise_item_bulk\x18\x1d \x01(\x0b\x32\'.mxaccess_gateway.v1.BulkSubscribeReplyH\x00\x12\x43\n\x10remove_item_bulk\x18\x1e \x01(\x0b\x32\'.mxaccess_gateway.v1.BulkSubscribeReplyH\x00\x12\x46\n\x13un_advise_item_bulk\x18\x1f \x01(\x0b\x32\'.mxaccess_gateway.v1.BulkSubscribeReplyH\x00\x12\x41\n\x0esubscribe_bulk\x18 \x01(\x0b\x32\'.mxaccess_gateway.v1.BulkSubscribeReplyH\x00\x12\x43\n\x10unsubscribe_bulk\x18! \x01(\x0b\x32\'.mxaccess_gateway.v1.BulkSubscribeReplyH\x00\x12N\n\x11\x61\x63knowledge_alarm\x18\" \x01(\x0b\x32\x31.mxaccess_gateway.v1.AcknowledgeAlarmReplyPayloadH\x00\x12Q\n\x13query_active_alarms\x18# \x01(\x0b\x32\x32.mxaccess_gateway.v1.QueryActiveAlarmsReplyPayloadH\x00\x12\x39\n\nwrite_bulk\x18$ \x01(\x0b\x32#.mxaccess_gateway.v1.BulkWriteReplyH\x00\x12:\n\x0bwrite2_bulk\x18% \x01(\x0b\x32#.mxaccess_gateway.v1.BulkWriteReplyH\x00\x12\x41\n\x12write_secured_bulk\x18& \x01(\x0b\x32#.mxaccess_gateway.v1.BulkWriteReplyH\x00\x12\x42\n\x13write_secured2_bulk\x18\' \x01(\x0b\x32#.mxaccess_gateway.v1.BulkWriteReplyH\x00\x12\x37\n\tread_bulk\x18( \x01(\x0b\x32\".mxaccess_gateway.v1.BulkReadReplyH\x00\x12?\n\rsession_state\x18\x64 \x01(\x0b\x32&.mxaccess_gateway.v1.SessionStateReplyH\x00\x12;\n\x0bworker_info\x18\x65 \x01(\x0b\x32$.mxaccess_gateway.v1.WorkerInfoReplyH\x00\x12=\n\x0c\x64rain_events\x18\x66 \x01(\x0b\x32%.mxaccess_gateway.v1.DrainEventsReplyH\x00\x42\t\n\x07payloadB\n\n\x08_hresult\"&\n\rRegisterReply\x12\x15\n\rserver_handle\x18\x01 \x01(\x05\"#\n\x0c\x41\x64\x64ItemReply\x12\x13\n\x0bitem_handle\x18\x01 \x01(\x05\"$\n\rAddItem2Reply\x12\x13\n\x0bitem_handle\x18\x01 \x01(\x05\"+\n\x14\x41\x64\x64\x42ufferedItemReply\x12\x13\n\x0bitem_handle\x18\x01 \x01(\x05\"B\n\x0cSuspendReply\x12\x32\n\x06status\x18\x01 \x01(\x0b\x32\".mxaccess_gateway.v1.MxStatusProxy\"C\n\rActivateReply\x12\x32\n\x06status\x18\x01 \x01(\x0b\x32\".mxaccess_gateway.v1.MxStatusProxy\"(\n\x15\x41uthenticateUserReply\x12\x0f\n\x07user_id\x18\x01 \x01(\x05\")\n\x16\x41rchestrAUserToIdReply\x12\x0f\n\x07user_id\x18\x01 \x01(\x05\"\x81\x01\n\x0fSubscribeResult\x12\x15\n\rserver_handle\x18\x01 \x01(\x05\x12\x13\n\x0btag_address\x18\x02 \x01(\t\x12\x13\n\x0bitem_handle\x18\x03 \x01(\x05\x12\x16\n\x0ewas_successful\x18\x04 \x01(\x08\x12\x15\n\rerror_message\x18\x05 \x01(\t\"K\n\x12\x42ulkSubscribeReply\x12\x35\n\x07results\x18\x01 \x03(\x0b\x32$.mxaccess_gateway.v1.SubscribeResult\"\xc4\x01\n\x0f\x42ulkWriteResult\x12\x15\n\rserver_handle\x18\x01 \x01(\x05\x12\x13\n\x0bitem_handle\x18\x02 \x01(\x05\x12\x16\n\x0ewas_successful\x18\x03 \x01(\x08\x12\x14\n\x07hresult\x18\x04 \x01(\x05H\x00\x88\x01\x01\x12\x34\n\x08statuses\x18\x05 \x03(\x0b\x32\".mxaccess_gateway.v1.MxStatusProxy\x12\x15\n\rerror_message\x18\x06 \x01(\tB\n\n\x08_hresult\"G\n\x0e\x42ulkWriteReply\x12\x35\n\x07results\x18\x01 \x03(\x0b\x32$.mxaccess_gateway.v1.BulkWriteResult\"\xbe\x02\n\x0e\x42ulkReadResult\x12\x15\n\rserver_handle\x18\x01 \x01(\x05\x12\x13\n\x0btag_address\x18\x02 \x01(\t\x12\x13\n\x0bitem_handle\x18\x03 \x01(\x05\x12\x16\n\x0ewas_successful\x18\x04 \x01(\x08\x12\x12\n\nwas_cached\x18\x05 \x01(\x08\x12+\n\x05value\x18\x06 \x01(\x0b\x32\x1c.mxaccess_gateway.v1.MxValue\x12\x0f\n\x07quality\x18\x07 \x01(\x05\x12\x34\n\x10source_timestamp\x18\x08 \x01(\x0b\x32\x1a.google.protobuf.Timestamp\x12\x34\n\x08statuses\x18\t \x03(\x0b\x32\".mxaccess_gateway.v1.MxStatusProxy\x12\x15\n\rerror_message\x18\n \x01(\t\"E\n\rBulkReadReply\x12\x34\n\x07results\x18\x01 \x03(\x0b\x32#.mxaccess_gateway.v1.BulkReadResult\"E\n\x11SessionStateReply\x12\x30\n\x05state\x18\x01 \x01(\x0e\x32!.mxaccess_gateway.v1.SessionState\"u\n\x0fWorkerInfoReply\x12\x19\n\x11worker_process_id\x18\x01 \x01(\x05\x12\x16\n\x0eworker_version\x18\x02 \x01(\t\x12\x17\n\x0fmxaccess_progid\x18\x03 \x01(\t\x12\x16\n\x0emxaccess_clsid\x18\x04 \x01(\t\"@\n\x10\x44rainEventsReply\x12,\n\x06\x65vents\x18\x01 \x03(\x0b\x32\x1c.mxaccess_gateway.v1.MxEvent\"5\n\x1c\x41\x63knowledgeAlarmReplyPayload\x12\x15\n\rnative_status\x18\x01 \x01(\x05\"\\\n\x1dQueryActiveAlarmsReplyPayload\x12;\n\tsnapshots\x18\x01 \x03(\x0b\x32(.mxaccess_gateway.v1.ActiveAlarmSnapshot\"\xe7\x06\n\x07MxEvent\x12\x32\n\x06\x66\x61mily\x18\x01 \x01(\x0e\x32\".mxaccess_gateway.v1.MxEventFamily\x12\x12\n\nsession_id\x18\x02 \x01(\t\x12\x15\n\rserver_handle\x18\x03 \x01(\x05\x12\x13\n\x0bitem_handle\x18\x04 \x01(\x05\x12+\n\x05value\x18\x05 \x01(\x0b\x32\x1c.mxaccess_gateway.v1.MxValue\x12\x0f\n\x07quality\x18\x06 \x01(\x05\x12\x34\n\x10source_timestamp\x18\x07 \x01(\x0b\x32\x1a.google.protobuf.Timestamp\x12\x34\n\x08statuses\x18\x08 \x03(\x0b\x32\".mxaccess_gateway.v1.MxStatusProxy\x12\x17\n\x0fworker_sequence\x18\t \x01(\x04\x12\x34\n\x10worker_timestamp\x18\n \x01(\x0b\x32\x1a.google.protobuf.Timestamp\x12=\n\x19gateway_receive_timestamp\x18\x0b \x01(\x0b\x32\x1a.google.protobuf.Timestamp\x12\x14\n\x07hresult\x18\x0c \x01(\x05H\x01\x88\x01\x01\x12\x12\n\nraw_status\x18\r \x01(\t\x12@\n\x0eon_data_change\x18\x14 \x01(\x0b\x32&.mxaccess_gateway.v1.OnDataChangeEventH\x00\x12\x46\n\x11on_write_complete\x18\x15 \x01(\x0b\x32).mxaccess_gateway.v1.OnWriteCompleteEventH\x00\x12I\n\x12operation_complete\x18\x16 \x01(\x0b\x32+.mxaccess_gateway.v1.OperationCompleteEventH\x00\x12Q\n\x17on_buffered_data_change\x18\x17 \x01(\x0b\x32..mxaccess_gateway.v1.OnBufferedDataChangeEventH\x00\x12J\n\x13on_alarm_transition\x18\x18 \x01(\x0b\x32+.mxaccess_gateway.v1.OnAlarmTransitionEventH\x00\x42\x06\n\x04\x62odyB\n\n\x08_hresult\"\x13\n\x11OnDataChangeEvent\"\x16\n\x14OnWriteCompleteEvent\"\x18\n\x16OperationCompleteEvent\"\xd4\x01\n\x19OnBufferedDataChangeEvent\x12\x32\n\tdata_type\x18\x01 \x01(\x0e\x32\x1f.mxaccess_gateway.v1.MxDataType\x12\x34\n\x0equality_values\x18\x02 \x01(\x0b\x32\x1c.mxaccess_gateway.v1.MxArray\x12\x36\n\x10timestamp_values\x18\x03 \x01(\x0b\x32\x1c.mxaccess_gateway.v1.MxArray\x12\x15\n\rraw_data_type\x18\x04 \x01(\x05\"\xfd\x03\n\x16OnAlarmTransitionEvent\x12\x1c\n\x14\x61larm_full_reference\x18\x01 \x01(\t\x12\x1f\n\x17source_object_reference\x18\x02 \x01(\t\x12\x17\n\x0f\x61larm_type_name\x18\x03 \x01(\t\x12\x41\n\x0ftransition_kind\x18\x04 \x01(\x0e\x32(.mxaccess_gateway.v1.AlarmTransitionKind\x12\x10\n\x08severity\x18\x05 \x01(\x05\x12<\n\x18original_raise_timestamp\x18\x06 \x01(\x0b\x32\x1a.google.protobuf.Timestamp\x12\x38\n\x14transition_timestamp\x18\x07 \x01(\x0b\x32\x1a.google.protobuf.Timestamp\x12\x15\n\roperator_user\x18\x08 \x01(\t\x12\x18\n\x10operator_comment\x18\t \x01(\t\x12\x10\n\x08\x63\x61tegory\x18\n \x01(\t\x12\x13\n\x0b\x64\x65scription\x18\x0b \x01(\t\x12\x33\n\rcurrent_value\x18\x0c \x01(\x0b\x32\x1c.mxaccess_gateway.v1.MxValue\x12\x31\n\x0blimit_value\x18\r \x01(\x0b\x32\x1c.mxaccess_gateway.v1.MxValue\"\xfd\x03\n\x13\x41\x63tiveAlarmSnapshot\x12\x1c\n\x14\x61larm_full_reference\x18\x01 \x01(\t\x12\x1f\n\x17source_object_reference\x18\x02 \x01(\t\x12\x17\n\x0f\x61larm_type_name\x18\x03 \x01(\t\x12\x10\n\x08severity\x18\x04 \x01(\x05\x12<\n\x18original_raise_timestamp\x18\x05 \x01(\x0b\x32\x1a.google.protobuf.Timestamp\x12?\n\rcurrent_state\x18\x06 \x01(\x0e\x32(.mxaccess_gateway.v1.AlarmConditionState\x12\x10\n\x08\x63\x61tegory\x18\x07 \x01(\t\x12\x13\n\x0b\x64\x65scription\x18\x08 \x01(\t\x12=\n\x19last_transition_timestamp\x18\t \x01(\x0b\x32\x1a.google.protobuf.Timestamp\x12\x15\n\roperator_user\x18\n \x01(\t\x12\x18\n\x10operator_comment\x18\x0b \x01(\t\x12\x33\n\rcurrent_value\x18\x0c \x01(\x0b\x32\x1c.mxaccess_gateway.v1.MxValue\x12\x31\n\x0blimit_value\x18\r \x01(\x0b\x32\x1c.mxaccess_gateway.v1.MxValue\"\x92\x01\n\x17\x41\x63knowledgeAlarmRequest\x12\x12\n\nsession_id\x18\x01 \x01(\t\x12\x1d\n\x15\x63lient_correlation_id\x18\x02 \x01(\t\x12\x1c\n\x14\x61larm_full_reference\x18\x03 \x01(\t\x12\x0f\n\x07\x63omment\x18\x04 \x01(\t\x12\x15\n\roperator_user\x18\x05 \x01(\t\"\xf3\x01\n\x15\x41\x63knowledgeAlarmReply\x12\x12\n\nsession_id\x18\x01 \x01(\t\x12\x16\n\x0e\x63orrelation_id\x18\x02 \x01(\t\x12<\n\x0fprotocol_status\x18\x03 \x01(\x0b\x32#.mxaccess_gateway.v1.ProtocolStatus\x12\x14\n\x07hresult\x18\x04 \x01(\x05H\x00\x88\x01\x01\x12\x32\n\x06status\x18\x05 \x01(\x0b\x32\".mxaccess_gateway.v1.MxStatusProxy\x12\x1a\n\x12\x64iagnostic_message\x18\x06 \x01(\tB\n\n\x08_hresult\"j\n\x18QueryActiveAlarmsRequest\x12\x12\n\nsession_id\x18\x01 \x01(\t\x12\x1d\n\x15\x63lient_correlation_id\x18\x02 \x01(\t\x12\x1b\n\x13\x61larm_filter_prefix\x18\x03 \x01(\t\"\xeb\x01\n\rMxStatusProxy\x12\x0f\n\x07success\x18\x01 \x01(\x05\x12\x37\n\x08\x63\x61tegory\x18\x02 \x01(\x0e\x32%.mxaccess_gateway.v1.MxStatusCategory\x12\x38\n\x0b\x64\x65tected_by\x18\x03 \x01(\x0e\x32#.mxaccess_gateway.v1.MxStatusSource\x12\x0e\n\x06\x64\x65tail\x18\x04 \x01(\x05\x12\x14\n\x0craw_category\x18\x05 \x01(\x05\x12\x17\n\x0fraw_detected_by\x18\x06 \x01(\x05\x12\x17\n\x0f\x64iagnostic_text\x18\x07 \x01(\t\"\xa7\x03\n\x07MxValue\x12\x32\n\tdata_type\x18\x01 \x01(\x0e\x32\x1f.mxaccess_gateway.v1.MxDataType\x12\x14\n\x0cvariant_type\x18\x02 \x01(\t\x12\x0f\n\x07is_null\x18\x03 \x01(\x08\x12\x16\n\x0eraw_diagnostic\x18\x04 \x01(\t\x12\x15\n\rraw_data_type\x18\x05 \x01(\x05\x12\x14\n\nbool_value\x18\n \x01(\x08H\x00\x12\x15\n\x0bint32_value\x18\x0b \x01(\x05H\x00\x12\x15\n\x0bint64_value\x18\x0c \x01(\x03H\x00\x12\x15\n\x0b\x66loat_value\x18\r \x01(\x02H\x00\x12\x16\n\x0c\x64ouble_value\x18\x0e \x01(\x01H\x00\x12\x16\n\x0cstring_value\x18\x0f \x01(\tH\x00\x12\x35\n\x0ftimestamp_value\x18\x10 \x01(\x0b\x32\x1a.google.protobuf.TimestampH\x00\x12\x33\n\x0b\x61rray_value\x18\x11 \x01(\x0b\x32\x1c.mxaccess_gateway.v1.MxArrayH\x00\x12\x13\n\traw_value\x18\x12 \x01(\x0cH\x00\x42\x06\n\x04kind\"\xfe\x04\n\x07MxArray\x12:\n\x11\x65lement_data_type\x18\x01 \x01(\x0e\x32\x1f.mxaccess_gateway.v1.MxDataType\x12\x14\n\x0cvariant_type\x18\x02 \x01(\t\x12\x12\n\ndimensions\x18\x03 \x03(\r\x12\x16\n\x0eraw_diagnostic\x18\x04 \x01(\t\x12\x1d\n\x15raw_element_data_type\x18\x05 \x01(\x05\x12\x35\n\x0b\x62ool_values\x18\n \x01(\x0b\x32\x1e.mxaccess_gateway.v1.BoolArrayH\x00\x12\x37\n\x0cint32_values\x18\x0b \x01(\x0b\x32\x1f.mxaccess_gateway.v1.Int32ArrayH\x00\x12\x37\n\x0cint64_values\x18\x0c \x01(\x0b\x32\x1f.mxaccess_gateway.v1.Int64ArrayH\x00\x12\x37\n\x0c\x66loat_values\x18\r \x01(\x0b\x32\x1f.mxaccess_gateway.v1.FloatArrayH\x00\x12\x39\n\rdouble_values\x18\x0e \x01(\x0b\x32 .mxaccess_gateway.v1.DoubleArrayH\x00\x12\x39\n\rstring_values\x18\x0f \x01(\x0b\x32 .mxaccess_gateway.v1.StringArrayH\x00\x12?\n\x10timestamp_values\x18\x10 \x01(\x0b\x32#.mxaccess_gateway.v1.TimestampArrayH\x00\x12\x33\n\nraw_values\x18\x11 \x01(\x0b\x32\x1d.mxaccess_gateway.v1.RawArrayH\x00\x42\x08\n\x06values\"\x1b\n\tBoolArray\x12\x0e\n\x06values\x18\x01 \x03(\x08\"\x1c\n\nInt32Array\x12\x0e\n\x06values\x18\x01 \x03(\x05\"\x1c\n\nInt64Array\x12\x0e\n\x06values\x18\x01 \x03(\x03\"\x1c\n\nFloatArray\x12\x0e\n\x06values\x18\x01 \x03(\x02\"\x1d\n\x0b\x44oubleArray\x12\x0e\n\x06values\x18\x01 \x03(\x01\"\x1d\n\x0bStringArray\x12\x0e\n\x06values\x18\x01 \x03(\t\"<\n\x0eTimestampArray\x12*\n\x06values\x18\x01 \x03(\x0b\x32\x1a.google.protobuf.Timestamp\"\x1a\n\x08RawArray\x12\x0e\n\x06values\x18\x01 \x03(\x0c\"X\n\x0eProtocolStatus\x12\x35\n\x04\x63ode\x18\x01 \x01(\x0e\x32\'.mxaccess_gateway.v1.ProtocolStatusCode\x12\x0f\n\x07message\x18\x02 \x01(\t*\x9f\x0b\n\rMxCommandKind\x12\x1f\n\x1bMX_COMMAND_KIND_UNSPECIFIED\x10\x00\x12\x1c\n\x18MX_COMMAND_KIND_REGISTER\x10\x01\x12\x1e\n\x1aMX_COMMAND_KIND_UNREGISTER\x10\x02\x12\x1c\n\x18MX_COMMAND_KIND_ADD_ITEM\x10\x03\x12\x1d\n\x19MX_COMMAND_KIND_ADD_ITEM2\x10\x04\x12\x1f\n\x1bMX_COMMAND_KIND_REMOVE_ITEM\x10\x05\x12\x1a\n\x16MX_COMMAND_KIND_ADVISE\x10\x06\x12\x1d\n\x19MX_COMMAND_KIND_UN_ADVISE\x10\x07\x12&\n\"MX_COMMAND_KIND_ADVISE_SUPERVISORY\x10\x08\x12%\n!MX_COMMAND_KIND_ADD_BUFFERED_ITEM\x10\t\x12\x30\n,MX_COMMAND_KIND_SET_BUFFERED_UPDATE_INTERVAL\x10\n\x12\x1b\n\x17MX_COMMAND_KIND_SUSPEND\x10\x0b\x12\x1c\n\x18MX_COMMAND_KIND_ACTIVATE\x10\x0c\x12\x19\n\x15MX_COMMAND_KIND_WRITE\x10\r\x12\x1a\n\x16MX_COMMAND_KIND_WRITE2\x10\x0e\x12!\n\x1dMX_COMMAND_KIND_WRITE_SECURED\x10\x0f\x12\"\n\x1eMX_COMMAND_KIND_WRITE_SECURED2\x10\x10\x12%\n!MX_COMMAND_KIND_AUTHENTICATE_USER\x10\x11\x12(\n$MX_COMMAND_KIND_ARCHESTRA_USER_TO_ID\x10\x12\x12!\n\x1dMX_COMMAND_KIND_ADD_ITEM_BULK\x10\x13\x12$\n MX_COMMAND_KIND_ADVISE_ITEM_BULK\x10\x14\x12$\n MX_COMMAND_KIND_REMOVE_ITEM_BULK\x10\x15\x12\'\n#MX_COMMAND_KIND_UN_ADVISE_ITEM_BULK\x10\x16\x12\"\n\x1eMX_COMMAND_KIND_SUBSCRIBE_BULK\x10\x17\x12$\n MX_COMMAND_KIND_UNSUBSCRIBE_BULK\x10\x18\x12$\n MX_COMMAND_KIND_SUBSCRIBE_ALARMS\x10\x19\x12&\n\"MX_COMMAND_KIND_UNSUBSCRIBE_ALARMS\x10\x1a\x12%\n!MX_COMMAND_KIND_ACKNOWLEDGE_ALARM\x10\x1b\x12\'\n#MX_COMMAND_KIND_QUERY_ACTIVE_ALARMS\x10\x1c\x12-\n)MX_COMMAND_KIND_ACKNOWLEDGE_ALARM_BY_NAME\x10\x1d\x12\x1e\n\x1aMX_COMMAND_KIND_WRITE_BULK\x10\x1e\x12\x1f\n\x1bMX_COMMAND_KIND_WRITE2_BULK\x10\x1f\x12&\n\"MX_COMMAND_KIND_WRITE_SECURED_BULK\x10 \x12\'\n#MX_COMMAND_KIND_WRITE_SECURED2_BULK\x10!\x12\x1d\n\x19MX_COMMAND_KIND_READ_BULK\x10\"\x12\x18\n\x14MX_COMMAND_KIND_PING\x10\x64\x12%\n!MX_COMMAND_KIND_GET_SESSION_STATE\x10\x65\x12#\n\x1fMX_COMMAND_KIND_GET_WORKER_INFO\x10\x66\x12 \n\x1cMX_COMMAND_KIND_DRAIN_EVENTS\x10g\x12#\n\x1fMX_COMMAND_KIND_SHUTDOWN_WORKER\x10h*\xf9\x01\n\rMxEventFamily\x12\x1f\n\x1bMX_EVENT_FAMILY_UNSPECIFIED\x10\x00\x12\"\n\x1eMX_EVENT_FAMILY_ON_DATA_CHANGE\x10\x01\x12%\n!MX_EVENT_FAMILY_ON_WRITE_COMPLETE\x10\x02\x12&\n\"MX_EVENT_FAMILY_OPERATION_COMPLETE\x10\x03\x12+\n\'MX_EVENT_FAMILY_ON_BUFFERED_DATA_CHANGE\x10\x04\x12\'\n#MX_EVENT_FAMILY_ON_ALARM_TRANSITION\x10\x05*\xca\x01\n\x13\x41larmTransitionKind\x12%\n!ALARM_TRANSITION_KIND_UNSPECIFIED\x10\x00\x12\x1f\n\x1b\x41LARM_TRANSITION_KIND_RAISE\x10\x01\x12%\n!ALARM_TRANSITION_KIND_ACKNOWLEDGE\x10\x02\x12\x1f\n\x1b\x41LARM_TRANSITION_KIND_CLEAR\x10\x03\x12#\n\x1f\x41LARM_TRANSITION_KIND_RETRIGGER\x10\x04*\xaa\x01\n\x13\x41larmConditionState\x12%\n!ALARM_CONDITION_STATE_UNSPECIFIED\x10\x00\x12 \n\x1c\x41LARM_CONDITION_STATE_ACTIVE\x10\x01\x12&\n\"ALARM_CONDITION_STATE_ACTIVE_ACKED\x10\x02\x12\"\n\x1e\x41LARM_CONDITION_STATE_INACTIVE\x10\x03*\xa5\x03\n\x10MxStatusCategory\x12\"\n\x1eMX_STATUS_CATEGORY_UNSPECIFIED\x10\x00\x12\x1e\n\x1aMX_STATUS_CATEGORY_UNKNOWN\x10\x01\x12\x19\n\x15MX_STATUS_CATEGORY_OK\x10\x02\x12\x1e\n\x1aMX_STATUS_CATEGORY_PENDING\x10\x03\x12\x1e\n\x1aMX_STATUS_CATEGORY_WARNING\x10\x04\x12*\n&MX_STATUS_CATEGORY_COMMUNICATION_ERROR\x10\x05\x12*\n&MX_STATUS_CATEGORY_CONFIGURATION_ERROR\x10\x06\x12(\n$MX_STATUS_CATEGORY_OPERATIONAL_ERROR\x10\x07\x12%\n!MX_STATUS_CATEGORY_SECURITY_ERROR\x10\x08\x12%\n!MX_STATUS_CATEGORY_SOFTWARE_ERROR\x10\t\x12\"\n\x1eMX_STATUS_CATEGORY_OTHER_ERROR\x10\n*\xca\x02\n\x0eMxStatusSource\x12 \n\x1cMX_STATUS_SOURCE_UNSPECIFIED\x10\x00\x12\x1c\n\x18MX_STATUS_SOURCE_UNKNOWN\x10\x01\x12#\n\x1fMX_STATUS_SOURCE_REQUESTING_LMX\x10\x02\x12#\n\x1fMX_STATUS_SOURCE_RESPONDING_LMX\x10\x03\x12#\n\x1fMX_STATUS_SOURCE_REQUESTING_NMX\x10\x04\x12#\n\x1fMX_STATUS_SOURCE_RESPONDING_NMX\x10\x05\x12\x31\n-MX_STATUS_SOURCE_REQUESTING_AUTOMATION_OBJECT\x10\x06\x12\x31\n-MX_STATUS_SOURCE_RESPONDING_AUTOMATION_OBJECT\x10\x07*\xdd\x04\n\nMxDataType\x12\x1c\n\x18MX_DATA_TYPE_UNSPECIFIED\x10\x00\x12\x18\n\x14MX_DATA_TYPE_UNKNOWN\x10\x01\x12\x18\n\x14MX_DATA_TYPE_NO_DATA\x10\x02\x12\x18\n\x14MX_DATA_TYPE_BOOLEAN\x10\x03\x12\x18\n\x14MX_DATA_TYPE_INTEGER\x10\x04\x12\x16\n\x12MX_DATA_TYPE_FLOAT\x10\x05\x12\x17\n\x13MX_DATA_TYPE_DOUBLE\x10\x06\x12\x17\n\x13MX_DATA_TYPE_STRING\x10\x07\x12\x15\n\x11MX_DATA_TYPE_TIME\x10\x08\x12\x1d\n\x19MX_DATA_TYPE_ELAPSED_TIME\x10\t\x12\x1f\n\x1bMX_DATA_TYPE_REFERENCE_TYPE\x10\n\x12\x1c\n\x18MX_DATA_TYPE_STATUS_TYPE\x10\x0b\x12\x15\n\x11MX_DATA_TYPE_ENUM\x10\x0c\x12-\n)MX_DATA_TYPE_SECURITY_CLASSIFICATION_ENUM\x10\r\x12\"\n\x1eMX_DATA_TYPE_DATA_QUALITY_TYPE\x10\x0e\x12\x1f\n\x1bMX_DATA_TYPE_QUALIFIED_ENUM\x10\x0f\x12!\n\x1dMX_DATA_TYPE_QUALIFIED_STRUCT\x10\x10\x12)\n%MX_DATA_TYPE_INTERNATIONALIZED_STRING\x10\x11\x12\x1b\n\x17MX_DATA_TYPE_BIG_STRING\x10\x12\x12\x14\n\x10MX_DATA_TYPE_END\x10\x13*\xa3\x03\n\x12ProtocolStatusCode\x12$\n PROTOCOL_STATUS_CODE_UNSPECIFIED\x10\x00\x12\x1b\n\x17PROTOCOL_STATUS_CODE_OK\x10\x01\x12(\n$PROTOCOL_STATUS_CODE_INVALID_REQUEST\x10\x02\x12*\n&PROTOCOL_STATUS_CODE_SESSION_NOT_FOUND\x10\x03\x12*\n&PROTOCOL_STATUS_CODE_SESSION_NOT_READY\x10\x04\x12+\n\'PROTOCOL_STATUS_CODE_WORKER_UNAVAILABLE\x10\x05\x12 \n\x1cPROTOCOL_STATUS_CODE_TIMEOUT\x10\x06\x12!\n\x1dPROTOCOL_STATUS_CODE_CANCELED\x10\x07\x12+\n\'PROTOCOL_STATUS_CODE_PROTOCOL_VIOLATION\x10\x08\x12)\n%PROTOCOL_STATUS_CODE_MXACCESS_FAILURE\x10\t*\xbf\x02\n\x0cSessionState\x12\x1d\n\x19SESSION_STATE_UNSPECIFIED\x10\x00\x12\x1a\n\x16SESSION_STATE_CREATING\x10\x01\x12!\n\x1dSESSION_STATE_STARTING_WORKER\x10\x02\x12\"\n\x1eSESSION_STATE_WAITING_FOR_PIPE\x10\x03\x12\x1d\n\x19SESSION_STATE_HANDSHAKING\x10\x04\x12%\n!SESSION_STATE_INITIALIZING_WORKER\x10\x05\x12\x17\n\x13SESSION_STATE_READY\x10\x06\x12\x19\n\x15SESSION_STATE_CLOSING\x10\x07\x12\x18\n\x14SESSION_STATE_CLOSED\x10\x08\x12\x19\n\x15SESSION_STATE_FAULTED\x10\t2\xe0\x04\n\x0fMxAccessGateway\x12]\n\x0bOpenSession\x12\'.mxaccess_gateway.v1.OpenSessionRequest\x1a%.mxaccess_gateway.v1.OpenSessionReply\x12`\n\x0c\x43loseSession\x12(.mxaccess_gateway.v1.CloseSessionRequest\x1a&.mxaccess_gateway.v1.CloseSessionReply\x12T\n\x06Invoke\x12%.mxaccess_gateway.v1.MxCommandRequest\x1a#.mxaccess_gateway.v1.MxCommandReply\x12X\n\x0cStreamEvents\x12(.mxaccess_gateway.v1.StreamEventsRequest\x1a\x1c.mxaccess_gateway.v1.MxEvent0\x01\x12l\n\x10\x41\x63knowledgeAlarm\x12,.mxaccess_gateway.v1.AcknowledgeAlarmRequest\x1a*.mxaccess_gateway.v1.AcknowledgeAlarmReply\x12n\n\x11QueryActiveAlarms\x12-.mxaccess_gateway.v1.QueryActiveAlarmsRequest\x1a(.mxaccess_gateway.v1.ActiveAlarmSnapshot0\x01\x42\x1c\xaa\x02\x19MxGateway.Contracts.Protob\x06proto3') _globals = globals() _builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals) @@ -34,24 +34,24 @@ _builder.BuildTopDescriptorsAndMessages(DESCRIPTOR, 'mxaccess_gateway_pb2', _glo if not _descriptor._USE_C_DESCRIPTORS: _globals['DESCRIPTOR']._loaded_options = None _globals['DESCRIPTOR']._serialized_options = b'\252\002\031MxGateway.Contracts.Proto' - _globals['_MXCOMMANDKIND']._serialized_start=11957 - _globals['_MXCOMMANDKIND']._serialized_end=13014 - _globals['_MXEVENTFAMILY']._serialized_start=13017 - _globals['_MXEVENTFAMILY']._serialized_end=13266 - _globals['_ALARMTRANSITIONKIND']._serialized_start=13269 - _globals['_ALARMTRANSITIONKIND']._serialized_end=13471 - _globals['_ALARMCONDITIONSTATE']._serialized_start=13474 - _globals['_ALARMCONDITIONSTATE']._serialized_end=13644 - _globals['_MXSTATUSCATEGORY']._serialized_start=13647 - _globals['_MXSTATUSCATEGORY']._serialized_end=14068 - _globals['_MXSTATUSSOURCE']._serialized_start=14071 - _globals['_MXSTATUSSOURCE']._serialized_end=14401 - _globals['_MXDATATYPE']._serialized_start=14404 - _globals['_MXDATATYPE']._serialized_end=15009 - _globals['_PROTOCOLSTATUSCODE']._serialized_start=15012 - _globals['_PROTOCOLSTATUSCODE']._serialized_end=15431 - _globals['_SESSIONSTATE']._serialized_start=15434 - _globals['_SESSIONSTATE']._serialized_end=15753 + _globals['_MXCOMMANDKIND']._serialized_start=15624 + _globals['_MXCOMMANDKIND']._serialized_end=17063 + _globals['_MXEVENTFAMILY']._serialized_start=17066 + _globals['_MXEVENTFAMILY']._serialized_end=17315 + _globals['_ALARMTRANSITIONKIND']._serialized_start=17318 + _globals['_ALARMTRANSITIONKIND']._serialized_end=17520 + _globals['_ALARMCONDITIONSTATE']._serialized_start=17523 + _globals['_ALARMCONDITIONSTATE']._serialized_end=17693 + _globals['_MXSTATUSCATEGORY']._serialized_start=17696 + _globals['_MXSTATUSCATEGORY']._serialized_end=18117 + _globals['_MXSTATUSSOURCE']._serialized_start=18120 + _globals['_MXSTATUSSOURCE']._serialized_end=18450 + _globals['_MXDATATYPE']._serialized_start=18453 + _globals['_MXDATATYPE']._serialized_end=19058 + _globals['_PROTOCOLSTATUSCODE']._serialized_start=19061 + _globals['_PROTOCOLSTATUSCODE']._serialized_end=19480 + _globals['_SESSIONSTATE']._serialized_start=19483 + _globals['_SESSIONSTATE']._serialized_end=19802 _globals['_OPENSESSIONREQUEST']._serialized_start=113 _globals['_OPENSESSIONREQUEST']._serialized_end=272 _globals['_OPENSESSIONREPLY']._serialized_start=275 @@ -65,137 +65,177 @@ if not _descriptor._USE_C_DESCRIPTORS: _globals['_MXCOMMANDREQUEST']._serialized_start=883 _globals['_MXCOMMANDREQUEST']._serialized_end=1001 _globals['_MXCOMMAND']._serialized_start=1004 - _globals['_MXCOMMAND']._serialized_end=3003 - _globals['_REGISTERCOMMAND']._serialized_start=3005 - _globals['_REGISTERCOMMAND']._serialized_end=3043 - _globals['_UNREGISTERCOMMAND']._serialized_start=3045 - _globals['_UNREGISTERCOMMAND']._serialized_end=3087 - _globals['_ADDITEMCOMMAND']._serialized_start=3089 - _globals['_ADDITEMCOMMAND']._serialized_end=3153 - _globals['_ADDITEM2COMMAND']._serialized_start=3155 - _globals['_ADDITEM2COMMAND']._serialized_end=3242 - _globals['_REMOVEITEMCOMMAND']._serialized_start=3244 - _globals['_REMOVEITEMCOMMAND']._serialized_end=3307 - _globals['_ADVISECOMMAND']._serialized_start=3309 - _globals['_ADVISECOMMAND']._serialized_end=3368 - _globals['_UNADVISECOMMAND']._serialized_start=3370 - _globals['_UNADVISECOMMAND']._serialized_end=3431 - _globals['_ADVISESUPERVISORYCOMMAND']._serialized_start=3433 - _globals['_ADVISESUPERVISORYCOMMAND']._serialized_end=3503 - _globals['_ADDBUFFEREDITEMCOMMAND']._serialized_start=3505 - _globals['_ADDBUFFEREDITEMCOMMAND']._serialized_end=3599 - _globals['_SETBUFFEREDUPDATEINTERVALCOMMAND']._serialized_start=3601 - _globals['_SETBUFFEREDUPDATEINTERVALCOMMAND']._serialized_end=3696 - _globals['_SUSPENDCOMMAND']._serialized_start=3698 - _globals['_SUSPENDCOMMAND']._serialized_end=3758 - _globals['_ACTIVATECOMMAND']._serialized_start=3760 - _globals['_ACTIVATECOMMAND']._serialized_end=3821 - _globals['_WRITECOMMAND']._serialized_start=3823 - _globals['_WRITECOMMAND']._serialized_end=3943 - _globals['_WRITE2COMMAND']._serialized_start=3946 - _globals['_WRITE2COMMAND']._serialized_end=4122 - _globals['_WRITESECUREDCOMMAND']._serialized_start=4125 - _globals['_WRITESECUREDCOMMAND']._serialized_end=4286 - _globals['_WRITESECURED2COMMAND']._serialized_start=4289 - _globals['_WRITESECURED2COMMAND']._serialized_end=4506 - _globals['_AUTHENTICATEUSERCOMMAND']._serialized_start=4508 - _globals['_AUTHENTICATEUSERCOMMAND']._serialized_end=4607 - _globals['_ARCHESTRAUSERTOIDCOMMAND']._serialized_start=4609 - _globals['_ARCHESTRAUSERTOIDCOMMAND']._serialized_end=4680 - _globals['_ADDITEMBULKCOMMAND']._serialized_start=4682 - _globals['_ADDITEMBULKCOMMAND']._serialized_end=4748 - _globals['_ADVISEITEMBULKCOMMAND']._serialized_start=4750 - _globals['_ADVISEITEMBULKCOMMAND']._serialized_end=4818 - _globals['_REMOVEITEMBULKCOMMAND']._serialized_start=4820 - _globals['_REMOVEITEMBULKCOMMAND']._serialized_end=4888 - _globals['_UNADVISEITEMBULKCOMMAND']._serialized_start=4890 - _globals['_UNADVISEITEMBULKCOMMAND']._serialized_end=4960 - _globals['_SUBSCRIBEBULKCOMMAND']._serialized_start=4962 - _globals['_SUBSCRIBEBULKCOMMAND']._serialized_end=5030 - _globals['_UNSUBSCRIBEBULKCOMMAND']._serialized_start=5032 - _globals['_UNSUBSCRIBEBULKCOMMAND']._serialized_end=5101 - _globals['_PINGCOMMAND']._serialized_start=5103 - _globals['_PINGCOMMAND']._serialized_end=5133 - _globals['_GETSESSIONSTATECOMMAND']._serialized_start=5135 - _globals['_GETSESSIONSTATECOMMAND']._serialized_end=5159 - _globals['_GETWORKERINFOCOMMAND']._serialized_start=5161 - _globals['_GETWORKERINFOCOMMAND']._serialized_end=5183 - _globals['_DRAINEVENTSCOMMAND']._serialized_start=5185 - _globals['_DRAINEVENTSCOMMAND']._serialized_end=5225 - _globals['_SHUTDOWNWORKERCOMMAND']._serialized_start=5227 - _globals['_SHUTDOWNWORKERCOMMAND']._serialized_end=5299 - _globals['_MXCOMMANDREPLY']._serialized_start=5302 - _globals['_MXCOMMANDREPLY']._serialized_end=6754 - _globals['_REGISTERREPLY']._serialized_start=6756 - _globals['_REGISTERREPLY']._serialized_end=6794 - _globals['_ADDITEMREPLY']._serialized_start=6796 - _globals['_ADDITEMREPLY']._serialized_end=6831 - _globals['_ADDITEM2REPLY']._serialized_start=6833 - _globals['_ADDITEM2REPLY']._serialized_end=6869 - _globals['_ADDBUFFEREDITEMREPLY']._serialized_start=6871 - _globals['_ADDBUFFEREDITEMREPLY']._serialized_end=6914 - _globals['_SUSPENDREPLY']._serialized_start=6916 - _globals['_SUSPENDREPLY']._serialized_end=6982 - _globals['_ACTIVATEREPLY']._serialized_start=6984 - _globals['_ACTIVATEREPLY']._serialized_end=7051 - _globals['_AUTHENTICATEUSERREPLY']._serialized_start=7053 - _globals['_AUTHENTICATEUSERREPLY']._serialized_end=7093 - _globals['_ARCHESTRAUSERTOIDREPLY']._serialized_start=7095 - _globals['_ARCHESTRAUSERTOIDREPLY']._serialized_end=7136 - _globals['_SUBSCRIBERESULT']._serialized_start=7139 - _globals['_SUBSCRIBERESULT']._serialized_end=7268 - _globals['_BULKSUBSCRIBEREPLY']._serialized_start=7270 - _globals['_BULKSUBSCRIBEREPLY']._serialized_end=7345 - _globals['_SESSIONSTATEREPLY']._serialized_start=7347 - _globals['_SESSIONSTATEREPLY']._serialized_end=7416 - _globals['_WORKERINFOREPLY']._serialized_start=7418 - _globals['_WORKERINFOREPLY']._serialized_end=7535 - _globals['_DRAINEVENTSREPLY']._serialized_start=7537 - _globals['_DRAINEVENTSREPLY']._serialized_end=7601 - _globals['_MXEVENT']._serialized_start=7604 - _globals['_MXEVENT']._serialized_end=8475 - _globals['_ONDATACHANGEEVENT']._serialized_start=8477 - _globals['_ONDATACHANGEEVENT']._serialized_end=8496 - _globals['_ONWRITECOMPLETEEVENT']._serialized_start=8498 - _globals['_ONWRITECOMPLETEEVENT']._serialized_end=8520 - _globals['_OPERATIONCOMPLETEEVENT']._serialized_start=8522 - _globals['_OPERATIONCOMPLETEEVENT']._serialized_end=8546 - _globals['_ONBUFFEREDDATACHANGEEVENT']._serialized_start=8549 - _globals['_ONBUFFEREDDATACHANGEEVENT']._serialized_end=8761 - _globals['_ONALARMTRANSITIONEVENT']._serialized_start=8764 - _globals['_ONALARMTRANSITIONEVENT']._serialized_end=9273 - _globals['_ACTIVEALARMSNAPSHOT']._serialized_start=9276 - _globals['_ACTIVEALARMSNAPSHOT']._serialized_end=9785 - _globals['_ACKNOWLEDGEALARMREQUEST']._serialized_start=9788 - _globals['_ACKNOWLEDGEALARMREQUEST']._serialized_end=9934 - _globals['_ACKNOWLEDGEALARMREPLY']._serialized_start=9937 - _globals['_ACKNOWLEDGEALARMREPLY']._serialized_end=10180 - _globals['_QUERYACTIVEALARMSREQUEST']._serialized_start=10182 - _globals['_QUERYACTIVEALARMSREQUEST']._serialized_end=10288 - _globals['_MXSTATUSPROXY']._serialized_start=10291 - _globals['_MXSTATUSPROXY']._serialized_end=10526 - _globals['_MXVALUE']._serialized_start=10529 - _globals['_MXVALUE']._serialized_end=10952 - _globals['_MXARRAY']._serialized_start=10955 - _globals['_MXARRAY']._serialized_end=11593 - _globals['_BOOLARRAY']._serialized_start=11595 - _globals['_BOOLARRAY']._serialized_end=11622 - _globals['_INT32ARRAY']._serialized_start=11624 - _globals['_INT32ARRAY']._serialized_end=11652 - _globals['_INT64ARRAY']._serialized_start=11654 - _globals['_INT64ARRAY']._serialized_end=11682 - _globals['_FLOATARRAY']._serialized_start=11684 - _globals['_FLOATARRAY']._serialized_end=11712 - _globals['_DOUBLEARRAY']._serialized_start=11714 - _globals['_DOUBLEARRAY']._serialized_end=11743 - _globals['_STRINGARRAY']._serialized_start=11745 - _globals['_STRINGARRAY']._serialized_end=11774 - _globals['_TIMESTAMPARRAY']._serialized_start=11776 - _globals['_TIMESTAMPARRAY']._serialized_end=11836 - _globals['_RAWARRAY']._serialized_start=11838 - _globals['_RAWARRAY']._serialized_end=11864 - _globals['_PROTOCOLSTATUS']._serialized_start=11866 - _globals['_PROTOCOLSTATUS']._serialized_end=11954 - _globals['_MXACCESSGATEWAY']._serialized_start=15756 - _globals['_MXACCESSGATEWAY']._serialized_end=16364 + _globals['_MXCOMMAND']._serialized_end=3756 + _globals['_REGISTERCOMMAND']._serialized_start=3758 + _globals['_REGISTERCOMMAND']._serialized_end=3796 + _globals['_UNREGISTERCOMMAND']._serialized_start=3798 + _globals['_UNREGISTERCOMMAND']._serialized_end=3840 + _globals['_ADDITEMCOMMAND']._serialized_start=3842 + _globals['_ADDITEMCOMMAND']._serialized_end=3906 + _globals['_ADDITEM2COMMAND']._serialized_start=3908 + _globals['_ADDITEM2COMMAND']._serialized_end=3995 + _globals['_REMOVEITEMCOMMAND']._serialized_start=3997 + _globals['_REMOVEITEMCOMMAND']._serialized_end=4060 + _globals['_ADVISECOMMAND']._serialized_start=4062 + _globals['_ADVISECOMMAND']._serialized_end=4121 + _globals['_UNADVISECOMMAND']._serialized_start=4123 + _globals['_UNADVISECOMMAND']._serialized_end=4184 + _globals['_ADVISESUPERVISORYCOMMAND']._serialized_start=4186 + _globals['_ADVISESUPERVISORYCOMMAND']._serialized_end=4256 + _globals['_ADDBUFFEREDITEMCOMMAND']._serialized_start=4258 + _globals['_ADDBUFFEREDITEMCOMMAND']._serialized_end=4352 + _globals['_SETBUFFEREDUPDATEINTERVALCOMMAND']._serialized_start=4354 + _globals['_SETBUFFEREDUPDATEINTERVALCOMMAND']._serialized_end=4449 + _globals['_SUSPENDCOMMAND']._serialized_start=4451 + _globals['_SUSPENDCOMMAND']._serialized_end=4511 + _globals['_ACTIVATECOMMAND']._serialized_start=4513 + _globals['_ACTIVATECOMMAND']._serialized_end=4574 + _globals['_WRITECOMMAND']._serialized_start=4576 + _globals['_WRITECOMMAND']._serialized_end=4696 + _globals['_WRITE2COMMAND']._serialized_start=4699 + _globals['_WRITE2COMMAND']._serialized_end=4875 + _globals['_WRITESECUREDCOMMAND']._serialized_start=4878 + _globals['_WRITESECUREDCOMMAND']._serialized_end=5039 + _globals['_WRITESECURED2COMMAND']._serialized_start=5042 + _globals['_WRITESECURED2COMMAND']._serialized_end=5259 + _globals['_AUTHENTICATEUSERCOMMAND']._serialized_start=5261 + _globals['_AUTHENTICATEUSERCOMMAND']._serialized_end=5360 + _globals['_ARCHESTRAUSERTOIDCOMMAND']._serialized_start=5362 + _globals['_ARCHESTRAUSERTOIDCOMMAND']._serialized_end=5433 + _globals['_ADDITEMBULKCOMMAND']._serialized_start=5435 + _globals['_ADDITEMBULKCOMMAND']._serialized_end=5501 + _globals['_ADVISEITEMBULKCOMMAND']._serialized_start=5503 + _globals['_ADVISEITEMBULKCOMMAND']._serialized_end=5571 + _globals['_REMOVEITEMBULKCOMMAND']._serialized_start=5573 + _globals['_REMOVEITEMBULKCOMMAND']._serialized_end=5641 + _globals['_UNADVISEITEMBULKCOMMAND']._serialized_start=5643 + _globals['_UNADVISEITEMBULKCOMMAND']._serialized_end=5713 + _globals['_SUBSCRIBEBULKCOMMAND']._serialized_start=5715 + _globals['_SUBSCRIBEBULKCOMMAND']._serialized_end=5783 + _globals['_SUBSCRIBEALARMSCOMMAND']._serialized_start=5785 + _globals['_SUBSCRIBEALARMSCOMMAND']._serialized_end=5842 + _globals['_UNSUBSCRIBEALARMSCOMMAND']._serialized_start=5844 + _globals['_UNSUBSCRIBEALARMSCOMMAND']._serialized_end=5870 + _globals['_ACKNOWLEDGEALARMCOMMAND']._serialized_start=5873 + _globals['_ACKNOWLEDGEALARMCOMMAND']._serialized_end=6034 + _globals['_QUERYACTIVEALARMSCOMMAND']._serialized_start=6036 + _globals['_QUERYACTIVEALARMSCOMMAND']._serialized_end=6091 + _globals['_ACKNOWLEDGEALARMBYNAMECOMMAND']._serialized_start=6094 + _globals['_ACKNOWLEDGEALARMBYNAMECOMMAND']._serialized_end=6304 + _globals['_UNSUBSCRIBEBULKCOMMAND']._serialized_start=6306 + _globals['_UNSUBSCRIBEBULKCOMMAND']._serialized_end=6375 + _globals['_WRITEBULKCOMMAND']._serialized_start=6377 + _globals['_WRITEBULKCOMMAND']._serialized_end=6472 + _globals['_WRITEBULKENTRY']._serialized_start=6474 + _globals['_WRITEBULKENTRY']._serialized_end=6573 + _globals['_WRITE2BULKCOMMAND']._serialized_start=6575 + _globals['_WRITE2BULKCOMMAND']._serialized_end=6672 + _globals['_WRITE2BULKENTRY']._serialized_start=6675 + _globals['_WRITE2BULKENTRY']._serialized_end=6830 + _globals['_WRITESECUREDBULKCOMMAND']._serialized_start=6832 + _globals['_WRITESECUREDBULKCOMMAND']._serialized_end=6941 + _globals['_WRITESECUREDBULKENTRY']._serialized_start=6944 + _globals['_WRITESECUREDBULKENTRY']._serialized_end=7084 + _globals['_WRITESECURED2BULKCOMMAND']._serialized_start=7086 + _globals['_WRITESECURED2BULKCOMMAND']._serialized_end=7197 + _globals['_WRITESECURED2BULKENTRY']._serialized_start=7200 + _globals['_WRITESECURED2BULKENTRY']._serialized_end=7396 + _globals['_READBULKCOMMAND']._serialized_start=7398 + _globals['_READBULKCOMMAND']._serialized_end=7481 + _globals['_PINGCOMMAND']._serialized_start=7483 + _globals['_PINGCOMMAND']._serialized_end=7513 + _globals['_GETSESSIONSTATECOMMAND']._serialized_start=7515 + _globals['_GETSESSIONSTATECOMMAND']._serialized_end=7539 + _globals['_GETWORKERINFOCOMMAND']._serialized_start=7541 + _globals['_GETWORKERINFOCOMMAND']._serialized_end=7563 + _globals['_DRAINEVENTSCOMMAND']._serialized_start=7565 + _globals['_DRAINEVENTSCOMMAND']._serialized_end=7605 + _globals['_SHUTDOWNWORKERCOMMAND']._serialized_start=7607 + _globals['_SHUTDOWNWORKERCOMMAND']._serialized_end=7679 + _globals['_MXCOMMANDREPLY']._serialized_start=7682 + _globals['_MXCOMMANDREPLY']._serialized_end=9608 + _globals['_REGISTERREPLY']._serialized_start=9610 + _globals['_REGISTERREPLY']._serialized_end=9648 + _globals['_ADDITEMREPLY']._serialized_start=9650 + _globals['_ADDITEMREPLY']._serialized_end=9685 + _globals['_ADDITEM2REPLY']._serialized_start=9687 + _globals['_ADDITEM2REPLY']._serialized_end=9723 + _globals['_ADDBUFFEREDITEMREPLY']._serialized_start=9725 + _globals['_ADDBUFFEREDITEMREPLY']._serialized_end=9768 + _globals['_SUSPENDREPLY']._serialized_start=9770 + _globals['_SUSPENDREPLY']._serialized_end=9836 + _globals['_ACTIVATEREPLY']._serialized_start=9838 + _globals['_ACTIVATEREPLY']._serialized_end=9905 + _globals['_AUTHENTICATEUSERREPLY']._serialized_start=9907 + _globals['_AUTHENTICATEUSERREPLY']._serialized_end=9947 + _globals['_ARCHESTRAUSERTOIDREPLY']._serialized_start=9949 + _globals['_ARCHESTRAUSERTOIDREPLY']._serialized_end=9990 + _globals['_SUBSCRIBERESULT']._serialized_start=9993 + _globals['_SUBSCRIBERESULT']._serialized_end=10122 + _globals['_BULKSUBSCRIBEREPLY']._serialized_start=10124 + _globals['_BULKSUBSCRIBEREPLY']._serialized_end=10199 + _globals['_BULKWRITERESULT']._serialized_start=10202 + _globals['_BULKWRITERESULT']._serialized_end=10398 + _globals['_BULKWRITEREPLY']._serialized_start=10400 + _globals['_BULKWRITEREPLY']._serialized_end=10471 + _globals['_BULKREADRESULT']._serialized_start=10474 + _globals['_BULKREADRESULT']._serialized_end=10792 + _globals['_BULKREADREPLY']._serialized_start=10794 + _globals['_BULKREADREPLY']._serialized_end=10863 + _globals['_SESSIONSTATEREPLY']._serialized_start=10865 + _globals['_SESSIONSTATEREPLY']._serialized_end=10934 + _globals['_WORKERINFOREPLY']._serialized_start=10936 + _globals['_WORKERINFOREPLY']._serialized_end=11053 + _globals['_DRAINEVENTSREPLY']._serialized_start=11055 + _globals['_DRAINEVENTSREPLY']._serialized_end=11119 + _globals['_ACKNOWLEDGEALARMREPLYPAYLOAD']._serialized_start=11121 + _globals['_ACKNOWLEDGEALARMREPLYPAYLOAD']._serialized_end=11174 + _globals['_QUERYACTIVEALARMSREPLYPAYLOAD']._serialized_start=11176 + _globals['_QUERYACTIVEALARMSREPLYPAYLOAD']._serialized_end=11268 + _globals['_MXEVENT']._serialized_start=11271 + _globals['_MXEVENT']._serialized_end=12142 + _globals['_ONDATACHANGEEVENT']._serialized_start=12144 + _globals['_ONDATACHANGEEVENT']._serialized_end=12163 + _globals['_ONWRITECOMPLETEEVENT']._serialized_start=12165 + _globals['_ONWRITECOMPLETEEVENT']._serialized_end=12187 + _globals['_OPERATIONCOMPLETEEVENT']._serialized_start=12189 + _globals['_OPERATIONCOMPLETEEVENT']._serialized_end=12213 + _globals['_ONBUFFEREDDATACHANGEEVENT']._serialized_start=12216 + _globals['_ONBUFFEREDDATACHANGEEVENT']._serialized_end=12428 + _globals['_ONALARMTRANSITIONEVENT']._serialized_start=12431 + _globals['_ONALARMTRANSITIONEVENT']._serialized_end=12940 + _globals['_ACTIVEALARMSNAPSHOT']._serialized_start=12943 + _globals['_ACTIVEALARMSNAPSHOT']._serialized_end=13452 + _globals['_ACKNOWLEDGEALARMREQUEST']._serialized_start=13455 + _globals['_ACKNOWLEDGEALARMREQUEST']._serialized_end=13601 + _globals['_ACKNOWLEDGEALARMREPLY']._serialized_start=13604 + _globals['_ACKNOWLEDGEALARMREPLY']._serialized_end=13847 + _globals['_QUERYACTIVEALARMSREQUEST']._serialized_start=13849 + _globals['_QUERYACTIVEALARMSREQUEST']._serialized_end=13955 + _globals['_MXSTATUSPROXY']._serialized_start=13958 + _globals['_MXSTATUSPROXY']._serialized_end=14193 + _globals['_MXVALUE']._serialized_start=14196 + _globals['_MXVALUE']._serialized_end=14619 + _globals['_MXARRAY']._serialized_start=14622 + _globals['_MXARRAY']._serialized_end=15260 + _globals['_BOOLARRAY']._serialized_start=15262 + _globals['_BOOLARRAY']._serialized_end=15289 + _globals['_INT32ARRAY']._serialized_start=15291 + _globals['_INT32ARRAY']._serialized_end=15319 + _globals['_INT64ARRAY']._serialized_start=15321 + _globals['_INT64ARRAY']._serialized_end=15349 + _globals['_FLOATARRAY']._serialized_start=15351 + _globals['_FLOATARRAY']._serialized_end=15379 + _globals['_DOUBLEARRAY']._serialized_start=15381 + _globals['_DOUBLEARRAY']._serialized_end=15410 + _globals['_STRINGARRAY']._serialized_start=15412 + _globals['_STRINGARRAY']._serialized_end=15441 + _globals['_TIMESTAMPARRAY']._serialized_start=15443 + _globals['_TIMESTAMPARRAY']._serialized_end=15503 + _globals['_RAWARRAY']._serialized_start=15505 + _globals['_RAWARRAY']._serialized_end=15531 + _globals['_PROTOCOLSTATUS']._serialized_start=15533 + _globals['_PROTOCOLSTATUS']._serialized_end=15621 + _globals['_MXACCESSGATEWAY']._serialized_start=19805 + _globals['_MXACCESSGATEWAY']._serialized_end=20413 # @@protoc_insertion_point(module_scope) diff --git a/clients/python/src/mxgateway/generated/mxaccess_gateway_pb2_grpc.py b/clients/python/src/mxgateway/generated/mxaccess_gateway_pb2_grpc.py index f6bea10..0522ea3 100644 --- a/clients/python/src/mxgateway/generated/mxaccess_gateway_pb2_grpc.py +++ b/clients/python/src/mxgateway/generated/mxaccess_gateway_pb2_grpc.py @@ -26,7 +26,14 @@ if _version_not_supported: class MxAccessGatewayStub(object): - """Public client API for MXAccess sessions hosted by the gateway. + """Wire-compatibility policy (ProtobufStyleGuide): this contract evolves + additively only. Never renumber or repurpose an existing field number or + enum value. When a field or enum value is removed, add a `reserved` range + (and `reserved` name) covering it in the same change so a future editor + cannot accidentally reuse the retired tag. There are no `reserved` + declarations today because no field or enum value has ever been removed. + + Public client API for MXAccess sessions hosted by the gateway. """ def __init__(self, channel): @@ -68,7 +75,14 @@ class MxAccessGatewayStub(object): class MxAccessGatewayServicer(object): - """Public client API for MXAccess sessions hosted by the gateway. + """Wire-compatibility policy (ProtobufStyleGuide): this contract evolves + additively only. Never renumber or repurpose an existing field number or + enum value. When a field or enum value is removed, add a `reserved` range + (and `reserved` name) covering it in the same change so a future editor + cannot accidentally reuse the retired tag. There are no `reserved` + declarations today because no field or enum value has ever been removed. + + Public client API for MXAccess sessions hosted by the gateway. """ def OpenSession(self, request, context): @@ -149,7 +163,14 @@ def add_MxAccessGatewayServicer_to_server(servicer, server): # This class is part of an EXPERIMENTAL API. class MxAccessGateway(object): - """Public client API for MXAccess sessions hosted by the gateway. + """Wire-compatibility policy (ProtobufStyleGuide): this contract evolves + additively only. Never renumber or repurpose an existing field number or + enum value. When a field or enum value is removed, add a `reserved` range + (and `reserved` name) covering it in the same change so a future editor + cannot accidentally reuse the retired tag. There are no `reserved` + declarations today because no field or enum value has ever been removed. + + Public client API for MXAccess sessions hosted by the gateway. """ @staticmethod diff --git a/clients/python/src/mxgateway/session.py b/clients/python/src/mxgateway/session.py index 905d295..18ec5fa 100644 --- a/clients/python/src/mxgateway/session.py +++ b/clients/python/src/mxgateway/session.py @@ -351,6 +351,138 @@ class Session: ) return list(reply.unsubscribe_bulk.results) + async def write_bulk( + self, + server_handle: int, + entries: Sequence[pb.WriteBulkEntry], + *, + correlation_id: str = "", + ) -> list[pb.BulkWriteResult]: + """Invoke MXAccess `WriteBulk` and return one BulkWriteResult per entry. + + Per-entry MXAccess failures appear as results with ``was_successful = False`` + and a populated ``error_message`` / ``hresult``; this method does not raise + on per-entry failure, mirroring the existing add/advise bulk surface. + """ + if entries is None: + raise TypeError("entries is required") + _ensure_bulk_size("entries", len(entries)) + reply = await self.invoke( + pb.MxCommand( + kind=pb.MX_COMMAND_KIND_WRITE_BULK, + write_bulk=pb.WriteBulkCommand( + server_handle=server_handle, + entries=entries, + ), + ), + correlation_id=correlation_id, + ) + return list(reply.write_bulk.results) + + async def write2_bulk( + self, + server_handle: int, + entries: Sequence[pb.Write2BulkEntry], + *, + correlation_id: str = "", + ) -> list[pb.BulkWriteResult]: + """Invoke MXAccess `Write2Bulk` (timestamped) and return per-entry results.""" + if entries is None: + raise TypeError("entries is required") + _ensure_bulk_size("entries", len(entries)) + reply = await self.invoke( + pb.MxCommand( + kind=pb.MX_COMMAND_KIND_WRITE2_BULK, + write2_bulk=pb.Write2BulkCommand( + server_handle=server_handle, + entries=entries, + ), + ), + correlation_id=correlation_id, + ) + return list(reply.write2_bulk.results) + + async def write_secured_bulk( + self, + server_handle: int, + entries: Sequence[pb.WriteSecuredBulkEntry], + *, + correlation_id: str = "", + ) -> list[pb.BulkWriteResult]: + """Invoke MXAccess `WriteSecuredBulk` — credential-sensitive values must not be logged.""" + if entries is None: + raise TypeError("entries is required") + _ensure_bulk_size("entries", len(entries)) + reply = await self.invoke( + pb.MxCommand( + kind=pb.MX_COMMAND_KIND_WRITE_SECURED_BULK, + write_secured_bulk=pb.WriteSecuredBulkCommand( + server_handle=server_handle, + entries=entries, + ), + ), + correlation_id=correlation_id, + ) + return list(reply.write_secured_bulk.results) + + async def write_secured2_bulk( + self, + server_handle: int, + entries: Sequence[pb.WriteSecured2BulkEntry], + *, + correlation_id: str = "", + ) -> list[pb.BulkWriteResult]: + """Invoke MXAccess `WriteSecured2Bulk` (timestamped + verified).""" + if entries is None: + raise TypeError("entries is required") + _ensure_bulk_size("entries", len(entries)) + reply = await self.invoke( + pb.MxCommand( + kind=pb.MX_COMMAND_KIND_WRITE_SECURED2_BULK, + write_secured2_bulk=pb.WriteSecured2BulkCommand( + server_handle=server_handle, + entries=entries, + ), + ), + correlation_id=correlation_id, + ) + return list(reply.write_secured2_bulk.results) + + async def read_bulk( + self, + server_handle: int, + tag_addresses: Sequence[str], + *, + timeout_ms: int = 0, + correlation_id: str = "", + ) -> list[pb.BulkReadResult]: + """Invoke `ReadBulk` — snapshot the current value of each requested tag. + + MXAccess COM has no synchronous read; the worker returns the cached + ``OnDataChange`` value for any tag that is already advised (``was_cached = + True``) without modifying the existing subscription, and falls back to + a full AddItem + Advise + wait + UnAdvise + RemoveItem snapshot lifecycle + otherwise. ``timeout_ms`` bounds the per-tag wait in the snapshot case; + pass ``0`` to use the worker default (1000 ms). + """ + if tag_addresses is None: + raise TypeError("tag_addresses is required") + _ensure_bulk_size("tag_addresses", len(tag_addresses)) + if timeout_ms < 0: + raise ValueError("timeout_ms must be non-negative") + reply = await self.invoke( + pb.MxCommand( + kind=pb.MX_COMMAND_KIND_READ_BULK, + read_bulk=pb.ReadBulkCommand( + server_handle=server_handle, + tag_addresses=tag_addresses, + timeout_ms=timeout_ms, + ), + ), + correlation_id=correlation_id, + ) + return list(reply.read_bulk.results) + async def write( self, server_handle: int, diff --git a/clients/python/tests/test_client_session.py b/clients/python/tests/test_client_session.py index 818e272..eede81f 100644 --- a/clients/python/tests/test_client_session.py +++ b/clients/python/tests/test_client_session.py @@ -93,6 +93,79 @@ async def test_subscribe_bulk_sends_one_bulk_command_and_returns_results() -> No ] +@pytest.mark.asyncio +async def test_write_bulk_sends_one_bulk_command_and_returns_per_entry_results() -> None: + stub = FakeGatewayStub() + bulk_reply = pb.MxCommandReply( + session_id="session-1", + kind=pb.MX_COMMAND_KIND_WRITE_BULK, + protocol_status=pb.ProtocolStatus(code=pb.PROTOCOL_STATUS_CODE_OK), + write_bulk=pb.BulkWriteReply( + results=[ + pb.BulkWriteResult(server_handle=12, item_handle=901, was_successful=True), + pb.BulkWriteResult(server_handle=12, item_handle=902, was_successful=False, error_message="invalid handle"), + ], + ), + ) + stub.invoke.replies = [bulk_reply] + client = await GatewayClient.connect( + ClientOptions(endpoint="fake", api_key="mxgw_test_secret", plaintext=True), + stub=stub, + ) + session = await client.open_session() + + entries = [ + pb.WriteBulkEntry(item_handle=901, user_id=5, value=pb.MxValue(data_type=pb.MX_DATA_TYPE_INTEGER, int32_value=11)), + pb.WriteBulkEntry(item_handle=902, user_id=5, value=pb.MxValue(data_type=pb.MX_DATA_TYPE_INTEGER, int32_value=22)), + ] + results = await session.write_bulk(12, entries) + + assert len(results) == 2 + assert results[0].was_successful is True + assert results[1].was_successful is False + sent = stub.invoke.requests[0].command + assert sent.kind == pb.MX_COMMAND_KIND_WRITE_BULK + assert len(sent.write_bulk.entries) == 2 + + +@pytest.mark.asyncio +async def test_read_bulk_forwards_timeout_and_unpacks_cached_flag() -> None: + stub = FakeGatewayStub() + bulk_reply = pb.MxCommandReply( + session_id="session-1", + kind=pb.MX_COMMAND_KIND_READ_BULK, + protocol_status=pb.ProtocolStatus(code=pb.PROTOCOL_STATUS_CODE_OK), + read_bulk=pb.BulkReadReply( + results=[ + pb.BulkReadResult( + server_handle=12, + tag_address="Area001.Pump001.Speed", + item_handle=34, + was_successful=True, + was_cached=True, + value=pb.MxValue(data_type=pb.MX_DATA_TYPE_INTEGER, int32_value=99), + ), + ], + ), + ) + stub.invoke.replies = [bulk_reply] + client = await GatewayClient.connect( + ClientOptions(endpoint="fake", api_key="mxgw_test_secret", plaintext=True), + stub=stub, + ) + session = await client.open_session() + + results = await session.read_bulk(12, ["Area001.Pump001.Speed"], timeout_ms=750) + + assert len(results) == 1 + assert results[0].was_cached is True + assert results[0].value.int32_value == 99 + sent = stub.invoke.requests[0].command + assert sent.kind == pb.MX_COMMAND_KIND_READ_BULK + assert list(sent.read_bulk.tag_addresses) == ["Area001.Pump001.Speed"] + assert sent.read_bulk.timeout_ms == 750 + + @pytest.mark.asyncio async def test_stream_events_cancels_underlying_call_when_closed() -> None: stream = FakeStream( diff --git a/clients/rust/README.md b/clients/rust/README.md index 0bcdbfb..2f2b448 100644 --- a/clients/rust/README.md +++ b/clients/rust/README.md @@ -99,6 +99,16 @@ preserving the raw message for parity diagnostics. Command replies whose protocol status is not `PROTOCOL_STATUS_CODE_OK` become `Error::Command` and retain the raw `MxCommandReply`. +The session also exposes the full bulk family — +`add_item_bulk`, `advise_item_bulk`, `remove_item_bulk`, `un_advise_item_bulk`, +`subscribe_bulk`, `unsubscribe_bulk`, `write_bulk`, `write2_bulk`, +`write_secured_bulk`, `write_secured2_bulk`, and `read_bulk`. Each carries a +`Vec` of entries in one round-trip and returns one result per entry; per-entry +MXAccess failures populate `was_successful = false` and never raise. `read_bulk` +takes a per-tag timeout (`u32` milliseconds, `0` = worker default) and returns +the cached `OnDataChange` value when the tag is already advised (`was_cached = +true`) without touching the existing subscription. + ## Galaxy Repository browse The Galaxy Repository service exposes a read-only browse over the AVEVA System diff --git a/clients/rust/src/session.rs b/clients/rust/src/session.rs index 76a38e0..dddae21 100644 --- a/clients/rust/src/session.rs +++ b/clients/rust/src/session.rs @@ -16,10 +16,13 @@ use crate::generated::mxaccess_gateway::v1::mx_command::Payload; use crate::generated::mxaccess_gateway::v1::mx_command_reply; use crate::generated::mxaccess_gateway::v1::{ AddItem2Command, AddItemBulkCommand, AddItemCommand, AdviseCommand, AdviseItemBulkCommand, - CloseSessionRequest, MxCommand, MxCommandKind, MxCommandReply, MxCommandRequest, - MxValue as ProtoMxValue, OpenSessionRequest, RegisterCommand, RemoveItemBulkCommand, - RemoveItemCommand, StreamEventsRequest, SubscribeBulkCommand, SubscribeResult, UnAdviseCommand, - UnAdviseItemBulkCommand, UnsubscribeBulkCommand, Write2Command, WriteCommand, + BulkReadResult, BulkWriteResult, CloseSessionRequest, MxCommand, MxCommandKind, MxCommandReply, + MxCommandRequest, MxValue as ProtoMxValue, OpenSessionRequest, ReadBulkCommand, + RegisterCommand, RemoveItemBulkCommand, RemoveItemCommand, StreamEventsRequest, + SubscribeBulkCommand, SubscribeResult, UnAdviseCommand, UnAdviseItemBulkCommand, + UnsubscribeBulkCommand, Write2BulkCommand, Write2BulkEntry, Write2Command, WriteBulkCommand, + WriteBulkEntry, WriteCommand, WriteSecured2BulkCommand, WriteSecured2BulkEntry, + WriteSecuredBulkCommand, WriteSecuredBulkEntry, }; use crate::value::MxValue; @@ -362,6 +365,147 @@ impl Session { bulk_results(reply, BulkReplyKind::Unsubscribe) } + /// Bulk `Write` (sequential MXAccess Write per entry, on the worker's STA). + /// + /// Per-entry MXAccess failures are reported as `BulkWriteResult` entries + /// with `was_successful = false`; the call never errors on per-entry + /// failure. Protocol-level failures still surface as [`Error::Command`]. + /// + /// # Errors + /// + /// Same conditions as [`Session::add_item_bulk`], plus the usual + /// transport/status errors. + pub async fn write_bulk( + &self, + server_handle: i32, + entries: Vec, + ) -> Result, Error> { + ensure_bulk_size("entries", entries.len())?; + let reply = self + .invoke( + MxCommandKind::WriteBulk, + Payload::WriteBulk(WriteBulkCommand { + server_handle, + entries, + }), + ) + .await?; + + bulk_write_results(reply, BulkWriteReplyKind::Write) + } + + /// Bulk `Write2` (timestamped) — see [`Session::write_bulk`]. + /// + /// # Errors + /// + /// Same conditions as [`Session::write_bulk`]. + pub async fn write2_bulk( + &self, + server_handle: i32, + entries: Vec, + ) -> Result, Error> { + ensure_bulk_size("entries", entries.len())?; + let reply = self + .invoke( + MxCommandKind::Write2Bulk, + Payload::Write2Bulk(Write2BulkCommand { + server_handle, + entries, + }), + ) + .await?; + + bulk_write_results(reply, BulkWriteReplyKind::Write2) + } + + /// Bulk `WriteSecured` — credential-sensitive values follow the same + /// redaction contract as the single-item `write_secured` path. + /// + /// # Errors + /// + /// Same conditions as [`Session::write_bulk`]. + pub async fn write_secured_bulk( + &self, + server_handle: i32, + entries: Vec, + ) -> Result, Error> { + ensure_bulk_size("entries", entries.len())?; + let reply = self + .invoke( + MxCommandKind::WriteSecuredBulk, + Payload::WriteSecuredBulk(WriteSecuredBulkCommand { + server_handle, + entries, + }), + ) + .await?; + + bulk_write_results(reply, BulkWriteReplyKind::WriteSecured) + } + + /// Bulk `WriteSecured2` (timestamped) — see [`Session::write_secured_bulk`]. + /// + /// # Errors + /// + /// Same conditions as [`Session::write_bulk`]. + pub async fn write_secured2_bulk( + &self, + server_handle: i32, + entries: Vec, + ) -> Result, Error> { + ensure_bulk_size("entries", entries.len())?; + let reply = self + .invoke( + MxCommandKind::WriteSecured2Bulk, + Payload::WriteSecured2Bulk(WriteSecured2BulkCommand { + server_handle, + entries, + }), + ) + .await?; + + bulk_write_results(reply, BulkWriteReplyKind::WriteSecured2) + } + + /// Bulk `Read` — snapshot the current value for each requested tag. + /// + /// MXAccess COM has no synchronous `Read`; the worker satisfies this by + /// returning the most recent cached `OnDataChange` value when the tag is + /// already advised (`was_cached = true`), or by taking a full AddItem + + /// Advise + wait + UnAdvise + RemoveItem snapshot lifecycle otherwise. + /// `timeout_ms == 0` lets the worker pick its default (1000 ms). + /// Per-tag failures appear as `BulkReadResult` entries with + /// `was_successful = false`; the call never errors on per-tag failure. + /// + /// # Errors + /// + /// Same conditions as [`Session::add_item_bulk`]. + pub async fn read_bulk( + &self, + server_handle: i32, + tag_addresses: Vec, + timeout_ms: u32, + ) -> Result, Error> { + ensure_bulk_size("tag_addresses", tag_addresses.len())?; + let reply = self + .invoke( + MxCommandKind::ReadBulk, + Payload::ReadBulk(ReadBulkCommand { + server_handle, + tag_addresses, + timeout_ms, + }), + ) + .await?; + + match reply.payload { + Some(mx_command_reply::Payload::ReadBulk(reply)) => Ok(reply.results), + _ => Err(Error::MalformedReply { + detail: "ReadBulk reply did not carry a BulkReadReply payload".to_owned(), + }), + } + } + /// Run MXAccess `Write` (single-value, no caller-supplied timestamp). /// /// # Errors @@ -578,6 +722,39 @@ fn bulk_results(reply: MxCommandReply, kind: BulkReplyKind) -> Result Result, Error> { + match (reply.payload, kind) { + (Some(mx_command_reply::Payload::WriteBulk(reply)), BulkWriteReplyKind::Write) => { + Ok(reply.results) + } + (Some(mx_command_reply::Payload::Write2Bulk(reply)), BulkWriteReplyKind::Write2) => { + Ok(reply.results) + } + ( + Some(mx_command_reply::Payload::WriteSecuredBulk(reply)), + BulkWriteReplyKind::WriteSecured, + ) => Ok(reply.results), + ( + Some(mx_command_reply::Payload::WriteSecured2Bulk(reply)), + BulkWriteReplyKind::WriteSecured2, + ) => Ok(reply.results), + _ => Err(Error::MalformedReply { + detail: "bulk write reply did not carry the expected BulkWriteReply payload" + .to_owned(), + }), + } +} + fn int32_reply_value(value: &ProtoMxValue) -> Option { match value.kind.as_ref()? { crate::generated::mxaccess_gateway::v1::mx_value::Kind::Int32Value(value) => Some(*value), diff --git a/clients/rust/tests/client_behavior.rs b/clients/rust/tests/client_behavior.rs index 199ce73..c156b91 100644 --- a/clients/rust/tests/client_behavior.rs +++ b/clients/rust/tests/client_behavior.rs @@ -11,14 +11,16 @@ use futures_util::StreamExt; use mxgateway_client::generated::mxaccess_gateway::v1::mx_access_gateway_server::{ MxAccessGateway, MxAccessGatewayServer, }; +use mxgateway_client::generated::mxaccess_gateway::v1::mx_command; use mxgateway_client::generated::mxaccess_gateway::v1::mx_command_reply; use mxgateway_client::generated::mxaccess_gateway::v1::mx_value::Kind; use mxgateway_client::generated::mxaccess_gateway::v1::{ AcknowledgeAlarmReply, AcknowledgeAlarmRequest, ActiveAlarmSnapshot, AddItemReply, - BulkSubscribeReply, CloseSessionReply, CloseSessionRequest, MxCommandKind, MxCommandReply, - MxDataType, MxEvent, MxEventFamily, MxStatusCategory, MxStatusProxy, MxStatusSource, MxValue, - OpenSessionReply, OpenSessionRequest, ProtocolStatus, ProtocolStatusCode, - QueryActiveAlarmsRequest, SessionState, StreamEventsRequest, SubscribeResult, + BulkReadReply, BulkReadResult, BulkSubscribeReply, BulkWriteReply, BulkWriteResult, + CloseSessionReply, CloseSessionRequest, MxCommandKind, MxCommandReply, MxDataType, MxEvent, + MxEventFamily, MxStatusCategory, MxStatusProxy, MxStatusSource, MxValue, OpenSessionReply, + OpenSessionRequest, ProtocolStatus, ProtocolStatusCode, QueryActiveAlarmsRequest, SessionState, + StreamEventsRequest, SubscribeResult, WriteBulkEntry, }; use mxgateway_client::{ ApiKey, ClientOptions, CommandError, Error, GatewayClient, MxStatus, MxValue as ClientMxValue, @@ -107,6 +109,61 @@ async fn subscribe_bulk_builds_one_bulk_command_and_returns_results() { assert_eq!(*last_command, Some(MxCommandKind::SubscribeBulk as i32)); } +#[tokio::test] +async fn write_bulk_builds_one_bulk_command_and_returns_per_entry_results() { + let state = Arc::new(FakeState::default()); + let endpoint = spawn_fake_gateway(state.clone()).await; + let client = GatewayClient::connect(ClientOptions::new(endpoint)) + .await + .unwrap(); + let session = client.session("session-fixture"); + + let results = session + .write_bulk( + 12, + vec![ + WriteBulkEntry { + item_handle: 901, + value: Some(int_value(11)), + user_id: 5, + }, + WriteBulkEntry { + item_handle: 902, + value: Some(int_value(22)), + user_id: 5, + }, + ], + ) + .await + .unwrap(); + + assert_eq!(results.len(), 2); + assert!(results[0].was_successful); + assert!(!results[1].was_successful); + let last_command = state.last_command_kind.lock().await; + assert_eq!(*last_command, Some(MxCommandKind::WriteBulk as i32)); +} + +#[tokio::test] +async fn read_bulk_forwards_timeout_and_unpacks_cached_flag() { + let state = Arc::new(FakeState::default()); + let endpoint = spawn_fake_gateway(state.clone()).await; + let client = GatewayClient::connect(ClientOptions::new(endpoint)) + .await + .unwrap(); + let session = client.session("session-fixture"); + + let results = session + .read_bulk(12, vec!["Area001.Pump001.Speed".to_owned()], 750) + .await + .unwrap(); + + let entry = &results[0]; + assert!(entry.was_cached); + assert_eq!(entry.value.as_ref().and_then(|v| v.kind.as_ref()), Some(&Kind::Int32Value(99))); + assert_eq!(*state.last_read_bulk_timeout_ms.lock().await, Some(750)); +} + #[tokio::test] async fn event_stream_preserves_order_and_drop_cancels_server_stream() { let state = Arc::new(FakeState::default()); @@ -340,6 +397,7 @@ async fn connect_with_unreadable_ca_file_reports_invalid_endpoint() { struct FakeState { authorization: Mutex>, last_command_kind: Mutex>, + last_read_bulk_timeout_ms: Mutex>, stream_dropped: Arc, emit_stream_fault: AtomicBool, } @@ -420,6 +478,70 @@ impl MxAccessGateway for FakeGateway { })); } + if kind == MxCommandKind::WriteBulk as i32 { + // Echo one success and one failure so the test can assert the per-entry + // shape and verify the call did not throw on per-entry failure. + return Ok(Response::new(MxCommandReply { + session_id: request.session_id, + correlation_id: "fake-correlation".to_owned(), + kind, + protocol_status: Some(ok_status("command ok")), + payload: Some(mx_command_reply::Payload::WriteBulk(BulkWriteReply { + results: vec![ + BulkWriteResult { + server_handle: 12, + item_handle: 901, + was_successful: true, + hresult: None, + statuses: vec![], + error_message: String::new(), + }, + BulkWriteResult { + server_handle: 12, + item_handle: 902, + was_successful: false, + hresult: None, + statuses: vec![], + error_message: "invalid handle".to_owned(), + }, + ], + })), + ..MxCommandReply::default() + })); + } + + if kind == MxCommandKind::ReadBulk as i32 { + let read_command = request.command.as_ref().and_then(|c| { + if let Some(mx_command::Payload::ReadBulk(ref r)) = c.payload { + Some(r.timeout_ms) + } else { + None + } + }); + *self.state.last_read_bulk_timeout_ms.lock().await = read_command; + return Ok(Response::new(MxCommandReply { + session_id: request.session_id, + correlation_id: "fake-correlation".to_owned(), + kind, + protocol_status: Some(ok_status("command ok")), + payload: Some(mx_command_reply::Payload::ReadBulk(BulkReadReply { + results: vec![BulkReadResult { + server_handle: 12, + tag_address: "Area001.Pump001.Speed".to_owned(), + item_handle: 34, + was_successful: true, + was_cached: true, + value: Some(int_value(99)), + quality: 192, + source_timestamp: None, + statuses: vec![], + error_message: String::new(), + }], + })), + ..MxCommandReply::default() + })); + } + Ok(Response::new(MxCommandReply { session_id: request.session_id, correlation_id: "fake-correlation".to_owned(), @@ -527,6 +649,15 @@ async fn spawn_fake_gateway(state: Arc) -> String { format!("http://{address}") } +fn int_value(value: i32) -> MxValue { + MxValue { + data_type: MxDataType::Integer as i32, + variant_type: "VT_I4".to_owned(), + kind: Some(Kind::Int32Value(value)), + ..MxValue::default() + } +} + fn ok_status(message: &str) -> ProtocolStatus { ProtocolStatus { code: ProtocolStatusCode::Ok as i32, diff --git a/docs/DesignDecisions.md b/docs/DesignDecisions.md index 1be2afa..628dc6e 100644 --- a/docs/DesignDecisions.md +++ b/docs/DesignDecisions.md @@ -199,6 +199,57 @@ and failure behavior are easy to compare against direct MXAccess. Batch tag registration can be added later if measured setup latency requires it. +## Bulk Command Family + +Decision: the gateway exposes a fixed set of *bulk* command kinds — +`AddItemBulk`, `AdviseItemBulk`, `RemoveItemBulk`, `UnAdviseItemBulk`, +`SubscribeBulk`, `UnsubscribeBulk`, `WriteBulk`, `Write2Bulk`, +`WriteSecuredBulk`, `WriteSecured2Bulk`, `ReadBulk` — that carry a list of +entries in one round-trip and return one per-entry result. Each command kind +runs the corresponding single-item MXAccess COM call sequentially on the +worker STA; per-entry failures populate `was_successful = false` with the +underlying HRESULT and never throw. There is no transactional / fail-fast +semantic — bulk here means "one round-trip, per-entry results", not +"atomic". + +Rationale: MXAccess COM itself has no native bulk API for any of these +operations. Surfacing the per-entry result list keeps parity transparent — +the caller sees the same per-item HRESULT they would see calling MXAccess +N times directly — while the bulk shape collapses the gateway/IPC overhead +to one round-trip per batch and lets the worker keep the STA hot. + +`ReadBulk` is the only bulk command without a 1:1 MXAccess analogue. Two +choices were considered: + +1. **Cache-then-snapshot** (chosen): when a requested tag is already in the + session's item registry AND advised, the worker returns the last cached + `OnDataChange` value without touching the subscription + (`was_cached = true`). Otherwise it takes the full `AddItem + Advise + + wait-for-first-OnDataChange + UnAdvise + RemoveItem` lifecycle itself + (`was_cached = false`) and leaves the session exactly as it was before + the call. The cache lives on a per-session `MxAccessValueCache`, + populated by `MxAccessBaseEventSink` on every `OnDataChange` after the + event clears the outbound queue. + +2. **Always-snapshot**: take the AddItem-through-RemoveItem lifecycle for + every requested tag. Cleaner conceptually but pays the full lifecycle + cost on every call and would interfere with existing subscriptions if + MXAccess reuses item handles. + +The chosen behavior matches what callers actually want from "current +value" — a free read of an already-streaming tag, and a one-shot snapshot +otherwise — and never disturbs subscriptions the caller did not create. +The decision intentionally does NOT synthesize an `OnDataChange` event +from the snapshot path: the snapshot value reaches the caller through +`ReadBulk`'s reply payload only, not through the event stream. This +preserves the "Don't synthesize events" rule that scopes the rest of the +worker. + +`ReadBulk`'s wait loop pumps Windows messages on the worker STA +(`StaRuntime.PumpPendingMessages`) on every poll iteration so the inbound +MXAccess COM event can dispatch while the bulk executor still holds the +thread — without the pump the OnDataChange would never deliver. + ## Graceful Worker Shutdown Decision: best-effort cleanup before COM release. diff --git a/gateway.md b/gateway.md index a22300c..10e6bb6 100644 --- a/gateway.md +++ b/gateway.md @@ -283,6 +283,44 @@ Core commands: - `AuthenticateUser` - `ArchestrAUserToId` +Bulk variants (single gRPC round-trip carries the full list, the worker +runs the per-item MXAccess calls sequentially on its STA, and the reply +returns one result per requested entry — per-entry failures populate +`was_successful = false` + `error_message` and never throw): + +- `AddItemBulk` — `repeated string tag_addresses` → `BulkSubscribeReply`. +- `AdviseItemBulk` — `repeated int32 item_handles` → `BulkSubscribeReply`. +- `RemoveItemBulk` — `repeated int32 item_handles` → `BulkSubscribeReply`. +- `UnAdviseItemBulk` — `repeated int32 item_handles` → `BulkSubscribeReply`. +- `SubscribeBulk` — `repeated string tag_addresses` (AddItem + Advise per + entry, with cleanup on Advise failure) → `BulkSubscribeReply`. +- `UnsubscribeBulk` — `repeated int32 item_handles` (UnAdvise + RemoveItem + per entry, with independent error tracking) → `BulkSubscribeReply`. +- `WriteBulk` — `repeated WriteBulkEntry` (each `{item_handle, value, user_id}`) + → `BulkWriteReply` (`repeated BulkWriteResult`). Required scope: `invoke:write`. +- `Write2Bulk` — `repeated Write2BulkEntry` (each adds `timestamp_value`) → + `BulkWriteReply`. Required scope: `invoke:write`. +- `WriteSecuredBulk` — `repeated WriteSecuredBulkEntry` (each + `{item_handle, current_user_id, verifier_user_id, value}`) → `BulkWriteReply`. + Required scope: `invoke:secure`. Same redaction rules as single-item + `WriteSecured`: per-entry `value` must never reach logs unless an explicit + redacted value-logging path is enabled. +- `WriteSecured2Bulk` — `repeated WriteSecured2BulkEntry` (each adds + `timestamp_value`) → `BulkWriteReply`. Required scope: `invoke:secure`. +- `ReadBulk` — `repeated string tag_addresses` + `uint32 timeout_ms` → + `BulkReadReply` (`repeated BulkReadResult`). MXAccess COM has no + synchronous `Read`; the worker satisfies this command by returning the + last cached `OnDataChange` payload when the requested tag is already + advised (`was_cached = true`, no subscription side-effects), or by + taking a full `AddItem` + `Advise` + wait-for-first-OnDataChange + + `UnAdvise` + `RemoveItem` snapshot lifecycle when no live subscription + exists (`was_cached = false`). Per-tag timeouts surface as + `was_successful = false` rather than throwing. The cache lives on the + worker's `MxAccessValueCache`, populated by `MxAccessBaseEventSink` on + every `OnDataChange` after the event clears the outbound queue. + Required scope: `invoke:read`. `timeout_ms == 0` uses the worker's + default (1000 ms). + Optional diagnostics: - `Ping` diff --git a/src/MxGateway.Contracts/Generated/MxaccessGateway.cs b/src/MxGateway.Contracts/Generated/MxaccessGateway.cs index 76e0444..0464e77 100644 --- a/src/MxGateway.Contracts/Generated/MxaccessGateway.cs +++ b/src/MxGateway.Contracts/Generated/MxaccessGateway.cs @@ -46,7 +46,7 @@ namespace MxGateway.Contracts.Proto { "ZnRlcl93b3JrZXJfc2VxdWVuY2UYAiABKAQidgoQTXhDb21tYW5kUmVxdWVz", "dBISCgpzZXNzaW9uX2lkGAEgASgJEh0KFWNsaWVudF9jb3JyZWxhdGlvbl9p", "ZBgCIAEoCRIvCgdjb21tYW5kGAMgASgLMh4ubXhhY2Nlc3NfZ2F0ZXdheS52", - "MS5NeENvbW1hbmQi7xIKCU14Q29tbWFuZBIwCgRraW5kGAEgASgOMiIubXhh", + "MS5NeENvbW1hbmQiwBUKCU14Q29tbWFuZBIwCgRraW5kGAEgASgOMiIubXhh", "Y2Nlc3NfZ2F0ZXdheS52MS5NeENvbW1hbmRLaW5kEjgKCHJlZ2lzdGVyGAog", "ASgLMiQubXhhY2Nlc3NfZ2F0ZXdheS52MS5SZWdpc3RlckNvbW1hbmRIABI8", "Cgp1bnJlZ2lzdGVyGAsgASgLMiYubXhhY2Nlc3NfZ2F0ZXdheS52MS5VbnJl", @@ -92,335 +92,393 @@ namespace MxGateway.Contracts.Proto { "ZBglIAEoCzItLm14YWNjZXNzX2dhdGV3YXkudjEuUXVlcnlBY3RpdmVBbGFy", "bXNDb21tYW5kSAASXwohYWNrbm93bGVkZ2VfYWxhcm1fYnlfbmFtZV9jb21t", "YW5kGCYgASgLMjIubXhhY2Nlc3NfZ2F0ZXdheS52MS5BY2tub3dsZWRnZUFs", - "YXJtQnlOYW1lQ29tbWFuZEgAEjAKBHBpbmcYZCABKAsyIC5teGFjY2Vzc19n", - "YXRld2F5LnYxLlBpbmdDb21tYW5kSAASSAoRZ2V0X3Nlc3Npb25fc3RhdGUY", - "ZSABKAsyKy5teGFjY2Vzc19nYXRld2F5LnYxLkdldFNlc3Npb25TdGF0ZUNv", - "bW1hbmRIABJECg9nZXRfd29ya2VyX2luZm8YZiABKAsyKS5teGFjY2Vzc19n", - "YXRld2F5LnYxLkdldFdvcmtlckluZm9Db21tYW5kSAASPwoMZHJhaW5fZXZl", - "bnRzGGcgASgLMicubXhhY2Nlc3NfZ2F0ZXdheS52MS5EcmFpbkV2ZW50c0Nv", - "bW1hbmRIABJFCg9zaHV0ZG93bl93b3JrZXIYaCABKAsyKi5teGFjY2Vzc19n", - "YXRld2F5LnYxLlNodXRkb3duV29ya2VyQ29tbWFuZEgAQgkKB3BheWxvYWQi", - "JgoPUmVnaXN0ZXJDb21tYW5kEhMKC2NsaWVudF9uYW1lGAEgASgJIioKEVVu", - "cmVnaXN0ZXJDb21tYW5kEhUKDXNlcnZlcl9oYW5kbGUYASABKAUiQAoOQWRk", - "SXRlbUNvbW1hbmQSFQoNc2VydmVyX2hhbmRsZRgBIAEoBRIXCg9pdGVtX2Rl", - "ZmluaXRpb24YAiABKAkiVwoPQWRkSXRlbTJDb21tYW5kEhUKDXNlcnZlcl9o", - "YW5kbGUYASABKAUSFwoPaXRlbV9kZWZpbml0aW9uGAIgASgJEhQKDGl0ZW1f", - "Y29udGV4dBgDIAEoCSI/ChFSZW1vdmVJdGVtQ29tbWFuZBIVCg1zZXJ2ZXJf", - "aGFuZGxlGAEgASgFEhMKC2l0ZW1faGFuZGxlGAIgASgFIjsKDUFkdmlzZUNv", - "bW1hbmQSFQoNc2VydmVyX2hhbmRsZRgBIAEoBRITCgtpdGVtX2hhbmRsZRgC", - "IAEoBSI9Cg9VbkFkdmlzZUNvbW1hbmQSFQoNc2VydmVyX2hhbmRsZRgBIAEo", - "BRITCgtpdGVtX2hhbmRsZRgCIAEoBSJGChhBZHZpc2VTdXBlcnZpc29yeUNv", - "bW1hbmQSFQoNc2VydmVyX2hhbmRsZRgBIAEoBRITCgtpdGVtX2hhbmRsZRgC", - "IAEoBSJeChZBZGRCdWZmZXJlZEl0ZW1Db21tYW5kEhUKDXNlcnZlcl9oYW5k", - "bGUYASABKAUSFwoPaXRlbV9kZWZpbml0aW9uGAIgASgJEhQKDGl0ZW1fY29u", - "dGV4dBgDIAEoCSJfCiBTZXRCdWZmZXJlZFVwZGF0ZUludGVydmFsQ29tbWFu", - "ZBIVCg1zZXJ2ZXJfaGFuZGxlGAEgASgFEiQKHHVwZGF0ZV9pbnRlcnZhbF9t", - "aWxsaXNlY29uZHMYAiABKAUiPAoOU3VzcGVuZENvbW1hbmQSFQoNc2VydmVy", - "X2hhbmRsZRgBIAEoBRITCgtpdGVtX2hhbmRsZRgCIAEoBSI9Cg9BY3RpdmF0", - "ZUNvbW1hbmQSFQoNc2VydmVyX2hhbmRsZRgBIAEoBRITCgtpdGVtX2hhbmRs", - "ZRgCIAEoBSJ4CgxXcml0ZUNvbW1hbmQSFQoNc2VydmVyX2hhbmRsZRgBIAEo", - "BRITCgtpdGVtX2hhbmRsZRgCIAEoBRIrCgV2YWx1ZRgDIAEoCzIcLm14YWNj", - "ZXNzX2dhdGV3YXkudjEuTXhWYWx1ZRIPCgd1c2VyX2lkGAQgASgFIrABCg1X", - "cml0ZTJDb21tYW5kEhUKDXNlcnZlcl9oYW5kbGUYASABKAUSEwoLaXRlbV9o", - "YW5kbGUYAiABKAUSKwoFdmFsdWUYAyABKAsyHC5teGFjY2Vzc19nYXRld2F5", - "LnYxLk14VmFsdWUSNQoPdGltZXN0YW1wX3ZhbHVlGAQgASgLMhwubXhhY2Nl", - "c3NfZ2F0ZXdheS52MS5NeFZhbHVlEg8KB3VzZXJfaWQYBSABKAUioQEKE1dy", - "aXRlU2VjdXJlZENvbW1hbmQSFQoNc2VydmVyX2hhbmRsZRgBIAEoBRITCgtp", - "dGVtX2hhbmRsZRgCIAEoBRIXCg9jdXJyZW50X3VzZXJfaWQYAyABKAUSGAoQ", - "dmVyaWZpZXJfdXNlcl9pZBgEIAEoBRIrCgV2YWx1ZRgFIAEoCzIcLm14YWNj", - "ZXNzX2dhdGV3YXkudjEuTXhWYWx1ZSLZAQoUV3JpdGVTZWN1cmVkMkNvbW1h", - "bmQSFQoNc2VydmVyX2hhbmRsZRgBIAEoBRITCgtpdGVtX2hhbmRsZRgCIAEo", - "BRIXCg9jdXJyZW50X3VzZXJfaWQYAyABKAUSGAoQdmVyaWZpZXJfdXNlcl9p", - "ZBgEIAEoBRIrCgV2YWx1ZRgFIAEoCzIcLm14YWNjZXNzX2dhdGV3YXkudjEu", - "TXhWYWx1ZRI1Cg90aW1lc3RhbXBfdmFsdWUYBiABKAsyHC5teGFjY2Vzc19n", - "YXRld2F5LnYxLk14VmFsdWUiYwoXQXV0aGVudGljYXRlVXNlckNvbW1hbmQS", - "FQoNc2VydmVyX2hhbmRsZRgBIAEoBRITCgt2ZXJpZnlfdXNlchgCIAEoCRIc", - "ChR2ZXJpZnlfdXNlcl9wYXNzd29yZBgDIAEoCSJHChhBcmNoZXN0ckFVc2Vy", - "VG9JZENvbW1hbmQSFQoNc2VydmVyX2hhbmRsZRgBIAEoBRIUCgx1c2VyX2lk", - "X2d1aWQYAiABKAkiQgoSQWRkSXRlbUJ1bGtDb21tYW5kEhUKDXNlcnZlcl9o", - "YW5kbGUYASABKAUSFQoNdGFnX2FkZHJlc3NlcxgCIAMoCSJEChVBZHZpc2VJ", - "dGVtQnVsa0NvbW1hbmQSFQoNc2VydmVyX2hhbmRsZRgBIAEoBRIUCgxpdGVt", - "X2hhbmRsZXMYAiADKAUiRAoVUmVtb3ZlSXRlbUJ1bGtDb21tYW5kEhUKDXNl", - "cnZlcl9oYW5kbGUYASABKAUSFAoMaXRlbV9oYW5kbGVzGAIgAygFIkYKF1Vu", - "QWR2aXNlSXRlbUJ1bGtDb21tYW5kEhUKDXNlcnZlcl9oYW5kbGUYASABKAUS", - "FAoMaXRlbV9oYW5kbGVzGAIgAygFIkQKFFN1YnNjcmliZUJ1bGtDb21tYW5k", - "EhUKDXNlcnZlcl9oYW5kbGUYASABKAUSFQoNdGFnX2FkZHJlc3NlcxgCIAMo", - "CSI5ChZTdWJzY3JpYmVBbGFybXNDb21tYW5kEh8KF3N1YnNjcmlwdGlvbl9l", - "eHByZXNzaW9uGAEgASgJIhoKGFVuc3Vic2NyaWJlQWxhcm1zQ29tbWFuZCKh", - "AQoXQWNrbm93bGVkZ2VBbGFybUNvbW1hbmQSEgoKYWxhcm1fZ3VpZBgBIAEo", - "CRIPCgdjb21tZW50GAIgASgJEhUKDW9wZXJhdG9yX3VzZXIYAyABKAkSFQoN", - "b3BlcmF0b3Jfbm9kZRgEIAEoCRIXCg9vcGVyYXRvcl9kb21haW4YBSABKAkS", - "GgoSb3BlcmF0b3JfZnVsbF9uYW1lGAYgASgJIjcKGFF1ZXJ5QWN0aXZlQWxh", - "cm1zQ29tbWFuZBIbChNhbGFybV9maWx0ZXJfcHJlZml4GAEgASgJItIBCh1B", - "Y2tub3dsZWRnZUFsYXJtQnlOYW1lQ29tbWFuZBISCgphbGFybV9uYW1lGAEg", - "ASgJEhUKDXByb3ZpZGVyX25hbWUYAiABKAkSEgoKZ3JvdXBfbmFtZRgDIAEo", - "CRIPCgdjb21tZW50GAQgASgJEhUKDW9wZXJhdG9yX3VzZXIYBSABKAkSFQoN", - "b3BlcmF0b3Jfbm9kZRgGIAEoCRIXCg9vcGVyYXRvcl9kb21haW4YByABKAkS", - "GgoSb3BlcmF0b3JfZnVsbF9uYW1lGAggASgJIkUKFlVuc3Vic2NyaWJlQnVs", - "a0NvbW1hbmQSFQoNc2VydmVyX2hhbmRsZRgBIAEoBRIUCgxpdGVtX2hhbmRs", - "ZXMYAiADKAUiHgoLUGluZ0NvbW1hbmQSDwoHbWVzc2FnZRgBIAEoCSIYChZH", - "ZXRTZXNzaW9uU3RhdGVDb21tYW5kIhYKFEdldFdvcmtlckluZm9Db21tYW5k", - "IigKEkRyYWluRXZlbnRzQ29tbWFuZBISCgptYXhfZXZlbnRzGAEgASgNIkgK", - "FVNodXRkb3duV29ya2VyQ29tbWFuZBIvCgxncmFjZV9wZXJpb2QYASABKAsy", - "GS5nb29nbGUucHJvdG9idWYuRHVyYXRpb24izwwKDk14Q29tbWFuZFJlcGx5", - "EhIKCnNlc3Npb25faWQYASABKAkSFgoOY29ycmVsYXRpb25faWQYAiABKAkS", - "MAoEa2luZBgDIAEoDjIiLm14YWNjZXNzX2dhdGV3YXkudjEuTXhDb21tYW5k", - "S2luZBI8Cg9wcm90b2NvbF9zdGF0dXMYBCABKAsyIy5teGFjY2Vzc19nYXRl", - "d2F5LnYxLlByb3RvY29sU3RhdHVzEhQKB2hyZXN1bHQYBSABKAVIAYgBARIy", - "CgxyZXR1cm5fdmFsdWUYBiABKAsyHC5teGFjY2Vzc19nYXRld2F5LnYxLk14", - "VmFsdWUSNAoIc3RhdHVzZXMYByADKAsyIi5teGFjY2Vzc19nYXRld2F5LnYx", - "Lk14U3RhdHVzUHJveHkSGgoSZGlhZ25vc3RpY19tZXNzYWdlGAggASgJEjYK", - "CHJlZ2lzdGVyGBQgASgLMiIubXhhY2Nlc3NfZ2F0ZXdheS52MS5SZWdpc3Rl", - "clJlcGx5SAASNQoIYWRkX2l0ZW0YFSABKAsyIS5teGFjY2Vzc19nYXRld2F5", - "LnYxLkFkZEl0ZW1SZXBseUgAEjcKCWFkZF9pdGVtMhgWIAEoCzIiLm14YWNj", - "ZXNzX2dhdGV3YXkudjEuQWRkSXRlbTJSZXBseUgAEkYKEWFkZF9idWZmZXJl", - "ZF9pdGVtGBcgASgLMikubXhhY2Nlc3NfZ2F0ZXdheS52MS5BZGRCdWZmZXJl", - "ZEl0ZW1SZXBseUgAEjQKB3N1c3BlbmQYGCABKAsyIS5teGFjY2Vzc19nYXRl", - "d2F5LnYxLlN1c3BlbmRSZXBseUgAEjYKCGFjdGl2YXRlGBkgASgLMiIubXhh", - "Y2Nlc3NfZ2F0ZXdheS52MS5BY3RpdmF0ZVJlcGx5SAASRwoRYXV0aGVudGlj", - "YXRlX3VzZXIYGiABKAsyKi5teGFjY2Vzc19nYXRld2F5LnYxLkF1dGhlbnRp", - "Y2F0ZVVzZXJSZXBseUgAEksKFGFyY2hlc3RyYV91c2VyX3RvX2lkGBsgASgL", - "MisubXhhY2Nlc3NfZ2F0ZXdheS52MS5BcmNoZXN0ckFVc2VyVG9JZFJlcGx5", - "SAASQAoNYWRkX2l0ZW1fYnVsaxgcIAEoCzInLm14YWNjZXNzX2dhdGV3YXku", - "djEuQnVsa1N1YnNjcmliZVJlcGx5SAASQwoQYWR2aXNlX2l0ZW1fYnVsaxgd", - "IAEoCzInLm14YWNjZXNzX2dhdGV3YXkudjEuQnVsa1N1YnNjcmliZVJlcGx5", - "SAASQwoQcmVtb3ZlX2l0ZW1fYnVsaxgeIAEoCzInLm14YWNjZXNzX2dhdGV3", - "YXkudjEuQnVsa1N1YnNjcmliZVJlcGx5SAASRgoTdW5fYWR2aXNlX2l0ZW1f", - "YnVsaxgfIAEoCzInLm14YWNjZXNzX2dhdGV3YXkudjEuQnVsa1N1YnNjcmli", - "ZVJlcGx5SAASQQoOc3Vic2NyaWJlX2J1bGsYICABKAsyJy5teGFjY2Vzc19n", - "YXRld2F5LnYxLkJ1bGtTdWJzY3JpYmVSZXBseUgAEkMKEHVuc3Vic2NyaWJl", - "X2J1bGsYISABKAsyJy5teGFjY2Vzc19nYXRld2F5LnYxLkJ1bGtTdWJzY3Jp", - "YmVSZXBseUgAEk4KEWFja25vd2xlZGdlX2FsYXJtGCIgASgLMjEubXhhY2Nl", - "c3NfZ2F0ZXdheS52MS5BY2tub3dsZWRnZUFsYXJtUmVwbHlQYXlsb2FkSAAS", - "UQoTcXVlcnlfYWN0aXZlX2FsYXJtcxgjIAEoCzIyLm14YWNjZXNzX2dhdGV3", - "YXkudjEuUXVlcnlBY3RpdmVBbGFybXNSZXBseVBheWxvYWRIABI/Cg1zZXNz", - "aW9uX3N0YXRlGGQgASgLMiYubXhhY2Nlc3NfZ2F0ZXdheS52MS5TZXNzaW9u", - "U3RhdGVSZXBseUgAEjsKC3dvcmtlcl9pbmZvGGUgASgLMiQubXhhY2Nlc3Nf", - "Z2F0ZXdheS52MS5Xb3JrZXJJbmZvUmVwbHlIABI9CgxkcmFpbl9ldmVudHMY", - "ZiABKAsyJS5teGFjY2Vzc19nYXRld2F5LnYxLkRyYWluRXZlbnRzUmVwbHlI", - "AEIJCgdwYXlsb2FkQgoKCF9ocmVzdWx0IiYKDVJlZ2lzdGVyUmVwbHkSFQoN", - "c2VydmVyX2hhbmRsZRgBIAEoBSIjCgxBZGRJdGVtUmVwbHkSEwoLaXRlbV9o", - "YW5kbGUYASABKAUiJAoNQWRkSXRlbTJSZXBseRITCgtpdGVtX2hhbmRsZRgB", - "IAEoBSIrChRBZGRCdWZmZXJlZEl0ZW1SZXBseRITCgtpdGVtX2hhbmRsZRgB", - "IAEoBSJCCgxTdXNwZW5kUmVwbHkSMgoGc3RhdHVzGAEgASgLMiIubXhhY2Nl", - "c3NfZ2F0ZXdheS52MS5NeFN0YXR1c1Byb3h5IkMKDUFjdGl2YXRlUmVwbHkS", - "MgoGc3RhdHVzGAEgASgLMiIubXhhY2Nlc3NfZ2F0ZXdheS52MS5NeFN0YXR1", - "c1Byb3h5IigKFUF1dGhlbnRpY2F0ZVVzZXJSZXBseRIPCgd1c2VyX2lkGAEg", - "ASgFIikKFkFyY2hlc3RyQVVzZXJUb0lkUmVwbHkSDwoHdXNlcl9pZBgBIAEo", - "BSKBAQoPU3Vic2NyaWJlUmVzdWx0EhUKDXNlcnZlcl9oYW5kbGUYASABKAUS", - "EwoLdGFnX2FkZHJlc3MYAiABKAkSEwoLaXRlbV9oYW5kbGUYAyABKAUSFgoO", - "d2FzX3N1Y2Nlc3NmdWwYBCABKAgSFQoNZXJyb3JfbWVzc2FnZRgFIAEoCSJL", - "ChJCdWxrU3Vic2NyaWJlUmVwbHkSNQoHcmVzdWx0cxgBIAMoCzIkLm14YWNj", - "ZXNzX2dhdGV3YXkudjEuU3Vic2NyaWJlUmVzdWx0IkUKEVNlc3Npb25TdGF0", - "ZVJlcGx5EjAKBXN0YXRlGAEgASgOMiEubXhhY2Nlc3NfZ2F0ZXdheS52MS5T", - "ZXNzaW9uU3RhdGUidQoPV29ya2VySW5mb1JlcGx5EhkKEXdvcmtlcl9wcm9j", - "ZXNzX2lkGAEgASgFEhYKDndvcmtlcl92ZXJzaW9uGAIgASgJEhcKD214YWNj", - "ZXNzX3Byb2dpZBgDIAEoCRIWCg5teGFjY2Vzc19jbHNpZBgEIAEoCSJAChBE", - "cmFpbkV2ZW50c1JlcGx5EiwKBmV2ZW50cxgBIAMoCzIcLm14YWNjZXNzX2dh", - "dGV3YXkudjEuTXhFdmVudCI1ChxBY2tub3dsZWRnZUFsYXJtUmVwbHlQYXls", - "b2FkEhUKDW5hdGl2ZV9zdGF0dXMYASABKAUiXAodUXVlcnlBY3RpdmVBbGFy", - "bXNSZXBseVBheWxvYWQSOwoJc25hcHNob3RzGAEgAygLMigubXhhY2Nlc3Nf", - "Z2F0ZXdheS52MS5BY3RpdmVBbGFybVNuYXBzaG90IucGCgdNeEV2ZW50EjIK", - "BmZhbWlseRgBIAEoDjIiLm14YWNjZXNzX2dhdGV3YXkudjEuTXhFdmVudEZh", - "bWlseRISCgpzZXNzaW9uX2lkGAIgASgJEhUKDXNlcnZlcl9oYW5kbGUYAyAB", - "KAUSEwoLaXRlbV9oYW5kbGUYBCABKAUSKwoFdmFsdWUYBSABKAsyHC5teGFj", - "Y2Vzc19nYXRld2F5LnYxLk14VmFsdWUSDwoHcXVhbGl0eRgGIAEoBRI0ChBz", - "b3VyY2VfdGltZXN0YW1wGAcgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVz", - "dGFtcBI0CghzdGF0dXNlcxgIIAMoCzIiLm14YWNjZXNzX2dhdGV3YXkudjEu", - "TXhTdGF0dXNQcm94eRIXCg93b3JrZXJfc2VxdWVuY2UYCSABKAQSNAoQd29y", - "a2VyX3RpbWVzdGFtcBgKIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3Rh", - "bXASPQoZZ2F0ZXdheV9yZWNlaXZlX3RpbWVzdGFtcBgLIAEoCzIaLmdvb2ds", - "ZS5wcm90b2J1Zi5UaW1lc3RhbXASFAoHaHJlc3VsdBgMIAEoBUgBiAEBEhIK", - "CnJhd19zdGF0dXMYDSABKAkSQAoOb25fZGF0YV9jaGFuZ2UYFCABKAsyJi5t", - "eGFjY2Vzc19nYXRld2F5LnYxLk9uRGF0YUNoYW5nZUV2ZW50SAASRgoRb25f", - "d3JpdGVfY29tcGxldGUYFSABKAsyKS5teGFjY2Vzc19nYXRld2F5LnYxLk9u", - "V3JpdGVDb21wbGV0ZUV2ZW50SAASSQoSb3BlcmF0aW9uX2NvbXBsZXRlGBYg", - "ASgLMisubXhhY2Nlc3NfZ2F0ZXdheS52MS5PcGVyYXRpb25Db21wbGV0ZUV2", - "ZW50SAASUQoXb25fYnVmZmVyZWRfZGF0YV9jaGFuZ2UYFyABKAsyLi5teGFj", - "Y2Vzc19nYXRld2F5LnYxLk9uQnVmZmVyZWREYXRhQ2hhbmdlRXZlbnRIABJK", - "ChNvbl9hbGFybV90cmFuc2l0aW9uGBggASgLMisubXhhY2Nlc3NfZ2F0ZXdh", - "eS52MS5PbkFsYXJtVHJhbnNpdGlvbkV2ZW50SABCBgoEYm9keUIKCghfaHJl", - "c3VsdCITChFPbkRhdGFDaGFuZ2VFdmVudCIWChRPbldyaXRlQ29tcGxldGVF", - "dmVudCIYChZPcGVyYXRpb25Db21wbGV0ZUV2ZW50ItQBChlPbkJ1ZmZlcmVk", - "RGF0YUNoYW5nZUV2ZW50EjIKCWRhdGFfdHlwZRgBIAEoDjIfLm14YWNjZXNz", - "X2dhdGV3YXkudjEuTXhEYXRhVHlwZRI0Cg5xdWFsaXR5X3ZhbHVlcxgCIAEo", - "CzIcLm14YWNjZXNzX2dhdGV3YXkudjEuTXhBcnJheRI2ChB0aW1lc3RhbXBf", - "dmFsdWVzGAMgASgLMhwubXhhY2Nlc3NfZ2F0ZXdheS52MS5NeEFycmF5EhUK", - "DXJhd19kYXRhX3R5cGUYBCABKAUi/QMKFk9uQWxhcm1UcmFuc2l0aW9uRXZl", - "bnQSHAoUYWxhcm1fZnVsbF9yZWZlcmVuY2UYASABKAkSHwoXc291cmNlX29i", - "amVjdF9yZWZlcmVuY2UYAiABKAkSFwoPYWxhcm1fdHlwZV9uYW1lGAMgASgJ", - "EkEKD3RyYW5zaXRpb25fa2luZBgEIAEoDjIoLm14YWNjZXNzX2dhdGV3YXku", - "djEuQWxhcm1UcmFuc2l0aW9uS2luZBIQCghzZXZlcml0eRgFIAEoBRI8Chhv", - "cmlnaW5hbF9yYWlzZV90aW1lc3RhbXAYBiABKAsyGi5nb29nbGUucHJvdG9i", - "dWYuVGltZXN0YW1wEjgKFHRyYW5zaXRpb25fdGltZXN0YW1wGAcgASgLMhou", - "Z29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBIVCg1vcGVyYXRvcl91c2VyGAgg", - "ASgJEhgKEG9wZXJhdG9yX2NvbW1lbnQYCSABKAkSEAoIY2F0ZWdvcnkYCiAB", - "KAkSEwoLZGVzY3JpcHRpb24YCyABKAkSMwoNY3VycmVudF92YWx1ZRgMIAEo", - "CzIcLm14YWNjZXNzX2dhdGV3YXkudjEuTXhWYWx1ZRIxCgtsaW1pdF92YWx1", - "ZRgNIAEoCzIcLm14YWNjZXNzX2dhdGV3YXkudjEuTXhWYWx1ZSL9AwoTQWN0", - "aXZlQWxhcm1TbmFwc2hvdBIcChRhbGFybV9mdWxsX3JlZmVyZW5jZRgBIAEo", - "CRIfChdzb3VyY2Vfb2JqZWN0X3JlZmVyZW5jZRgCIAEoCRIXCg9hbGFybV90", - "eXBlX25hbWUYAyABKAkSEAoIc2V2ZXJpdHkYBCABKAUSPAoYb3JpZ2luYWxf", - "cmFpc2VfdGltZXN0YW1wGAUgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVz", - "dGFtcBI/Cg1jdXJyZW50X3N0YXRlGAYgASgOMigubXhhY2Nlc3NfZ2F0ZXdh", - "eS52MS5BbGFybUNvbmRpdGlvblN0YXRlEhAKCGNhdGVnb3J5GAcgASgJEhMK", - "C2Rlc2NyaXB0aW9uGAggASgJEj0KGWxhc3RfdHJhbnNpdGlvbl90aW1lc3Rh", - "bXAYCSABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEhUKDW9wZXJh", - "dG9yX3VzZXIYCiABKAkSGAoQb3BlcmF0b3JfY29tbWVudBgLIAEoCRIzCg1j", - "dXJyZW50X3ZhbHVlGAwgASgLMhwubXhhY2Nlc3NfZ2F0ZXdheS52MS5NeFZh", - "bHVlEjEKC2xpbWl0X3ZhbHVlGA0gASgLMhwubXhhY2Nlc3NfZ2F0ZXdheS52", - "MS5NeFZhbHVlIpIBChdBY2tub3dsZWRnZUFsYXJtUmVxdWVzdBISCgpzZXNz", - "aW9uX2lkGAEgASgJEh0KFWNsaWVudF9jb3JyZWxhdGlvbl9pZBgCIAEoCRIc", - "ChRhbGFybV9mdWxsX3JlZmVyZW5jZRgDIAEoCRIPCgdjb21tZW50GAQgASgJ", - "EhUKDW9wZXJhdG9yX3VzZXIYBSABKAki8wEKFUFja25vd2xlZGdlQWxhcm1S", - "ZXBseRISCgpzZXNzaW9uX2lkGAEgASgJEhYKDmNvcnJlbGF0aW9uX2lkGAIg", - "ASgJEjwKD3Byb3RvY29sX3N0YXR1cxgDIAEoCzIjLm14YWNjZXNzX2dhdGV3", - "YXkudjEuUHJvdG9jb2xTdGF0dXMSFAoHaHJlc3VsdBgEIAEoBUgAiAEBEjIK", - "BnN0YXR1cxgFIAEoCzIiLm14YWNjZXNzX2dhdGV3YXkudjEuTXhTdGF0dXNQ", - "cm94eRIaChJkaWFnbm9zdGljX21lc3NhZ2UYBiABKAlCCgoIX2hyZXN1bHQi", - "agoYUXVlcnlBY3RpdmVBbGFybXNSZXF1ZXN0EhIKCnNlc3Npb25faWQYASAB", - "KAkSHQoVY2xpZW50X2NvcnJlbGF0aW9uX2lkGAIgASgJEhsKE2FsYXJtX2Zp", - "bHRlcl9wcmVmaXgYAyABKAki6wEKDU14U3RhdHVzUHJveHkSDwoHc3VjY2Vz", - "cxgBIAEoBRI3CghjYXRlZ29yeRgCIAEoDjIlLm14YWNjZXNzX2dhdGV3YXku", - "djEuTXhTdGF0dXNDYXRlZ29yeRI4CgtkZXRlY3RlZF9ieRgDIAEoDjIjLm14", - "YWNjZXNzX2dhdGV3YXkudjEuTXhTdGF0dXNTb3VyY2USDgoGZGV0YWlsGAQg", - "ASgFEhQKDHJhd19jYXRlZ29yeRgFIAEoBRIXCg9yYXdfZGV0ZWN0ZWRfYnkY", - "BiABKAUSFwoPZGlhZ25vc3RpY190ZXh0GAcgASgJIqcDCgdNeFZhbHVlEjIK", - "CWRhdGFfdHlwZRgBIAEoDjIfLm14YWNjZXNzX2dhdGV3YXkudjEuTXhEYXRh", - "VHlwZRIUCgx2YXJpYW50X3R5cGUYAiABKAkSDwoHaXNfbnVsbBgDIAEoCBIW", - "Cg5yYXdfZGlhZ25vc3RpYxgEIAEoCRIVCg1yYXdfZGF0YV90eXBlGAUgASgF", - "EhQKCmJvb2xfdmFsdWUYCiABKAhIABIVCgtpbnQzMl92YWx1ZRgLIAEoBUgA", - "EhUKC2ludDY0X3ZhbHVlGAwgASgDSAASFQoLZmxvYXRfdmFsdWUYDSABKAJI", - "ABIWCgxkb3VibGVfdmFsdWUYDiABKAFIABIWCgxzdHJpbmdfdmFsdWUYDyAB", - "KAlIABI1Cg90aW1lc3RhbXBfdmFsdWUYECABKAsyGi5nb29nbGUucHJvdG9i", - "dWYuVGltZXN0YW1wSAASMwoLYXJyYXlfdmFsdWUYESABKAsyHC5teGFjY2Vz", - "c19nYXRld2F5LnYxLk14QXJyYXlIABITCglyYXdfdmFsdWUYEiABKAxIAEIG", - "CgRraW5kIv4ECgdNeEFycmF5EjoKEWVsZW1lbnRfZGF0YV90eXBlGAEgASgO", - "Mh8ubXhhY2Nlc3NfZ2F0ZXdheS52MS5NeERhdGFUeXBlEhQKDHZhcmlhbnRf", - "dHlwZRgCIAEoCRISCgpkaW1lbnNpb25zGAMgAygNEhYKDnJhd19kaWFnbm9z", - "dGljGAQgASgJEh0KFXJhd19lbGVtZW50X2RhdGFfdHlwZRgFIAEoBRI1Cgti", - "b29sX3ZhbHVlcxgKIAEoCzIeLm14YWNjZXNzX2dhdGV3YXkudjEuQm9vbEFy", - "cmF5SAASNwoMaW50MzJfdmFsdWVzGAsgASgLMh8ubXhhY2Nlc3NfZ2F0ZXdh", - "eS52MS5JbnQzMkFycmF5SAASNwoMaW50NjRfdmFsdWVzGAwgASgLMh8ubXhh", - "Y2Nlc3NfZ2F0ZXdheS52MS5JbnQ2NEFycmF5SAASNwoMZmxvYXRfdmFsdWVz", - "GA0gASgLMh8ubXhhY2Nlc3NfZ2F0ZXdheS52MS5GbG9hdEFycmF5SAASOQoN", - "ZG91YmxlX3ZhbHVlcxgOIAEoCzIgLm14YWNjZXNzX2dhdGV3YXkudjEuRG91", - "YmxlQXJyYXlIABI5Cg1zdHJpbmdfdmFsdWVzGA8gASgLMiAubXhhY2Nlc3Nf", - "Z2F0ZXdheS52MS5TdHJpbmdBcnJheUgAEj8KEHRpbWVzdGFtcF92YWx1ZXMY", - "ECABKAsyIy5teGFjY2Vzc19nYXRld2F5LnYxLlRpbWVzdGFtcEFycmF5SAAS", - "MwoKcmF3X3ZhbHVlcxgRIAEoCzIdLm14YWNjZXNzX2dhdGV3YXkudjEuUmF3", - "QXJyYXlIAEIICgZ2YWx1ZXMiGwoJQm9vbEFycmF5Eg4KBnZhbHVlcxgBIAMo", - "CCIcCgpJbnQzMkFycmF5Eg4KBnZhbHVlcxgBIAMoBSIcCgpJbnQ2NEFycmF5", - "Eg4KBnZhbHVlcxgBIAMoAyIcCgpGbG9hdEFycmF5Eg4KBnZhbHVlcxgBIAMo", - "AiIdCgtEb3VibGVBcnJheRIOCgZ2YWx1ZXMYASADKAEiHQoLU3RyaW5nQXJy", - "YXkSDgoGdmFsdWVzGAEgAygJIjwKDlRpbWVzdGFtcEFycmF5EioKBnZhbHVl", - "cxgBIAMoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXAiGgoIUmF3QXJy", - "YXkSDgoGdmFsdWVzGAEgAygMIlgKDlByb3RvY29sU3RhdHVzEjUKBGNvZGUY", - "ASABKA4yJy5teGFjY2Vzc19nYXRld2F5LnYxLlByb3RvY29sU3RhdHVzQ29k", - "ZRIPCgdtZXNzYWdlGAIgASgJKu4JCg1NeENvbW1hbmRLaW5kEh8KG01YX0NP", - "TU1BTkRfS0lORF9VTlNQRUNJRklFRBAAEhwKGE1YX0NPTU1BTkRfS0lORF9S", - "RUdJU1RFUhABEh4KGk1YX0NPTU1BTkRfS0lORF9VTlJFR0lTVEVSEAISHAoY", - "TVhfQ09NTUFORF9LSU5EX0FERF9JVEVNEAMSHQoZTVhfQ09NTUFORF9LSU5E", - "X0FERF9JVEVNMhAEEh8KG01YX0NPTU1BTkRfS0lORF9SRU1PVkVfSVRFTRAF", - "EhoKFk1YX0NPTU1BTkRfS0lORF9BRFZJU0UQBhIdChlNWF9DT01NQU5EX0tJ", - "TkRfVU5fQURWSVNFEAcSJgoiTVhfQ09NTUFORF9LSU5EX0FEVklTRV9TVVBF", - "UlZJU09SWRAIEiUKIU1YX0NPTU1BTkRfS0lORF9BRERfQlVGRkVSRURfSVRF", - "TRAJEjAKLE1YX0NPTU1BTkRfS0lORF9TRVRfQlVGRkVSRURfVVBEQVRFX0lO", - "VEVSVkFMEAoSGwoXTVhfQ09NTUFORF9LSU5EX1NVU1BFTkQQCxIcChhNWF9D", - "T01NQU5EX0tJTkRfQUNUSVZBVEUQDBIZChVNWF9DT01NQU5EX0tJTkRfV1JJ", - "VEUQDRIaChZNWF9DT01NQU5EX0tJTkRfV1JJVEUyEA4SIQodTVhfQ09NTUFO", - "RF9LSU5EX1dSSVRFX1NFQ1VSRUQQDxIiCh5NWF9DT01NQU5EX0tJTkRfV1JJ", - "VEVfU0VDVVJFRDIQEBIlCiFNWF9DT01NQU5EX0tJTkRfQVVUSEVOVElDQVRF", - "X1VTRVIQERIoCiRNWF9DT01NQU5EX0tJTkRfQVJDSEVTVFJBX1VTRVJfVE9f", - "SUQQEhIhCh1NWF9DT01NQU5EX0tJTkRfQUREX0lURU1fQlVMSxATEiQKIE1Y", - "X0NPTU1BTkRfS0lORF9BRFZJU0VfSVRFTV9CVUxLEBQSJAogTVhfQ09NTUFO", - "RF9LSU5EX1JFTU9WRV9JVEVNX0JVTEsQFRInCiNNWF9DT01NQU5EX0tJTkRf", - "VU5fQURWSVNFX0lURU1fQlVMSxAWEiIKHk1YX0NPTU1BTkRfS0lORF9TVUJT", - "Q1JJQkVfQlVMSxAXEiQKIE1YX0NPTU1BTkRfS0lORF9VTlNVQlNDUklCRV9C", - "VUxLEBgSJAogTVhfQ09NTUFORF9LSU5EX1NVQlNDUklCRV9BTEFSTVMQGRIm", - "CiJNWF9DT01NQU5EX0tJTkRfVU5TVUJTQ1JJQkVfQUxBUk1TEBoSJQohTVhf", - "Q09NTUFORF9LSU5EX0FDS05PV0xFREdFX0FMQVJNEBsSJwojTVhfQ09NTUFO", - "RF9LSU5EX1FVRVJZX0FDVElWRV9BTEFSTVMQHBItCilNWF9DT01NQU5EX0tJ", - "TkRfQUNLTk9XTEVER0VfQUxBUk1fQllfTkFNRRAdEhgKFE1YX0NPTU1BTkRf", - "S0lORF9QSU5HEGQSJQohTVhfQ09NTUFORF9LSU5EX0dFVF9TRVNTSU9OX1NU", - "QVRFEGUSIwofTVhfQ09NTUFORF9LSU5EX0dFVF9XT1JLRVJfSU5GTxBmEiAK", - "HE1YX0NPTU1BTkRfS0lORF9EUkFJTl9FVkVOVFMQZxIjCh9NWF9DT01NQU5E", - "X0tJTkRfU0hVVERPV05fV09SS0VSEGgq+QEKDU14RXZlbnRGYW1pbHkSHwob", - "TVhfRVZFTlRfRkFNSUxZX1VOU1BFQ0lGSUVEEAASIgoeTVhfRVZFTlRfRkFN", - "SUxZX09OX0RBVEFfQ0hBTkdFEAESJQohTVhfRVZFTlRfRkFNSUxZX09OX1dS", - "SVRFX0NPTVBMRVRFEAISJgoiTVhfRVZFTlRfRkFNSUxZX09QRVJBVElPTl9D", - "T01QTEVURRADEisKJ01YX0VWRU5UX0ZBTUlMWV9PTl9CVUZGRVJFRF9EQVRB", - "X0NIQU5HRRAEEicKI01YX0VWRU5UX0ZBTUlMWV9PTl9BTEFSTV9UUkFOU0lU", - "SU9OEAUqygEKE0FsYXJtVHJhbnNpdGlvbktpbmQSJQohQUxBUk1fVFJBTlNJ", - "VElPTl9LSU5EX1VOU1BFQ0lGSUVEEAASHwobQUxBUk1fVFJBTlNJVElPTl9L", - "SU5EX1JBSVNFEAESJQohQUxBUk1fVFJBTlNJVElPTl9LSU5EX0FDS05PV0xF", - "REdFEAISHwobQUxBUk1fVFJBTlNJVElPTl9LSU5EX0NMRUFSEAMSIwofQUxB", - "Uk1fVFJBTlNJVElPTl9LSU5EX1JFVFJJR0dFUhAEKqoBChNBbGFybUNvbmRp", - "dGlvblN0YXRlEiUKIUFMQVJNX0NPTkRJVElPTl9TVEFURV9VTlNQRUNJRklF", - "RBAAEiAKHEFMQVJNX0NPTkRJVElPTl9TVEFURV9BQ1RJVkUQARImCiJBTEFS", - "TV9DT05ESVRJT05fU1RBVEVfQUNUSVZFX0FDS0VEEAISIgoeQUxBUk1fQ09O", - "RElUSU9OX1NUQVRFX0lOQUNUSVZFEAMqpQMKEE14U3RhdHVzQ2F0ZWdvcnkS", - "IgoeTVhfU1RBVFVTX0NBVEVHT1JZX1VOU1BFQ0lGSUVEEAASHgoaTVhfU1RB", - "VFVTX0NBVEVHT1JZX1VOS05PV04QARIZChVNWF9TVEFUVVNfQ0FURUdPUllf", - "T0sQAhIeChpNWF9TVEFUVVNfQ0FURUdPUllfUEVORElORxADEh4KGk1YX1NU", - "QVRVU19DQVRFR09SWV9XQVJOSU5HEAQSKgomTVhfU1RBVFVTX0NBVEVHT1JZ", - "X0NPTU1VTklDQVRJT05fRVJST1IQBRIqCiZNWF9TVEFUVVNfQ0FURUdPUllf", - "Q09ORklHVVJBVElPTl9FUlJPUhAGEigKJE1YX1NUQVRVU19DQVRFR09SWV9P", - "UEVSQVRJT05BTF9FUlJPUhAHEiUKIU1YX1NUQVRVU19DQVRFR09SWV9TRUNV", - "UklUWV9FUlJPUhAIEiUKIU1YX1NUQVRVU19DQVRFR09SWV9TT0ZUV0FSRV9F", - "UlJPUhAJEiIKHk1YX1NUQVRVU19DQVRFR09SWV9PVEhFUl9FUlJPUhAKKsoC", - "Cg5NeFN0YXR1c1NvdXJjZRIgChxNWF9TVEFUVVNfU09VUkNFX1VOU1BFQ0lG", - "SUVEEAASHAoYTVhfU1RBVFVTX1NPVVJDRV9VTktOT1dOEAESIwofTVhfU1RB", - "VFVTX1NPVVJDRV9SRVFVRVNUSU5HX0xNWBACEiMKH01YX1NUQVRVU19TT1VS", - "Q0VfUkVTUE9ORElOR19MTVgQAxIjCh9NWF9TVEFUVVNfU09VUkNFX1JFUVVF", - "U1RJTkdfTk1YEAQSIwofTVhfU1RBVFVTX1NPVVJDRV9SRVNQT05ESU5HX05N", - "WBAFEjEKLU1YX1NUQVRVU19TT1VSQ0VfUkVRVUVTVElOR19BVVRPTUFUSU9O", - "X09CSkVDVBAGEjEKLU1YX1NUQVRVU19TT1VSQ0VfUkVTUE9ORElOR19BVVRP", - "TUFUSU9OX09CSkVDVBAHKt0ECgpNeERhdGFUeXBlEhwKGE1YX0RBVEFfVFlQ", - "RV9VTlNQRUNJRklFRBAAEhgKFE1YX0RBVEFfVFlQRV9VTktOT1dOEAESGAoU", - "TVhfREFUQV9UWVBFX05PX0RBVEEQAhIYChRNWF9EQVRBX1RZUEVfQk9PTEVB", - "ThADEhgKFE1YX0RBVEFfVFlQRV9JTlRFR0VSEAQSFgoSTVhfREFUQV9UWVBF", - "X0ZMT0FUEAUSFwoTTVhfREFUQV9UWVBFX0RPVUJMRRAGEhcKE01YX0RBVEFf", - "VFlQRV9TVFJJTkcQBxIVChFNWF9EQVRBX1RZUEVfVElNRRAIEh0KGU1YX0RB", - "VEFfVFlQRV9FTEFQU0VEX1RJTUUQCRIfChtNWF9EQVRBX1RZUEVfUkVGRVJF", - "TkNFX1RZUEUQChIcChhNWF9EQVRBX1RZUEVfU1RBVFVTX1RZUEUQCxIVChFN", - "WF9EQVRBX1RZUEVfRU5VTRAMEi0KKU1YX0RBVEFfVFlQRV9TRUNVUklUWV9D", - "TEFTU0lGSUNBVElPTl9FTlVNEA0SIgoeTVhfREFUQV9UWVBFX0RBVEFfUVVB", - "TElUWV9UWVBFEA4SHwobTVhfREFUQV9UWVBFX1FVQUxJRklFRF9FTlVNEA8S", - "IQodTVhfREFUQV9UWVBFX1FVQUxJRklFRF9TVFJVQ1QQEBIpCiVNWF9EQVRB", - "X1RZUEVfSU5URVJOQVRJT05BTElaRURfU1RSSU5HEBESGwoXTVhfREFUQV9U", - "WVBFX0JJR19TVFJJTkcQEhIUChBNWF9EQVRBX1RZUEVfRU5EEBMqowMKElBy", - "b3RvY29sU3RhdHVzQ29kZRIkCiBQUk9UT0NPTF9TVEFUVVNfQ09ERV9VTlNQ", - "RUNJRklFRBAAEhsKF1BST1RPQ09MX1NUQVRVU19DT0RFX09LEAESKAokUFJP", - "VE9DT0xfU1RBVFVTX0NPREVfSU5WQUxJRF9SRVFVRVNUEAISKgomUFJPVE9D", - "T0xfU1RBVFVTX0NPREVfU0VTU0lPTl9OT1RfRk9VTkQQAxIqCiZQUk9UT0NP", - "TF9TVEFUVVNfQ09ERV9TRVNTSU9OX05PVF9SRUFEWRAEEisKJ1BST1RPQ09M", - "X1NUQVRVU19DT0RFX1dPUktFUl9VTkFWQUlMQUJMRRAFEiAKHFBST1RPQ09M", - "X1NUQVRVU19DT0RFX1RJTUVPVVQQBhIhCh1QUk9UT0NPTF9TVEFUVVNfQ09E", - "RV9DQU5DRUxFRBAHEisKJ1BST1RPQ09MX1NUQVRVU19DT0RFX1BST1RPQ09M", - "X1ZJT0xBVElPThAIEikKJVBST1RPQ09MX1NUQVRVU19DT0RFX01YQUNDRVNT", - "X0ZBSUxVUkUQCSq/AgoMU2Vzc2lvblN0YXRlEh0KGVNFU1NJT05fU1RBVEVf", - "VU5TUEVDSUZJRUQQABIaChZTRVNTSU9OX1NUQVRFX0NSRUFUSU5HEAESIQod", - "U0VTU0lPTl9TVEFURV9TVEFSVElOR19XT1JLRVIQAhIiCh5TRVNTSU9OX1NU", - "QVRFX1dBSVRJTkdfRk9SX1BJUEUQAxIdChlTRVNTSU9OX1NUQVRFX0hBTkRT", - "SEFLSU5HEAQSJQohU0VTU0lPTl9TVEFURV9JTklUSUFMSVpJTkdfV09SS0VS", - "EAUSFwoTU0VTU0lPTl9TVEFURV9SRUFEWRAGEhkKFVNFU1NJT05fU1RBVEVf", - "Q0xPU0lORxAHEhgKFFNFU1NJT05fU1RBVEVfQ0xPU0VEEAgSGQoVU0VTU0lP", - "Tl9TVEFURV9GQVVMVEVEEAky4AQKD014QWNjZXNzR2F0ZXdheRJdCgtPcGVu", - "U2Vzc2lvbhInLm14YWNjZXNzX2dhdGV3YXkudjEuT3BlblNlc3Npb25SZXF1", - "ZXN0GiUubXhhY2Nlc3NfZ2F0ZXdheS52MS5PcGVuU2Vzc2lvblJlcGx5EmAK", - "DENsb3NlU2Vzc2lvbhIoLm14YWNjZXNzX2dhdGV3YXkudjEuQ2xvc2VTZXNz", - "aW9uUmVxdWVzdBomLm14YWNjZXNzX2dhdGV3YXkudjEuQ2xvc2VTZXNzaW9u", - "UmVwbHkSVAoGSW52b2tlEiUubXhhY2Nlc3NfZ2F0ZXdheS52MS5NeENvbW1h", - "bmRSZXF1ZXN0GiMubXhhY2Nlc3NfZ2F0ZXdheS52MS5NeENvbW1hbmRSZXBs", - "eRJYCgxTdHJlYW1FdmVudHMSKC5teGFjY2Vzc19nYXRld2F5LnYxLlN0cmVh", - "bUV2ZW50c1JlcXVlc3QaHC5teGFjY2Vzc19nYXRld2F5LnYxLk14RXZlbnQw", - "ARJsChBBY2tub3dsZWRnZUFsYXJtEiwubXhhY2Nlc3NfZ2F0ZXdheS52MS5B", - "Y2tub3dsZWRnZUFsYXJtUmVxdWVzdBoqLm14YWNjZXNzX2dhdGV3YXkudjEu", - "QWNrbm93bGVkZ2VBbGFybVJlcGx5Em4KEVF1ZXJ5QWN0aXZlQWxhcm1zEi0u", - "bXhhY2Nlc3NfZ2F0ZXdheS52MS5RdWVyeUFjdGl2ZUFsYXJtc1JlcXVlc3Qa", - "KC5teGFjY2Vzc19nYXRld2F5LnYxLkFjdGl2ZUFsYXJtU25hcHNob3QwAUIc", - "qgIZTXhHYXRld2F5LkNvbnRyYWN0cy5Qcm90b2IGcHJvdG8z")); + "YXJtQnlOYW1lQ29tbWFuZEgAEjsKCndyaXRlX2J1bGsYJyABKAsyJS5teGFj", + "Y2Vzc19nYXRld2F5LnYxLldyaXRlQnVsa0NvbW1hbmRIABI9Cgt3cml0ZTJf", + "YnVsaxgoIAEoCzImLm14YWNjZXNzX2dhdGV3YXkudjEuV3JpdGUyQnVsa0Nv", + "bW1hbmRIABJKChJ3cml0ZV9zZWN1cmVkX2J1bGsYKSABKAsyLC5teGFjY2Vz", + "c19nYXRld2F5LnYxLldyaXRlU2VjdXJlZEJ1bGtDb21tYW5kSAASTAoTd3Jp", + "dGVfc2VjdXJlZDJfYnVsaxgqIAEoCzItLm14YWNjZXNzX2dhdGV3YXkudjEu", + "V3JpdGVTZWN1cmVkMkJ1bGtDb21tYW5kSAASOQoJcmVhZF9idWxrGCsgASgL", + "MiQubXhhY2Nlc3NfZ2F0ZXdheS52MS5SZWFkQnVsa0NvbW1hbmRIABIwCgRw", + "aW5nGGQgASgLMiAubXhhY2Nlc3NfZ2F0ZXdheS52MS5QaW5nQ29tbWFuZEgA", + "EkgKEWdldF9zZXNzaW9uX3N0YXRlGGUgASgLMisubXhhY2Nlc3NfZ2F0ZXdh", + "eS52MS5HZXRTZXNzaW9uU3RhdGVDb21tYW5kSAASRAoPZ2V0X3dvcmtlcl9p", + "bmZvGGYgASgLMikubXhhY2Nlc3NfZ2F0ZXdheS52MS5HZXRXb3JrZXJJbmZv", + "Q29tbWFuZEgAEj8KDGRyYWluX2V2ZW50cxhnIAEoCzInLm14YWNjZXNzX2dh", + "dGV3YXkudjEuRHJhaW5FdmVudHNDb21tYW5kSAASRQoPc2h1dGRvd25fd29y", + "a2VyGGggASgLMioubXhhY2Nlc3NfZ2F0ZXdheS52MS5TaHV0ZG93bldvcmtl", + "ckNvbW1hbmRIAEIJCgdwYXlsb2FkIiYKD1JlZ2lzdGVyQ29tbWFuZBITCgtj", + "bGllbnRfbmFtZRgBIAEoCSIqChFVbnJlZ2lzdGVyQ29tbWFuZBIVCg1zZXJ2", + "ZXJfaGFuZGxlGAEgASgFIkAKDkFkZEl0ZW1Db21tYW5kEhUKDXNlcnZlcl9o", + "YW5kbGUYASABKAUSFwoPaXRlbV9kZWZpbml0aW9uGAIgASgJIlcKD0FkZEl0", + "ZW0yQ29tbWFuZBIVCg1zZXJ2ZXJfaGFuZGxlGAEgASgFEhcKD2l0ZW1fZGVm", + "aW5pdGlvbhgCIAEoCRIUCgxpdGVtX2NvbnRleHQYAyABKAkiPwoRUmVtb3Zl", + "SXRlbUNvbW1hbmQSFQoNc2VydmVyX2hhbmRsZRgBIAEoBRITCgtpdGVtX2hh", + "bmRsZRgCIAEoBSI7Cg1BZHZpc2VDb21tYW5kEhUKDXNlcnZlcl9oYW5kbGUY", + "ASABKAUSEwoLaXRlbV9oYW5kbGUYAiABKAUiPQoPVW5BZHZpc2VDb21tYW5k", + "EhUKDXNlcnZlcl9oYW5kbGUYASABKAUSEwoLaXRlbV9oYW5kbGUYAiABKAUi", + "RgoYQWR2aXNlU3VwZXJ2aXNvcnlDb21tYW5kEhUKDXNlcnZlcl9oYW5kbGUY", + "ASABKAUSEwoLaXRlbV9oYW5kbGUYAiABKAUiXgoWQWRkQnVmZmVyZWRJdGVt", + "Q29tbWFuZBIVCg1zZXJ2ZXJfaGFuZGxlGAEgASgFEhcKD2l0ZW1fZGVmaW5p", + "dGlvbhgCIAEoCRIUCgxpdGVtX2NvbnRleHQYAyABKAkiXwogU2V0QnVmZmVy", + "ZWRVcGRhdGVJbnRlcnZhbENvbW1hbmQSFQoNc2VydmVyX2hhbmRsZRgBIAEo", + "BRIkChx1cGRhdGVfaW50ZXJ2YWxfbWlsbGlzZWNvbmRzGAIgASgFIjwKDlN1", + "c3BlbmRDb21tYW5kEhUKDXNlcnZlcl9oYW5kbGUYASABKAUSEwoLaXRlbV9o", + "YW5kbGUYAiABKAUiPQoPQWN0aXZhdGVDb21tYW5kEhUKDXNlcnZlcl9oYW5k", + "bGUYASABKAUSEwoLaXRlbV9oYW5kbGUYAiABKAUieAoMV3JpdGVDb21tYW5k", + "EhUKDXNlcnZlcl9oYW5kbGUYASABKAUSEwoLaXRlbV9oYW5kbGUYAiABKAUS", + "KwoFdmFsdWUYAyABKAsyHC5teGFjY2Vzc19nYXRld2F5LnYxLk14VmFsdWUS", + "DwoHdXNlcl9pZBgEIAEoBSKwAQoNV3JpdGUyQ29tbWFuZBIVCg1zZXJ2ZXJf", + "aGFuZGxlGAEgASgFEhMKC2l0ZW1faGFuZGxlGAIgASgFEisKBXZhbHVlGAMg", + "ASgLMhwubXhhY2Nlc3NfZ2F0ZXdheS52MS5NeFZhbHVlEjUKD3RpbWVzdGFt", + "cF92YWx1ZRgEIAEoCzIcLm14YWNjZXNzX2dhdGV3YXkudjEuTXhWYWx1ZRIP", + "Cgd1c2VyX2lkGAUgASgFIqEBChNXcml0ZVNlY3VyZWRDb21tYW5kEhUKDXNl", + "cnZlcl9oYW5kbGUYASABKAUSEwoLaXRlbV9oYW5kbGUYAiABKAUSFwoPY3Vy", + "cmVudF91c2VyX2lkGAMgASgFEhgKEHZlcmlmaWVyX3VzZXJfaWQYBCABKAUS", + "KwoFdmFsdWUYBSABKAsyHC5teGFjY2Vzc19nYXRld2F5LnYxLk14VmFsdWUi", + "2QEKFFdyaXRlU2VjdXJlZDJDb21tYW5kEhUKDXNlcnZlcl9oYW5kbGUYASAB", + "KAUSEwoLaXRlbV9oYW5kbGUYAiABKAUSFwoPY3VycmVudF91c2VyX2lkGAMg", + "ASgFEhgKEHZlcmlmaWVyX3VzZXJfaWQYBCABKAUSKwoFdmFsdWUYBSABKAsy", + "HC5teGFjY2Vzc19nYXRld2F5LnYxLk14VmFsdWUSNQoPdGltZXN0YW1wX3Zh", + "bHVlGAYgASgLMhwubXhhY2Nlc3NfZ2F0ZXdheS52MS5NeFZhbHVlImMKF0F1", + "dGhlbnRpY2F0ZVVzZXJDb21tYW5kEhUKDXNlcnZlcl9oYW5kbGUYASABKAUS", + "EwoLdmVyaWZ5X3VzZXIYAiABKAkSHAoUdmVyaWZ5X3VzZXJfcGFzc3dvcmQY", + "AyABKAkiRwoYQXJjaGVzdHJBVXNlclRvSWRDb21tYW5kEhUKDXNlcnZlcl9o", + "YW5kbGUYASABKAUSFAoMdXNlcl9pZF9ndWlkGAIgASgJIkIKEkFkZEl0ZW1C", + "dWxrQ29tbWFuZBIVCg1zZXJ2ZXJfaGFuZGxlGAEgASgFEhUKDXRhZ19hZGRy", + "ZXNzZXMYAiADKAkiRAoVQWR2aXNlSXRlbUJ1bGtDb21tYW5kEhUKDXNlcnZl", + "cl9oYW5kbGUYASABKAUSFAoMaXRlbV9oYW5kbGVzGAIgAygFIkQKFVJlbW92", + "ZUl0ZW1CdWxrQ29tbWFuZBIVCg1zZXJ2ZXJfaGFuZGxlGAEgASgFEhQKDGl0", + "ZW1faGFuZGxlcxgCIAMoBSJGChdVbkFkdmlzZUl0ZW1CdWxrQ29tbWFuZBIV", + "Cg1zZXJ2ZXJfaGFuZGxlGAEgASgFEhQKDGl0ZW1faGFuZGxlcxgCIAMoBSJE", + "ChRTdWJzY3JpYmVCdWxrQ29tbWFuZBIVCg1zZXJ2ZXJfaGFuZGxlGAEgASgF", + "EhUKDXRhZ19hZGRyZXNzZXMYAiADKAkiOQoWU3Vic2NyaWJlQWxhcm1zQ29t", + "bWFuZBIfChdzdWJzY3JpcHRpb25fZXhwcmVzc2lvbhgBIAEoCSIaChhVbnN1", + "YnNjcmliZUFsYXJtc0NvbW1hbmQioQEKF0Fja25vd2xlZGdlQWxhcm1Db21t", + "YW5kEhIKCmFsYXJtX2d1aWQYASABKAkSDwoHY29tbWVudBgCIAEoCRIVCg1v", + "cGVyYXRvcl91c2VyGAMgASgJEhUKDW9wZXJhdG9yX25vZGUYBCABKAkSFwoP", + "b3BlcmF0b3JfZG9tYWluGAUgASgJEhoKEm9wZXJhdG9yX2Z1bGxfbmFtZRgG", + "IAEoCSI3ChhRdWVyeUFjdGl2ZUFsYXJtc0NvbW1hbmQSGwoTYWxhcm1fZmls", + "dGVyX3ByZWZpeBgBIAEoCSLSAQodQWNrbm93bGVkZ2VBbGFybUJ5TmFtZUNv", + "bW1hbmQSEgoKYWxhcm1fbmFtZRgBIAEoCRIVCg1wcm92aWRlcl9uYW1lGAIg", + "ASgJEhIKCmdyb3VwX25hbWUYAyABKAkSDwoHY29tbWVudBgEIAEoCRIVCg1v", + "cGVyYXRvcl91c2VyGAUgASgJEhUKDW9wZXJhdG9yX25vZGUYBiABKAkSFwoP", + "b3BlcmF0b3JfZG9tYWluGAcgASgJEhoKEm9wZXJhdG9yX2Z1bGxfbmFtZRgI", + "IAEoCSJFChZVbnN1YnNjcmliZUJ1bGtDb21tYW5kEhUKDXNlcnZlcl9oYW5k", + "bGUYASABKAUSFAoMaXRlbV9oYW5kbGVzGAIgAygFIl8KEFdyaXRlQnVsa0Nv", + "bW1hbmQSFQoNc2VydmVyX2hhbmRsZRgBIAEoBRI0CgdlbnRyaWVzGAIgAygL", + "MiMubXhhY2Nlc3NfZ2F0ZXdheS52MS5Xcml0ZUJ1bGtFbnRyeSJjCg5Xcml0", + "ZUJ1bGtFbnRyeRITCgtpdGVtX2hhbmRsZRgBIAEoBRIrCgV2YWx1ZRgCIAEo", + "CzIcLm14YWNjZXNzX2dhdGV3YXkudjEuTXhWYWx1ZRIPCgd1c2VyX2lkGAMg", + "ASgFImEKEVdyaXRlMkJ1bGtDb21tYW5kEhUKDXNlcnZlcl9oYW5kbGUYASAB", + "KAUSNQoHZW50cmllcxgCIAMoCzIkLm14YWNjZXNzX2dhdGV3YXkudjEuV3Jp", + "dGUyQnVsa0VudHJ5IpsBCg9Xcml0ZTJCdWxrRW50cnkSEwoLaXRlbV9oYW5k", + "bGUYASABKAUSKwoFdmFsdWUYAiABKAsyHC5teGFjY2Vzc19nYXRld2F5LnYx", + "Lk14VmFsdWUSNQoPdGltZXN0YW1wX3ZhbHVlGAMgASgLMhwubXhhY2Nlc3Nf", + "Z2F0ZXdheS52MS5NeFZhbHVlEg8KB3VzZXJfaWQYBCABKAUibQoXV3JpdGVT", + "ZWN1cmVkQnVsa0NvbW1hbmQSFQoNc2VydmVyX2hhbmRsZRgBIAEoBRI7Cgdl", + "bnRyaWVzGAIgAygLMioubXhhY2Nlc3NfZ2F0ZXdheS52MS5Xcml0ZVNlY3Vy", + "ZWRCdWxrRW50cnkijAEKFVdyaXRlU2VjdXJlZEJ1bGtFbnRyeRITCgtpdGVt", + "X2hhbmRsZRgBIAEoBRIXCg9jdXJyZW50X3VzZXJfaWQYAiABKAUSGAoQdmVy", + "aWZpZXJfdXNlcl9pZBgDIAEoBRIrCgV2YWx1ZRgEIAEoCzIcLm14YWNjZXNz", + "X2dhdGV3YXkudjEuTXhWYWx1ZSJvChhXcml0ZVNlY3VyZWQyQnVsa0NvbW1h", + "bmQSFQoNc2VydmVyX2hhbmRsZRgBIAEoBRI8CgdlbnRyaWVzGAIgAygLMisu", + "bXhhY2Nlc3NfZ2F0ZXdheS52MS5Xcml0ZVNlY3VyZWQyQnVsa0VudHJ5IsQB", + "ChZXcml0ZVNlY3VyZWQyQnVsa0VudHJ5EhMKC2l0ZW1faGFuZGxlGAEgASgF", + "EhcKD2N1cnJlbnRfdXNlcl9pZBgCIAEoBRIYChB2ZXJpZmllcl91c2VyX2lk", + "GAMgASgFEisKBXZhbHVlGAQgASgLMhwubXhhY2Nlc3NfZ2F0ZXdheS52MS5N", + "eFZhbHVlEjUKD3RpbWVzdGFtcF92YWx1ZRgFIAEoCzIcLm14YWNjZXNzX2dh", + "dGV3YXkudjEuTXhWYWx1ZSJTCg9SZWFkQnVsa0NvbW1hbmQSFQoNc2VydmVy", + "X2hhbmRsZRgBIAEoBRIVCg10YWdfYWRkcmVzc2VzGAIgAygJEhIKCnRpbWVv", + "dXRfbXMYAyABKA0iHgoLUGluZ0NvbW1hbmQSDwoHbWVzc2FnZRgBIAEoCSIY", + "ChZHZXRTZXNzaW9uU3RhdGVDb21tYW5kIhYKFEdldFdvcmtlckluZm9Db21t", + "YW5kIigKEkRyYWluRXZlbnRzQ29tbWFuZBISCgptYXhfZXZlbnRzGAEgASgN", + "IkgKFVNodXRkb3duV29ya2VyQ29tbWFuZBIvCgxncmFjZV9wZXJpb2QYASAB", + "KAsyGS5nb29nbGUucHJvdG9idWYuRHVyYXRpb24ihg8KDk14Q29tbWFuZFJl", + "cGx5EhIKCnNlc3Npb25faWQYASABKAkSFgoOY29ycmVsYXRpb25faWQYAiAB", + "KAkSMAoEa2luZBgDIAEoDjIiLm14YWNjZXNzX2dhdGV3YXkudjEuTXhDb21t", + "YW5kS2luZBI8Cg9wcm90b2NvbF9zdGF0dXMYBCABKAsyIy5teGFjY2Vzc19n", + "YXRld2F5LnYxLlByb3RvY29sU3RhdHVzEhQKB2hyZXN1bHQYBSABKAVIAYgB", + "ARIyCgxyZXR1cm5fdmFsdWUYBiABKAsyHC5teGFjY2Vzc19nYXRld2F5LnYx", + "Lk14VmFsdWUSNAoIc3RhdHVzZXMYByADKAsyIi5teGFjY2Vzc19nYXRld2F5", + "LnYxLk14U3RhdHVzUHJveHkSGgoSZGlhZ25vc3RpY19tZXNzYWdlGAggASgJ", + "EjYKCHJlZ2lzdGVyGBQgASgLMiIubXhhY2Nlc3NfZ2F0ZXdheS52MS5SZWdp", + "c3RlclJlcGx5SAASNQoIYWRkX2l0ZW0YFSABKAsyIS5teGFjY2Vzc19nYXRl", + "d2F5LnYxLkFkZEl0ZW1SZXBseUgAEjcKCWFkZF9pdGVtMhgWIAEoCzIiLm14", + "YWNjZXNzX2dhdGV3YXkudjEuQWRkSXRlbTJSZXBseUgAEkYKEWFkZF9idWZm", + "ZXJlZF9pdGVtGBcgASgLMikubXhhY2Nlc3NfZ2F0ZXdheS52MS5BZGRCdWZm", + "ZXJlZEl0ZW1SZXBseUgAEjQKB3N1c3BlbmQYGCABKAsyIS5teGFjY2Vzc19n", + "YXRld2F5LnYxLlN1c3BlbmRSZXBseUgAEjYKCGFjdGl2YXRlGBkgASgLMiIu", + "bXhhY2Nlc3NfZ2F0ZXdheS52MS5BY3RpdmF0ZVJlcGx5SAASRwoRYXV0aGVu", + "dGljYXRlX3VzZXIYGiABKAsyKi5teGFjY2Vzc19nYXRld2F5LnYxLkF1dGhl", + "bnRpY2F0ZVVzZXJSZXBseUgAEksKFGFyY2hlc3RyYV91c2VyX3RvX2lkGBsg", + "ASgLMisubXhhY2Nlc3NfZ2F0ZXdheS52MS5BcmNoZXN0ckFVc2VyVG9JZFJl", + "cGx5SAASQAoNYWRkX2l0ZW1fYnVsaxgcIAEoCzInLm14YWNjZXNzX2dhdGV3", + "YXkudjEuQnVsa1N1YnNjcmliZVJlcGx5SAASQwoQYWR2aXNlX2l0ZW1fYnVs", + "axgdIAEoCzInLm14YWNjZXNzX2dhdGV3YXkudjEuQnVsa1N1YnNjcmliZVJl", + "cGx5SAASQwoQcmVtb3ZlX2l0ZW1fYnVsaxgeIAEoCzInLm14YWNjZXNzX2dh", + "dGV3YXkudjEuQnVsa1N1YnNjcmliZVJlcGx5SAASRgoTdW5fYWR2aXNlX2l0", + "ZW1fYnVsaxgfIAEoCzInLm14YWNjZXNzX2dhdGV3YXkudjEuQnVsa1N1YnNj", + "cmliZVJlcGx5SAASQQoOc3Vic2NyaWJlX2J1bGsYICABKAsyJy5teGFjY2Vz", + "c19nYXRld2F5LnYxLkJ1bGtTdWJzY3JpYmVSZXBseUgAEkMKEHVuc3Vic2Ny", + "aWJlX2J1bGsYISABKAsyJy5teGFjY2Vzc19nYXRld2F5LnYxLkJ1bGtTdWJz", + "Y3JpYmVSZXBseUgAEk4KEWFja25vd2xlZGdlX2FsYXJtGCIgASgLMjEubXhh", + "Y2Nlc3NfZ2F0ZXdheS52MS5BY2tub3dsZWRnZUFsYXJtUmVwbHlQYXlsb2Fk", + "SAASUQoTcXVlcnlfYWN0aXZlX2FsYXJtcxgjIAEoCzIyLm14YWNjZXNzX2dh", + "dGV3YXkudjEuUXVlcnlBY3RpdmVBbGFybXNSZXBseVBheWxvYWRIABI5Cgp3", + "cml0ZV9idWxrGCQgASgLMiMubXhhY2Nlc3NfZ2F0ZXdheS52MS5CdWxrV3Jp", + "dGVSZXBseUgAEjoKC3dyaXRlMl9idWxrGCUgASgLMiMubXhhY2Nlc3NfZ2F0", + "ZXdheS52MS5CdWxrV3JpdGVSZXBseUgAEkEKEndyaXRlX3NlY3VyZWRfYnVs", + "axgmIAEoCzIjLm14YWNjZXNzX2dhdGV3YXkudjEuQnVsa1dyaXRlUmVwbHlI", + "ABJCChN3cml0ZV9zZWN1cmVkMl9idWxrGCcgASgLMiMubXhhY2Nlc3NfZ2F0", + "ZXdheS52MS5CdWxrV3JpdGVSZXBseUgAEjcKCXJlYWRfYnVsaxgoIAEoCzIi", + "Lm14YWNjZXNzX2dhdGV3YXkudjEuQnVsa1JlYWRSZXBseUgAEj8KDXNlc3Np", + "b25fc3RhdGUYZCABKAsyJi5teGFjY2Vzc19nYXRld2F5LnYxLlNlc3Npb25T", + "dGF0ZVJlcGx5SAASOwoLd29ya2VyX2luZm8YZSABKAsyJC5teGFjY2Vzc19n", + "YXRld2F5LnYxLldvcmtlckluZm9SZXBseUgAEj0KDGRyYWluX2V2ZW50cxhm", + "IAEoCzIlLm14YWNjZXNzX2dhdGV3YXkudjEuRHJhaW5FdmVudHNSZXBseUgA", + "QgkKB3BheWxvYWRCCgoIX2hyZXN1bHQiJgoNUmVnaXN0ZXJSZXBseRIVCg1z", + "ZXJ2ZXJfaGFuZGxlGAEgASgFIiMKDEFkZEl0ZW1SZXBseRITCgtpdGVtX2hh", + "bmRsZRgBIAEoBSIkCg1BZGRJdGVtMlJlcGx5EhMKC2l0ZW1faGFuZGxlGAEg", + "ASgFIisKFEFkZEJ1ZmZlcmVkSXRlbVJlcGx5EhMKC2l0ZW1faGFuZGxlGAEg", + "ASgFIkIKDFN1c3BlbmRSZXBseRIyCgZzdGF0dXMYASABKAsyIi5teGFjY2Vz", + "c19nYXRld2F5LnYxLk14U3RhdHVzUHJveHkiQwoNQWN0aXZhdGVSZXBseRIy", + "CgZzdGF0dXMYASABKAsyIi5teGFjY2Vzc19nYXRld2F5LnYxLk14U3RhdHVz", + "UHJveHkiKAoVQXV0aGVudGljYXRlVXNlclJlcGx5Eg8KB3VzZXJfaWQYASAB", + "KAUiKQoWQXJjaGVzdHJBVXNlclRvSWRSZXBseRIPCgd1c2VyX2lkGAEgASgF", + "IoEBCg9TdWJzY3JpYmVSZXN1bHQSFQoNc2VydmVyX2hhbmRsZRgBIAEoBRIT", + "Cgt0YWdfYWRkcmVzcxgCIAEoCRITCgtpdGVtX2hhbmRsZRgDIAEoBRIWCg53", + "YXNfc3VjY2Vzc2Z1bBgEIAEoCBIVCg1lcnJvcl9tZXNzYWdlGAUgASgJIksK", + "EkJ1bGtTdWJzY3JpYmVSZXBseRI1CgdyZXN1bHRzGAEgAygLMiQubXhhY2Nl", + "c3NfZ2F0ZXdheS52MS5TdWJzY3JpYmVSZXN1bHQixAEKD0J1bGtXcml0ZVJl", + "c3VsdBIVCg1zZXJ2ZXJfaGFuZGxlGAEgASgFEhMKC2l0ZW1faGFuZGxlGAIg", + "ASgFEhYKDndhc19zdWNjZXNzZnVsGAMgASgIEhQKB2hyZXN1bHQYBCABKAVI", + "AIgBARI0CghzdGF0dXNlcxgFIAMoCzIiLm14YWNjZXNzX2dhdGV3YXkudjEu", + "TXhTdGF0dXNQcm94eRIVCg1lcnJvcl9tZXNzYWdlGAYgASgJQgoKCF9ocmVz", + "dWx0IkcKDkJ1bGtXcml0ZVJlcGx5EjUKB3Jlc3VsdHMYASADKAsyJC5teGFj", + "Y2Vzc19nYXRld2F5LnYxLkJ1bGtXcml0ZVJlc3VsdCK+AgoOQnVsa1JlYWRS", + "ZXN1bHQSFQoNc2VydmVyX2hhbmRsZRgBIAEoBRITCgt0YWdfYWRkcmVzcxgC", + "IAEoCRITCgtpdGVtX2hhbmRsZRgDIAEoBRIWCg53YXNfc3VjY2Vzc2Z1bBgE", + "IAEoCBISCgp3YXNfY2FjaGVkGAUgASgIEisKBXZhbHVlGAYgASgLMhwubXhh", + "Y2Nlc3NfZ2F0ZXdheS52MS5NeFZhbHVlEg8KB3F1YWxpdHkYByABKAUSNAoQ", + "c291cmNlX3RpbWVzdGFtcBgIIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1l", + "c3RhbXASNAoIc3RhdHVzZXMYCSADKAsyIi5teGFjY2Vzc19nYXRld2F5LnYx", + "Lk14U3RhdHVzUHJveHkSFQoNZXJyb3JfbWVzc2FnZRgKIAEoCSJFCg1CdWxr", + "UmVhZFJlcGx5EjQKB3Jlc3VsdHMYASADKAsyIy5teGFjY2Vzc19nYXRld2F5", + "LnYxLkJ1bGtSZWFkUmVzdWx0IkUKEVNlc3Npb25TdGF0ZVJlcGx5EjAKBXN0", + "YXRlGAEgASgOMiEubXhhY2Nlc3NfZ2F0ZXdheS52MS5TZXNzaW9uU3RhdGUi", + "dQoPV29ya2VySW5mb1JlcGx5EhkKEXdvcmtlcl9wcm9jZXNzX2lkGAEgASgF", + "EhYKDndvcmtlcl92ZXJzaW9uGAIgASgJEhcKD214YWNjZXNzX3Byb2dpZBgD", + "IAEoCRIWCg5teGFjY2Vzc19jbHNpZBgEIAEoCSJAChBEcmFpbkV2ZW50c1Jl", + "cGx5EiwKBmV2ZW50cxgBIAMoCzIcLm14YWNjZXNzX2dhdGV3YXkudjEuTXhF", + "dmVudCI1ChxBY2tub3dsZWRnZUFsYXJtUmVwbHlQYXlsb2FkEhUKDW5hdGl2", + "ZV9zdGF0dXMYASABKAUiXAodUXVlcnlBY3RpdmVBbGFybXNSZXBseVBheWxv", + "YWQSOwoJc25hcHNob3RzGAEgAygLMigubXhhY2Nlc3NfZ2F0ZXdheS52MS5B", + "Y3RpdmVBbGFybVNuYXBzaG90IucGCgdNeEV2ZW50EjIKBmZhbWlseRgBIAEo", + "DjIiLm14YWNjZXNzX2dhdGV3YXkudjEuTXhFdmVudEZhbWlseRISCgpzZXNz", + "aW9uX2lkGAIgASgJEhUKDXNlcnZlcl9oYW5kbGUYAyABKAUSEwoLaXRlbV9o", + "YW5kbGUYBCABKAUSKwoFdmFsdWUYBSABKAsyHC5teGFjY2Vzc19nYXRld2F5", + "LnYxLk14VmFsdWUSDwoHcXVhbGl0eRgGIAEoBRI0ChBzb3VyY2VfdGltZXN0", + "YW1wGAcgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBI0CghzdGF0", + "dXNlcxgIIAMoCzIiLm14YWNjZXNzX2dhdGV3YXkudjEuTXhTdGF0dXNQcm94", + "eRIXCg93b3JrZXJfc2VxdWVuY2UYCSABKAQSNAoQd29ya2VyX3RpbWVzdGFt", + "cBgKIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXASPQoZZ2F0ZXdh", + "eV9yZWNlaXZlX3RpbWVzdGFtcBgLIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5U", + "aW1lc3RhbXASFAoHaHJlc3VsdBgMIAEoBUgBiAEBEhIKCnJhd19zdGF0dXMY", + "DSABKAkSQAoOb25fZGF0YV9jaGFuZ2UYFCABKAsyJi5teGFjY2Vzc19nYXRl", + "d2F5LnYxLk9uRGF0YUNoYW5nZUV2ZW50SAASRgoRb25fd3JpdGVfY29tcGxl", + "dGUYFSABKAsyKS5teGFjY2Vzc19nYXRld2F5LnYxLk9uV3JpdGVDb21wbGV0", + "ZUV2ZW50SAASSQoSb3BlcmF0aW9uX2NvbXBsZXRlGBYgASgLMisubXhhY2Nl", + "c3NfZ2F0ZXdheS52MS5PcGVyYXRpb25Db21wbGV0ZUV2ZW50SAASUQoXb25f", + "YnVmZmVyZWRfZGF0YV9jaGFuZ2UYFyABKAsyLi5teGFjY2Vzc19nYXRld2F5", + "LnYxLk9uQnVmZmVyZWREYXRhQ2hhbmdlRXZlbnRIABJKChNvbl9hbGFybV90", + "cmFuc2l0aW9uGBggASgLMisubXhhY2Nlc3NfZ2F0ZXdheS52MS5PbkFsYXJt", + "VHJhbnNpdGlvbkV2ZW50SABCBgoEYm9keUIKCghfaHJlc3VsdCITChFPbkRh", + "dGFDaGFuZ2VFdmVudCIWChRPbldyaXRlQ29tcGxldGVFdmVudCIYChZPcGVy", + "YXRpb25Db21wbGV0ZUV2ZW50ItQBChlPbkJ1ZmZlcmVkRGF0YUNoYW5nZUV2", + "ZW50EjIKCWRhdGFfdHlwZRgBIAEoDjIfLm14YWNjZXNzX2dhdGV3YXkudjEu", + "TXhEYXRhVHlwZRI0Cg5xdWFsaXR5X3ZhbHVlcxgCIAEoCzIcLm14YWNjZXNz", + "X2dhdGV3YXkudjEuTXhBcnJheRI2ChB0aW1lc3RhbXBfdmFsdWVzGAMgASgL", + "MhwubXhhY2Nlc3NfZ2F0ZXdheS52MS5NeEFycmF5EhUKDXJhd19kYXRhX3R5", + "cGUYBCABKAUi/QMKFk9uQWxhcm1UcmFuc2l0aW9uRXZlbnQSHAoUYWxhcm1f", + "ZnVsbF9yZWZlcmVuY2UYASABKAkSHwoXc291cmNlX29iamVjdF9yZWZlcmVu", + "Y2UYAiABKAkSFwoPYWxhcm1fdHlwZV9uYW1lGAMgASgJEkEKD3RyYW5zaXRp", + "b25fa2luZBgEIAEoDjIoLm14YWNjZXNzX2dhdGV3YXkudjEuQWxhcm1UcmFu", + "c2l0aW9uS2luZBIQCghzZXZlcml0eRgFIAEoBRI8ChhvcmlnaW5hbF9yYWlz", + "ZV90aW1lc3RhbXAYBiABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1w", + "EjgKFHRyYW5zaXRpb25fdGltZXN0YW1wGAcgASgLMhouZ29vZ2xlLnByb3Rv", + "YnVmLlRpbWVzdGFtcBIVCg1vcGVyYXRvcl91c2VyGAggASgJEhgKEG9wZXJh", + "dG9yX2NvbW1lbnQYCSABKAkSEAoIY2F0ZWdvcnkYCiABKAkSEwoLZGVzY3Jp", + "cHRpb24YCyABKAkSMwoNY3VycmVudF92YWx1ZRgMIAEoCzIcLm14YWNjZXNz", + "X2dhdGV3YXkudjEuTXhWYWx1ZRIxCgtsaW1pdF92YWx1ZRgNIAEoCzIcLm14", + "YWNjZXNzX2dhdGV3YXkudjEuTXhWYWx1ZSL9AwoTQWN0aXZlQWxhcm1TbmFw", + "c2hvdBIcChRhbGFybV9mdWxsX3JlZmVyZW5jZRgBIAEoCRIfChdzb3VyY2Vf", + "b2JqZWN0X3JlZmVyZW5jZRgCIAEoCRIXCg9hbGFybV90eXBlX25hbWUYAyAB", + "KAkSEAoIc2V2ZXJpdHkYBCABKAUSPAoYb3JpZ2luYWxfcmFpc2VfdGltZXN0", + "YW1wGAUgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBI/Cg1jdXJy", + "ZW50X3N0YXRlGAYgASgOMigubXhhY2Nlc3NfZ2F0ZXdheS52MS5BbGFybUNv", + "bmRpdGlvblN0YXRlEhAKCGNhdGVnb3J5GAcgASgJEhMKC2Rlc2NyaXB0aW9u", + "GAggASgJEj0KGWxhc3RfdHJhbnNpdGlvbl90aW1lc3RhbXAYCSABKAsyGi5n", + "b29nbGUucHJvdG9idWYuVGltZXN0YW1wEhUKDW9wZXJhdG9yX3VzZXIYCiAB", + "KAkSGAoQb3BlcmF0b3JfY29tbWVudBgLIAEoCRIzCg1jdXJyZW50X3ZhbHVl", + "GAwgASgLMhwubXhhY2Nlc3NfZ2F0ZXdheS52MS5NeFZhbHVlEjEKC2xpbWl0", + "X3ZhbHVlGA0gASgLMhwubXhhY2Nlc3NfZ2F0ZXdheS52MS5NeFZhbHVlIpIB", + "ChdBY2tub3dsZWRnZUFsYXJtUmVxdWVzdBISCgpzZXNzaW9uX2lkGAEgASgJ", + "Eh0KFWNsaWVudF9jb3JyZWxhdGlvbl9pZBgCIAEoCRIcChRhbGFybV9mdWxs", + "X3JlZmVyZW5jZRgDIAEoCRIPCgdjb21tZW50GAQgASgJEhUKDW9wZXJhdG9y", + "X3VzZXIYBSABKAki8wEKFUFja25vd2xlZGdlQWxhcm1SZXBseRISCgpzZXNz", + "aW9uX2lkGAEgASgJEhYKDmNvcnJlbGF0aW9uX2lkGAIgASgJEjwKD3Byb3Rv", + "Y29sX3N0YXR1cxgDIAEoCzIjLm14YWNjZXNzX2dhdGV3YXkudjEuUHJvdG9j", + "b2xTdGF0dXMSFAoHaHJlc3VsdBgEIAEoBUgAiAEBEjIKBnN0YXR1cxgFIAEo", + "CzIiLm14YWNjZXNzX2dhdGV3YXkudjEuTXhTdGF0dXNQcm94eRIaChJkaWFn", + "bm9zdGljX21lc3NhZ2UYBiABKAlCCgoIX2hyZXN1bHQiagoYUXVlcnlBY3Rp", + "dmVBbGFybXNSZXF1ZXN0EhIKCnNlc3Npb25faWQYASABKAkSHQoVY2xpZW50", + "X2NvcnJlbGF0aW9uX2lkGAIgASgJEhsKE2FsYXJtX2ZpbHRlcl9wcmVmaXgY", + "AyABKAki6wEKDU14U3RhdHVzUHJveHkSDwoHc3VjY2VzcxgBIAEoBRI3Cghj", + "YXRlZ29yeRgCIAEoDjIlLm14YWNjZXNzX2dhdGV3YXkudjEuTXhTdGF0dXND", + "YXRlZ29yeRI4CgtkZXRlY3RlZF9ieRgDIAEoDjIjLm14YWNjZXNzX2dhdGV3", + "YXkudjEuTXhTdGF0dXNTb3VyY2USDgoGZGV0YWlsGAQgASgFEhQKDHJhd19j", + "YXRlZ29yeRgFIAEoBRIXCg9yYXdfZGV0ZWN0ZWRfYnkYBiABKAUSFwoPZGlh", + "Z25vc3RpY190ZXh0GAcgASgJIqcDCgdNeFZhbHVlEjIKCWRhdGFfdHlwZRgB", + "IAEoDjIfLm14YWNjZXNzX2dhdGV3YXkudjEuTXhEYXRhVHlwZRIUCgx2YXJp", + "YW50X3R5cGUYAiABKAkSDwoHaXNfbnVsbBgDIAEoCBIWCg5yYXdfZGlhZ25v", + "c3RpYxgEIAEoCRIVCg1yYXdfZGF0YV90eXBlGAUgASgFEhQKCmJvb2xfdmFs", + "dWUYCiABKAhIABIVCgtpbnQzMl92YWx1ZRgLIAEoBUgAEhUKC2ludDY0X3Zh", + "bHVlGAwgASgDSAASFQoLZmxvYXRfdmFsdWUYDSABKAJIABIWCgxkb3VibGVf", + "dmFsdWUYDiABKAFIABIWCgxzdHJpbmdfdmFsdWUYDyABKAlIABI1Cg90aW1l", + "c3RhbXBfdmFsdWUYECABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1w", + "SAASMwoLYXJyYXlfdmFsdWUYESABKAsyHC5teGFjY2Vzc19nYXRld2F5LnYx", + "Lk14QXJyYXlIABITCglyYXdfdmFsdWUYEiABKAxIAEIGCgRraW5kIv4ECgdN", + "eEFycmF5EjoKEWVsZW1lbnRfZGF0YV90eXBlGAEgASgOMh8ubXhhY2Nlc3Nf", + "Z2F0ZXdheS52MS5NeERhdGFUeXBlEhQKDHZhcmlhbnRfdHlwZRgCIAEoCRIS", + "CgpkaW1lbnNpb25zGAMgAygNEhYKDnJhd19kaWFnbm9zdGljGAQgASgJEh0K", + "FXJhd19lbGVtZW50X2RhdGFfdHlwZRgFIAEoBRI1Cgtib29sX3ZhbHVlcxgK", + "IAEoCzIeLm14YWNjZXNzX2dhdGV3YXkudjEuQm9vbEFycmF5SAASNwoMaW50", + "MzJfdmFsdWVzGAsgASgLMh8ubXhhY2Nlc3NfZ2F0ZXdheS52MS5JbnQzMkFy", + "cmF5SAASNwoMaW50NjRfdmFsdWVzGAwgASgLMh8ubXhhY2Nlc3NfZ2F0ZXdh", + "eS52MS5JbnQ2NEFycmF5SAASNwoMZmxvYXRfdmFsdWVzGA0gASgLMh8ubXhh", + "Y2Nlc3NfZ2F0ZXdheS52MS5GbG9hdEFycmF5SAASOQoNZG91YmxlX3ZhbHVl", + "cxgOIAEoCzIgLm14YWNjZXNzX2dhdGV3YXkudjEuRG91YmxlQXJyYXlIABI5", + "Cg1zdHJpbmdfdmFsdWVzGA8gASgLMiAubXhhY2Nlc3NfZ2F0ZXdheS52MS5T", + "dHJpbmdBcnJheUgAEj8KEHRpbWVzdGFtcF92YWx1ZXMYECABKAsyIy5teGFj", + "Y2Vzc19nYXRld2F5LnYxLlRpbWVzdGFtcEFycmF5SAASMwoKcmF3X3ZhbHVl", + "cxgRIAEoCzIdLm14YWNjZXNzX2dhdGV3YXkudjEuUmF3QXJyYXlIAEIICgZ2", + "YWx1ZXMiGwoJQm9vbEFycmF5Eg4KBnZhbHVlcxgBIAMoCCIcCgpJbnQzMkFy", + "cmF5Eg4KBnZhbHVlcxgBIAMoBSIcCgpJbnQ2NEFycmF5Eg4KBnZhbHVlcxgB", + "IAMoAyIcCgpGbG9hdEFycmF5Eg4KBnZhbHVlcxgBIAMoAiIdCgtEb3VibGVB", + "cnJheRIOCgZ2YWx1ZXMYASADKAEiHQoLU3RyaW5nQXJyYXkSDgoGdmFsdWVz", + "GAEgAygJIjwKDlRpbWVzdGFtcEFycmF5EioKBnZhbHVlcxgBIAMoCzIaLmdv", + "b2dsZS5wcm90b2J1Zi5UaW1lc3RhbXAiGgoIUmF3QXJyYXkSDgoGdmFsdWVz", + "GAEgAygMIlgKDlByb3RvY29sU3RhdHVzEjUKBGNvZGUYASABKA4yJy5teGFj", + "Y2Vzc19nYXRld2F5LnYxLlByb3RvY29sU3RhdHVzQ29kZRIPCgdtZXNzYWdl", + "GAIgASgJKp8LCg1NeENvbW1hbmRLaW5kEh8KG01YX0NPTU1BTkRfS0lORF9V", + "TlNQRUNJRklFRBAAEhwKGE1YX0NPTU1BTkRfS0lORF9SRUdJU1RFUhABEh4K", + "Gk1YX0NPTU1BTkRfS0lORF9VTlJFR0lTVEVSEAISHAoYTVhfQ09NTUFORF9L", + "SU5EX0FERF9JVEVNEAMSHQoZTVhfQ09NTUFORF9LSU5EX0FERF9JVEVNMhAE", + "Eh8KG01YX0NPTU1BTkRfS0lORF9SRU1PVkVfSVRFTRAFEhoKFk1YX0NPTU1B", + "TkRfS0lORF9BRFZJU0UQBhIdChlNWF9DT01NQU5EX0tJTkRfVU5fQURWSVNF", + "EAcSJgoiTVhfQ09NTUFORF9LSU5EX0FEVklTRV9TVVBFUlZJU09SWRAIEiUK", + "IU1YX0NPTU1BTkRfS0lORF9BRERfQlVGRkVSRURfSVRFTRAJEjAKLE1YX0NP", + "TU1BTkRfS0lORF9TRVRfQlVGRkVSRURfVVBEQVRFX0lOVEVSVkFMEAoSGwoX", + "TVhfQ09NTUFORF9LSU5EX1NVU1BFTkQQCxIcChhNWF9DT01NQU5EX0tJTkRf", + "QUNUSVZBVEUQDBIZChVNWF9DT01NQU5EX0tJTkRfV1JJVEUQDRIaChZNWF9D", + "T01NQU5EX0tJTkRfV1JJVEUyEA4SIQodTVhfQ09NTUFORF9LSU5EX1dSSVRF", + "X1NFQ1VSRUQQDxIiCh5NWF9DT01NQU5EX0tJTkRfV1JJVEVfU0VDVVJFRDIQ", + "EBIlCiFNWF9DT01NQU5EX0tJTkRfQVVUSEVOVElDQVRFX1VTRVIQERIoCiRN", + "WF9DT01NQU5EX0tJTkRfQVJDSEVTVFJBX1VTRVJfVE9fSUQQEhIhCh1NWF9D", + "T01NQU5EX0tJTkRfQUREX0lURU1fQlVMSxATEiQKIE1YX0NPTU1BTkRfS0lO", + "RF9BRFZJU0VfSVRFTV9CVUxLEBQSJAogTVhfQ09NTUFORF9LSU5EX1JFTU9W", + "RV9JVEVNX0JVTEsQFRInCiNNWF9DT01NQU5EX0tJTkRfVU5fQURWSVNFX0lU", + "RU1fQlVMSxAWEiIKHk1YX0NPTU1BTkRfS0lORF9TVUJTQ1JJQkVfQlVMSxAX", + "EiQKIE1YX0NPTU1BTkRfS0lORF9VTlNVQlNDUklCRV9CVUxLEBgSJAogTVhf", + "Q09NTUFORF9LSU5EX1NVQlNDUklCRV9BTEFSTVMQGRImCiJNWF9DT01NQU5E", + "X0tJTkRfVU5TVUJTQ1JJQkVfQUxBUk1TEBoSJQohTVhfQ09NTUFORF9LSU5E", + "X0FDS05PV0xFREdFX0FMQVJNEBsSJwojTVhfQ09NTUFORF9LSU5EX1FVRVJZ", + "X0FDVElWRV9BTEFSTVMQHBItCilNWF9DT01NQU5EX0tJTkRfQUNLTk9XTEVE", + "R0VfQUxBUk1fQllfTkFNRRAdEh4KGk1YX0NPTU1BTkRfS0lORF9XUklURV9C", + "VUxLEB4SHwobTVhfQ09NTUFORF9LSU5EX1dSSVRFMl9CVUxLEB8SJgoiTVhf", + "Q09NTUFORF9LSU5EX1dSSVRFX1NFQ1VSRURfQlVMSxAgEicKI01YX0NPTU1B", + "TkRfS0lORF9XUklURV9TRUNVUkVEMl9CVUxLECESHQoZTVhfQ09NTUFORF9L", + "SU5EX1JFQURfQlVMSxAiEhgKFE1YX0NPTU1BTkRfS0lORF9QSU5HEGQSJQoh", + "TVhfQ09NTUFORF9LSU5EX0dFVF9TRVNTSU9OX1NUQVRFEGUSIwofTVhfQ09N", + "TUFORF9LSU5EX0dFVF9XT1JLRVJfSU5GTxBmEiAKHE1YX0NPTU1BTkRfS0lO", + "RF9EUkFJTl9FVkVOVFMQZxIjCh9NWF9DT01NQU5EX0tJTkRfU0hVVERPV05f", + "V09SS0VSEGgq+QEKDU14RXZlbnRGYW1pbHkSHwobTVhfRVZFTlRfRkFNSUxZ", + "X1VOU1BFQ0lGSUVEEAASIgoeTVhfRVZFTlRfRkFNSUxZX09OX0RBVEFfQ0hB", + "TkdFEAESJQohTVhfRVZFTlRfRkFNSUxZX09OX1dSSVRFX0NPTVBMRVRFEAIS", + "JgoiTVhfRVZFTlRfRkFNSUxZX09QRVJBVElPTl9DT01QTEVURRADEisKJ01Y", + "X0VWRU5UX0ZBTUlMWV9PTl9CVUZGRVJFRF9EQVRBX0NIQU5HRRAEEicKI01Y", + "X0VWRU5UX0ZBTUlMWV9PTl9BTEFSTV9UUkFOU0lUSU9OEAUqygEKE0FsYXJt", + "VHJhbnNpdGlvbktpbmQSJQohQUxBUk1fVFJBTlNJVElPTl9LSU5EX1VOU1BF", + "Q0lGSUVEEAASHwobQUxBUk1fVFJBTlNJVElPTl9LSU5EX1JBSVNFEAESJQoh", + "QUxBUk1fVFJBTlNJVElPTl9LSU5EX0FDS05PV0xFREdFEAISHwobQUxBUk1f", + "VFJBTlNJVElPTl9LSU5EX0NMRUFSEAMSIwofQUxBUk1fVFJBTlNJVElPTl9L", + "SU5EX1JFVFJJR0dFUhAEKqoBChNBbGFybUNvbmRpdGlvblN0YXRlEiUKIUFM", + "QVJNX0NPTkRJVElPTl9TVEFURV9VTlNQRUNJRklFRBAAEiAKHEFMQVJNX0NP", + "TkRJVElPTl9TVEFURV9BQ1RJVkUQARImCiJBTEFSTV9DT05ESVRJT05fU1RB", + "VEVfQUNUSVZFX0FDS0VEEAISIgoeQUxBUk1fQ09ORElUSU9OX1NUQVRFX0lO", + "QUNUSVZFEAMqpQMKEE14U3RhdHVzQ2F0ZWdvcnkSIgoeTVhfU1RBVFVTX0NB", + "VEVHT1JZX1VOU1BFQ0lGSUVEEAASHgoaTVhfU1RBVFVTX0NBVEVHT1JZX1VO", + "S05PV04QARIZChVNWF9TVEFUVVNfQ0FURUdPUllfT0sQAhIeChpNWF9TVEFU", + "VVNfQ0FURUdPUllfUEVORElORxADEh4KGk1YX1NUQVRVU19DQVRFR09SWV9X", + "QVJOSU5HEAQSKgomTVhfU1RBVFVTX0NBVEVHT1JZX0NPTU1VTklDQVRJT05f", + "RVJST1IQBRIqCiZNWF9TVEFUVVNfQ0FURUdPUllfQ09ORklHVVJBVElPTl9F", + "UlJPUhAGEigKJE1YX1NUQVRVU19DQVRFR09SWV9PUEVSQVRJT05BTF9FUlJP", + "UhAHEiUKIU1YX1NUQVRVU19DQVRFR09SWV9TRUNVUklUWV9FUlJPUhAIEiUK", + "IU1YX1NUQVRVU19DQVRFR09SWV9TT0ZUV0FSRV9FUlJPUhAJEiIKHk1YX1NU", + "QVRVU19DQVRFR09SWV9PVEhFUl9FUlJPUhAKKsoCCg5NeFN0YXR1c1NvdXJj", + "ZRIgChxNWF9TVEFUVVNfU09VUkNFX1VOU1BFQ0lGSUVEEAASHAoYTVhfU1RB", + "VFVTX1NPVVJDRV9VTktOT1dOEAESIwofTVhfU1RBVFVTX1NPVVJDRV9SRVFV", + "RVNUSU5HX0xNWBACEiMKH01YX1NUQVRVU19TT1VSQ0VfUkVTUE9ORElOR19M", + "TVgQAxIjCh9NWF9TVEFUVVNfU09VUkNFX1JFUVVFU1RJTkdfTk1YEAQSIwof", + "TVhfU1RBVFVTX1NPVVJDRV9SRVNQT05ESU5HX05NWBAFEjEKLU1YX1NUQVRV", + "U19TT1VSQ0VfUkVRVUVTVElOR19BVVRPTUFUSU9OX09CSkVDVBAGEjEKLU1Y", + "X1NUQVRVU19TT1VSQ0VfUkVTUE9ORElOR19BVVRPTUFUSU9OX09CSkVDVBAH", + "Kt0ECgpNeERhdGFUeXBlEhwKGE1YX0RBVEFfVFlQRV9VTlNQRUNJRklFRBAA", + "EhgKFE1YX0RBVEFfVFlQRV9VTktOT1dOEAESGAoUTVhfREFUQV9UWVBFX05P", + "X0RBVEEQAhIYChRNWF9EQVRBX1RZUEVfQk9PTEVBThADEhgKFE1YX0RBVEFf", + "VFlQRV9JTlRFR0VSEAQSFgoSTVhfREFUQV9UWVBFX0ZMT0FUEAUSFwoTTVhf", + "REFUQV9UWVBFX0RPVUJMRRAGEhcKE01YX0RBVEFfVFlQRV9TVFJJTkcQBxIV", + "ChFNWF9EQVRBX1RZUEVfVElNRRAIEh0KGU1YX0RBVEFfVFlQRV9FTEFQU0VE", + "X1RJTUUQCRIfChtNWF9EQVRBX1RZUEVfUkVGRVJFTkNFX1RZUEUQChIcChhN", + "WF9EQVRBX1RZUEVfU1RBVFVTX1RZUEUQCxIVChFNWF9EQVRBX1RZUEVfRU5V", + "TRAMEi0KKU1YX0RBVEFfVFlQRV9TRUNVUklUWV9DTEFTU0lGSUNBVElPTl9F", + "TlVNEA0SIgoeTVhfREFUQV9UWVBFX0RBVEFfUVVBTElUWV9UWVBFEA4SHwob", + "TVhfREFUQV9UWVBFX1FVQUxJRklFRF9FTlVNEA8SIQodTVhfREFUQV9UWVBF", + "X1FVQUxJRklFRF9TVFJVQ1QQEBIpCiVNWF9EQVRBX1RZUEVfSU5URVJOQVRJ", + "T05BTElaRURfU1RSSU5HEBESGwoXTVhfREFUQV9UWVBFX0JJR19TVFJJTkcQ", + "EhIUChBNWF9EQVRBX1RZUEVfRU5EEBMqowMKElByb3RvY29sU3RhdHVzQ29k", + "ZRIkCiBQUk9UT0NPTF9TVEFUVVNfQ09ERV9VTlNQRUNJRklFRBAAEhsKF1BS", + "T1RPQ09MX1NUQVRVU19DT0RFX09LEAESKAokUFJPVE9DT0xfU1RBVFVTX0NP", + "REVfSU5WQUxJRF9SRVFVRVNUEAISKgomUFJPVE9DT0xfU1RBVFVTX0NPREVf", + "U0VTU0lPTl9OT1RfRk9VTkQQAxIqCiZQUk9UT0NPTF9TVEFUVVNfQ09ERV9T", + "RVNTSU9OX05PVF9SRUFEWRAEEisKJ1BST1RPQ09MX1NUQVRVU19DT0RFX1dP", + "UktFUl9VTkFWQUlMQUJMRRAFEiAKHFBST1RPQ09MX1NUQVRVU19DT0RFX1RJ", + "TUVPVVQQBhIhCh1QUk9UT0NPTF9TVEFUVVNfQ09ERV9DQU5DRUxFRBAHEisK", + "J1BST1RPQ09MX1NUQVRVU19DT0RFX1BST1RPQ09MX1ZJT0xBVElPThAIEikK", + "JVBST1RPQ09MX1NUQVRVU19DT0RFX01YQUNDRVNTX0ZBSUxVUkUQCSq/AgoM", + "U2Vzc2lvblN0YXRlEh0KGVNFU1NJT05fU1RBVEVfVU5TUEVDSUZJRUQQABIa", + "ChZTRVNTSU9OX1NUQVRFX0NSRUFUSU5HEAESIQodU0VTU0lPTl9TVEFURV9T", + "VEFSVElOR19XT1JLRVIQAhIiCh5TRVNTSU9OX1NUQVRFX1dBSVRJTkdfRk9S", + "X1BJUEUQAxIdChlTRVNTSU9OX1NUQVRFX0hBTkRTSEFLSU5HEAQSJQohU0VT", + "U0lPTl9TVEFURV9JTklUSUFMSVpJTkdfV09SS0VSEAUSFwoTU0VTU0lPTl9T", + "VEFURV9SRUFEWRAGEhkKFVNFU1NJT05fU1RBVEVfQ0xPU0lORxAHEhgKFFNF", + "U1NJT05fU1RBVEVfQ0xPU0VEEAgSGQoVU0VTU0lPTl9TVEFURV9GQVVMVEVE", + "EAky4AQKD014QWNjZXNzR2F0ZXdheRJdCgtPcGVuU2Vzc2lvbhInLm14YWNj", + "ZXNzX2dhdGV3YXkudjEuT3BlblNlc3Npb25SZXF1ZXN0GiUubXhhY2Nlc3Nf", + "Z2F0ZXdheS52MS5PcGVuU2Vzc2lvblJlcGx5EmAKDENsb3NlU2Vzc2lvbhIo", + "Lm14YWNjZXNzX2dhdGV3YXkudjEuQ2xvc2VTZXNzaW9uUmVxdWVzdBomLm14", + "YWNjZXNzX2dhdGV3YXkudjEuQ2xvc2VTZXNzaW9uUmVwbHkSVAoGSW52b2tl", + "EiUubXhhY2Nlc3NfZ2F0ZXdheS52MS5NeENvbW1hbmRSZXF1ZXN0GiMubXhh", + "Y2Nlc3NfZ2F0ZXdheS52MS5NeENvbW1hbmRSZXBseRJYCgxTdHJlYW1FdmVu", + "dHMSKC5teGFjY2Vzc19nYXRld2F5LnYxLlN0cmVhbUV2ZW50c1JlcXVlc3Qa", + "HC5teGFjY2Vzc19nYXRld2F5LnYxLk14RXZlbnQwARJsChBBY2tub3dsZWRn", + "ZUFsYXJtEiwubXhhY2Nlc3NfZ2F0ZXdheS52MS5BY2tub3dsZWRnZUFsYXJt", + "UmVxdWVzdBoqLm14YWNjZXNzX2dhdGV3YXkudjEuQWNrbm93bGVkZ2VBbGFy", + "bVJlcGx5Em4KEVF1ZXJ5QWN0aXZlQWxhcm1zEi0ubXhhY2Nlc3NfZ2F0ZXdh", + "eS52MS5RdWVyeUFjdGl2ZUFsYXJtc1JlcXVlc3QaKC5teGFjY2Vzc19nYXRl", + "d2F5LnYxLkFjdGl2ZUFsYXJtU25hcHNob3QwAUIcqgIZTXhHYXRld2F5LkNv", + "bnRyYWN0cy5Qcm90b2IGcHJvdG8z")); descriptor = pbr::FileDescriptor.FromGeneratedCode(descriptorData, new pbr::FileDescriptor[] { global::Google.Protobuf.WellKnownTypes.DurationReflection.Descriptor, global::Google.Protobuf.WellKnownTypes.TimestampReflection.Descriptor, }, new pbr::GeneratedClrTypeInfo(new[] {typeof(global::MxGateway.Contracts.Proto.MxCommandKind), typeof(global::MxGateway.Contracts.Proto.MxEventFamily), typeof(global::MxGateway.Contracts.Proto.AlarmTransitionKind), typeof(global::MxGateway.Contracts.Proto.AlarmConditionState), typeof(global::MxGateway.Contracts.Proto.MxStatusCategory), typeof(global::MxGateway.Contracts.Proto.MxStatusSource), typeof(global::MxGateway.Contracts.Proto.MxDataType), typeof(global::MxGateway.Contracts.Proto.ProtocolStatusCode), typeof(global::MxGateway.Contracts.Proto.SessionState), }, null, new pbr::GeneratedClrTypeInfo[] { @@ -430,7 +488,7 @@ namespace MxGateway.Contracts.Proto { new pbr::GeneratedClrTypeInfo(typeof(global::MxGateway.Contracts.Proto.CloseSessionReply), global::MxGateway.Contracts.Proto.CloseSessionReply.Parser, new[]{ "SessionId", "FinalState", "ProtocolStatus" }, null, null, null, null), new pbr::GeneratedClrTypeInfo(typeof(global::MxGateway.Contracts.Proto.StreamEventsRequest), global::MxGateway.Contracts.Proto.StreamEventsRequest.Parser, new[]{ "SessionId", "AfterWorkerSequence" }, null, null, null, null), new pbr::GeneratedClrTypeInfo(typeof(global::MxGateway.Contracts.Proto.MxCommandRequest), global::MxGateway.Contracts.Proto.MxCommandRequest.Parser, new[]{ "SessionId", "ClientCorrelationId", "Command" }, null, null, null, null), - new pbr::GeneratedClrTypeInfo(typeof(global::MxGateway.Contracts.Proto.MxCommand), global::MxGateway.Contracts.Proto.MxCommand.Parser, new[]{ "Kind", "Register", "Unregister", "AddItem", "AddItem2", "RemoveItem", "Advise", "UnAdvise", "AdviseSupervisory", "AddBufferedItem", "SetBufferedUpdateInterval", "Suspend", "Activate", "Write", "Write2", "WriteSecured", "WriteSecured2", "AuthenticateUser", "ArchestraUserToId", "AddItemBulk", "AdviseItemBulk", "RemoveItemBulk", "UnAdviseItemBulk", "SubscribeBulk", "UnsubscribeBulk", "SubscribeAlarms", "UnsubscribeAlarms", "AcknowledgeAlarmCommand", "QueryActiveAlarmsCommand", "AcknowledgeAlarmByNameCommand", "Ping", "GetSessionState", "GetWorkerInfo", "DrainEvents", "ShutdownWorker" }, new[]{ "Payload" }, null, null, null), + new pbr::GeneratedClrTypeInfo(typeof(global::MxGateway.Contracts.Proto.MxCommand), global::MxGateway.Contracts.Proto.MxCommand.Parser, new[]{ "Kind", "Register", "Unregister", "AddItem", "AddItem2", "RemoveItem", "Advise", "UnAdvise", "AdviseSupervisory", "AddBufferedItem", "SetBufferedUpdateInterval", "Suspend", "Activate", "Write", "Write2", "WriteSecured", "WriteSecured2", "AuthenticateUser", "ArchestraUserToId", "AddItemBulk", "AdviseItemBulk", "RemoveItemBulk", "UnAdviseItemBulk", "SubscribeBulk", "UnsubscribeBulk", "SubscribeAlarms", "UnsubscribeAlarms", "AcknowledgeAlarmCommand", "QueryActiveAlarmsCommand", "AcknowledgeAlarmByNameCommand", "WriteBulk", "Write2Bulk", "WriteSecuredBulk", "WriteSecured2Bulk", "ReadBulk", "Ping", "GetSessionState", "GetWorkerInfo", "DrainEvents", "ShutdownWorker" }, new[]{ "Payload" }, null, null, null), new pbr::GeneratedClrTypeInfo(typeof(global::MxGateway.Contracts.Proto.RegisterCommand), global::MxGateway.Contracts.Proto.RegisterCommand.Parser, new[]{ "ClientName" }, null, null, null, null), new pbr::GeneratedClrTypeInfo(typeof(global::MxGateway.Contracts.Proto.UnregisterCommand), global::MxGateway.Contracts.Proto.UnregisterCommand.Parser, new[]{ "ServerHandle" }, null, null, null, null), new pbr::GeneratedClrTypeInfo(typeof(global::MxGateway.Contracts.Proto.AddItemCommand), global::MxGateway.Contracts.Proto.AddItemCommand.Parser, new[]{ "ServerHandle", "ItemDefinition" }, null, null, null, null), @@ -460,12 +518,21 @@ namespace MxGateway.Contracts.Proto { new pbr::GeneratedClrTypeInfo(typeof(global::MxGateway.Contracts.Proto.QueryActiveAlarmsCommand), global::MxGateway.Contracts.Proto.QueryActiveAlarmsCommand.Parser, new[]{ "AlarmFilterPrefix" }, null, null, null, null), new pbr::GeneratedClrTypeInfo(typeof(global::MxGateway.Contracts.Proto.AcknowledgeAlarmByNameCommand), global::MxGateway.Contracts.Proto.AcknowledgeAlarmByNameCommand.Parser, new[]{ "AlarmName", "ProviderName", "GroupName", "Comment", "OperatorUser", "OperatorNode", "OperatorDomain", "OperatorFullName" }, null, null, null, null), new pbr::GeneratedClrTypeInfo(typeof(global::MxGateway.Contracts.Proto.UnsubscribeBulkCommand), global::MxGateway.Contracts.Proto.UnsubscribeBulkCommand.Parser, new[]{ "ServerHandle", "ItemHandles" }, null, null, null, null), + new pbr::GeneratedClrTypeInfo(typeof(global::MxGateway.Contracts.Proto.WriteBulkCommand), global::MxGateway.Contracts.Proto.WriteBulkCommand.Parser, new[]{ "ServerHandle", "Entries" }, null, null, null, null), + new pbr::GeneratedClrTypeInfo(typeof(global::MxGateway.Contracts.Proto.WriteBulkEntry), global::MxGateway.Contracts.Proto.WriteBulkEntry.Parser, new[]{ "ItemHandle", "Value", "UserId" }, null, null, null, null), + new pbr::GeneratedClrTypeInfo(typeof(global::MxGateway.Contracts.Proto.Write2BulkCommand), global::MxGateway.Contracts.Proto.Write2BulkCommand.Parser, new[]{ "ServerHandle", "Entries" }, null, null, null, null), + new pbr::GeneratedClrTypeInfo(typeof(global::MxGateway.Contracts.Proto.Write2BulkEntry), global::MxGateway.Contracts.Proto.Write2BulkEntry.Parser, new[]{ "ItemHandle", "Value", "TimestampValue", "UserId" }, null, null, null, null), + new pbr::GeneratedClrTypeInfo(typeof(global::MxGateway.Contracts.Proto.WriteSecuredBulkCommand), global::MxGateway.Contracts.Proto.WriteSecuredBulkCommand.Parser, new[]{ "ServerHandle", "Entries" }, null, null, null, null), + new pbr::GeneratedClrTypeInfo(typeof(global::MxGateway.Contracts.Proto.WriteSecuredBulkEntry), global::MxGateway.Contracts.Proto.WriteSecuredBulkEntry.Parser, new[]{ "ItemHandle", "CurrentUserId", "VerifierUserId", "Value" }, null, null, null, null), + new pbr::GeneratedClrTypeInfo(typeof(global::MxGateway.Contracts.Proto.WriteSecured2BulkCommand), global::MxGateway.Contracts.Proto.WriteSecured2BulkCommand.Parser, new[]{ "ServerHandle", "Entries" }, null, null, null, null), + new pbr::GeneratedClrTypeInfo(typeof(global::MxGateway.Contracts.Proto.WriteSecured2BulkEntry), global::MxGateway.Contracts.Proto.WriteSecured2BulkEntry.Parser, new[]{ "ItemHandle", "CurrentUserId", "VerifierUserId", "Value", "TimestampValue" }, null, null, null, null), + new pbr::GeneratedClrTypeInfo(typeof(global::MxGateway.Contracts.Proto.ReadBulkCommand), global::MxGateway.Contracts.Proto.ReadBulkCommand.Parser, new[]{ "ServerHandle", "TagAddresses", "TimeoutMs" }, null, null, null, null), new pbr::GeneratedClrTypeInfo(typeof(global::MxGateway.Contracts.Proto.PingCommand), global::MxGateway.Contracts.Proto.PingCommand.Parser, new[]{ "Message" }, null, null, null, null), new pbr::GeneratedClrTypeInfo(typeof(global::MxGateway.Contracts.Proto.GetSessionStateCommand), global::MxGateway.Contracts.Proto.GetSessionStateCommand.Parser, null, null, null, null, null), new pbr::GeneratedClrTypeInfo(typeof(global::MxGateway.Contracts.Proto.GetWorkerInfoCommand), global::MxGateway.Contracts.Proto.GetWorkerInfoCommand.Parser, null, null, null, null, null), new pbr::GeneratedClrTypeInfo(typeof(global::MxGateway.Contracts.Proto.DrainEventsCommand), global::MxGateway.Contracts.Proto.DrainEventsCommand.Parser, new[]{ "MaxEvents" }, null, null, null, null), new pbr::GeneratedClrTypeInfo(typeof(global::MxGateway.Contracts.Proto.ShutdownWorkerCommand), global::MxGateway.Contracts.Proto.ShutdownWorkerCommand.Parser, new[]{ "GracePeriod" }, null, null, null, null), - new pbr::GeneratedClrTypeInfo(typeof(global::MxGateway.Contracts.Proto.MxCommandReply), global::MxGateway.Contracts.Proto.MxCommandReply.Parser, new[]{ "SessionId", "CorrelationId", "Kind", "ProtocolStatus", "Hresult", "ReturnValue", "Statuses", "DiagnosticMessage", "Register", "AddItem", "AddItem2", "AddBufferedItem", "Suspend", "Activate", "AuthenticateUser", "ArchestraUserToId", "AddItemBulk", "AdviseItemBulk", "RemoveItemBulk", "UnAdviseItemBulk", "SubscribeBulk", "UnsubscribeBulk", "AcknowledgeAlarm", "QueryActiveAlarms", "SessionState", "WorkerInfo", "DrainEvents" }, new[]{ "Payload", "Hresult" }, null, null, null), + new pbr::GeneratedClrTypeInfo(typeof(global::MxGateway.Contracts.Proto.MxCommandReply), global::MxGateway.Contracts.Proto.MxCommandReply.Parser, new[]{ "SessionId", "CorrelationId", "Kind", "ProtocolStatus", "Hresult", "ReturnValue", "Statuses", "DiagnosticMessage", "Register", "AddItem", "AddItem2", "AddBufferedItem", "Suspend", "Activate", "AuthenticateUser", "ArchestraUserToId", "AddItemBulk", "AdviseItemBulk", "RemoveItemBulk", "UnAdviseItemBulk", "SubscribeBulk", "UnsubscribeBulk", "AcknowledgeAlarm", "QueryActiveAlarms", "WriteBulk", "Write2Bulk", "WriteSecuredBulk", "WriteSecured2Bulk", "ReadBulk", "SessionState", "WorkerInfo", "DrainEvents" }, new[]{ "Payload", "Hresult" }, null, null, null), new pbr::GeneratedClrTypeInfo(typeof(global::MxGateway.Contracts.Proto.RegisterReply), global::MxGateway.Contracts.Proto.RegisterReply.Parser, new[]{ "ServerHandle" }, null, null, null, null), new pbr::GeneratedClrTypeInfo(typeof(global::MxGateway.Contracts.Proto.AddItemReply), global::MxGateway.Contracts.Proto.AddItemReply.Parser, new[]{ "ItemHandle" }, null, null, null, null), new pbr::GeneratedClrTypeInfo(typeof(global::MxGateway.Contracts.Proto.AddItem2Reply), global::MxGateway.Contracts.Proto.AddItem2Reply.Parser, new[]{ "ItemHandle" }, null, null, null, null), @@ -476,6 +543,10 @@ namespace MxGateway.Contracts.Proto { new pbr::GeneratedClrTypeInfo(typeof(global::MxGateway.Contracts.Proto.ArchestrAUserToIdReply), global::MxGateway.Contracts.Proto.ArchestrAUserToIdReply.Parser, new[]{ "UserId" }, null, null, null, null), new pbr::GeneratedClrTypeInfo(typeof(global::MxGateway.Contracts.Proto.SubscribeResult), global::MxGateway.Contracts.Proto.SubscribeResult.Parser, new[]{ "ServerHandle", "TagAddress", "ItemHandle", "WasSuccessful", "ErrorMessage" }, null, null, null, null), new pbr::GeneratedClrTypeInfo(typeof(global::MxGateway.Contracts.Proto.BulkSubscribeReply), global::MxGateway.Contracts.Proto.BulkSubscribeReply.Parser, new[]{ "Results" }, null, null, null, null), + new pbr::GeneratedClrTypeInfo(typeof(global::MxGateway.Contracts.Proto.BulkWriteResult), global::MxGateway.Contracts.Proto.BulkWriteResult.Parser, new[]{ "ServerHandle", "ItemHandle", "WasSuccessful", "Hresult", "Statuses", "ErrorMessage" }, new[]{ "Hresult" }, null, null, null), + new pbr::GeneratedClrTypeInfo(typeof(global::MxGateway.Contracts.Proto.BulkWriteReply), global::MxGateway.Contracts.Proto.BulkWriteReply.Parser, new[]{ "Results" }, null, null, null, null), + new pbr::GeneratedClrTypeInfo(typeof(global::MxGateway.Contracts.Proto.BulkReadResult), global::MxGateway.Contracts.Proto.BulkReadResult.Parser, new[]{ "ServerHandle", "TagAddress", "ItemHandle", "WasSuccessful", "WasCached", "Value", "Quality", "SourceTimestamp", "Statuses", "ErrorMessage" }, null, null, null, null), + new pbr::GeneratedClrTypeInfo(typeof(global::MxGateway.Contracts.Proto.BulkReadReply), global::MxGateway.Contracts.Proto.BulkReadReply.Parser, new[]{ "Results" }, null, null, null, null), new pbr::GeneratedClrTypeInfo(typeof(global::MxGateway.Contracts.Proto.SessionStateReply), global::MxGateway.Contracts.Proto.SessionStateReply.Parser, new[]{ "State" }, null, null, null, null), new pbr::GeneratedClrTypeInfo(typeof(global::MxGateway.Contracts.Proto.WorkerInfoReply), global::MxGateway.Contracts.Proto.WorkerInfoReply.Parser, new[]{ "WorkerProcessId", "WorkerVersion", "MxaccessProgid", "MxaccessClsid" }, null, null, null, null), new pbr::GeneratedClrTypeInfo(typeof(global::MxGateway.Contracts.Proto.DrainEventsReply), global::MxGateway.Contracts.Proto.DrainEventsReply.Parser, new[]{ "Events" }, null, null, null, null), @@ -540,6 +611,11 @@ namespace MxGateway.Contracts.Proto { [pbr::OriginalName("MX_COMMAND_KIND_ACKNOWLEDGE_ALARM")] AcknowledgeAlarm = 27, [pbr::OriginalName("MX_COMMAND_KIND_QUERY_ACTIVE_ALARMS")] QueryActiveAlarms = 28, [pbr::OriginalName("MX_COMMAND_KIND_ACKNOWLEDGE_ALARM_BY_NAME")] AcknowledgeAlarmByName = 29, + [pbr::OriginalName("MX_COMMAND_KIND_WRITE_BULK")] WriteBulk = 30, + [pbr::OriginalName("MX_COMMAND_KIND_WRITE2_BULK")] Write2Bulk = 31, + [pbr::OriginalName("MX_COMMAND_KIND_WRITE_SECURED_BULK")] WriteSecuredBulk = 32, + [pbr::OriginalName("MX_COMMAND_KIND_WRITE_SECURED2_BULK")] WriteSecured2Bulk = 33, + [pbr::OriginalName("MX_COMMAND_KIND_READ_BULK")] ReadBulk = 34, [pbr::OriginalName("MX_COMMAND_KIND_PING")] Ping = 100, [pbr::OriginalName("MX_COMMAND_KIND_GET_SESSION_STATE")] GetSessionState = 101, [pbr::OriginalName("MX_COMMAND_KIND_GET_WORKER_INFO")] GetWorkerInfo = 102, @@ -2591,6 +2667,21 @@ namespace MxGateway.Contracts.Proto { case PayloadOneofCase.AcknowledgeAlarmByNameCommand: AcknowledgeAlarmByNameCommand = other.AcknowledgeAlarmByNameCommand.Clone(); break; + case PayloadOneofCase.WriteBulk: + WriteBulk = other.WriteBulk.Clone(); + break; + case PayloadOneofCase.Write2Bulk: + Write2Bulk = other.Write2Bulk.Clone(); + break; + case PayloadOneofCase.WriteSecuredBulk: + WriteSecuredBulk = other.WriteSecuredBulk.Clone(); + break; + case PayloadOneofCase.WriteSecured2Bulk: + WriteSecured2Bulk = other.WriteSecured2Bulk.Clone(); + break; + case PayloadOneofCase.ReadBulk: + ReadBulk = other.ReadBulk.Clone(); + break; case PayloadOneofCase.Ping: Ping = other.Ping.Clone(); break; @@ -2977,6 +3068,66 @@ namespace MxGateway.Contracts.Proto { } } + /// Field number for the "write_bulk" field. + public const int WriteBulkFieldNumber = 39; + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public global::MxGateway.Contracts.Proto.WriteBulkCommand WriteBulk { + get { return payloadCase_ == PayloadOneofCase.WriteBulk ? (global::MxGateway.Contracts.Proto.WriteBulkCommand) payload_ : null; } + set { + payload_ = value; + payloadCase_ = value == null ? PayloadOneofCase.None : PayloadOneofCase.WriteBulk; + } + } + + /// Field number for the "write2_bulk" field. + public const int Write2BulkFieldNumber = 40; + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public global::MxGateway.Contracts.Proto.Write2BulkCommand Write2Bulk { + get { return payloadCase_ == PayloadOneofCase.Write2Bulk ? (global::MxGateway.Contracts.Proto.Write2BulkCommand) payload_ : null; } + set { + payload_ = value; + payloadCase_ = value == null ? PayloadOneofCase.None : PayloadOneofCase.Write2Bulk; + } + } + + /// Field number for the "write_secured_bulk" field. + public const int WriteSecuredBulkFieldNumber = 41; + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public global::MxGateway.Contracts.Proto.WriteSecuredBulkCommand WriteSecuredBulk { + get { return payloadCase_ == PayloadOneofCase.WriteSecuredBulk ? (global::MxGateway.Contracts.Proto.WriteSecuredBulkCommand) payload_ : null; } + set { + payload_ = value; + payloadCase_ = value == null ? PayloadOneofCase.None : PayloadOneofCase.WriteSecuredBulk; + } + } + + /// Field number for the "write_secured2_bulk" field. + public const int WriteSecured2BulkFieldNumber = 42; + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public global::MxGateway.Contracts.Proto.WriteSecured2BulkCommand WriteSecured2Bulk { + get { return payloadCase_ == PayloadOneofCase.WriteSecured2Bulk ? (global::MxGateway.Contracts.Proto.WriteSecured2BulkCommand) payload_ : null; } + set { + payload_ = value; + payloadCase_ = value == null ? PayloadOneofCase.None : PayloadOneofCase.WriteSecured2Bulk; + } + } + + /// Field number for the "read_bulk" field. + public const int ReadBulkFieldNumber = 43; + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public global::MxGateway.Contracts.Proto.ReadBulkCommand ReadBulk { + get { return payloadCase_ == PayloadOneofCase.ReadBulk ? (global::MxGateway.Contracts.Proto.ReadBulkCommand) payload_ : null; } + set { + payload_ = value; + payloadCase_ = value == null ? PayloadOneofCase.None : PayloadOneofCase.ReadBulk; + } + } + /// Field number for the "ping" field. public const int PingFieldNumber = 100; [global::System.Diagnostics.DebuggerNonUserCodeAttribute] @@ -3070,6 +3221,11 @@ namespace MxGateway.Contracts.Proto { AcknowledgeAlarmCommand = 36, QueryActiveAlarmsCommand = 37, AcknowledgeAlarmByNameCommand = 38, + WriteBulk = 39, + Write2Bulk = 40, + WriteSecuredBulk = 41, + WriteSecured2Bulk = 42, + ReadBulk = 43, Ping = 100, GetSessionState = 101, GetWorkerInfo = 102, @@ -3135,6 +3291,11 @@ namespace MxGateway.Contracts.Proto { if (!object.Equals(AcknowledgeAlarmCommand, other.AcknowledgeAlarmCommand)) return false; if (!object.Equals(QueryActiveAlarmsCommand, other.QueryActiveAlarmsCommand)) return false; if (!object.Equals(AcknowledgeAlarmByNameCommand, other.AcknowledgeAlarmByNameCommand)) return false; + if (!object.Equals(WriteBulk, other.WriteBulk)) return false; + if (!object.Equals(Write2Bulk, other.Write2Bulk)) return false; + if (!object.Equals(WriteSecuredBulk, other.WriteSecuredBulk)) return false; + if (!object.Equals(WriteSecured2Bulk, other.WriteSecured2Bulk)) return false; + if (!object.Equals(ReadBulk, other.ReadBulk)) return false; if (!object.Equals(Ping, other.Ping)) return false; if (!object.Equals(GetSessionState, other.GetSessionState)) return false; if (!object.Equals(GetWorkerInfo, other.GetWorkerInfo)) return false; @@ -3178,6 +3339,11 @@ namespace MxGateway.Contracts.Proto { if (payloadCase_ == PayloadOneofCase.AcknowledgeAlarmCommand) hash ^= AcknowledgeAlarmCommand.GetHashCode(); if (payloadCase_ == PayloadOneofCase.QueryActiveAlarmsCommand) hash ^= QueryActiveAlarmsCommand.GetHashCode(); if (payloadCase_ == PayloadOneofCase.AcknowledgeAlarmByNameCommand) hash ^= AcknowledgeAlarmByNameCommand.GetHashCode(); + if (payloadCase_ == PayloadOneofCase.WriteBulk) hash ^= WriteBulk.GetHashCode(); + if (payloadCase_ == PayloadOneofCase.Write2Bulk) hash ^= Write2Bulk.GetHashCode(); + if (payloadCase_ == PayloadOneofCase.WriteSecuredBulk) hash ^= WriteSecuredBulk.GetHashCode(); + if (payloadCase_ == PayloadOneofCase.WriteSecured2Bulk) hash ^= WriteSecured2Bulk.GetHashCode(); + if (payloadCase_ == PayloadOneofCase.ReadBulk) hash ^= ReadBulk.GetHashCode(); if (payloadCase_ == PayloadOneofCase.Ping) hash ^= Ping.GetHashCode(); if (payloadCase_ == PayloadOneofCase.GetSessionState) hash ^= GetSessionState.GetHashCode(); if (payloadCase_ == PayloadOneofCase.GetWorkerInfo) hash ^= GetWorkerInfo.GetHashCode(); @@ -3322,6 +3488,26 @@ namespace MxGateway.Contracts.Proto { output.WriteRawTag(178, 2); output.WriteMessage(AcknowledgeAlarmByNameCommand); } + if (payloadCase_ == PayloadOneofCase.WriteBulk) { + output.WriteRawTag(186, 2); + output.WriteMessage(WriteBulk); + } + if (payloadCase_ == PayloadOneofCase.Write2Bulk) { + output.WriteRawTag(194, 2); + output.WriteMessage(Write2Bulk); + } + if (payloadCase_ == PayloadOneofCase.WriteSecuredBulk) { + output.WriteRawTag(202, 2); + output.WriteMessage(WriteSecuredBulk); + } + if (payloadCase_ == PayloadOneofCase.WriteSecured2Bulk) { + output.WriteRawTag(210, 2); + output.WriteMessage(WriteSecured2Bulk); + } + if (payloadCase_ == PayloadOneofCase.ReadBulk) { + output.WriteRawTag(218, 2); + output.WriteMessage(ReadBulk); + } if (payloadCase_ == PayloadOneofCase.Ping) { output.WriteRawTag(162, 6); output.WriteMessage(Ping); @@ -3472,6 +3658,26 @@ namespace MxGateway.Contracts.Proto { output.WriteRawTag(178, 2); output.WriteMessage(AcknowledgeAlarmByNameCommand); } + if (payloadCase_ == PayloadOneofCase.WriteBulk) { + output.WriteRawTag(186, 2); + output.WriteMessage(WriteBulk); + } + if (payloadCase_ == PayloadOneofCase.Write2Bulk) { + output.WriteRawTag(194, 2); + output.WriteMessage(Write2Bulk); + } + if (payloadCase_ == PayloadOneofCase.WriteSecuredBulk) { + output.WriteRawTag(202, 2); + output.WriteMessage(WriteSecuredBulk); + } + if (payloadCase_ == PayloadOneofCase.WriteSecured2Bulk) { + output.WriteRawTag(210, 2); + output.WriteMessage(WriteSecured2Bulk); + } + if (payloadCase_ == PayloadOneofCase.ReadBulk) { + output.WriteRawTag(218, 2); + output.WriteMessage(ReadBulk); + } if (payloadCase_ == PayloadOneofCase.Ping) { output.WriteRawTag(162, 6); output.WriteMessage(Ping); @@ -3592,6 +3798,21 @@ namespace MxGateway.Contracts.Proto { if (payloadCase_ == PayloadOneofCase.AcknowledgeAlarmByNameCommand) { size += 2 + pb::CodedOutputStream.ComputeMessageSize(AcknowledgeAlarmByNameCommand); } + if (payloadCase_ == PayloadOneofCase.WriteBulk) { + size += 2 + pb::CodedOutputStream.ComputeMessageSize(WriteBulk); + } + if (payloadCase_ == PayloadOneofCase.Write2Bulk) { + size += 2 + pb::CodedOutputStream.ComputeMessageSize(Write2Bulk); + } + if (payloadCase_ == PayloadOneofCase.WriteSecuredBulk) { + size += 2 + pb::CodedOutputStream.ComputeMessageSize(WriteSecuredBulk); + } + if (payloadCase_ == PayloadOneofCase.WriteSecured2Bulk) { + size += 2 + pb::CodedOutputStream.ComputeMessageSize(WriteSecured2Bulk); + } + if (payloadCase_ == PayloadOneofCase.ReadBulk) { + size += 2 + pb::CodedOutputStream.ComputeMessageSize(ReadBulk); + } if (payloadCase_ == PayloadOneofCase.Ping) { size += 2 + pb::CodedOutputStream.ComputeMessageSize(Ping); } @@ -3797,6 +4018,36 @@ namespace MxGateway.Contracts.Proto { } AcknowledgeAlarmByNameCommand.MergeFrom(other.AcknowledgeAlarmByNameCommand); break; + case PayloadOneofCase.WriteBulk: + if (WriteBulk == null) { + WriteBulk = new global::MxGateway.Contracts.Proto.WriteBulkCommand(); + } + WriteBulk.MergeFrom(other.WriteBulk); + break; + case PayloadOneofCase.Write2Bulk: + if (Write2Bulk == null) { + Write2Bulk = new global::MxGateway.Contracts.Proto.Write2BulkCommand(); + } + Write2Bulk.MergeFrom(other.Write2Bulk); + break; + case PayloadOneofCase.WriteSecuredBulk: + if (WriteSecuredBulk == null) { + WriteSecuredBulk = new global::MxGateway.Contracts.Proto.WriteSecuredBulkCommand(); + } + WriteSecuredBulk.MergeFrom(other.WriteSecuredBulk); + break; + case PayloadOneofCase.WriteSecured2Bulk: + if (WriteSecured2Bulk == null) { + WriteSecured2Bulk = new global::MxGateway.Contracts.Proto.WriteSecured2BulkCommand(); + } + WriteSecured2Bulk.MergeFrom(other.WriteSecured2Bulk); + break; + case PayloadOneofCase.ReadBulk: + if (ReadBulk == null) { + ReadBulk = new global::MxGateway.Contracts.Proto.ReadBulkCommand(); + } + ReadBulk.MergeFrom(other.ReadBulk); + break; case PayloadOneofCase.Ping: if (Ping == null) { Ping = new global::MxGateway.Contracts.Proto.PingCommand(); @@ -4113,6 +4364,51 @@ namespace MxGateway.Contracts.Proto { AcknowledgeAlarmByNameCommand = subBuilder; break; } + case 314: { + global::MxGateway.Contracts.Proto.WriteBulkCommand subBuilder = new global::MxGateway.Contracts.Proto.WriteBulkCommand(); + if (payloadCase_ == PayloadOneofCase.WriteBulk) { + subBuilder.MergeFrom(WriteBulk); + } + input.ReadMessage(subBuilder); + WriteBulk = subBuilder; + break; + } + case 322: { + global::MxGateway.Contracts.Proto.Write2BulkCommand subBuilder = new global::MxGateway.Contracts.Proto.Write2BulkCommand(); + if (payloadCase_ == PayloadOneofCase.Write2Bulk) { + subBuilder.MergeFrom(Write2Bulk); + } + input.ReadMessage(subBuilder); + Write2Bulk = subBuilder; + break; + } + case 330: { + global::MxGateway.Contracts.Proto.WriteSecuredBulkCommand subBuilder = new global::MxGateway.Contracts.Proto.WriteSecuredBulkCommand(); + if (payloadCase_ == PayloadOneofCase.WriteSecuredBulk) { + subBuilder.MergeFrom(WriteSecuredBulk); + } + input.ReadMessage(subBuilder); + WriteSecuredBulk = subBuilder; + break; + } + case 338: { + global::MxGateway.Contracts.Proto.WriteSecured2BulkCommand subBuilder = new global::MxGateway.Contracts.Proto.WriteSecured2BulkCommand(); + if (payloadCase_ == PayloadOneofCase.WriteSecured2Bulk) { + subBuilder.MergeFrom(WriteSecured2Bulk); + } + input.ReadMessage(subBuilder); + WriteSecured2Bulk = subBuilder; + break; + } + case 346: { + global::MxGateway.Contracts.Proto.ReadBulkCommand subBuilder = new global::MxGateway.Contracts.Proto.ReadBulkCommand(); + if (payloadCase_ == PayloadOneofCase.ReadBulk) { + subBuilder.MergeFrom(ReadBulk); + } + input.ReadMessage(subBuilder); + ReadBulk = subBuilder; + break; + } case 802: { global::MxGateway.Contracts.Proto.PingCommand subBuilder = new global::MxGateway.Contracts.Proto.PingCommand(); if (payloadCase_ == PayloadOneofCase.Ping) { @@ -4442,6 +4738,51 @@ namespace MxGateway.Contracts.Proto { AcknowledgeAlarmByNameCommand = subBuilder; break; } + case 314: { + global::MxGateway.Contracts.Proto.WriteBulkCommand subBuilder = new global::MxGateway.Contracts.Proto.WriteBulkCommand(); + if (payloadCase_ == PayloadOneofCase.WriteBulk) { + subBuilder.MergeFrom(WriteBulk); + } + input.ReadMessage(subBuilder); + WriteBulk = subBuilder; + break; + } + case 322: { + global::MxGateway.Contracts.Proto.Write2BulkCommand subBuilder = new global::MxGateway.Contracts.Proto.Write2BulkCommand(); + if (payloadCase_ == PayloadOneofCase.Write2Bulk) { + subBuilder.MergeFrom(Write2Bulk); + } + input.ReadMessage(subBuilder); + Write2Bulk = subBuilder; + break; + } + case 330: { + global::MxGateway.Contracts.Proto.WriteSecuredBulkCommand subBuilder = new global::MxGateway.Contracts.Proto.WriteSecuredBulkCommand(); + if (payloadCase_ == PayloadOneofCase.WriteSecuredBulk) { + subBuilder.MergeFrom(WriteSecuredBulk); + } + input.ReadMessage(subBuilder); + WriteSecuredBulk = subBuilder; + break; + } + case 338: { + global::MxGateway.Contracts.Proto.WriteSecured2BulkCommand subBuilder = new global::MxGateway.Contracts.Proto.WriteSecured2BulkCommand(); + if (payloadCase_ == PayloadOneofCase.WriteSecured2Bulk) { + subBuilder.MergeFrom(WriteSecured2Bulk); + } + input.ReadMessage(subBuilder); + WriteSecured2Bulk = subBuilder; + break; + } + case 346: { + global::MxGateway.Contracts.Proto.ReadBulkCommand subBuilder = new global::MxGateway.Contracts.Proto.ReadBulkCommand(); + if (payloadCase_ == PayloadOneofCase.ReadBulk) { + subBuilder.MergeFrom(ReadBulk); + } + input.ReadMessage(subBuilder); + ReadBulk = subBuilder; + break; + } case 802: { global::MxGateway.Contracts.Proto.PingCommand subBuilder = new global::MxGateway.Contracts.Proto.PingCommand(); if (payloadCase_ == PayloadOneofCase.Ping) { @@ -12064,6 +12405,2485 @@ namespace MxGateway.Contracts.Proto { } + /// + /// Bulk Write — sequential MXAccess Write per entry, on the worker's STA. + /// MXAccess has no native bulk write; each entry round-trips through the same + /// single-item Write path the gateway uses today. Per-item failures appear as + /// BulkWriteResult entries with `was_successful = false` and never throw. + /// + [global::System.Diagnostics.DebuggerDisplayAttribute("{ToString(),nq}")] + public sealed partial class WriteBulkCommand : pb::IMessage + #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE + , pb::IBufferMessage + #endif + { + private static readonly pb::MessageParser _parser = new pb::MessageParser(() => new WriteBulkCommand()); + 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::MxGateway.Contracts.Proto.MxaccessGatewayReflection.Descriptor.MessageTypes[36]; } + } + + [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 WriteBulkCommand() { + OnConstruction(); + } + + partial void OnConstruction(); + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public WriteBulkCommand(WriteBulkCommand other) : this() { + serverHandle_ = other.serverHandle_; + entries_ = other.entries_.Clone(); + _unknownFields = pb::UnknownFieldSet.Clone(other._unknownFields); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public WriteBulkCommand Clone() { + return new WriteBulkCommand(this); + } + + /// Field number for the "server_handle" field. + public const int ServerHandleFieldNumber = 1; + private int serverHandle_; + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public int ServerHandle { + get { return serverHandle_; } + set { + serverHandle_ = value; + } + } + + /// Field number for the "entries" field. + public const int EntriesFieldNumber = 2; + private static readonly pb::FieldCodec _repeated_entries_codec + = pb::FieldCodec.ForMessage(18, global::MxGateway.Contracts.Proto.WriteBulkEntry.Parser); + private readonly pbc::RepeatedField entries_ = new pbc::RepeatedField(); + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public pbc::RepeatedField Entries { + get { return entries_; } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public override bool Equals(object other) { + return Equals(other as WriteBulkCommand); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public bool Equals(WriteBulkCommand other) { + if (ReferenceEquals(other, null)) { + return false; + } + if (ReferenceEquals(other, this)) { + return true; + } + if (ServerHandle != other.ServerHandle) return false; + if(!entries_.Equals(other.entries_)) 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 (ServerHandle != 0) hash ^= ServerHandle.GetHashCode(); + hash ^= entries_.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 (ServerHandle != 0) { + output.WriteRawTag(8); + output.WriteInt32(ServerHandle); + } + entries_.WriteTo(output, _repeated_entries_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 (ServerHandle != 0) { + output.WriteRawTag(8); + output.WriteInt32(ServerHandle); + } + entries_.WriteTo(ref output, _repeated_entries_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 (ServerHandle != 0) { + size += 1 + pb::CodedOutputStream.ComputeInt32Size(ServerHandle); + } + size += entries_.CalculateSize(_repeated_entries_codec); + if (_unknownFields != null) { + size += _unknownFields.CalculateSize(); + } + return size; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public void MergeFrom(WriteBulkCommand other) { + if (other == null) { + return; + } + if (other.ServerHandle != 0) { + ServerHandle = other.ServerHandle; + } + entries_.Add(other.entries_); + _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) { + if ((tag & 7) == 4) { + // Abort on any end group tag. + return; + } + switch(tag) { + default: + _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input); + break; + case 8: { + ServerHandle = input.ReadInt32(); + break; + } + case 18: { + entries_.AddEntriesFrom(input, _repeated_entries_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) { + if ((tag & 7) == 4) { + // Abort on any end group tag. + return; + } + switch(tag) { + default: + _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, ref input); + break; + case 8: { + ServerHandle = input.ReadInt32(); + break; + } + case 18: { + entries_.AddEntriesFrom(ref input, _repeated_entries_codec); + break; + } + } + } + } + #endif + + } + + [global::System.Diagnostics.DebuggerDisplayAttribute("{ToString(),nq}")] + public sealed partial class WriteBulkEntry : pb::IMessage + #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE + , pb::IBufferMessage + #endif + { + private static readonly pb::MessageParser _parser = new pb::MessageParser(() => new WriteBulkEntry()); + 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::MxGateway.Contracts.Proto.MxaccessGatewayReflection.Descriptor.MessageTypes[37]; } + } + + [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 WriteBulkEntry() { + OnConstruction(); + } + + partial void OnConstruction(); + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public WriteBulkEntry(WriteBulkEntry other) : this() { + itemHandle_ = other.itemHandle_; + value_ = other.value_ != null ? other.value_.Clone() : null; + userId_ = other.userId_; + _unknownFields = pb::UnknownFieldSet.Clone(other._unknownFields); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public WriteBulkEntry Clone() { + return new WriteBulkEntry(this); + } + + /// Field number for the "item_handle" field. + public const int ItemHandleFieldNumber = 1; + private int itemHandle_; + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public int ItemHandle { + get { return itemHandle_; } + set { + itemHandle_ = value; + } + } + + /// Field number for the "value" field. + public const int ValueFieldNumber = 2; + private global::MxGateway.Contracts.Proto.MxValue value_; + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public global::MxGateway.Contracts.Proto.MxValue Value { + get { return value_; } + set { + value_ = value; + } + } + + /// Field number for the "user_id" field. + public const int UserIdFieldNumber = 3; + private int userId_; + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public int UserId { + get { return userId_; } + set { + userId_ = value; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public override bool Equals(object other) { + return Equals(other as WriteBulkEntry); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public bool Equals(WriteBulkEntry other) { + if (ReferenceEquals(other, null)) { + return false; + } + if (ReferenceEquals(other, this)) { + return true; + } + if (ItemHandle != other.ItemHandle) return false; + if (!object.Equals(Value, other.Value)) return false; + if (UserId != other.UserId) 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 (ItemHandle != 0) hash ^= ItemHandle.GetHashCode(); + if (value_ != null) hash ^= Value.GetHashCode(); + if (UserId != 0) hash ^= UserId.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 (ItemHandle != 0) { + output.WriteRawTag(8); + output.WriteInt32(ItemHandle); + } + if (value_ != null) { + output.WriteRawTag(18); + output.WriteMessage(Value); + } + if (UserId != 0) { + output.WriteRawTag(24); + output.WriteInt32(UserId); + } + 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 (ItemHandle != 0) { + output.WriteRawTag(8); + output.WriteInt32(ItemHandle); + } + if (value_ != null) { + output.WriteRawTag(18); + output.WriteMessage(Value); + } + if (UserId != 0) { + output.WriteRawTag(24); + output.WriteInt32(UserId); + } + 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 (ItemHandle != 0) { + size += 1 + pb::CodedOutputStream.ComputeInt32Size(ItemHandle); + } + if (value_ != null) { + size += 1 + pb::CodedOutputStream.ComputeMessageSize(Value); + } + if (UserId != 0) { + size += 1 + pb::CodedOutputStream.ComputeInt32Size(UserId); + } + if (_unknownFields != null) { + size += _unknownFields.CalculateSize(); + } + return size; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public void MergeFrom(WriteBulkEntry other) { + if (other == null) { + return; + } + if (other.ItemHandle != 0) { + ItemHandle = other.ItemHandle; + } + if (other.value_ != null) { + if (value_ == null) { + Value = new global::MxGateway.Contracts.Proto.MxValue(); + } + Value.MergeFrom(other.Value); + } + if (other.UserId != 0) { + UserId = other.UserId; + } + _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) { + if ((tag & 7) == 4) { + // Abort on any end group tag. + return; + } + switch(tag) { + default: + _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input); + break; + case 8: { + ItemHandle = input.ReadInt32(); + break; + } + case 18: { + if (value_ == null) { + Value = new global::MxGateway.Contracts.Proto.MxValue(); + } + input.ReadMessage(Value); + break; + } + case 24: { + UserId = input.ReadInt32(); + 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) { + if ((tag & 7) == 4) { + // Abort on any end group tag. + return; + } + switch(tag) { + default: + _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, ref input); + break; + case 8: { + ItemHandle = input.ReadInt32(); + break; + } + case 18: { + if (value_ == null) { + Value = new global::MxGateway.Contracts.Proto.MxValue(); + } + input.ReadMessage(Value); + break; + } + case 24: { + UserId = input.ReadInt32(); + break; + } + } + } + } + #endif + + } + + /// + /// Bulk Write2 — sequential MXAccess Write2 (timestamped) per entry. + /// + [global::System.Diagnostics.DebuggerDisplayAttribute("{ToString(),nq}")] + public sealed partial class Write2BulkCommand : pb::IMessage + #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE + , pb::IBufferMessage + #endif + { + private static readonly pb::MessageParser _parser = new pb::MessageParser(() => new Write2BulkCommand()); + 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::MxGateway.Contracts.Proto.MxaccessGatewayReflection.Descriptor.MessageTypes[38]; } + } + + [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 Write2BulkCommand() { + OnConstruction(); + } + + partial void OnConstruction(); + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public Write2BulkCommand(Write2BulkCommand other) : this() { + serverHandle_ = other.serverHandle_; + entries_ = other.entries_.Clone(); + _unknownFields = pb::UnknownFieldSet.Clone(other._unknownFields); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public Write2BulkCommand Clone() { + return new Write2BulkCommand(this); + } + + /// Field number for the "server_handle" field. + public const int ServerHandleFieldNumber = 1; + private int serverHandle_; + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public int ServerHandle { + get { return serverHandle_; } + set { + serverHandle_ = value; + } + } + + /// Field number for the "entries" field. + public const int EntriesFieldNumber = 2; + private static readonly pb::FieldCodec _repeated_entries_codec + = pb::FieldCodec.ForMessage(18, global::MxGateway.Contracts.Proto.Write2BulkEntry.Parser); + private readonly pbc::RepeatedField entries_ = new pbc::RepeatedField(); + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public pbc::RepeatedField Entries { + get { return entries_; } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public override bool Equals(object other) { + return Equals(other as Write2BulkCommand); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public bool Equals(Write2BulkCommand other) { + if (ReferenceEquals(other, null)) { + return false; + } + if (ReferenceEquals(other, this)) { + return true; + } + if (ServerHandle != other.ServerHandle) return false; + if(!entries_.Equals(other.entries_)) 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 (ServerHandle != 0) hash ^= ServerHandle.GetHashCode(); + hash ^= entries_.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 (ServerHandle != 0) { + output.WriteRawTag(8); + output.WriteInt32(ServerHandle); + } + entries_.WriteTo(output, _repeated_entries_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 (ServerHandle != 0) { + output.WriteRawTag(8); + output.WriteInt32(ServerHandle); + } + entries_.WriteTo(ref output, _repeated_entries_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 (ServerHandle != 0) { + size += 1 + pb::CodedOutputStream.ComputeInt32Size(ServerHandle); + } + size += entries_.CalculateSize(_repeated_entries_codec); + if (_unknownFields != null) { + size += _unknownFields.CalculateSize(); + } + return size; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public void MergeFrom(Write2BulkCommand other) { + if (other == null) { + return; + } + if (other.ServerHandle != 0) { + ServerHandle = other.ServerHandle; + } + entries_.Add(other.entries_); + _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) { + if ((tag & 7) == 4) { + // Abort on any end group tag. + return; + } + switch(tag) { + default: + _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input); + break; + case 8: { + ServerHandle = input.ReadInt32(); + break; + } + case 18: { + entries_.AddEntriesFrom(input, _repeated_entries_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) { + if ((tag & 7) == 4) { + // Abort on any end group tag. + return; + } + switch(tag) { + default: + _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, ref input); + break; + case 8: { + ServerHandle = input.ReadInt32(); + break; + } + case 18: { + entries_.AddEntriesFrom(ref input, _repeated_entries_codec); + break; + } + } + } + } + #endif + + } + + [global::System.Diagnostics.DebuggerDisplayAttribute("{ToString(),nq}")] + public sealed partial class Write2BulkEntry : pb::IMessage + #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE + , pb::IBufferMessage + #endif + { + private static readonly pb::MessageParser _parser = new pb::MessageParser(() => new Write2BulkEntry()); + 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::MxGateway.Contracts.Proto.MxaccessGatewayReflection.Descriptor.MessageTypes[39]; } + } + + [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 Write2BulkEntry() { + OnConstruction(); + } + + partial void OnConstruction(); + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public Write2BulkEntry(Write2BulkEntry other) : this() { + itemHandle_ = other.itemHandle_; + value_ = other.value_ != null ? other.value_.Clone() : null; + timestampValue_ = other.timestampValue_ != null ? other.timestampValue_.Clone() : null; + userId_ = other.userId_; + _unknownFields = pb::UnknownFieldSet.Clone(other._unknownFields); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public Write2BulkEntry Clone() { + return new Write2BulkEntry(this); + } + + /// Field number for the "item_handle" field. + public const int ItemHandleFieldNumber = 1; + private int itemHandle_; + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public int ItemHandle { + get { return itemHandle_; } + set { + itemHandle_ = value; + } + } + + /// Field number for the "value" field. + public const int ValueFieldNumber = 2; + private global::MxGateway.Contracts.Proto.MxValue value_; + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public global::MxGateway.Contracts.Proto.MxValue Value { + get { return value_; } + set { + value_ = value; + } + } + + /// Field number for the "timestamp_value" field. + public const int TimestampValueFieldNumber = 3; + private global::MxGateway.Contracts.Proto.MxValue timestampValue_; + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public global::MxGateway.Contracts.Proto.MxValue TimestampValue { + get { return timestampValue_; } + set { + timestampValue_ = value; + } + } + + /// Field number for the "user_id" field. + public const int UserIdFieldNumber = 4; + private int userId_; + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public int UserId { + get { return userId_; } + set { + userId_ = value; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public override bool Equals(object other) { + return Equals(other as Write2BulkEntry); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public bool Equals(Write2BulkEntry other) { + if (ReferenceEquals(other, null)) { + return false; + } + if (ReferenceEquals(other, this)) { + return true; + } + if (ItemHandle != other.ItemHandle) return false; + if (!object.Equals(Value, other.Value)) return false; + if (!object.Equals(TimestampValue, other.TimestampValue)) return false; + if (UserId != other.UserId) 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 (ItemHandle != 0) hash ^= ItemHandle.GetHashCode(); + if (value_ != null) hash ^= Value.GetHashCode(); + if (timestampValue_ != null) hash ^= TimestampValue.GetHashCode(); + if (UserId != 0) hash ^= UserId.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 (ItemHandle != 0) { + output.WriteRawTag(8); + output.WriteInt32(ItemHandle); + } + if (value_ != null) { + output.WriteRawTag(18); + output.WriteMessage(Value); + } + if (timestampValue_ != null) { + output.WriteRawTag(26); + output.WriteMessage(TimestampValue); + } + if (UserId != 0) { + output.WriteRawTag(32); + output.WriteInt32(UserId); + } + 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 (ItemHandle != 0) { + output.WriteRawTag(8); + output.WriteInt32(ItemHandle); + } + if (value_ != null) { + output.WriteRawTag(18); + output.WriteMessage(Value); + } + if (timestampValue_ != null) { + output.WriteRawTag(26); + output.WriteMessage(TimestampValue); + } + if (UserId != 0) { + output.WriteRawTag(32); + output.WriteInt32(UserId); + } + 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 (ItemHandle != 0) { + size += 1 + pb::CodedOutputStream.ComputeInt32Size(ItemHandle); + } + if (value_ != null) { + size += 1 + pb::CodedOutputStream.ComputeMessageSize(Value); + } + if (timestampValue_ != null) { + size += 1 + pb::CodedOutputStream.ComputeMessageSize(TimestampValue); + } + if (UserId != 0) { + size += 1 + pb::CodedOutputStream.ComputeInt32Size(UserId); + } + if (_unknownFields != null) { + size += _unknownFields.CalculateSize(); + } + return size; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public void MergeFrom(Write2BulkEntry other) { + if (other == null) { + return; + } + if (other.ItemHandle != 0) { + ItemHandle = other.ItemHandle; + } + if (other.value_ != null) { + if (value_ == null) { + Value = new global::MxGateway.Contracts.Proto.MxValue(); + } + Value.MergeFrom(other.Value); + } + if (other.timestampValue_ != null) { + if (timestampValue_ == null) { + TimestampValue = new global::MxGateway.Contracts.Proto.MxValue(); + } + TimestampValue.MergeFrom(other.TimestampValue); + } + if (other.UserId != 0) { + UserId = other.UserId; + } + _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) { + if ((tag & 7) == 4) { + // Abort on any end group tag. + return; + } + switch(tag) { + default: + _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input); + break; + case 8: { + ItemHandle = input.ReadInt32(); + break; + } + case 18: { + if (value_ == null) { + Value = new global::MxGateway.Contracts.Proto.MxValue(); + } + input.ReadMessage(Value); + break; + } + case 26: { + if (timestampValue_ == null) { + TimestampValue = new global::MxGateway.Contracts.Proto.MxValue(); + } + input.ReadMessage(TimestampValue); + break; + } + case 32: { + UserId = input.ReadInt32(); + 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) { + if ((tag & 7) == 4) { + // Abort on any end group tag. + return; + } + switch(tag) { + default: + _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, ref input); + break; + case 8: { + ItemHandle = input.ReadInt32(); + break; + } + case 18: { + if (value_ == null) { + Value = new global::MxGateway.Contracts.Proto.MxValue(); + } + input.ReadMessage(Value); + break; + } + case 26: { + if (timestampValue_ == null) { + TimestampValue = new global::MxGateway.Contracts.Proto.MxValue(); + } + input.ReadMessage(TimestampValue); + break; + } + case 32: { + UserId = input.ReadInt32(); + break; + } + } + } + } + #endif + + } + + /// + /// Bulk WriteSecured — sequential MXAccess WriteSecured per entry. + /// Credential-sensitive values (`value`) MUST be kept out of logs, metrics + /// labels, command lines, and diagnostics — same redaction rules as the + /// single-item WriteSecured contract. + /// + [global::System.Diagnostics.DebuggerDisplayAttribute("{ToString(),nq}")] + public sealed partial class WriteSecuredBulkCommand : pb::IMessage + #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE + , pb::IBufferMessage + #endif + { + private static readonly pb::MessageParser _parser = new pb::MessageParser(() => new WriteSecuredBulkCommand()); + 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::MxGateway.Contracts.Proto.MxaccessGatewayReflection.Descriptor.MessageTypes[40]; } + } + + [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 WriteSecuredBulkCommand() { + OnConstruction(); + } + + partial void OnConstruction(); + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public WriteSecuredBulkCommand(WriteSecuredBulkCommand other) : this() { + serverHandle_ = other.serverHandle_; + entries_ = other.entries_.Clone(); + _unknownFields = pb::UnknownFieldSet.Clone(other._unknownFields); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public WriteSecuredBulkCommand Clone() { + return new WriteSecuredBulkCommand(this); + } + + /// Field number for the "server_handle" field. + public const int ServerHandleFieldNumber = 1; + private int serverHandle_; + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public int ServerHandle { + get { return serverHandle_; } + set { + serverHandle_ = value; + } + } + + /// Field number for the "entries" field. + public const int EntriesFieldNumber = 2; + private static readonly pb::FieldCodec _repeated_entries_codec + = pb::FieldCodec.ForMessage(18, global::MxGateway.Contracts.Proto.WriteSecuredBulkEntry.Parser); + private readonly pbc::RepeatedField entries_ = new pbc::RepeatedField(); + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public pbc::RepeatedField Entries { + get { return entries_; } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public override bool Equals(object other) { + return Equals(other as WriteSecuredBulkCommand); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public bool Equals(WriteSecuredBulkCommand other) { + if (ReferenceEquals(other, null)) { + return false; + } + if (ReferenceEquals(other, this)) { + return true; + } + if (ServerHandle != other.ServerHandle) return false; + if(!entries_.Equals(other.entries_)) 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 (ServerHandle != 0) hash ^= ServerHandle.GetHashCode(); + hash ^= entries_.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 (ServerHandle != 0) { + output.WriteRawTag(8); + output.WriteInt32(ServerHandle); + } + entries_.WriteTo(output, _repeated_entries_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 (ServerHandle != 0) { + output.WriteRawTag(8); + output.WriteInt32(ServerHandle); + } + entries_.WriteTo(ref output, _repeated_entries_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 (ServerHandle != 0) { + size += 1 + pb::CodedOutputStream.ComputeInt32Size(ServerHandle); + } + size += entries_.CalculateSize(_repeated_entries_codec); + if (_unknownFields != null) { + size += _unknownFields.CalculateSize(); + } + return size; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public void MergeFrom(WriteSecuredBulkCommand other) { + if (other == null) { + return; + } + if (other.ServerHandle != 0) { + ServerHandle = other.ServerHandle; + } + entries_.Add(other.entries_); + _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) { + if ((tag & 7) == 4) { + // Abort on any end group tag. + return; + } + switch(tag) { + default: + _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input); + break; + case 8: { + ServerHandle = input.ReadInt32(); + break; + } + case 18: { + entries_.AddEntriesFrom(input, _repeated_entries_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) { + if ((tag & 7) == 4) { + // Abort on any end group tag. + return; + } + switch(tag) { + default: + _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, ref input); + break; + case 8: { + ServerHandle = input.ReadInt32(); + break; + } + case 18: { + entries_.AddEntriesFrom(ref input, _repeated_entries_codec); + break; + } + } + } + } + #endif + + } + + [global::System.Diagnostics.DebuggerDisplayAttribute("{ToString(),nq}")] + public sealed partial class WriteSecuredBulkEntry : pb::IMessage + #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE + , pb::IBufferMessage + #endif + { + private static readonly pb::MessageParser _parser = new pb::MessageParser(() => new WriteSecuredBulkEntry()); + 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::MxGateway.Contracts.Proto.MxaccessGatewayReflection.Descriptor.MessageTypes[41]; } + } + + [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 WriteSecuredBulkEntry() { + OnConstruction(); + } + + partial void OnConstruction(); + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public WriteSecuredBulkEntry(WriteSecuredBulkEntry other) : this() { + itemHandle_ = other.itemHandle_; + currentUserId_ = other.currentUserId_; + verifierUserId_ = other.verifierUserId_; + value_ = other.value_ != null ? other.value_.Clone() : null; + _unknownFields = pb::UnknownFieldSet.Clone(other._unknownFields); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public WriteSecuredBulkEntry Clone() { + return new WriteSecuredBulkEntry(this); + } + + /// Field number for the "item_handle" field. + public const int ItemHandleFieldNumber = 1; + private int itemHandle_; + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public int ItemHandle { + get { return itemHandle_; } + set { + itemHandle_ = value; + } + } + + /// Field number for the "current_user_id" field. + public const int CurrentUserIdFieldNumber = 2; + private int currentUserId_; + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public int CurrentUserId { + get { return currentUserId_; } + set { + currentUserId_ = value; + } + } + + /// Field number for the "verifier_user_id" field. + public const int VerifierUserIdFieldNumber = 3; + private int verifierUserId_; + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public int VerifierUserId { + get { return verifierUserId_; } + set { + verifierUserId_ = value; + } + } + + /// Field number for the "value" field. + public const int ValueFieldNumber = 4; + private global::MxGateway.Contracts.Proto.MxValue value_; + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public global::MxGateway.Contracts.Proto.MxValue Value { + get { return value_; } + set { + value_ = value; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public override bool Equals(object other) { + return Equals(other as WriteSecuredBulkEntry); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public bool Equals(WriteSecuredBulkEntry other) { + if (ReferenceEquals(other, null)) { + return false; + } + if (ReferenceEquals(other, this)) { + return true; + } + if (ItemHandle != other.ItemHandle) return false; + if (CurrentUserId != other.CurrentUserId) return false; + if (VerifierUserId != other.VerifierUserId) return false; + if (!object.Equals(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 (ItemHandle != 0) hash ^= ItemHandle.GetHashCode(); + if (CurrentUserId != 0) hash ^= CurrentUserId.GetHashCode(); + if (VerifierUserId != 0) hash ^= VerifierUserId.GetHashCode(); + if (value_ != null) 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 (ItemHandle != 0) { + output.WriteRawTag(8); + output.WriteInt32(ItemHandle); + } + if (CurrentUserId != 0) { + output.WriteRawTag(16); + output.WriteInt32(CurrentUserId); + } + if (VerifierUserId != 0) { + output.WriteRawTag(24); + output.WriteInt32(VerifierUserId); + } + if (value_ != null) { + output.WriteRawTag(34); + output.WriteMessage(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 (ItemHandle != 0) { + output.WriteRawTag(8); + output.WriteInt32(ItemHandle); + } + if (CurrentUserId != 0) { + output.WriteRawTag(16); + output.WriteInt32(CurrentUserId); + } + if (VerifierUserId != 0) { + output.WriteRawTag(24); + output.WriteInt32(VerifierUserId); + } + if (value_ != null) { + output.WriteRawTag(34); + output.WriteMessage(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 (ItemHandle != 0) { + size += 1 + pb::CodedOutputStream.ComputeInt32Size(ItemHandle); + } + if (CurrentUserId != 0) { + size += 1 + pb::CodedOutputStream.ComputeInt32Size(CurrentUserId); + } + if (VerifierUserId != 0) { + size += 1 + pb::CodedOutputStream.ComputeInt32Size(VerifierUserId); + } + if (value_ != null) { + size += 1 + pb::CodedOutputStream.ComputeMessageSize(Value); + } + if (_unknownFields != null) { + size += _unknownFields.CalculateSize(); + } + return size; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public void MergeFrom(WriteSecuredBulkEntry other) { + if (other == null) { + return; + } + if (other.ItemHandle != 0) { + ItemHandle = other.ItemHandle; + } + if (other.CurrentUserId != 0) { + CurrentUserId = other.CurrentUserId; + } + if (other.VerifierUserId != 0) { + VerifierUserId = other.VerifierUserId; + } + if (other.value_ != null) { + if (value_ == null) { + Value = new global::MxGateway.Contracts.Proto.MxValue(); + } + Value.MergeFrom(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) { + if ((tag & 7) == 4) { + // Abort on any end group tag. + return; + } + switch(tag) { + default: + _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input); + break; + case 8: { + ItemHandle = input.ReadInt32(); + break; + } + case 16: { + CurrentUserId = input.ReadInt32(); + break; + } + case 24: { + VerifierUserId = input.ReadInt32(); + break; + } + case 34: { + if (value_ == null) { + Value = new global::MxGateway.Contracts.Proto.MxValue(); + } + input.ReadMessage(Value); + 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) { + if ((tag & 7) == 4) { + // Abort on any end group tag. + return; + } + switch(tag) { + default: + _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, ref input); + break; + case 8: { + ItemHandle = input.ReadInt32(); + break; + } + case 16: { + CurrentUserId = input.ReadInt32(); + break; + } + case 24: { + VerifierUserId = input.ReadInt32(); + break; + } + case 34: { + if (value_ == null) { + Value = new global::MxGateway.Contracts.Proto.MxValue(); + } + input.ReadMessage(Value); + break; + } + } + } + } + #endif + + } + + /// + /// Bulk WriteSecured2 — sequential MXAccess WriteSecured2 (timestamped) per + /// entry. Same redaction rules apply. + /// + [global::System.Diagnostics.DebuggerDisplayAttribute("{ToString(),nq}")] + public sealed partial class WriteSecured2BulkCommand : pb::IMessage + #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE + , pb::IBufferMessage + #endif + { + private static readonly pb::MessageParser _parser = new pb::MessageParser(() => new WriteSecured2BulkCommand()); + 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::MxGateway.Contracts.Proto.MxaccessGatewayReflection.Descriptor.MessageTypes[42]; } + } + + [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 WriteSecured2BulkCommand() { + OnConstruction(); + } + + partial void OnConstruction(); + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public WriteSecured2BulkCommand(WriteSecured2BulkCommand other) : this() { + serverHandle_ = other.serverHandle_; + entries_ = other.entries_.Clone(); + _unknownFields = pb::UnknownFieldSet.Clone(other._unknownFields); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public WriteSecured2BulkCommand Clone() { + return new WriteSecured2BulkCommand(this); + } + + /// Field number for the "server_handle" field. + public const int ServerHandleFieldNumber = 1; + private int serverHandle_; + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public int ServerHandle { + get { return serverHandle_; } + set { + serverHandle_ = value; + } + } + + /// Field number for the "entries" field. + public const int EntriesFieldNumber = 2; + private static readonly pb::FieldCodec _repeated_entries_codec + = pb::FieldCodec.ForMessage(18, global::MxGateway.Contracts.Proto.WriteSecured2BulkEntry.Parser); + private readonly pbc::RepeatedField entries_ = new pbc::RepeatedField(); + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public pbc::RepeatedField Entries { + get { return entries_; } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public override bool Equals(object other) { + return Equals(other as WriteSecured2BulkCommand); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public bool Equals(WriteSecured2BulkCommand other) { + if (ReferenceEquals(other, null)) { + return false; + } + if (ReferenceEquals(other, this)) { + return true; + } + if (ServerHandle != other.ServerHandle) return false; + if(!entries_.Equals(other.entries_)) 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 (ServerHandle != 0) hash ^= ServerHandle.GetHashCode(); + hash ^= entries_.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 (ServerHandle != 0) { + output.WriteRawTag(8); + output.WriteInt32(ServerHandle); + } + entries_.WriteTo(output, _repeated_entries_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 (ServerHandle != 0) { + output.WriteRawTag(8); + output.WriteInt32(ServerHandle); + } + entries_.WriteTo(ref output, _repeated_entries_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 (ServerHandle != 0) { + size += 1 + pb::CodedOutputStream.ComputeInt32Size(ServerHandle); + } + size += entries_.CalculateSize(_repeated_entries_codec); + if (_unknownFields != null) { + size += _unknownFields.CalculateSize(); + } + return size; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public void MergeFrom(WriteSecured2BulkCommand other) { + if (other == null) { + return; + } + if (other.ServerHandle != 0) { + ServerHandle = other.ServerHandle; + } + entries_.Add(other.entries_); + _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) { + if ((tag & 7) == 4) { + // Abort on any end group tag. + return; + } + switch(tag) { + default: + _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input); + break; + case 8: { + ServerHandle = input.ReadInt32(); + break; + } + case 18: { + entries_.AddEntriesFrom(input, _repeated_entries_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) { + if ((tag & 7) == 4) { + // Abort on any end group tag. + return; + } + switch(tag) { + default: + _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, ref input); + break; + case 8: { + ServerHandle = input.ReadInt32(); + break; + } + case 18: { + entries_.AddEntriesFrom(ref input, _repeated_entries_codec); + break; + } + } + } + } + #endif + + } + + [global::System.Diagnostics.DebuggerDisplayAttribute("{ToString(),nq}")] + public sealed partial class WriteSecured2BulkEntry : pb::IMessage + #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE + , pb::IBufferMessage + #endif + { + private static readonly pb::MessageParser _parser = new pb::MessageParser(() => new WriteSecured2BulkEntry()); + 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::MxGateway.Contracts.Proto.MxaccessGatewayReflection.Descriptor.MessageTypes[43]; } + } + + [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 WriteSecured2BulkEntry() { + OnConstruction(); + } + + partial void OnConstruction(); + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public WriteSecured2BulkEntry(WriteSecured2BulkEntry other) : this() { + itemHandle_ = other.itemHandle_; + currentUserId_ = other.currentUserId_; + verifierUserId_ = other.verifierUserId_; + value_ = other.value_ != null ? other.value_.Clone() : null; + timestampValue_ = other.timestampValue_ != null ? other.timestampValue_.Clone() : null; + _unknownFields = pb::UnknownFieldSet.Clone(other._unknownFields); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public WriteSecured2BulkEntry Clone() { + return new WriteSecured2BulkEntry(this); + } + + /// Field number for the "item_handle" field. + public const int ItemHandleFieldNumber = 1; + private int itemHandle_; + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public int ItemHandle { + get { return itemHandle_; } + set { + itemHandle_ = value; + } + } + + /// Field number for the "current_user_id" field. + public const int CurrentUserIdFieldNumber = 2; + private int currentUserId_; + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public int CurrentUserId { + get { return currentUserId_; } + set { + currentUserId_ = value; + } + } + + /// Field number for the "verifier_user_id" field. + public const int VerifierUserIdFieldNumber = 3; + private int verifierUserId_; + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public int VerifierUserId { + get { return verifierUserId_; } + set { + verifierUserId_ = value; + } + } + + /// Field number for the "value" field. + public const int ValueFieldNumber = 4; + private global::MxGateway.Contracts.Proto.MxValue value_; + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public global::MxGateway.Contracts.Proto.MxValue Value { + get { return value_; } + set { + value_ = value; + } + } + + /// Field number for the "timestamp_value" field. + public const int TimestampValueFieldNumber = 5; + private global::MxGateway.Contracts.Proto.MxValue timestampValue_; + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public global::MxGateway.Contracts.Proto.MxValue TimestampValue { + get { return timestampValue_; } + set { + timestampValue_ = value; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public override bool Equals(object other) { + return Equals(other as WriteSecured2BulkEntry); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public bool Equals(WriteSecured2BulkEntry other) { + if (ReferenceEquals(other, null)) { + return false; + } + if (ReferenceEquals(other, this)) { + return true; + } + if (ItemHandle != other.ItemHandle) return false; + if (CurrentUserId != other.CurrentUserId) return false; + if (VerifierUserId != other.VerifierUserId) return false; + if (!object.Equals(Value, other.Value)) return false; + if (!object.Equals(TimestampValue, other.TimestampValue)) 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 (ItemHandle != 0) hash ^= ItemHandle.GetHashCode(); + if (CurrentUserId != 0) hash ^= CurrentUserId.GetHashCode(); + if (VerifierUserId != 0) hash ^= VerifierUserId.GetHashCode(); + if (value_ != null) hash ^= Value.GetHashCode(); + if (timestampValue_ != null) hash ^= TimestampValue.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 (ItemHandle != 0) { + output.WriteRawTag(8); + output.WriteInt32(ItemHandle); + } + if (CurrentUserId != 0) { + output.WriteRawTag(16); + output.WriteInt32(CurrentUserId); + } + if (VerifierUserId != 0) { + output.WriteRawTag(24); + output.WriteInt32(VerifierUserId); + } + if (value_ != null) { + output.WriteRawTag(34); + output.WriteMessage(Value); + } + if (timestampValue_ != null) { + output.WriteRawTag(42); + output.WriteMessage(TimestampValue); + } + 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 (ItemHandle != 0) { + output.WriteRawTag(8); + output.WriteInt32(ItemHandle); + } + if (CurrentUserId != 0) { + output.WriteRawTag(16); + output.WriteInt32(CurrentUserId); + } + if (VerifierUserId != 0) { + output.WriteRawTag(24); + output.WriteInt32(VerifierUserId); + } + if (value_ != null) { + output.WriteRawTag(34); + output.WriteMessage(Value); + } + if (timestampValue_ != null) { + output.WriteRawTag(42); + output.WriteMessage(TimestampValue); + } + 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 (ItemHandle != 0) { + size += 1 + pb::CodedOutputStream.ComputeInt32Size(ItemHandle); + } + if (CurrentUserId != 0) { + size += 1 + pb::CodedOutputStream.ComputeInt32Size(CurrentUserId); + } + if (VerifierUserId != 0) { + size += 1 + pb::CodedOutputStream.ComputeInt32Size(VerifierUserId); + } + if (value_ != null) { + size += 1 + pb::CodedOutputStream.ComputeMessageSize(Value); + } + if (timestampValue_ != null) { + size += 1 + pb::CodedOutputStream.ComputeMessageSize(TimestampValue); + } + if (_unknownFields != null) { + size += _unknownFields.CalculateSize(); + } + return size; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public void MergeFrom(WriteSecured2BulkEntry other) { + if (other == null) { + return; + } + if (other.ItemHandle != 0) { + ItemHandle = other.ItemHandle; + } + if (other.CurrentUserId != 0) { + CurrentUserId = other.CurrentUserId; + } + if (other.VerifierUserId != 0) { + VerifierUserId = other.VerifierUserId; + } + if (other.value_ != null) { + if (value_ == null) { + Value = new global::MxGateway.Contracts.Proto.MxValue(); + } + Value.MergeFrom(other.Value); + } + if (other.timestampValue_ != null) { + if (timestampValue_ == null) { + TimestampValue = new global::MxGateway.Contracts.Proto.MxValue(); + } + TimestampValue.MergeFrom(other.TimestampValue); + } + _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) { + if ((tag & 7) == 4) { + // Abort on any end group tag. + return; + } + switch(tag) { + default: + _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input); + break; + case 8: { + ItemHandle = input.ReadInt32(); + break; + } + case 16: { + CurrentUserId = input.ReadInt32(); + break; + } + case 24: { + VerifierUserId = input.ReadInt32(); + break; + } + case 34: { + if (value_ == null) { + Value = new global::MxGateway.Contracts.Proto.MxValue(); + } + input.ReadMessage(Value); + break; + } + case 42: { + if (timestampValue_ == null) { + TimestampValue = new global::MxGateway.Contracts.Proto.MxValue(); + } + input.ReadMessage(TimestampValue); + 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) { + if ((tag & 7) == 4) { + // Abort on any end group tag. + return; + } + switch(tag) { + default: + _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, ref input); + break; + case 8: { + ItemHandle = input.ReadInt32(); + break; + } + case 16: { + CurrentUserId = input.ReadInt32(); + break; + } + case 24: { + VerifierUserId = input.ReadInt32(); + break; + } + case 34: { + if (value_ == null) { + Value = new global::MxGateway.Contracts.Proto.MxValue(); + } + input.ReadMessage(Value); + break; + } + case 42: { + if (timestampValue_ == null) { + TimestampValue = new global::MxGateway.Contracts.Proto.MxValue(); + } + input.ReadMessage(TimestampValue); + break; + } + } + } + } + #endif + + } + + /// + /// Bulk Read — snapshot the current value for each requested tag. MXAccess COM + /// has no synchronous Read; the worker implements ReadBulk as: + /// - If the tag is already in the session's item registry AND that item is + /// currently advised AND the worker has a cached OnDataChange for it, the + /// reply returns the cached value WITHOUT modifying the existing + /// subscription (was_cached = true). + /// - Otherwise the worker takes the snapshot lifecycle itself: AddItem + + /// Advise, wait up to `timeout_ms` for the first OnDataChange, then + /// UnAdvise + RemoveItem before returning. The session is left exactly + /// as it was before the call (was_cached = false). + /// `timeout_ms == 0` uses the gateway-configured default (1000 ms). + /// + [global::System.Diagnostics.DebuggerDisplayAttribute("{ToString(),nq}")] + public sealed partial class ReadBulkCommand : pb::IMessage + #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE + , pb::IBufferMessage + #endif + { + private static readonly pb::MessageParser _parser = new pb::MessageParser(() => new ReadBulkCommand()); + 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::MxGateway.Contracts.Proto.MxaccessGatewayReflection.Descriptor.MessageTypes[44]; } + } + + [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 ReadBulkCommand() { + OnConstruction(); + } + + partial void OnConstruction(); + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public ReadBulkCommand(ReadBulkCommand other) : this() { + serverHandle_ = other.serverHandle_; + tagAddresses_ = other.tagAddresses_.Clone(); + timeoutMs_ = other.timeoutMs_; + _unknownFields = pb::UnknownFieldSet.Clone(other._unknownFields); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public ReadBulkCommand Clone() { + return new ReadBulkCommand(this); + } + + /// Field number for the "server_handle" field. + public const int ServerHandleFieldNumber = 1; + private int serverHandle_; + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public int ServerHandle { + get { return serverHandle_; } + set { + serverHandle_ = value; + } + } + + /// Field number for the "tag_addresses" field. + public const int TagAddressesFieldNumber = 2; + private static readonly pb::FieldCodec _repeated_tagAddresses_codec + = pb::FieldCodec.ForString(18); + private readonly pbc::RepeatedField tagAddresses_ = new pbc::RepeatedField(); + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public pbc::RepeatedField TagAddresses { + get { return tagAddresses_; } + } + + /// Field number for the "timeout_ms" field. + public const int TimeoutMsFieldNumber = 3; + private uint timeoutMs_; + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public uint TimeoutMs { + get { return timeoutMs_; } + set { + timeoutMs_ = value; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public override bool Equals(object other) { + return Equals(other as ReadBulkCommand); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public bool Equals(ReadBulkCommand other) { + if (ReferenceEquals(other, null)) { + return false; + } + if (ReferenceEquals(other, this)) { + return true; + } + if (ServerHandle != other.ServerHandle) return false; + if(!tagAddresses_.Equals(other.tagAddresses_)) return false; + if (TimeoutMs != other.TimeoutMs) 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 (ServerHandle != 0) hash ^= ServerHandle.GetHashCode(); + hash ^= tagAddresses_.GetHashCode(); + if (TimeoutMs != 0) hash ^= TimeoutMs.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 (ServerHandle != 0) { + output.WriteRawTag(8); + output.WriteInt32(ServerHandle); + } + tagAddresses_.WriteTo(output, _repeated_tagAddresses_codec); + if (TimeoutMs != 0) { + output.WriteRawTag(24); + output.WriteUInt32(TimeoutMs); + } + 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 (ServerHandle != 0) { + output.WriteRawTag(8); + output.WriteInt32(ServerHandle); + } + tagAddresses_.WriteTo(ref output, _repeated_tagAddresses_codec); + if (TimeoutMs != 0) { + output.WriteRawTag(24); + output.WriteUInt32(TimeoutMs); + } + 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 (ServerHandle != 0) { + size += 1 + pb::CodedOutputStream.ComputeInt32Size(ServerHandle); + } + size += tagAddresses_.CalculateSize(_repeated_tagAddresses_codec); + if (TimeoutMs != 0) { + size += 1 + pb::CodedOutputStream.ComputeUInt32Size(TimeoutMs); + } + if (_unknownFields != null) { + size += _unknownFields.CalculateSize(); + } + return size; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public void MergeFrom(ReadBulkCommand other) { + if (other == null) { + return; + } + if (other.ServerHandle != 0) { + ServerHandle = other.ServerHandle; + } + tagAddresses_.Add(other.tagAddresses_); + if (other.TimeoutMs != 0) { + TimeoutMs = other.TimeoutMs; + } + _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) { + if ((tag & 7) == 4) { + // Abort on any end group tag. + return; + } + switch(tag) { + default: + _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input); + break; + case 8: { + ServerHandle = input.ReadInt32(); + break; + } + case 18: { + tagAddresses_.AddEntriesFrom(input, _repeated_tagAddresses_codec); + break; + } + case 24: { + TimeoutMs = input.ReadUInt32(); + 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) { + if ((tag & 7) == 4) { + // Abort on any end group tag. + return; + } + switch(tag) { + default: + _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, ref input); + break; + case 8: { + ServerHandle = input.ReadInt32(); + break; + } + case 18: { + tagAddresses_.AddEntriesFrom(ref input, _repeated_tagAddresses_codec); + break; + } + case 24: { + TimeoutMs = input.ReadUInt32(); + break; + } + } + } + } + #endif + + } + [global::System.Diagnostics.DebuggerDisplayAttribute("{ToString(),nq}")] public sealed partial class PingCommand : pb::IMessage #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE @@ -12079,7 +14899,7 @@ namespace MxGateway.Contracts.Proto { [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public static pbr::MessageDescriptor Descriptor { - get { return global::MxGateway.Contracts.Proto.MxaccessGatewayReflection.Descriptor.MessageTypes[36]; } + get { return global::MxGateway.Contracts.Proto.MxaccessGatewayReflection.Descriptor.MessageTypes[45]; } } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] @@ -12277,7 +15097,7 @@ namespace MxGateway.Contracts.Proto { [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public static pbr::MessageDescriptor Descriptor { - get { return global::MxGateway.Contracts.Proto.MxaccessGatewayReflection.Descriptor.MessageTypes[37]; } + get { return global::MxGateway.Contracts.Proto.MxaccessGatewayReflection.Descriptor.MessageTypes[46]; } } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] @@ -12438,7 +15258,7 @@ namespace MxGateway.Contracts.Proto { [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public static pbr::MessageDescriptor Descriptor { - get { return global::MxGateway.Contracts.Proto.MxaccessGatewayReflection.Descriptor.MessageTypes[38]; } + get { return global::MxGateway.Contracts.Proto.MxaccessGatewayReflection.Descriptor.MessageTypes[47]; } } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] @@ -12599,7 +15419,7 @@ namespace MxGateway.Contracts.Proto { [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public static pbr::MessageDescriptor Descriptor { - get { return global::MxGateway.Contracts.Proto.MxaccessGatewayReflection.Descriptor.MessageTypes[39]; } + get { return global::MxGateway.Contracts.Proto.MxaccessGatewayReflection.Descriptor.MessageTypes[48]; } } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] @@ -12797,7 +15617,7 @@ namespace MxGateway.Contracts.Proto { [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public static pbr::MessageDescriptor Descriptor { - get { return global::MxGateway.Contracts.Proto.MxaccessGatewayReflection.Descriptor.MessageTypes[40]; } + get { return global::MxGateway.Contracts.Proto.MxaccessGatewayReflection.Descriptor.MessageTypes[49]; } } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] @@ -13005,7 +15825,7 @@ namespace MxGateway.Contracts.Proto { [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public static pbr::MessageDescriptor Descriptor { - get { return global::MxGateway.Contracts.Proto.MxaccessGatewayReflection.Descriptor.MessageTypes[41]; } + get { return global::MxGateway.Contracts.Proto.MxaccessGatewayReflection.Descriptor.MessageTypes[50]; } } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] @@ -13083,6 +15903,21 @@ namespace MxGateway.Contracts.Proto { case PayloadOneofCase.QueryActiveAlarms: QueryActiveAlarms = other.QueryActiveAlarms.Clone(); break; + case PayloadOneofCase.WriteBulk: + WriteBulk = other.WriteBulk.Clone(); + break; + case PayloadOneofCase.Write2Bulk: + Write2Bulk = other.Write2Bulk.Clone(); + break; + case PayloadOneofCase.WriteSecuredBulk: + WriteSecuredBulk = other.WriteSecuredBulk.Clone(); + break; + case PayloadOneofCase.WriteSecured2Bulk: + WriteSecured2Bulk = other.WriteSecured2Bulk.Clone(); + break; + case PayloadOneofCase.ReadBulk: + ReadBulk = other.ReadBulk.Clone(); + break; case PayloadOneofCase.SessionState: SessionState = other.SessionState.Clone(); break; @@ -13421,6 +16256,66 @@ namespace MxGateway.Contracts.Proto { } } + /// Field number for the "write_bulk" field. + public const int WriteBulkFieldNumber = 36; + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public global::MxGateway.Contracts.Proto.BulkWriteReply WriteBulk { + get { return payloadCase_ == PayloadOneofCase.WriteBulk ? (global::MxGateway.Contracts.Proto.BulkWriteReply) payload_ : null; } + set { + payload_ = value; + payloadCase_ = value == null ? PayloadOneofCase.None : PayloadOneofCase.WriteBulk; + } + } + + /// Field number for the "write2_bulk" field. + public const int Write2BulkFieldNumber = 37; + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public global::MxGateway.Contracts.Proto.BulkWriteReply Write2Bulk { + get { return payloadCase_ == PayloadOneofCase.Write2Bulk ? (global::MxGateway.Contracts.Proto.BulkWriteReply) payload_ : null; } + set { + payload_ = value; + payloadCase_ = value == null ? PayloadOneofCase.None : PayloadOneofCase.Write2Bulk; + } + } + + /// Field number for the "write_secured_bulk" field. + public const int WriteSecuredBulkFieldNumber = 38; + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public global::MxGateway.Contracts.Proto.BulkWriteReply WriteSecuredBulk { + get { return payloadCase_ == PayloadOneofCase.WriteSecuredBulk ? (global::MxGateway.Contracts.Proto.BulkWriteReply) payload_ : null; } + set { + payload_ = value; + payloadCase_ = value == null ? PayloadOneofCase.None : PayloadOneofCase.WriteSecuredBulk; + } + } + + /// Field number for the "write_secured2_bulk" field. + public const int WriteSecured2BulkFieldNumber = 39; + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public global::MxGateway.Contracts.Proto.BulkWriteReply WriteSecured2Bulk { + get { return payloadCase_ == PayloadOneofCase.WriteSecured2Bulk ? (global::MxGateway.Contracts.Proto.BulkWriteReply) payload_ : null; } + set { + payload_ = value; + payloadCase_ = value == null ? PayloadOneofCase.None : PayloadOneofCase.WriteSecured2Bulk; + } + } + + /// Field number for the "read_bulk" field. + public const int ReadBulkFieldNumber = 40; + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public global::MxGateway.Contracts.Proto.BulkReadReply ReadBulk { + get { return payloadCase_ == PayloadOneofCase.ReadBulk ? (global::MxGateway.Contracts.Proto.BulkReadReply) payload_ : null; } + set { + payload_ = value; + payloadCase_ = value == null ? PayloadOneofCase.None : PayloadOneofCase.ReadBulk; + } + } + /// Field number for the "session_state" field. public const int SessionStateFieldNumber = 100; [global::System.Diagnostics.DebuggerNonUserCodeAttribute] @@ -13477,6 +16372,11 @@ namespace MxGateway.Contracts.Proto { UnsubscribeBulk = 33, AcknowledgeAlarm = 34, QueryActiveAlarms = 35, + WriteBulk = 36, + Write2Bulk = 37, + WriteSecuredBulk = 38, + WriteSecured2Bulk = 39, + ReadBulk = 40, SessionState = 100, WorkerInfo = 101, DrainEvents = 102, @@ -13534,6 +16434,11 @@ namespace MxGateway.Contracts.Proto { if (!object.Equals(UnsubscribeBulk, other.UnsubscribeBulk)) return false; if (!object.Equals(AcknowledgeAlarm, other.AcknowledgeAlarm)) return false; if (!object.Equals(QueryActiveAlarms, other.QueryActiveAlarms)) return false; + if (!object.Equals(WriteBulk, other.WriteBulk)) return false; + if (!object.Equals(Write2Bulk, other.Write2Bulk)) return false; + if (!object.Equals(WriteSecuredBulk, other.WriteSecuredBulk)) return false; + if (!object.Equals(WriteSecured2Bulk, other.WriteSecured2Bulk)) return false; + if (!object.Equals(ReadBulk, other.ReadBulk)) return false; if (!object.Equals(SessionState, other.SessionState)) return false; if (!object.Equals(WorkerInfo, other.WorkerInfo)) return false; if (!object.Equals(DrainEvents, other.DrainEvents)) return false; @@ -13569,6 +16474,11 @@ namespace MxGateway.Contracts.Proto { if (payloadCase_ == PayloadOneofCase.UnsubscribeBulk) hash ^= UnsubscribeBulk.GetHashCode(); if (payloadCase_ == PayloadOneofCase.AcknowledgeAlarm) hash ^= AcknowledgeAlarm.GetHashCode(); if (payloadCase_ == PayloadOneofCase.QueryActiveAlarms) hash ^= QueryActiveAlarms.GetHashCode(); + if (payloadCase_ == PayloadOneofCase.WriteBulk) hash ^= WriteBulk.GetHashCode(); + if (payloadCase_ == PayloadOneofCase.Write2Bulk) hash ^= Write2Bulk.GetHashCode(); + if (payloadCase_ == PayloadOneofCase.WriteSecuredBulk) hash ^= WriteSecuredBulk.GetHashCode(); + if (payloadCase_ == PayloadOneofCase.WriteSecured2Bulk) hash ^= WriteSecured2Bulk.GetHashCode(); + if (payloadCase_ == PayloadOneofCase.ReadBulk) hash ^= ReadBulk.GetHashCode(); if (payloadCase_ == PayloadOneofCase.SessionState) hash ^= SessionState.GetHashCode(); if (payloadCase_ == PayloadOneofCase.WorkerInfo) hash ^= WorkerInfo.GetHashCode(); if (payloadCase_ == PayloadOneofCase.DrainEvents) hash ^= DrainEvents.GetHashCode(); @@ -13684,6 +16594,26 @@ namespace MxGateway.Contracts.Proto { output.WriteRawTag(154, 2); output.WriteMessage(QueryActiveAlarms); } + if (payloadCase_ == PayloadOneofCase.WriteBulk) { + output.WriteRawTag(162, 2); + output.WriteMessage(WriteBulk); + } + if (payloadCase_ == PayloadOneofCase.Write2Bulk) { + output.WriteRawTag(170, 2); + output.WriteMessage(Write2Bulk); + } + if (payloadCase_ == PayloadOneofCase.WriteSecuredBulk) { + output.WriteRawTag(178, 2); + output.WriteMessage(WriteSecuredBulk); + } + if (payloadCase_ == PayloadOneofCase.WriteSecured2Bulk) { + output.WriteRawTag(186, 2); + output.WriteMessage(WriteSecured2Bulk); + } + if (payloadCase_ == PayloadOneofCase.ReadBulk) { + output.WriteRawTag(194, 2); + output.WriteMessage(ReadBulk); + } if (payloadCase_ == PayloadOneofCase.SessionState) { output.WriteRawTag(162, 6); output.WriteMessage(SessionState); @@ -13799,6 +16729,26 @@ namespace MxGateway.Contracts.Proto { output.WriteRawTag(154, 2); output.WriteMessage(QueryActiveAlarms); } + if (payloadCase_ == PayloadOneofCase.WriteBulk) { + output.WriteRawTag(162, 2); + output.WriteMessage(WriteBulk); + } + if (payloadCase_ == PayloadOneofCase.Write2Bulk) { + output.WriteRawTag(170, 2); + output.WriteMessage(Write2Bulk); + } + if (payloadCase_ == PayloadOneofCase.WriteSecuredBulk) { + output.WriteRawTag(178, 2); + output.WriteMessage(WriteSecuredBulk); + } + if (payloadCase_ == PayloadOneofCase.WriteSecured2Bulk) { + output.WriteRawTag(186, 2); + output.WriteMessage(WriteSecured2Bulk); + } + if (payloadCase_ == PayloadOneofCase.ReadBulk) { + output.WriteRawTag(194, 2); + output.WriteMessage(ReadBulk); + } if (payloadCase_ == PayloadOneofCase.SessionState) { output.WriteRawTag(162, 6); output.WriteMessage(SessionState); @@ -13891,6 +16841,21 @@ namespace MxGateway.Contracts.Proto { if (payloadCase_ == PayloadOneofCase.QueryActiveAlarms) { size += 2 + pb::CodedOutputStream.ComputeMessageSize(QueryActiveAlarms); } + if (payloadCase_ == PayloadOneofCase.WriteBulk) { + size += 2 + pb::CodedOutputStream.ComputeMessageSize(WriteBulk); + } + if (payloadCase_ == PayloadOneofCase.Write2Bulk) { + size += 2 + pb::CodedOutputStream.ComputeMessageSize(Write2Bulk); + } + if (payloadCase_ == PayloadOneofCase.WriteSecuredBulk) { + size += 2 + pb::CodedOutputStream.ComputeMessageSize(WriteSecuredBulk); + } + if (payloadCase_ == PayloadOneofCase.WriteSecured2Bulk) { + size += 2 + pb::CodedOutputStream.ComputeMessageSize(WriteSecured2Bulk); + } + if (payloadCase_ == PayloadOneofCase.ReadBulk) { + size += 2 + pb::CodedOutputStream.ComputeMessageSize(ReadBulk); + } if (payloadCase_ == PayloadOneofCase.SessionState) { size += 2 + pb::CodedOutputStream.ComputeMessageSize(SessionState); } @@ -14037,6 +17002,36 @@ namespace MxGateway.Contracts.Proto { } QueryActiveAlarms.MergeFrom(other.QueryActiveAlarms); break; + case PayloadOneofCase.WriteBulk: + if (WriteBulk == null) { + WriteBulk = new global::MxGateway.Contracts.Proto.BulkWriteReply(); + } + WriteBulk.MergeFrom(other.WriteBulk); + break; + case PayloadOneofCase.Write2Bulk: + if (Write2Bulk == null) { + Write2Bulk = new global::MxGateway.Contracts.Proto.BulkWriteReply(); + } + Write2Bulk.MergeFrom(other.Write2Bulk); + break; + case PayloadOneofCase.WriteSecuredBulk: + if (WriteSecuredBulk == null) { + WriteSecuredBulk = new global::MxGateway.Contracts.Proto.BulkWriteReply(); + } + WriteSecuredBulk.MergeFrom(other.WriteSecuredBulk); + break; + case PayloadOneofCase.WriteSecured2Bulk: + if (WriteSecured2Bulk == null) { + WriteSecured2Bulk = new global::MxGateway.Contracts.Proto.BulkWriteReply(); + } + WriteSecured2Bulk.MergeFrom(other.WriteSecured2Bulk); + break; + case PayloadOneofCase.ReadBulk: + if (ReadBulk == null) { + ReadBulk = new global::MxGateway.Contracts.Proto.BulkReadReply(); + } + ReadBulk.MergeFrom(other.ReadBulk); + break; case PayloadOneofCase.SessionState: if (SessionState == null) { SessionState = new global::MxGateway.Contracts.Proto.SessionStateReply(); @@ -14258,6 +17253,51 @@ namespace MxGateway.Contracts.Proto { QueryActiveAlarms = subBuilder; break; } + case 290: { + global::MxGateway.Contracts.Proto.BulkWriteReply subBuilder = new global::MxGateway.Contracts.Proto.BulkWriteReply(); + if (payloadCase_ == PayloadOneofCase.WriteBulk) { + subBuilder.MergeFrom(WriteBulk); + } + input.ReadMessage(subBuilder); + WriteBulk = subBuilder; + break; + } + case 298: { + global::MxGateway.Contracts.Proto.BulkWriteReply subBuilder = new global::MxGateway.Contracts.Proto.BulkWriteReply(); + if (payloadCase_ == PayloadOneofCase.Write2Bulk) { + subBuilder.MergeFrom(Write2Bulk); + } + input.ReadMessage(subBuilder); + Write2Bulk = subBuilder; + break; + } + case 306: { + global::MxGateway.Contracts.Proto.BulkWriteReply subBuilder = new global::MxGateway.Contracts.Proto.BulkWriteReply(); + if (payloadCase_ == PayloadOneofCase.WriteSecuredBulk) { + subBuilder.MergeFrom(WriteSecuredBulk); + } + input.ReadMessage(subBuilder); + WriteSecuredBulk = subBuilder; + break; + } + case 314: { + global::MxGateway.Contracts.Proto.BulkWriteReply subBuilder = new global::MxGateway.Contracts.Proto.BulkWriteReply(); + if (payloadCase_ == PayloadOneofCase.WriteSecured2Bulk) { + subBuilder.MergeFrom(WriteSecured2Bulk); + } + input.ReadMessage(subBuilder); + WriteSecured2Bulk = subBuilder; + break; + } + case 322: { + global::MxGateway.Contracts.Proto.BulkReadReply subBuilder = new global::MxGateway.Contracts.Proto.BulkReadReply(); + if (payloadCase_ == PayloadOneofCase.ReadBulk) { + subBuilder.MergeFrom(ReadBulk); + } + input.ReadMessage(subBuilder); + ReadBulk = subBuilder; + break; + } case 802: { global::MxGateway.Contracts.Proto.SessionStateReply subBuilder = new global::MxGateway.Contracts.Proto.SessionStateReply(); if (payloadCase_ == PayloadOneofCase.SessionState) { @@ -14486,6 +17526,51 @@ namespace MxGateway.Contracts.Proto { QueryActiveAlarms = subBuilder; break; } + case 290: { + global::MxGateway.Contracts.Proto.BulkWriteReply subBuilder = new global::MxGateway.Contracts.Proto.BulkWriteReply(); + if (payloadCase_ == PayloadOneofCase.WriteBulk) { + subBuilder.MergeFrom(WriteBulk); + } + input.ReadMessage(subBuilder); + WriteBulk = subBuilder; + break; + } + case 298: { + global::MxGateway.Contracts.Proto.BulkWriteReply subBuilder = new global::MxGateway.Contracts.Proto.BulkWriteReply(); + if (payloadCase_ == PayloadOneofCase.Write2Bulk) { + subBuilder.MergeFrom(Write2Bulk); + } + input.ReadMessage(subBuilder); + Write2Bulk = subBuilder; + break; + } + case 306: { + global::MxGateway.Contracts.Proto.BulkWriteReply subBuilder = new global::MxGateway.Contracts.Proto.BulkWriteReply(); + if (payloadCase_ == PayloadOneofCase.WriteSecuredBulk) { + subBuilder.MergeFrom(WriteSecuredBulk); + } + input.ReadMessage(subBuilder); + WriteSecuredBulk = subBuilder; + break; + } + case 314: { + global::MxGateway.Contracts.Proto.BulkWriteReply subBuilder = new global::MxGateway.Contracts.Proto.BulkWriteReply(); + if (payloadCase_ == PayloadOneofCase.WriteSecured2Bulk) { + subBuilder.MergeFrom(WriteSecured2Bulk); + } + input.ReadMessage(subBuilder); + WriteSecured2Bulk = subBuilder; + break; + } + case 322: { + global::MxGateway.Contracts.Proto.BulkReadReply subBuilder = new global::MxGateway.Contracts.Proto.BulkReadReply(); + if (payloadCase_ == PayloadOneofCase.ReadBulk) { + subBuilder.MergeFrom(ReadBulk); + } + input.ReadMessage(subBuilder); + ReadBulk = subBuilder; + break; + } case 802: { global::MxGateway.Contracts.Proto.SessionStateReply subBuilder = new global::MxGateway.Contracts.Proto.SessionStateReply(); if (payloadCase_ == PayloadOneofCase.SessionState) { @@ -14535,7 +17620,7 @@ namespace MxGateway.Contracts.Proto { [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public static pbr::MessageDescriptor Descriptor { - get { return global::MxGateway.Contracts.Proto.MxaccessGatewayReflection.Descriptor.MessageTypes[42]; } + get { return global::MxGateway.Contracts.Proto.MxaccessGatewayReflection.Descriptor.MessageTypes[51]; } } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] @@ -14733,7 +17818,7 @@ namespace MxGateway.Contracts.Proto { [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public static pbr::MessageDescriptor Descriptor { - get { return global::MxGateway.Contracts.Proto.MxaccessGatewayReflection.Descriptor.MessageTypes[43]; } + get { return global::MxGateway.Contracts.Proto.MxaccessGatewayReflection.Descriptor.MessageTypes[52]; } } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] @@ -14931,7 +18016,7 @@ namespace MxGateway.Contracts.Proto { [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public static pbr::MessageDescriptor Descriptor { - get { return global::MxGateway.Contracts.Proto.MxaccessGatewayReflection.Descriptor.MessageTypes[44]; } + get { return global::MxGateway.Contracts.Proto.MxaccessGatewayReflection.Descriptor.MessageTypes[53]; } } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] @@ -15129,7 +18214,7 @@ namespace MxGateway.Contracts.Proto { [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public static pbr::MessageDescriptor Descriptor { - get { return global::MxGateway.Contracts.Proto.MxaccessGatewayReflection.Descriptor.MessageTypes[45]; } + get { return global::MxGateway.Contracts.Proto.MxaccessGatewayReflection.Descriptor.MessageTypes[54]; } } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] @@ -15327,7 +18412,7 @@ namespace MxGateway.Contracts.Proto { [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public static pbr::MessageDescriptor Descriptor { - get { return global::MxGateway.Contracts.Proto.MxaccessGatewayReflection.Descriptor.MessageTypes[46]; } + get { return global::MxGateway.Contracts.Proto.MxaccessGatewayReflection.Descriptor.MessageTypes[55]; } } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] @@ -15534,7 +18619,7 @@ namespace MxGateway.Contracts.Proto { [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public static pbr::MessageDescriptor Descriptor { - get { return global::MxGateway.Contracts.Proto.MxaccessGatewayReflection.Descriptor.MessageTypes[47]; } + get { return global::MxGateway.Contracts.Proto.MxaccessGatewayReflection.Descriptor.MessageTypes[56]; } } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] @@ -15741,7 +18826,7 @@ namespace MxGateway.Contracts.Proto { [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public static pbr::MessageDescriptor Descriptor { - get { return global::MxGateway.Contracts.Proto.MxaccessGatewayReflection.Descriptor.MessageTypes[48]; } + get { return global::MxGateway.Contracts.Proto.MxaccessGatewayReflection.Descriptor.MessageTypes[57]; } } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] @@ -15939,7 +19024,7 @@ namespace MxGateway.Contracts.Proto { [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public static pbr::MessageDescriptor Descriptor { - get { return global::MxGateway.Contracts.Proto.MxaccessGatewayReflection.Descriptor.MessageTypes[49]; } + get { return global::MxGateway.Contracts.Proto.MxaccessGatewayReflection.Descriptor.MessageTypes[58]; } } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] @@ -16137,7 +19222,7 @@ namespace MxGateway.Contracts.Proto { [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public static pbr::MessageDescriptor Descriptor { - get { return global::MxGateway.Contracts.Proto.MxaccessGatewayReflection.Descriptor.MessageTypes[50]; } + get { return global::MxGateway.Contracts.Proto.MxaccessGatewayReflection.Descriptor.MessageTypes[59]; } } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] @@ -16483,7 +19568,7 @@ namespace MxGateway.Contracts.Proto { [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public static pbr::MessageDescriptor Descriptor { - get { return global::MxGateway.Contracts.Proto.MxaccessGatewayReflection.Descriptor.MessageTypes[51]; } + get { return global::MxGateway.Contracts.Proto.MxaccessGatewayReflection.Descriptor.MessageTypes[60]; } } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] @@ -16655,6 +19740,1320 @@ namespace MxGateway.Contracts.Proto { } + /// + /// Per-item result for the four bulk write families. `item_handle` mirrors the + /// request entry's item_handle so callers can correlate inputs to outputs even + /// when the gateway's tag-allowlist filter dropped some entries before reaching + /// the worker. Per-item failures populate `error_message` + `hresult` and never + /// raise — callers iterate and inspect each entry. + /// + [global::System.Diagnostics.DebuggerDisplayAttribute("{ToString(),nq}")] + public sealed partial class BulkWriteResult : pb::IMessage + #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE + , pb::IBufferMessage + #endif + { + private static readonly pb::MessageParser _parser = new pb::MessageParser(() => new BulkWriteResult()); + private pb::UnknownFieldSet _unknownFields; + private int _hasBits0; + [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::MxGateway.Contracts.Proto.MxaccessGatewayReflection.Descriptor.MessageTypes[61]; } + } + + [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 BulkWriteResult() { + OnConstruction(); + } + + partial void OnConstruction(); + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public BulkWriteResult(BulkWriteResult other) : this() { + _hasBits0 = other._hasBits0; + serverHandle_ = other.serverHandle_; + itemHandle_ = other.itemHandle_; + wasSuccessful_ = other.wasSuccessful_; + hresult_ = other.hresult_; + statuses_ = other.statuses_.Clone(); + errorMessage_ = other.errorMessage_; + _unknownFields = pb::UnknownFieldSet.Clone(other._unknownFields); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public BulkWriteResult Clone() { + return new BulkWriteResult(this); + } + + /// Field number for the "server_handle" field. + public const int ServerHandleFieldNumber = 1; + private int serverHandle_; + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public int ServerHandle { + get { return serverHandle_; } + set { + serverHandle_ = value; + } + } + + /// Field number for the "item_handle" field. + public const int ItemHandleFieldNumber = 2; + private int itemHandle_; + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public int ItemHandle { + get { return itemHandle_; } + set { + itemHandle_ = value; + } + } + + /// Field number for the "was_successful" field. + public const int WasSuccessfulFieldNumber = 3; + private bool wasSuccessful_; + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public bool WasSuccessful { + get { return wasSuccessful_; } + set { + wasSuccessful_ = value; + } + } + + /// Field number for the "hresult" field. + public const int HresultFieldNumber = 4; + private readonly static int HresultDefaultValue = 0; + + private int hresult_; + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public int Hresult { + get { if ((_hasBits0 & 1) != 0) { return hresult_; } else { return HresultDefaultValue; } } + set { + _hasBits0 |= 1; + hresult_ = value; + } + } + /// Gets whether the "hresult" field is set + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public bool HasHresult { + get { return (_hasBits0 & 1) != 0; } + } + /// Clears the value of the "hresult" field + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public void ClearHresult() { + _hasBits0 &= ~1; + } + + /// Field number for the "statuses" field. + public const int StatusesFieldNumber = 5; + private static readonly pb::FieldCodec _repeated_statuses_codec + = pb::FieldCodec.ForMessage(42, global::MxGateway.Contracts.Proto.MxStatusProxy.Parser); + private readonly pbc::RepeatedField statuses_ = new pbc::RepeatedField(); + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public pbc::RepeatedField Statuses { + get { return statuses_; } + } + + /// Field number for the "error_message" field. + public const int ErrorMessageFieldNumber = 6; + private string errorMessage_ = ""; + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public string ErrorMessage { + get { return errorMessage_; } + set { + errorMessage_ = 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 BulkWriteResult); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public bool Equals(BulkWriteResult other) { + if (ReferenceEquals(other, null)) { + return false; + } + if (ReferenceEquals(other, this)) { + return true; + } + if (ServerHandle != other.ServerHandle) return false; + if (ItemHandle != other.ItemHandle) return false; + if (WasSuccessful != other.WasSuccessful) return false; + if (Hresult != other.Hresult) return false; + if(!statuses_.Equals(other.statuses_)) return false; + if (ErrorMessage != other.ErrorMessage) 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 (ServerHandle != 0) hash ^= ServerHandle.GetHashCode(); + if (ItemHandle != 0) hash ^= ItemHandle.GetHashCode(); + if (WasSuccessful != false) hash ^= WasSuccessful.GetHashCode(); + if (HasHresult) hash ^= Hresult.GetHashCode(); + hash ^= statuses_.GetHashCode(); + if (ErrorMessage.Length != 0) hash ^= ErrorMessage.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 (ServerHandle != 0) { + output.WriteRawTag(8); + output.WriteInt32(ServerHandle); + } + if (ItemHandle != 0) { + output.WriteRawTag(16); + output.WriteInt32(ItemHandle); + } + if (WasSuccessful != false) { + output.WriteRawTag(24); + output.WriteBool(WasSuccessful); + } + if (HasHresult) { + output.WriteRawTag(32); + output.WriteInt32(Hresult); + } + statuses_.WriteTo(output, _repeated_statuses_codec); + if (ErrorMessage.Length != 0) { + output.WriteRawTag(50); + output.WriteString(ErrorMessage); + } + 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 (ServerHandle != 0) { + output.WriteRawTag(8); + output.WriteInt32(ServerHandle); + } + if (ItemHandle != 0) { + output.WriteRawTag(16); + output.WriteInt32(ItemHandle); + } + if (WasSuccessful != false) { + output.WriteRawTag(24); + output.WriteBool(WasSuccessful); + } + if (HasHresult) { + output.WriteRawTag(32); + output.WriteInt32(Hresult); + } + statuses_.WriteTo(ref output, _repeated_statuses_codec); + if (ErrorMessage.Length != 0) { + output.WriteRawTag(50); + output.WriteString(ErrorMessage); + } + 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 (ServerHandle != 0) { + size += 1 + pb::CodedOutputStream.ComputeInt32Size(ServerHandle); + } + if (ItemHandle != 0) { + size += 1 + pb::CodedOutputStream.ComputeInt32Size(ItemHandle); + } + if (WasSuccessful != false) { + size += 1 + 1; + } + if (HasHresult) { + size += 1 + pb::CodedOutputStream.ComputeInt32Size(Hresult); + } + size += statuses_.CalculateSize(_repeated_statuses_codec); + if (ErrorMessage.Length != 0) { + size += 1 + pb::CodedOutputStream.ComputeStringSize(ErrorMessage); + } + if (_unknownFields != null) { + size += _unknownFields.CalculateSize(); + } + return size; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public void MergeFrom(BulkWriteResult other) { + if (other == null) { + return; + } + if (other.ServerHandle != 0) { + ServerHandle = other.ServerHandle; + } + if (other.ItemHandle != 0) { + ItemHandle = other.ItemHandle; + } + if (other.WasSuccessful != false) { + WasSuccessful = other.WasSuccessful; + } + if (other.HasHresult) { + Hresult = other.Hresult; + } + statuses_.Add(other.statuses_); + if (other.ErrorMessage.Length != 0) { + ErrorMessage = other.ErrorMessage; + } + _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) { + if ((tag & 7) == 4) { + // Abort on any end group tag. + return; + } + switch(tag) { + default: + _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input); + break; + case 8: { + ServerHandle = input.ReadInt32(); + break; + } + case 16: { + ItemHandle = input.ReadInt32(); + break; + } + case 24: { + WasSuccessful = input.ReadBool(); + break; + } + case 32: { + Hresult = input.ReadInt32(); + break; + } + case 42: { + statuses_.AddEntriesFrom(input, _repeated_statuses_codec); + break; + } + case 50: { + ErrorMessage = 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) { + if ((tag & 7) == 4) { + // Abort on any end group tag. + return; + } + switch(tag) { + default: + _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, ref input); + break; + case 8: { + ServerHandle = input.ReadInt32(); + break; + } + case 16: { + ItemHandle = input.ReadInt32(); + break; + } + case 24: { + WasSuccessful = input.ReadBool(); + break; + } + case 32: { + Hresult = input.ReadInt32(); + break; + } + case 42: { + statuses_.AddEntriesFrom(ref input, _repeated_statuses_codec); + break; + } + case 50: { + ErrorMessage = input.ReadString(); + break; + } + } + } + } + #endif + + } + + [global::System.Diagnostics.DebuggerDisplayAttribute("{ToString(),nq}")] + public sealed partial class BulkWriteReply : pb::IMessage + #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE + , pb::IBufferMessage + #endif + { + private static readonly pb::MessageParser _parser = new pb::MessageParser(() => new BulkWriteReply()); + 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::MxGateway.Contracts.Proto.MxaccessGatewayReflection.Descriptor.MessageTypes[62]; } + } + + [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 BulkWriteReply() { + OnConstruction(); + } + + partial void OnConstruction(); + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public BulkWriteReply(BulkWriteReply other) : this() { + results_ = other.results_.Clone(); + _unknownFields = pb::UnknownFieldSet.Clone(other._unknownFields); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public BulkWriteReply Clone() { + return new BulkWriteReply(this); + } + + /// Field number for the "results" field. + public const int ResultsFieldNumber = 1; + private static readonly pb::FieldCodec _repeated_results_codec + = pb::FieldCodec.ForMessage(10, global::MxGateway.Contracts.Proto.BulkWriteResult.Parser); + private readonly pbc::RepeatedField results_ = new pbc::RepeatedField(); + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public pbc::RepeatedField Results { + get { return results_; } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public override bool Equals(object other) { + return Equals(other as BulkWriteReply); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public bool Equals(BulkWriteReply other) { + if (ReferenceEquals(other, null)) { + return false; + } + if (ReferenceEquals(other, this)) { + return true; + } + if(!results_.Equals(other.results_)) 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 ^= results_.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 + results_.WriteTo(output, _repeated_results_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) { + results_.WriteTo(ref output, _repeated_results_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 += results_.CalculateSize(_repeated_results_codec); + if (_unknownFields != null) { + size += _unknownFields.CalculateSize(); + } + return size; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public void MergeFrom(BulkWriteReply other) { + if (other == null) { + return; + } + results_.Add(other.results_); + _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) { + if ((tag & 7) == 4) { + // Abort on any end group tag. + return; + } + switch(tag) { + default: + _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input); + break; + case 10: { + results_.AddEntriesFrom(input, _repeated_results_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) { + if ((tag & 7) == 4) { + // Abort on any end group tag. + return; + } + switch(tag) { + default: + _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, ref input); + break; + case 10: { + results_.AddEntriesFrom(ref input, _repeated_results_codec); + break; + } + } + } + } + #endif + + } + + /// + /// Per-tag result for ReadBulk. `was_cached` is true when the value came from + /// an existing live subscription's last OnDataChange (the worker did not touch + /// the subscription); false when the worker took the AddItem + Advise + wait + + /// UnAdvise + RemoveItem snapshot lifecycle itself. + /// + [global::System.Diagnostics.DebuggerDisplayAttribute("{ToString(),nq}")] + public sealed partial class BulkReadResult : pb::IMessage + #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE + , pb::IBufferMessage + #endif + { + private static readonly pb::MessageParser _parser = new pb::MessageParser(() => new BulkReadResult()); + 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::MxGateway.Contracts.Proto.MxaccessGatewayReflection.Descriptor.MessageTypes[63]; } + } + + [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 BulkReadResult() { + OnConstruction(); + } + + partial void OnConstruction(); + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public BulkReadResult(BulkReadResult other) : this() { + serverHandle_ = other.serverHandle_; + tagAddress_ = other.tagAddress_; + itemHandle_ = other.itemHandle_; + wasSuccessful_ = other.wasSuccessful_; + wasCached_ = other.wasCached_; + value_ = other.value_ != null ? other.value_.Clone() : null; + quality_ = other.quality_; + sourceTimestamp_ = other.sourceTimestamp_ != null ? other.sourceTimestamp_.Clone() : null; + statuses_ = other.statuses_.Clone(); + errorMessage_ = other.errorMessage_; + _unknownFields = pb::UnknownFieldSet.Clone(other._unknownFields); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public BulkReadResult Clone() { + return new BulkReadResult(this); + } + + /// Field number for the "server_handle" field. + public const int ServerHandleFieldNumber = 1; + private int serverHandle_; + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public int ServerHandle { + get { return serverHandle_; } + set { + serverHandle_ = value; + } + } + + /// Field number for the "tag_address" field. + public const int TagAddressFieldNumber = 2; + private string tagAddress_ = ""; + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public string TagAddress { + get { return tagAddress_; } + set { + tagAddress_ = pb::ProtoPreconditions.CheckNotNull(value, "value"); + } + } + + /// Field number for the "item_handle" field. + public const int ItemHandleFieldNumber = 3; + private int itemHandle_; + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public int ItemHandle { + get { return itemHandle_; } + set { + itemHandle_ = value; + } + } + + /// Field number for the "was_successful" field. + public const int WasSuccessfulFieldNumber = 4; + private bool wasSuccessful_; + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public bool WasSuccessful { + get { return wasSuccessful_; } + set { + wasSuccessful_ = value; + } + } + + /// Field number for the "was_cached" field. + public const int WasCachedFieldNumber = 5; + private bool wasCached_; + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public bool WasCached { + get { return wasCached_; } + set { + wasCached_ = value; + } + } + + /// Field number for the "value" field. + public const int ValueFieldNumber = 6; + private global::MxGateway.Contracts.Proto.MxValue value_; + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public global::MxGateway.Contracts.Proto.MxValue Value { + get { return value_; } + set { + value_ = value; + } + } + + /// Field number for the "quality" field. + public const int QualityFieldNumber = 7; + private int quality_; + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public int Quality { + get { return quality_; } + set { + quality_ = value; + } + } + + /// Field number for the "source_timestamp" field. + public const int SourceTimestampFieldNumber = 8; + private global::Google.Protobuf.WellKnownTypes.Timestamp sourceTimestamp_; + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public global::Google.Protobuf.WellKnownTypes.Timestamp SourceTimestamp { + get { return sourceTimestamp_; } + set { + sourceTimestamp_ = value; + } + } + + /// Field number for the "statuses" field. + public const int StatusesFieldNumber = 9; + private static readonly pb::FieldCodec _repeated_statuses_codec + = pb::FieldCodec.ForMessage(74, global::MxGateway.Contracts.Proto.MxStatusProxy.Parser); + private readonly pbc::RepeatedField statuses_ = new pbc::RepeatedField(); + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public pbc::RepeatedField Statuses { + get { return statuses_; } + } + + /// Field number for the "error_message" field. + public const int ErrorMessageFieldNumber = 10; + private string errorMessage_ = ""; + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public string ErrorMessage { + get { return errorMessage_; } + set { + errorMessage_ = 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 BulkReadResult); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public bool Equals(BulkReadResult other) { + if (ReferenceEquals(other, null)) { + return false; + } + if (ReferenceEquals(other, this)) { + return true; + } + if (ServerHandle != other.ServerHandle) return false; + if (TagAddress != other.TagAddress) return false; + if (ItemHandle != other.ItemHandle) return false; + if (WasSuccessful != other.WasSuccessful) return false; + if (WasCached != other.WasCached) return false; + if (!object.Equals(Value, other.Value)) return false; + if (Quality != other.Quality) return false; + if (!object.Equals(SourceTimestamp, other.SourceTimestamp)) return false; + if(!statuses_.Equals(other.statuses_)) return false; + if (ErrorMessage != other.ErrorMessage) 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 (ServerHandle != 0) hash ^= ServerHandle.GetHashCode(); + if (TagAddress.Length != 0) hash ^= TagAddress.GetHashCode(); + if (ItemHandle != 0) hash ^= ItemHandle.GetHashCode(); + if (WasSuccessful != false) hash ^= WasSuccessful.GetHashCode(); + if (WasCached != false) hash ^= WasCached.GetHashCode(); + if (value_ != null) hash ^= Value.GetHashCode(); + if (Quality != 0) hash ^= Quality.GetHashCode(); + if (sourceTimestamp_ != null) hash ^= SourceTimestamp.GetHashCode(); + hash ^= statuses_.GetHashCode(); + if (ErrorMessage.Length != 0) hash ^= ErrorMessage.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 (ServerHandle != 0) { + output.WriteRawTag(8); + output.WriteInt32(ServerHandle); + } + if (TagAddress.Length != 0) { + output.WriteRawTag(18); + output.WriteString(TagAddress); + } + if (ItemHandle != 0) { + output.WriteRawTag(24); + output.WriteInt32(ItemHandle); + } + if (WasSuccessful != false) { + output.WriteRawTag(32); + output.WriteBool(WasSuccessful); + } + if (WasCached != false) { + output.WriteRawTag(40); + output.WriteBool(WasCached); + } + if (value_ != null) { + output.WriteRawTag(50); + output.WriteMessage(Value); + } + if (Quality != 0) { + output.WriteRawTag(56); + output.WriteInt32(Quality); + } + if (sourceTimestamp_ != null) { + output.WriteRawTag(66); + output.WriteMessage(SourceTimestamp); + } + statuses_.WriteTo(output, _repeated_statuses_codec); + if (ErrorMessage.Length != 0) { + output.WriteRawTag(82); + output.WriteString(ErrorMessage); + } + 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 (ServerHandle != 0) { + output.WriteRawTag(8); + output.WriteInt32(ServerHandle); + } + if (TagAddress.Length != 0) { + output.WriteRawTag(18); + output.WriteString(TagAddress); + } + if (ItemHandle != 0) { + output.WriteRawTag(24); + output.WriteInt32(ItemHandle); + } + if (WasSuccessful != false) { + output.WriteRawTag(32); + output.WriteBool(WasSuccessful); + } + if (WasCached != false) { + output.WriteRawTag(40); + output.WriteBool(WasCached); + } + if (value_ != null) { + output.WriteRawTag(50); + output.WriteMessage(Value); + } + if (Quality != 0) { + output.WriteRawTag(56); + output.WriteInt32(Quality); + } + if (sourceTimestamp_ != null) { + output.WriteRawTag(66); + output.WriteMessage(SourceTimestamp); + } + statuses_.WriteTo(ref output, _repeated_statuses_codec); + if (ErrorMessage.Length != 0) { + output.WriteRawTag(82); + output.WriteString(ErrorMessage); + } + 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 (ServerHandle != 0) { + size += 1 + pb::CodedOutputStream.ComputeInt32Size(ServerHandle); + } + if (TagAddress.Length != 0) { + size += 1 + pb::CodedOutputStream.ComputeStringSize(TagAddress); + } + if (ItemHandle != 0) { + size += 1 + pb::CodedOutputStream.ComputeInt32Size(ItemHandle); + } + if (WasSuccessful != false) { + size += 1 + 1; + } + if (WasCached != false) { + size += 1 + 1; + } + if (value_ != null) { + size += 1 + pb::CodedOutputStream.ComputeMessageSize(Value); + } + if (Quality != 0) { + size += 1 + pb::CodedOutputStream.ComputeInt32Size(Quality); + } + if (sourceTimestamp_ != null) { + size += 1 + pb::CodedOutputStream.ComputeMessageSize(SourceTimestamp); + } + size += statuses_.CalculateSize(_repeated_statuses_codec); + if (ErrorMessage.Length != 0) { + size += 1 + pb::CodedOutputStream.ComputeStringSize(ErrorMessage); + } + if (_unknownFields != null) { + size += _unknownFields.CalculateSize(); + } + return size; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public void MergeFrom(BulkReadResult other) { + if (other == null) { + return; + } + if (other.ServerHandle != 0) { + ServerHandle = other.ServerHandle; + } + if (other.TagAddress.Length != 0) { + TagAddress = other.TagAddress; + } + if (other.ItemHandle != 0) { + ItemHandle = other.ItemHandle; + } + if (other.WasSuccessful != false) { + WasSuccessful = other.WasSuccessful; + } + if (other.WasCached != false) { + WasCached = other.WasCached; + } + if (other.value_ != null) { + if (value_ == null) { + Value = new global::MxGateway.Contracts.Proto.MxValue(); + } + Value.MergeFrom(other.Value); + } + if (other.Quality != 0) { + Quality = other.Quality; + } + if (other.sourceTimestamp_ != null) { + if (sourceTimestamp_ == null) { + SourceTimestamp = new global::Google.Protobuf.WellKnownTypes.Timestamp(); + } + SourceTimestamp.MergeFrom(other.SourceTimestamp); + } + statuses_.Add(other.statuses_); + if (other.ErrorMessage.Length != 0) { + ErrorMessage = other.ErrorMessage; + } + _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) { + if ((tag & 7) == 4) { + // Abort on any end group tag. + return; + } + switch(tag) { + default: + _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input); + break; + case 8: { + ServerHandle = input.ReadInt32(); + break; + } + case 18: { + TagAddress = input.ReadString(); + break; + } + case 24: { + ItemHandle = input.ReadInt32(); + break; + } + case 32: { + WasSuccessful = input.ReadBool(); + break; + } + case 40: { + WasCached = input.ReadBool(); + break; + } + case 50: { + if (value_ == null) { + Value = new global::MxGateway.Contracts.Proto.MxValue(); + } + input.ReadMessage(Value); + break; + } + case 56: { + Quality = input.ReadInt32(); + break; + } + case 66: { + if (sourceTimestamp_ == null) { + SourceTimestamp = new global::Google.Protobuf.WellKnownTypes.Timestamp(); + } + input.ReadMessage(SourceTimestamp); + break; + } + case 74: { + statuses_.AddEntriesFrom(input, _repeated_statuses_codec); + break; + } + case 82: { + ErrorMessage = 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) { + if ((tag & 7) == 4) { + // Abort on any end group tag. + return; + } + switch(tag) { + default: + _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, ref input); + break; + case 8: { + ServerHandle = input.ReadInt32(); + break; + } + case 18: { + TagAddress = input.ReadString(); + break; + } + case 24: { + ItemHandle = input.ReadInt32(); + break; + } + case 32: { + WasSuccessful = input.ReadBool(); + break; + } + case 40: { + WasCached = input.ReadBool(); + break; + } + case 50: { + if (value_ == null) { + Value = new global::MxGateway.Contracts.Proto.MxValue(); + } + input.ReadMessage(Value); + break; + } + case 56: { + Quality = input.ReadInt32(); + break; + } + case 66: { + if (sourceTimestamp_ == null) { + SourceTimestamp = new global::Google.Protobuf.WellKnownTypes.Timestamp(); + } + input.ReadMessage(SourceTimestamp); + break; + } + case 74: { + statuses_.AddEntriesFrom(ref input, _repeated_statuses_codec); + break; + } + case 82: { + ErrorMessage = input.ReadString(); + break; + } + } + } + } + #endif + + } + + [global::System.Diagnostics.DebuggerDisplayAttribute("{ToString(),nq}")] + public sealed partial class BulkReadReply : pb::IMessage + #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE + , pb::IBufferMessage + #endif + { + private static readonly pb::MessageParser _parser = new pb::MessageParser(() => new BulkReadReply()); + 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::MxGateway.Contracts.Proto.MxaccessGatewayReflection.Descriptor.MessageTypes[64]; } + } + + [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 BulkReadReply() { + OnConstruction(); + } + + partial void OnConstruction(); + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public BulkReadReply(BulkReadReply other) : this() { + results_ = other.results_.Clone(); + _unknownFields = pb::UnknownFieldSet.Clone(other._unknownFields); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public BulkReadReply Clone() { + return new BulkReadReply(this); + } + + /// Field number for the "results" field. + public const int ResultsFieldNumber = 1; + private static readonly pb::FieldCodec _repeated_results_codec + = pb::FieldCodec.ForMessage(10, global::MxGateway.Contracts.Proto.BulkReadResult.Parser); + private readonly pbc::RepeatedField results_ = new pbc::RepeatedField(); + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public pbc::RepeatedField Results { + get { return results_; } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public override bool Equals(object other) { + return Equals(other as BulkReadReply); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public bool Equals(BulkReadReply other) { + if (ReferenceEquals(other, null)) { + return false; + } + if (ReferenceEquals(other, this)) { + return true; + } + if(!results_.Equals(other.results_)) 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 ^= results_.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 + results_.WriteTo(output, _repeated_results_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) { + results_.WriteTo(ref output, _repeated_results_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 += results_.CalculateSize(_repeated_results_codec); + if (_unknownFields != null) { + size += _unknownFields.CalculateSize(); + } + return size; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public void MergeFrom(BulkReadReply other) { + if (other == null) { + return; + } + results_.Add(other.results_); + _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) { + if ((tag & 7) == 4) { + // Abort on any end group tag. + return; + } + switch(tag) { + default: + _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input); + break; + case 10: { + results_.AddEntriesFrom(input, _repeated_results_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) { + if ((tag & 7) == 4) { + // Abort on any end group tag. + return; + } + switch(tag) { + default: + _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, ref input); + break; + case 10: { + results_.AddEntriesFrom(ref input, _repeated_results_codec); + break; + } + } + } + } + #endif + + } + [global::System.Diagnostics.DebuggerDisplayAttribute("{ToString(),nq}")] public sealed partial class SessionStateReply : pb::IMessage #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE @@ -16670,7 +21069,7 @@ namespace MxGateway.Contracts.Proto { [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public static pbr::MessageDescriptor Descriptor { - get { return global::MxGateway.Contracts.Proto.MxaccessGatewayReflection.Descriptor.MessageTypes[52]; } + get { return global::MxGateway.Contracts.Proto.MxaccessGatewayReflection.Descriptor.MessageTypes[65]; } } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] @@ -16868,7 +21267,7 @@ namespace MxGateway.Contracts.Proto { [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public static pbr::MessageDescriptor Descriptor { - get { return global::MxGateway.Contracts.Proto.MxaccessGatewayReflection.Descriptor.MessageTypes[53]; } + get { return global::MxGateway.Contracts.Proto.MxaccessGatewayReflection.Descriptor.MessageTypes[66]; } } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] @@ -17177,7 +21576,7 @@ namespace MxGateway.Contracts.Proto { [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public static pbr::MessageDescriptor Descriptor { - get { return global::MxGateway.Contracts.Proto.MxaccessGatewayReflection.Descriptor.MessageTypes[54]; } + get { return global::MxGateway.Contracts.Proto.MxaccessGatewayReflection.Descriptor.MessageTypes[67]; } } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] @@ -17376,7 +21775,7 @@ namespace MxGateway.Contracts.Proto { [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public static pbr::MessageDescriptor Descriptor { - get { return global::MxGateway.Contracts.Proto.MxaccessGatewayReflection.Descriptor.MessageTypes[55]; } + get { return global::MxGateway.Contracts.Proto.MxaccessGatewayReflection.Descriptor.MessageTypes[68]; } } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] @@ -17580,7 +21979,7 @@ namespace MxGateway.Contracts.Proto { [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public static pbr::MessageDescriptor Descriptor { - get { return global::MxGateway.Contracts.Proto.MxaccessGatewayReflection.Descriptor.MessageTypes[56]; } + get { return global::MxGateway.Contracts.Proto.MxaccessGatewayReflection.Descriptor.MessageTypes[69]; } } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] @@ -17768,7 +22167,7 @@ namespace MxGateway.Contracts.Proto { [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public static pbr::MessageDescriptor Descriptor { - get { return global::MxGateway.Contracts.Proto.MxaccessGatewayReflection.Descriptor.MessageTypes[57]; } + get { return global::MxGateway.Contracts.Proto.MxaccessGatewayReflection.Descriptor.MessageTypes[70]; } } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] @@ -18743,7 +23142,7 @@ namespace MxGateway.Contracts.Proto { [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public static pbr::MessageDescriptor Descriptor { - get { return global::MxGateway.Contracts.Proto.MxaccessGatewayReflection.Descriptor.MessageTypes[58]; } + get { return global::MxGateway.Contracts.Proto.MxaccessGatewayReflection.Descriptor.MessageTypes[71]; } } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] @@ -18904,7 +23303,7 @@ namespace MxGateway.Contracts.Proto { [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public static pbr::MessageDescriptor Descriptor { - get { return global::MxGateway.Contracts.Proto.MxaccessGatewayReflection.Descriptor.MessageTypes[59]; } + get { return global::MxGateway.Contracts.Proto.MxaccessGatewayReflection.Descriptor.MessageTypes[72]; } } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] @@ -19065,7 +23464,7 @@ namespace MxGateway.Contracts.Proto { [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public static pbr::MessageDescriptor Descriptor { - get { return global::MxGateway.Contracts.Proto.MxaccessGatewayReflection.Descriptor.MessageTypes[60]; } + get { return global::MxGateway.Contracts.Proto.MxaccessGatewayReflection.Descriptor.MessageTypes[73]; } } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] @@ -19226,7 +23625,7 @@ namespace MxGateway.Contracts.Proto { [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public static pbr::MessageDescriptor Descriptor { - get { return global::MxGateway.Contracts.Proto.MxaccessGatewayReflection.Descriptor.MessageTypes[61]; } + get { return global::MxGateway.Contracts.Proto.MxaccessGatewayReflection.Descriptor.MessageTypes[74]; } } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] @@ -19559,7 +23958,7 @@ namespace MxGateway.Contracts.Proto { [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public static pbr::MessageDescriptor Descriptor { - get { return global::MxGateway.Contracts.Proto.MxaccessGatewayReflection.Descriptor.MessageTypes[62]; } + get { return global::MxGateway.Contracts.Proto.MxaccessGatewayReflection.Descriptor.MessageTypes[75]; } } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] @@ -20293,7 +24692,7 @@ namespace MxGateway.Contracts.Proto { [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public static pbr::MessageDescriptor Descriptor { - get { return global::MxGateway.Contracts.Proto.MxaccessGatewayReflection.Descriptor.MessageTypes[63]; } + get { return global::MxGateway.Contracts.Proto.MxaccessGatewayReflection.Descriptor.MessageTypes[76]; } } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] @@ -20983,7 +25382,7 @@ namespace MxGateway.Contracts.Proto { [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public static pbr::MessageDescriptor Descriptor { - get { return global::MxGateway.Contracts.Proto.MxaccessGatewayReflection.Descriptor.MessageTypes[64]; } + get { return global::MxGateway.Contracts.Proto.MxaccessGatewayReflection.Descriptor.MessageTypes[77]; } } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] @@ -21340,7 +25739,7 @@ namespace MxGateway.Contracts.Proto { [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public static pbr::MessageDescriptor Descriptor { - get { return global::MxGateway.Contracts.Proto.MxaccessGatewayReflection.Descriptor.MessageTypes[65]; } + get { return global::MxGateway.Contracts.Proto.MxaccessGatewayReflection.Descriptor.MessageTypes[78]; } } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] @@ -21772,7 +26171,7 @@ namespace MxGateway.Contracts.Proto { [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public static pbr::MessageDescriptor Descriptor { - get { return global::MxGateway.Contracts.Proto.MxaccessGatewayReflection.Descriptor.MessageTypes[66]; } + get { return global::MxGateway.Contracts.Proto.MxaccessGatewayReflection.Descriptor.MessageTypes[79]; } } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] @@ -22048,7 +26447,7 @@ namespace MxGateway.Contracts.Proto { [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public static pbr::MessageDescriptor Descriptor { - get { return global::MxGateway.Contracts.Proto.MxaccessGatewayReflection.Descriptor.MessageTypes[67]; } + get { return global::MxGateway.Contracts.Proto.MxaccessGatewayReflection.Descriptor.MessageTypes[80]; } } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] @@ -22479,7 +26878,7 @@ namespace MxGateway.Contracts.Proto { [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public static pbr::MessageDescriptor Descriptor { - get { return global::MxGateway.Contracts.Proto.MxaccessGatewayReflection.Descriptor.MessageTypes[68]; } + get { return global::MxGateway.Contracts.Proto.MxaccessGatewayReflection.Descriptor.MessageTypes[81]; } } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] @@ -23336,7 +27735,7 @@ namespace MxGateway.Contracts.Proto { [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public static pbr::MessageDescriptor Descriptor { - get { return global::MxGateway.Contracts.Proto.MxaccessGatewayReflection.Descriptor.MessageTypes[69]; } + get { return global::MxGateway.Contracts.Proto.MxaccessGatewayReflection.Descriptor.MessageTypes[82]; } } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] @@ -24124,7 +28523,7 @@ namespace MxGateway.Contracts.Proto { [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public static pbr::MessageDescriptor Descriptor { - get { return global::MxGateway.Contracts.Proto.MxaccessGatewayReflection.Descriptor.MessageTypes[70]; } + get { return global::MxGateway.Contracts.Proto.MxaccessGatewayReflection.Descriptor.MessageTypes[83]; } } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] @@ -24313,7 +28712,7 @@ namespace MxGateway.Contracts.Proto { [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public static pbr::MessageDescriptor Descriptor { - get { return global::MxGateway.Contracts.Proto.MxaccessGatewayReflection.Descriptor.MessageTypes[71]; } + get { return global::MxGateway.Contracts.Proto.MxaccessGatewayReflection.Descriptor.MessageTypes[84]; } } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] @@ -24502,7 +28901,7 @@ namespace MxGateway.Contracts.Proto { [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public static pbr::MessageDescriptor Descriptor { - get { return global::MxGateway.Contracts.Proto.MxaccessGatewayReflection.Descriptor.MessageTypes[72]; } + get { return global::MxGateway.Contracts.Proto.MxaccessGatewayReflection.Descriptor.MessageTypes[85]; } } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] @@ -24691,7 +29090,7 @@ namespace MxGateway.Contracts.Proto { [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public static pbr::MessageDescriptor Descriptor { - get { return global::MxGateway.Contracts.Proto.MxaccessGatewayReflection.Descriptor.MessageTypes[73]; } + get { return global::MxGateway.Contracts.Proto.MxaccessGatewayReflection.Descriptor.MessageTypes[86]; } } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] @@ -24880,7 +29279,7 @@ namespace MxGateway.Contracts.Proto { [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public static pbr::MessageDescriptor Descriptor { - get { return global::MxGateway.Contracts.Proto.MxaccessGatewayReflection.Descriptor.MessageTypes[74]; } + get { return global::MxGateway.Contracts.Proto.MxaccessGatewayReflection.Descriptor.MessageTypes[87]; } } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] @@ -25069,7 +29468,7 @@ namespace MxGateway.Contracts.Proto { [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public static pbr::MessageDescriptor Descriptor { - get { return global::MxGateway.Contracts.Proto.MxaccessGatewayReflection.Descriptor.MessageTypes[75]; } + get { return global::MxGateway.Contracts.Proto.MxaccessGatewayReflection.Descriptor.MessageTypes[88]; } } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] @@ -25256,7 +29655,7 @@ namespace MxGateway.Contracts.Proto { [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public static pbr::MessageDescriptor Descriptor { - get { return global::MxGateway.Contracts.Proto.MxaccessGatewayReflection.Descriptor.MessageTypes[76]; } + get { return global::MxGateway.Contracts.Proto.MxaccessGatewayReflection.Descriptor.MessageTypes[89]; } } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] @@ -25443,7 +29842,7 @@ namespace MxGateway.Contracts.Proto { [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public static pbr::MessageDescriptor Descriptor { - get { return global::MxGateway.Contracts.Proto.MxaccessGatewayReflection.Descriptor.MessageTypes[77]; } + get { return global::MxGateway.Contracts.Proto.MxaccessGatewayReflection.Descriptor.MessageTypes[90]; } } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] @@ -25630,7 +30029,7 @@ namespace MxGateway.Contracts.Proto { [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public static pbr::MessageDescriptor Descriptor { - get { return global::MxGateway.Contracts.Proto.MxaccessGatewayReflection.Descriptor.MessageTypes[78]; } + get { return global::MxGateway.Contracts.Proto.MxaccessGatewayReflection.Descriptor.MessageTypes[91]; } } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] diff --git a/src/MxGateway.Contracts/Protos/mxaccess_gateway.proto b/src/MxGateway.Contracts/Protos/mxaccess_gateway.proto index 9e287fc..36ed0ae 100644 --- a/src/MxGateway.Contracts/Protos/mxaccess_gateway.proto +++ b/src/MxGateway.Contracts/Protos/mxaccess_gateway.proto @@ -100,6 +100,11 @@ message MxCommand { AcknowledgeAlarmCommand acknowledge_alarm_command = 36; QueryActiveAlarmsCommand query_active_alarms_command = 37; AcknowledgeAlarmByNameCommand acknowledge_alarm_by_name_command = 38; + WriteBulkCommand write_bulk = 39; + Write2BulkCommand write2_bulk = 40; + WriteSecuredBulkCommand write_secured_bulk = 41; + WriteSecured2BulkCommand write_secured2_bulk = 42; + ReadBulkCommand read_bulk = 43; PingCommand ping = 100; GetSessionStateCommand get_session_state = 101; GetWorkerInfoCommand get_worker_info = 102; @@ -139,6 +144,11 @@ enum MxCommandKind { MX_COMMAND_KIND_ACKNOWLEDGE_ALARM = 27; MX_COMMAND_KIND_QUERY_ACTIVE_ALARMS = 28; MX_COMMAND_KIND_ACKNOWLEDGE_ALARM_BY_NAME = 29; + MX_COMMAND_KIND_WRITE_BULK = 30; + MX_COMMAND_KIND_WRITE2_BULK = 31; + MX_COMMAND_KIND_WRITE_SECURED_BULK = 32; + MX_COMMAND_KIND_WRITE_SECURED2_BULK = 33; + MX_COMMAND_KIND_READ_BULK = 34; MX_COMMAND_KIND_PING = 100; MX_COMMAND_KIND_GET_SESSION_STATE = 101; MX_COMMAND_KIND_GET_WORKER_INFO = 102; @@ -342,6 +352,82 @@ message UnsubscribeBulkCommand { repeated int32 item_handles = 2; } +// Bulk Write — sequential MXAccess Write per entry, on the worker's STA. +// MXAccess has no native bulk write; each entry round-trips through the same +// single-item Write path the gateway uses today. Per-item failures appear as +// BulkWriteResult entries with `was_successful = false` and never throw. +message WriteBulkCommand { + int32 server_handle = 1; + repeated WriteBulkEntry entries = 2; +} + +message WriteBulkEntry { + int32 item_handle = 1; + MxValue value = 2; + int32 user_id = 3; +} + +// Bulk Write2 — sequential MXAccess Write2 (timestamped) per entry. +message Write2BulkCommand { + int32 server_handle = 1; + repeated Write2BulkEntry entries = 2; +} + +message Write2BulkEntry { + int32 item_handle = 1; + MxValue value = 2; + MxValue timestamp_value = 3; + int32 user_id = 4; +} + +// Bulk WriteSecured — sequential MXAccess WriteSecured per entry. +// Credential-sensitive values (`value`) MUST be kept out of logs, metrics +// labels, command lines, and diagnostics — same redaction rules as the +// single-item WriteSecured contract. +message WriteSecuredBulkCommand { + int32 server_handle = 1; + repeated WriteSecuredBulkEntry entries = 2; +} + +message WriteSecuredBulkEntry { + int32 item_handle = 1; + int32 current_user_id = 2; + int32 verifier_user_id = 3; + MxValue value = 4; +} + +// Bulk WriteSecured2 — sequential MXAccess WriteSecured2 (timestamped) per +// entry. Same redaction rules apply. +message WriteSecured2BulkCommand { + int32 server_handle = 1; + repeated WriteSecured2BulkEntry entries = 2; +} + +message WriteSecured2BulkEntry { + int32 item_handle = 1; + int32 current_user_id = 2; + int32 verifier_user_id = 3; + MxValue value = 4; + MxValue timestamp_value = 5; +} + +// Bulk Read — snapshot the current value for each requested tag. MXAccess COM +// has no synchronous Read; the worker implements ReadBulk as: +// - If the tag is already in the session's item registry AND that item is +// currently advised AND the worker has a cached OnDataChange for it, the +// reply returns the cached value WITHOUT modifying the existing +// subscription (was_cached = true). +// - Otherwise the worker takes the snapshot lifecycle itself: AddItem + +// Advise, wait up to `timeout_ms` for the first OnDataChange, then +// UnAdvise + RemoveItem before returning. The session is left exactly +// as it was before the call (was_cached = false). +// `timeout_ms == 0` uses the gateway-configured default (1000 ms). +message ReadBulkCommand { + int32 server_handle = 1; + repeated string tag_addresses = 2; + uint32 timeout_ms = 3; +} + message PingCommand { string message = 1; } @@ -399,6 +485,11 @@ message MxCommandReply { // mirrors AcknowledgeAlarmReplyPayload.native_status and is preferred. AcknowledgeAlarmReplyPayload acknowledge_alarm = 34; QueryActiveAlarmsReplyPayload query_active_alarms = 35; + BulkWriteReply write_bulk = 36; + BulkWriteReply write2_bulk = 37; + BulkWriteReply write_secured_bulk = 38; + BulkWriteReply write_secured2_bulk = 39; + BulkReadReply read_bulk = 40; SessionStateReply session_state = 100; WorkerInfoReply worker_info = 101; DrainEventsReply drain_events = 102; @@ -449,6 +540,45 @@ message BulkSubscribeReply { repeated SubscribeResult results = 1; } +// Per-item result for the four bulk write families. `item_handle` mirrors the +// request entry's item_handle so callers can correlate inputs to outputs even +// when the gateway's tag-allowlist filter dropped some entries before reaching +// the worker. Per-item failures populate `error_message` + `hresult` and never +// raise — callers iterate and inspect each entry. +message BulkWriteResult { + int32 server_handle = 1; + int32 item_handle = 2; + bool was_successful = 3; + optional int32 hresult = 4; + repeated MxStatusProxy statuses = 5; + string error_message = 6; +} + +message BulkWriteReply { + repeated BulkWriteResult results = 1; +} + +// Per-tag result for ReadBulk. `was_cached` is true when the value came from +// an existing live subscription's last OnDataChange (the worker did not touch +// the subscription); false when the worker took the AddItem + Advise + wait + +// UnAdvise + RemoveItem snapshot lifecycle itself. +message BulkReadResult { + int32 server_handle = 1; + string tag_address = 2; + int32 item_handle = 3; + bool was_successful = 4; + bool was_cached = 5; + MxValue value = 6; + int32 quality = 7; + google.protobuf.Timestamp source_timestamp = 8; + repeated MxStatusProxy statuses = 9; + string error_message = 10; +} + +message BulkReadReply { + repeated BulkReadResult results = 1; +} + message SessionStateReply { SessionState state = 1; } diff --git a/src/MxGateway.Server/Grpc/MxAccessGatewayService.cs b/src/MxGateway.Server/Grpc/MxAccessGatewayService.cs index 1fb3f18..c824639 100644 --- a/src/MxGateway.Server/Grpc/MxAccessGatewayService.cs +++ b/src/MxGateway.Server/Grpc/MxAccessGatewayService.cs @@ -109,7 +109,7 @@ public sealed class MxAccessGatewayService( MxCommand commandToInvoke = bulkConstraintPlan?.Command ?? command; if (bulkConstraintPlan is { HasAllowedItems: false }) { - return CreateDeniedBulkReply(request, bulkConstraintPlan); + return bulkConstraintPlan.CreateDeniedReply(request); } MxCommandRequest invokeRequest = request.Clone(); @@ -122,7 +122,7 @@ public sealed class MxAccessGatewayService( MxCommandReply publicReply = mapper.MapCommandReply(workerReply); if (bulkConstraintPlan is not null) { - publicReply = MergeDeniedBulkResults(publicReply, command.Kind, bulkConstraintPlan); + publicReply = bulkConstraintPlan.MergeDeniedInto(publicReply); } session.TrackCommandReply(commandToInvoke, publicReply); @@ -304,6 +304,54 @@ public sealed class MxAccessGatewayService( command.AdviseItemBulk.ItemHandles, cancellationToken) .ConfigureAwait(false); + case MxCommandKind.ReadBulk: + return await FilterReadBulkAsync( + identity, + command, + command.ReadBulk.ServerHandle, + command.ReadBulk.TagAddresses, + cancellationToken) + .ConfigureAwait(false); + case MxCommandKind.WriteBulk: + return await FilterWriteBulkAsync( + identity, + session, + command, + command.WriteBulk.ServerHandle, + command.WriteBulk.Entries, + entry => entry.ItemHandle, + cancellationToken) + .ConfigureAwait(false); + case MxCommandKind.Write2Bulk: + return await FilterWriteBulkAsync( + identity, + session, + command, + command.Write2Bulk.ServerHandle, + command.Write2Bulk.Entries, + entry => entry.ItemHandle, + cancellationToken) + .ConfigureAwait(false); + case MxCommandKind.WriteSecuredBulk: + return await FilterWriteBulkAsync( + identity, + session, + command, + command.WriteSecuredBulk.ServerHandle, + command.WriteSecuredBulk.Entries, + entry => entry.ItemHandle, + cancellationToken) + .ConfigureAwait(false); + case MxCommandKind.WriteSecured2Bulk: + return await FilterWriteBulkAsync( + identity, + session, + command, + command.WriteSecured2Bulk.ServerHandle, + command.WriteSecured2Bulk.Entries, + entry => entry.ItemHandle, + cancellationToken) + .ConfigureAwait(false); case MxCommandKind.Write: await EnforceWriteHandleAsync( identity, @@ -438,7 +486,136 @@ public sealed class MxAccessGatewayService( filtered.SubscribeBulk.TagAddresses.Add(allowed); } - return new BulkConstraintPlan(filtered, tagAddresses.Count, denied, allowed.Count > 0); + return new SubscribeBulkConstraintPlan(filtered, tagAddresses.Count, denied, allowed.Count > 0); + } + + private async Task FilterReadBulkAsync( + ApiKeyIdentity? identity, + MxCommand command, + int serverHandle, + IReadOnlyList tagAddresses, + CancellationToken cancellationToken) + { + // Mirrors FilterTagBulkAsync but produces BulkReadResult denial entries + // so the reply payload merges into BulkReadReply.Results, not + // BulkSubscribeReply.Results. + Dictionary denied = []; + List allowed = []; + for (int index = 0; index < tagAddresses.Count; index++) + { + string tagAddress = tagAddresses[index]; + ConstraintFailure? failure = await constraintEnforcer + .CheckReadTagAsync(identity, tagAddress, cancellationToken) + .ConfigureAwait(false); + if (failure is null) + { + allowed.Add(tagAddress); + continue; + } + + await constraintEnforcer.RecordDenialAsync(identity, command.Kind.ToString(), tagAddress, failure, cancellationToken) + .ConfigureAwait(false); + denied[index] = new BulkReadResult + { + ServerHandle = serverHandle, + TagAddress = tagAddress, + WasSuccessful = false, + WasCached = false, + ErrorMessage = failure.Message, + }; + } + + if (denied.Count == 0) + { + return null; + } + + MxCommand filtered = command.Clone(); + filtered.ReadBulk.TagAddresses.Clear(); + filtered.ReadBulk.TagAddresses.Add(allowed); + + return new ReadBulkConstraintPlan(filtered, tagAddresses.Count, denied, allowed.Count > 0); + } + + private async Task FilterWriteBulkAsync( + ApiKeyIdentity? identity, + GatewaySession session, + MxCommand command, + int serverHandle, + Google.Protobuf.Collections.RepeatedField entries, + Func getItemHandle, + CancellationToken cancellationToken) where TEntry : class + { + // The four bulk-write families each carry a different per-entry message + // shape (WriteBulkEntry / Write2BulkEntry / WriteSecuredBulkEntry / + // WriteSecured2BulkEntry), but the constraint check itself is identical + // — "is this caller allowed to write to this server+item handle?". + // Parameterising on TEntry + getItemHandle keeps a single filter + // routine for all four and avoids duplicating CheckWriteHandleAsync + // calls. + Dictionary denied = []; + List allowed = []; + for (int index = 0; index < entries.Count; index++) + { + TEntry entry = entries[index]; + int itemHandle = getItemHandle(entry); + ConstraintFailure? failure = await constraintEnforcer + .CheckWriteHandleAsync(identity, session, serverHandle, itemHandle, cancellationToken) + .ConfigureAwait(false); + if (failure is null) + { + allowed.Add(entry); + continue; + } + + await constraintEnforcer.RecordDenialAsync( + identity, + command.Kind.ToString(), + itemHandle.ToString(System.Globalization.CultureInfo.InvariantCulture), + failure, + cancellationToken) + .ConfigureAwait(false); + denied[index] = new BulkWriteResult + { + ServerHandle = serverHandle, + ItemHandle = itemHandle, + WasSuccessful = false, + ErrorMessage = failure.Message, + }; + } + + if (denied.Count == 0) + { + return null; + } + + MxCommand filtered = command.Clone(); + ReplaceWriteBulkEntries(filtered, allowed); + return new WriteBulkConstraintPlan(filtered, entries.Count, denied, allowed.Count > 0); + } + + private static void ReplaceWriteBulkEntries(MxCommand command, IReadOnlyList allowed) + where TEntry : class + { + switch (command.Kind) + { + case MxCommandKind.WriteBulk: + command.WriteBulk.Entries.Clear(); + command.WriteBulk.Entries.Add((IEnumerable)allowed); + break; + case MxCommandKind.Write2Bulk: + command.Write2Bulk.Entries.Clear(); + command.Write2Bulk.Entries.Add((IEnumerable)allowed); + break; + case MxCommandKind.WriteSecuredBulk: + command.WriteSecuredBulk.Entries.Clear(); + command.WriteSecuredBulk.Entries.Add((IEnumerable)allowed); + break; + case MxCommandKind.WriteSecured2Bulk: + command.WriteSecured2Bulk.Entries.Clear(); + command.WriteSecured2Bulk.Entries.Add((IEnumerable)allowed); + break; + } } private async Task FilterHandleBulkAsync( @@ -483,90 +660,221 @@ public sealed class MxAccessGatewayService( filtered.AdviseItemBulk.ItemHandles.Clear(); filtered.AdviseItemBulk.ItemHandles.Add(allowed); - return new BulkConstraintPlan(filtered, itemHandles.Count, denied, allowed.Count > 0); + return new SubscribeBulkConstraintPlan(filtered, itemHandles.Count, denied, allowed.Count > 0); } - private static MxCommandReply CreateDeniedBulkReply( - MxCommandRequest request, - BulkConstraintPlan plan) + /// + /// Polymorphic constraint plan returned from . + /// Each concrete subtype is keyed to a specific bulk-reply shape — the + /// SubscribeResult-based AddItem/Advise/Subscribe family, the + /// BulkWriteResult-based Write* bulk family, and the BulkReadResult-based + /// ReadBulk command. Subtypes own their own merge / denied-reply build + /// logic so the Invoke dispatch site never branches on reply shape. + /// + private abstract record BulkConstraintPlan( + MxCommand Command, + int OriginalCount, + bool HasAllowedItems) { - MxCommandReply reply = new() + /// Builds a reply containing only the denied entries (used when no items survived filtering). + public abstract MxCommandReply CreateDeniedReply(MxCommandRequest request); + + /// Splices denied entries back into the worker's allowed-only reply in original-index order. + public abstract MxCommandReply MergeDeniedInto(MxCommandReply reply); + } + + private sealed record SubscribeBulkConstraintPlan( + MxCommand Command, + int OriginalCount, + IReadOnlyDictionary DeniedResults, + bool HasAllowedItems) + : BulkConstraintPlan(Command, OriginalCount, HasAllowedItems) + { + public override MxCommandReply CreateDeniedReply(MxCommandRequest request) { - SessionId = request.SessionId, - CorrelationId = request.ClientCorrelationId, - Kind = request.Command.Kind, - ProtocolStatus = MxAccessGrpcMapper.Ok(), - }; - SetBulkPayload(reply, request.Command.Kind, BuildMergedBulkReply(new BulkSubscribeReply(), plan)); - return reply; - } - - private static MxCommandReply MergeDeniedBulkResults( - MxCommandReply reply, - MxCommandKind commandKind, - BulkConstraintPlan plan) - { - BulkSubscribeReply allowed = GetBulkPayload(reply, commandKind) ?? new BulkSubscribeReply(); - SetBulkPayload(reply, commandKind, BuildMergedBulkReply(allowed, plan)); - return reply; - } - - private static BulkSubscribeReply BuildMergedBulkReply( - BulkSubscribeReply allowed, - BulkConstraintPlan plan) - { - Queue allowedResults = new(allowed.Results); - BulkSubscribeReply merged = new(); - for (int index = 0; index < plan.OriginalCount; index++) - { - if (plan.DeniedResults.TryGetValue(index, out SubscribeResult? denied)) + MxCommandReply reply = new() { - merged.Results.Add(denied); - } - else if (allowedResults.TryDequeue(out SubscribeResult? allowedResult)) - { - merged.Results.Add(allowedResult); - } + SessionId = request.SessionId, + CorrelationId = request.ClientCorrelationId, + Kind = request.Command.Kind, + ProtocolStatus = MxAccessGrpcMapper.Ok(), + }; + SetPayload(reply, BuildMerged(new BulkSubscribeReply())); + return reply; } - return merged; - } + public override MxCommandReply MergeDeniedInto(MxCommandReply reply) + { + BulkSubscribeReply allowed = GetPayload(reply) ?? new BulkSubscribeReply(); + SetPayload(reply, BuildMerged(allowed)); + return reply; + } - private static BulkSubscribeReply? GetBulkPayload(MxCommandReply reply, MxCommandKind commandKind) - { - return commandKind switch + private BulkSubscribeReply BuildMerged(BulkSubscribeReply allowed) + { + Queue allowedResults = new(allowed.Results); + BulkSubscribeReply merged = new(); + for (int index = 0; index < OriginalCount; index++) + { + if (DeniedResults.TryGetValue(index, out SubscribeResult? denied)) + { + merged.Results.Add(denied); + } + else if (allowedResults.TryDequeue(out SubscribeResult? allowedResult)) + { + merged.Results.Add(allowedResult); + } + } + + return merged; + } + + private BulkSubscribeReply? GetPayload(MxCommandReply reply) => Command.Kind switch { MxCommandKind.AddItemBulk => reply.AddItemBulk, MxCommandKind.AdviseItemBulk => reply.AdviseItemBulk, MxCommandKind.SubscribeBulk => reply.SubscribeBulk, _ => null, }; - } - private static void SetBulkPayload( - MxCommandReply reply, - MxCommandKind commandKind, - BulkSubscribeReply payload) - { - switch (commandKind) + private void SetPayload(MxCommandReply reply, BulkSubscribeReply payload) { - case MxCommandKind.AddItemBulk: - reply.AddItemBulk = payload; - break; - case MxCommandKind.AdviseItemBulk: - reply.AdviseItemBulk = payload; - break; - case MxCommandKind.SubscribeBulk: - reply.SubscribeBulk = payload; - break; + switch (Command.Kind) + { + case MxCommandKind.AddItemBulk: + reply.AddItemBulk = payload; + break; + case MxCommandKind.AdviseItemBulk: + reply.AdviseItemBulk = payload; + break; + case MxCommandKind.SubscribeBulk: + reply.SubscribeBulk = payload; + break; + } } } - private sealed record BulkConstraintPlan( + private sealed record WriteBulkConstraintPlan( MxCommand Command, int OriginalCount, - IReadOnlyDictionary DeniedResults, - bool HasAllowedItems); + IReadOnlyDictionary DeniedResults, + bool HasAllowedItems) + : BulkConstraintPlan(Command, OriginalCount, HasAllowedItems) + { + public override MxCommandReply CreateDeniedReply(MxCommandRequest request) + { + MxCommandReply reply = new() + { + SessionId = request.SessionId, + CorrelationId = request.ClientCorrelationId, + Kind = request.Command.Kind, + ProtocolStatus = MxAccessGrpcMapper.Ok(), + }; + SetPayload(reply, BuildMerged(new BulkWriteReply())); + return reply; + } + + public override MxCommandReply MergeDeniedInto(MxCommandReply reply) + { + BulkWriteReply allowed = GetPayload(reply) ?? new BulkWriteReply(); + SetPayload(reply, BuildMerged(allowed)); + return reply; + } + + private BulkWriteReply BuildMerged(BulkWriteReply allowed) + { + Queue allowedResults = new(allowed.Results); + BulkWriteReply merged = new(); + for (int index = 0; index < OriginalCount; index++) + { + if (DeniedResults.TryGetValue(index, out BulkWriteResult? denied)) + { + merged.Results.Add(denied); + } + else if (allowedResults.TryDequeue(out BulkWriteResult? allowedResult)) + { + merged.Results.Add(allowedResult); + } + } + + return merged; + } + + private BulkWriteReply? GetPayload(MxCommandReply reply) => Command.Kind switch + { + MxCommandKind.WriteBulk => reply.WriteBulk, + MxCommandKind.Write2Bulk => reply.Write2Bulk, + MxCommandKind.WriteSecuredBulk => reply.WriteSecuredBulk, + MxCommandKind.WriteSecured2Bulk => reply.WriteSecured2Bulk, + _ => null, + }; + + private void SetPayload(MxCommandReply reply, BulkWriteReply payload) + { + switch (Command.Kind) + { + case MxCommandKind.WriteBulk: + reply.WriteBulk = payload; + break; + case MxCommandKind.Write2Bulk: + reply.Write2Bulk = payload; + break; + case MxCommandKind.WriteSecuredBulk: + reply.WriteSecuredBulk = payload; + break; + case MxCommandKind.WriteSecured2Bulk: + reply.WriteSecured2Bulk = payload; + break; + } + } + } + + private sealed record ReadBulkConstraintPlan( + MxCommand Command, + int OriginalCount, + IReadOnlyDictionary DeniedResults, + bool HasAllowedItems) + : BulkConstraintPlan(Command, OriginalCount, HasAllowedItems) + { + public override MxCommandReply CreateDeniedReply(MxCommandRequest request) + { + MxCommandReply reply = new() + { + SessionId = request.SessionId, + CorrelationId = request.ClientCorrelationId, + Kind = request.Command.Kind, + ProtocolStatus = MxAccessGrpcMapper.Ok(), + }; + reply.ReadBulk = BuildMerged(new BulkReadReply()); + return reply; + } + + public override MxCommandReply MergeDeniedInto(MxCommandReply reply) + { + BulkReadReply allowed = reply.ReadBulk ?? new BulkReadReply(); + reply.ReadBulk = BuildMerged(allowed); + return reply; + } + + private BulkReadReply BuildMerged(BulkReadReply allowed) + { + Queue allowedResults = new(allowed.Results); + BulkReadReply merged = new(); + for (int index = 0; index < OriginalCount; index++) + { + if (DeniedResults.TryGetValue(index, out BulkReadResult? denied)) + { + merged.Results.Add(denied); + } + else if (allowedResults.TryDequeue(out BulkReadResult? allowedResult)) + { + merged.Results.Add(allowedResult); + } + } + + return merged; + } + } private RpcException MapException(Exception exception) { diff --git a/src/MxGateway.Server/Grpc/MxAccessGrpcRequestValidator.cs b/src/MxGateway.Server/Grpc/MxAccessGrpcRequestValidator.cs index ee81dc2..33042cf 100644 --- a/src/MxGateway.Server/Grpc/MxAccessGrpcRequestValidator.cs +++ b/src/MxGateway.Server/Grpc/MxAccessGrpcRequestValidator.cs @@ -99,6 +99,11 @@ public sealed class MxAccessGrpcRequestValidator MxCommandKind.UnAdviseItemBulk => MxCommand.PayloadOneofCase.UnAdviseItemBulk, MxCommandKind.SubscribeBulk => MxCommand.PayloadOneofCase.SubscribeBulk, MxCommandKind.UnsubscribeBulk => MxCommand.PayloadOneofCase.UnsubscribeBulk, + MxCommandKind.WriteBulk => MxCommand.PayloadOneofCase.WriteBulk, + MxCommandKind.Write2Bulk => MxCommand.PayloadOneofCase.Write2Bulk, + MxCommandKind.WriteSecuredBulk => MxCommand.PayloadOneofCase.WriteSecuredBulk, + MxCommandKind.WriteSecured2Bulk => MxCommand.PayloadOneofCase.WriteSecured2Bulk, + MxCommandKind.ReadBulk => MxCommand.PayloadOneofCase.ReadBulk, MxCommandKind.Ping => MxCommand.PayloadOneofCase.Ping, MxCommandKind.GetSessionState => MxCommand.PayloadOneofCase.GetSessionState, MxCommandKind.GetWorkerInfo => MxCommand.PayloadOneofCase.GetWorkerInfo, diff --git a/src/MxGateway.Server/Security/Authorization/GatewayGrpcScopeResolver.cs b/src/MxGateway.Server/Security/Authorization/GatewayGrpcScopeResolver.cs index 6c44e48..de24d55 100644 --- a/src/MxGateway.Server/Security/Authorization/GatewayGrpcScopeResolver.cs +++ b/src/MxGateway.Server/Security/Authorization/GatewayGrpcScopeResolver.cs @@ -31,10 +31,14 @@ public sealed class GatewayGrpcScopeResolver return kind switch { MxCommandKind.Write or - MxCommandKind.Write2 => GatewayScopes.InvokeWrite, + MxCommandKind.Write2 or + MxCommandKind.WriteBulk or + MxCommandKind.Write2Bulk => GatewayScopes.InvokeWrite, MxCommandKind.WriteSecured or MxCommandKind.WriteSecured2 or + MxCommandKind.WriteSecuredBulk or + MxCommandKind.WriteSecured2Bulk or MxCommandKind.AuthenticateUser => GatewayScopes.InvokeSecure, MxCommandKind.ArchestraUserToId or diff --git a/src/MxGateway.Server/Sessions/GatewaySession.cs b/src/MxGateway.Server/Sessions/GatewaySession.cs index ab23387..0ee8bfb 100644 --- a/src/MxGateway.Server/Sessions/GatewaySession.cs +++ b/src/MxGateway.Server/Sessions/GatewaySession.cs @@ -590,6 +590,116 @@ public sealed class GatewaySession cancellationToken); } + /// + /// Executes a bulk Write command for the specified server and per-item entries. + /// + public Task> WriteBulkAsync( + int serverHandle, + IReadOnlyList entries, + CancellationToken cancellationToken) + { + ArgumentNullException.ThrowIfNull(entries); + + WriteBulkCommand bulkCommand = new() { ServerHandle = serverHandle }; + bulkCommand.Entries.Add(entries); + return InvokeBulkWriteAsync( + new MxCommand + { + Kind = MxCommandKind.WriteBulk, + WriteBulk = bulkCommand, + }, + reply => reply.WriteBulk, + cancellationToken); + } + + /// Executes a bulk Write2 (timestamped) command. + public Task> Write2BulkAsync( + int serverHandle, + IReadOnlyList entries, + CancellationToken cancellationToken) + { + ArgumentNullException.ThrowIfNull(entries); + + Write2BulkCommand bulkCommand = new() { ServerHandle = serverHandle }; + bulkCommand.Entries.Add(entries); + return InvokeBulkWriteAsync( + new MxCommand + { + Kind = MxCommandKind.Write2Bulk, + Write2Bulk = bulkCommand, + }, + reply => reply.Write2Bulk, + cancellationToken); + } + + /// Executes a bulk WriteSecured command. + public Task> WriteSecuredBulkAsync( + int serverHandle, + IReadOnlyList entries, + CancellationToken cancellationToken) + { + ArgumentNullException.ThrowIfNull(entries); + + WriteSecuredBulkCommand bulkCommand = new() { ServerHandle = serverHandle }; + bulkCommand.Entries.Add(entries); + return InvokeBulkWriteAsync( + new MxCommand + { + Kind = MxCommandKind.WriteSecuredBulk, + WriteSecuredBulk = bulkCommand, + }, + reply => reply.WriteSecuredBulk, + cancellationToken); + } + + /// Executes a bulk WriteSecured2 command. + public Task> WriteSecured2BulkAsync( + int serverHandle, + IReadOnlyList entries, + CancellationToken cancellationToken) + { + ArgumentNullException.ThrowIfNull(entries); + + WriteSecured2BulkCommand bulkCommand = new() { ServerHandle = serverHandle }; + bulkCommand.Entries.Add(entries); + return InvokeBulkWriteAsync( + new MxCommand + { + Kind = MxCommandKind.WriteSecured2Bulk, + WriteSecured2Bulk = bulkCommand, + }, + reply => reply.WriteSecured2Bulk, + cancellationToken); + } + + /// + /// Executes a bulk Read command — see ReadBulkCommand's doc + /// comment in the .proto for the cached-vs-snapshot semantics. + /// + public Task> ReadBulkAsync( + int serverHandle, + IReadOnlyList tagAddresses, + TimeSpan timeout, + CancellationToken cancellationToken) + { + ArgumentNullException.ThrowIfNull(tagAddresses); + + ReadBulkCommand bulkCommand = new() + { + ServerHandle = serverHandle, + TimeoutMs = timeout <= TimeSpan.Zero ? 0u : (uint)Math.Min(timeout.TotalMilliseconds, uint.MaxValue), + }; + bulkCommand.TagAddresses.Add(tagAddresses); + return InvokeBulkReadAsync( + new MxCommand + { + Kind = MxCommandKind.ReadBulk, + ReadBulk = bulkCommand, + }, + reply => reply.ReadBulk, + cancellationToken); + } + /// /// Reads events from the worker as an asynchronous enumerable stream. /// @@ -690,6 +800,36 @@ public sealed class GatewaySession MxCommand command, Func payloadAccessor, CancellationToken cancellationToken) + { + MxCommandReply reply = await InvokeBulkInternalAsync(command, cancellationToken).ConfigureAwait(false); + return payloadAccessor(reply)?.Results.ToArray() ?? []; + } + + private async Task> InvokeBulkWriteAsync( + MxCommand command, + Func payloadAccessor, + CancellationToken cancellationToken) + { + MxCommandReply reply = await InvokeBulkInternalAsync(command, cancellationToken).ConfigureAwait(false); + return payloadAccessor(reply)?.Results.ToArray() ?? []; + } + + private async Task> InvokeBulkReadAsync( + MxCommand command, + Func payloadAccessor, + CancellationToken cancellationToken) + { + MxCommandReply reply = await InvokeBulkInternalAsync(command, cancellationToken).ConfigureAwait(false); + return payloadAccessor(reply)?.Results.ToArray() ?? []; + } + + // Single round-trip + protocol-status check shared by every bulk variant. + // Callers project the typed reply payload out via their own accessor — the + // outer envelope handling is identical across SubscribeResult-based bulks, + // BulkWriteResult-based writes, and BulkReadResult-based reads. + private async Task InvokeBulkInternalAsync( + MxCommand command, + CancellationToken cancellationToken) { WorkerCommandReply workerReply = await InvokeAsync( new WorkerCommand { Command = command }, @@ -712,7 +852,7 @@ public sealed class GatewaySession string.IsNullOrWhiteSpace(message) ? "Bulk MXAccess command failed." : message); } - return payloadAccessor(reply)?.Results.ToArray() ?? []; + return reply; } private IWorkerClient GetReadyWorkerClient() diff --git a/src/MxGateway.Tests/Gateway/Sessions/SessionManagerTests.cs b/src/MxGateway.Tests/Gateway/Sessions/SessionManagerTests.cs index 342f69a..9eb3fd5 100644 --- a/src/MxGateway.Tests/Gateway/Sessions/SessionManagerTests.cs +++ b/src/MxGateway.Tests/Gateway/Sessions/SessionManagerTests.cs @@ -167,6 +167,119 @@ public sealed class SessionManagerTests Assert.Equal(["Galaxy.Tag.Value"], workerClient.LastCommand?.Command.SubscribeBulk.TagAddresses); } + [Fact] + public async Task GatewaySessionWriteBulkAsync_ForwardsOneBulkCommandAndReturnsResults() + { + FakeWorkerClient workerClient = new() + { + InvokeReply = new WorkerCommandReply + { + Reply = new MxCommandReply + { + SessionId = "session-1", + CorrelationId = "correlation-1", + Kind = MxCommandKind.WriteBulk, + ProtocolStatus = new ProtocolStatus { Code = ProtocolStatusCode.Ok }, + WriteBulk = new BulkWriteReply + { + Results = + { + new BulkWriteResult + { + ServerHandle = 12, + ItemHandle = 901, + WasSuccessful = true, + }, + new BulkWriteResult + { + ServerHandle = 12, + ItemHandle = 902, + WasSuccessful = false, + ErrorMessage = "MXAccess invalid handle", + }, + }, + }, + }, + }, + }; + SessionManager manager = CreateManager(new FakeSessionWorkerClientFactory(workerClient)); + GatewaySession session = await manager.OpenSessionAsync(CreateOpenRequest(), "client-1", CancellationToken.None); + + IReadOnlyList results = await session.WriteBulkAsync( + 12, + new[] + { + new WriteBulkEntry + { + ItemHandle = 901, + UserId = 5, + Value = new MxValue { DataType = MxDataType.Integer, Int32Value = 11 }, + }, + new WriteBulkEntry + { + ItemHandle = 902, + UserId = 5, + Value = new MxValue { DataType = MxDataType.Integer, Int32Value = 22 }, + }, + }, + CancellationToken.None); + + Assert.Equal(2, results.Count); + Assert.True(results[0].WasSuccessful); + Assert.False(results[1].WasSuccessful); + Assert.Equal(MxCommandKind.WriteBulk, workerClient.LastCommand?.Command.Kind); + Assert.Equal(2, workerClient.LastCommand?.Command.WriteBulk.Entries.Count); + } + + [Fact] + public async Task GatewaySessionReadBulkAsync_ForwardsOneBulkCommandAndReturnsResults() + { + FakeWorkerClient workerClient = new() + { + InvokeReply = new WorkerCommandReply + { + Reply = new MxCommandReply + { + SessionId = "session-1", + CorrelationId = "correlation-1", + Kind = MxCommandKind.ReadBulk, + ProtocolStatus = new ProtocolStatus { Code = ProtocolStatusCode.Ok }, + ReadBulk = new BulkReadReply + { + Results = + { + new BulkReadResult + { + ServerHandle = 12, + TagAddress = "Galaxy.Tag.Value", + ItemHandle = 512, + WasSuccessful = true, + WasCached = true, + Value = new MxValue { DataType = MxDataType.Integer, Int32Value = 42 }, + }, + }, + }, + }, + }, + }; + SessionManager manager = CreateManager(new FakeSessionWorkerClientFactory(workerClient)); + GatewaySession session = await manager.OpenSessionAsync(CreateOpenRequest(), "client-1", CancellationToken.None); + + IReadOnlyList results = await session.ReadBulkAsync( + 12, + ["Galaxy.Tag.Value"], + TimeSpan.FromMilliseconds(500), + CancellationToken.None); + + BulkReadResult result = Assert.Single(results); + Assert.True(result.WasSuccessful); + Assert.True(result.WasCached); + Assert.Equal(42, result.Value.Int32Value); + Assert.Equal(MxCommandKind.ReadBulk, workerClient.LastCommand?.Command.Kind); + Assert.Equal(["Galaxy.Tag.Value"], workerClient.LastCommand?.Command.ReadBulk.TagAddresses); + Assert.Equal(500u, workerClient.LastCommand?.Command.ReadBulk.TimeoutMs); + } + /// Verifies that invoking a command on a faulted session rejects the command. [Fact] public async Task InvokeAsync_WhenSessionFaulted_RejectsCommand() diff --git a/src/MxGateway.Tests/Security/Authorization/GatewayGrpcScopeResolverTests.cs b/src/MxGateway.Tests/Security/Authorization/GatewayGrpcScopeResolverTests.cs index ca1ad6f..ec8419e 100644 --- a/src/MxGateway.Tests/Security/Authorization/GatewayGrpcScopeResolverTests.cs +++ b/src/MxGateway.Tests/Security/Authorization/GatewayGrpcScopeResolverTests.cs @@ -39,6 +39,11 @@ public sealed class GatewayGrpcScopeResolverTests [InlineData(MxCommandKind.Write2, GatewayScopes.InvokeWrite)] [InlineData(MxCommandKind.WriteSecured, GatewayScopes.InvokeSecure)] [InlineData(MxCommandKind.WriteSecured2, GatewayScopes.InvokeSecure)] + [InlineData(MxCommandKind.WriteBulk, GatewayScopes.InvokeWrite)] + [InlineData(MxCommandKind.Write2Bulk, GatewayScopes.InvokeWrite)] + [InlineData(MxCommandKind.WriteSecuredBulk, GatewayScopes.InvokeSecure)] + [InlineData(MxCommandKind.WriteSecured2Bulk, GatewayScopes.InvokeSecure)] + [InlineData(MxCommandKind.ReadBulk, GatewayScopes.InvokeRead)] [InlineData(MxCommandKind.AuthenticateUser, GatewayScopes.InvokeSecure)] [InlineData(MxCommandKind.ArchestraUserToId, GatewayScopes.MetadataRead)] [InlineData(MxCommandKind.GetSessionState, GatewayScopes.MetadataRead)] diff --git a/src/MxGateway.Worker.Tests/MxAccess/AlarmCommandExecutorTests.cs b/src/MxGateway.Worker.Tests/MxAccess/AlarmCommandExecutorTests.cs index 86a0231..4e13b9c 100644 --- a/src/MxGateway.Worker.Tests/MxAccess/AlarmCommandExecutorTests.cs +++ b/src/MxGateway.Worker.Tests/MxAccess/AlarmCommandExecutorTests.cs @@ -336,6 +336,9 @@ public sealed class AlarmCommandExecutorTests { // Walk to the private constructor via reflection — the public // factory MxAccessSession.Create(...) requires a real COM object. + // Signature mirrors MxAccessSession's private ctor; the + // MxAccessValueCache slot was added when ReadBulk gained the + // cached-vs-snapshot fork. System.Reflection.ConstructorInfo? ctor = typeof(MxAccessSession) .GetConstructor( System.Reflection.BindingFlags.NonPublic | System.Reflection.BindingFlags.Instance, @@ -346,6 +349,7 @@ public sealed class AlarmCommandExecutorTests typeof(IMxAccessServer), typeof(IMxAccessEventSink), typeof(MxAccessHandleRegistry), + typeof(MxAccessValueCache), typeof(int), }, modifiers: null); @@ -360,6 +364,7 @@ public sealed class AlarmCommandExecutorTests new NullMxAccessServer(), new NoopEventSink(), new MxAccessHandleRegistry(), + new MxAccessValueCache(), System.Environment.CurrentManagedThreadId, }); } diff --git a/src/MxGateway.Worker.Tests/MxAccess/MxAccessBaseEventSinkTests.cs b/src/MxGateway.Worker.Tests/MxAccess/MxAccessBaseEventSinkTests.cs index f523a3d..2609749 100644 --- a/src/MxGateway.Worker.Tests/MxAccess/MxAccessBaseEventSinkTests.cs +++ b/src/MxGateway.Worker.Tests/MxAccess/MxAccessBaseEventSinkTests.cs @@ -63,6 +63,53 @@ public sealed class MxAccessBaseEventSinkTests Assert.NotNull(mxEvent.WorkerTimestamp); } + /// + /// Verifies that an OnDataChange COM callback also writes the value into the + /// per-session value cache, so a later ReadBulk on an already-advised + /// tag can serve the cached value without re-advising. The cache update must + /// fire after the event has cleared the outbound queue — verified here by + /// checking the cache only after the queue confirms the enqueue succeeded. + /// + [Fact] + public void OnDataChange_ComCallback_PopulatesValueCache() + { + MxAccessEventQueue queue = new(); + MxAccessValueCache cache = new(); + MxAccessBaseEventSink sink = new(queue, new MxAccessEventMapper(), cache); + DateTime timestamp = new(2026, 5, 18, 9, 15, 0, DateTimeKind.Utc); + MXSTATUS_PROXY[] statuses = Array.Empty(); + + sink.OnDataChange( + hLMXServerHandle: 7, + phItemHandle: 21, + pvItemValue: 1234, + pwItemQuality: 192, + pftItemTimeStamp: timestamp, + ref statuses); + + Assert.Equal(1, queue.Count); + Assert.True(cache.TryGet(7, 21, out MxAccessValueCache.CachedValue cached)); + Assert.Equal(1UL, cached.Version); + Assert.Equal(1234, cached.Value.Int32Value); + Assert.Equal(192, cached.Quality); + Assert.Equal(timestamp, cached.SourceTimestamp.ToDateTime()); + } + + /// + /// Verifies that the sink-bound ValueCache is exposed for sharing with + /// the owning so writes and reads see the same + /// instance. + /// + [Fact] + public void ValueCache_ReturnsTheInstanceBoundAtConstruction() + { + MxAccessEventQueue queue = new(); + MxAccessValueCache cache = new(); + MxAccessBaseEventSink sink = new(queue, new MxAccessEventMapper(), cache); + + Assert.Same(cache, sink.ValueCache); + } + /// /// Verifies that consecutive OnDataChange callbacks land in the queue with monotonic sequences. /// diff --git a/src/MxGateway.Worker.Tests/MxAccess/MxAccessCommandExecutorTests.cs b/src/MxGateway.Worker.Tests/MxAccess/MxAccessCommandExecutorTests.cs index b4bc61e..1c6821a 100644 --- a/src/MxGateway.Worker.Tests/MxAccess/MxAccessCommandExecutorTests.cs +++ b/src/MxGateway.Worker.Tests/MxAccess/MxAccessCommandExecutorTests.cs @@ -473,6 +473,203 @@ public sealed class MxAccessCommandExecutorTests Assert.Equal(runtime.StaThreadId, fakeComObject.AdviseThreadId); } + /// + /// Verifies that WriteBulk runs MXAccess Write per entry on the STA and returns + /// one BulkWriteResult per entry in input order, including a per-entry COM + /// failure surfaced as WasSuccessful=false with the underlying HRESULT. + /// + [Fact] + public async Task DispatchAsync_WriteBulk_RunsSequentialWritesAndReturnsPerEntryResults() + { + const int hresult = unchecked((int)0x80070057); + FakeMxAccessComObject fakeComObject = new( + registerHandle: 80, + writeExceptionByItemHandle: new Dictionary + { + [802] = new COMException("Invalid item handle.", hresult), + }); + FakeMxAccessComObjectFactory factory = new(fakeComObject); + using StaRuntime runtime = CreateRuntime(); + using MxAccessStaSession session = new(runtime, factory, new NoopEventSink()); + await session.StartAsync(workerProcessId: 1234); + + MxCommandReply reply = await session.DispatchAsync(CreateWriteBulkCommand( + "write-bulk", + serverHandle: 80, + new[] + { + (itemHandle: 801, value: 11, userId: 5), + (itemHandle: 802, value: 22, userId: 5), + (itemHandle: 803, value: 33, userId: 5), + })); + + Assert.Equal(ProtocolStatusCode.Ok, reply.ProtocolStatus.Code); + Assert.Equal(MxCommandKind.WriteBulk, reply.Kind); + Assert.Equal(3, reply.WriteBulk.Results.Count); + + BulkWriteResult success1 = reply.WriteBulk.Results[0]; + Assert.True(success1.WasSuccessful); + Assert.Equal(801, success1.ItemHandle); + Assert.Equal(string.Empty, success1.ErrorMessage); + + BulkWriteResult failure = reply.WriteBulk.Results[1]; + Assert.False(failure.WasSuccessful); + Assert.Equal(802, failure.ItemHandle); + Assert.True(failure.HasHresult); + Assert.Equal(hresult, failure.Hresult); + + BulkWriteResult success3 = reply.WriteBulk.Results[2]; + Assert.True(success3.WasSuccessful); + Assert.Equal(803, success3.ItemHandle); + + // Each Write hit the fake COM object on the STA thread. + Assert.Equal(runtime.StaThreadId, fakeComObject.WriteThreadId); + Assert.Contains("Write:80:801", fakeComObject.OperationNames); + Assert.Contains("Write:80:802", fakeComObject.OperationNames); + Assert.Contains("Write:80:803", fakeComObject.OperationNames); + } + + /// Verifies that Write2Bulk forwards value AND timestamp to each per-entry Write2. + [Fact] + public async Task DispatchAsync_Write2Bulk_ForwardsValueAndTimestampPerEntry() + { + FakeMxAccessComObject fakeComObject = new(registerHandle: 81); + FakeMxAccessComObjectFactory factory = new(fakeComObject); + using StaRuntime runtime = CreateRuntime(); + using MxAccessStaSession session = new(runtime, factory, new NoopEventSink()); + await session.StartAsync(workerProcessId: 1234); + DateTime timestamp = new(2026, 5, 19, 12, 0, 0, DateTimeKind.Utc); + + MxCommandReply reply = await session.DispatchAsync(CreateWrite2BulkCommand( + "write2-bulk", + serverHandle: 81, + new[] { (itemHandle: 811, value: 100, timestamp, userId: 7) })); + + Assert.Equal(ProtocolStatusCode.Ok, reply.ProtocolStatus.Code); + BulkWriteResult result = Assert.Single(reply.Write2Bulk.Results); + Assert.True(result.WasSuccessful); + Assert.Equal(811, result.ItemHandle); + Assert.Equal(100, fakeComObject.WriteValue); + Assert.Equal(timestamp, fakeComObject.WriteTimestamp); + Assert.Equal(7, fakeComObject.WriteUserId); + Assert.Contains("Write2:81:811", fakeComObject.OperationNames); + } + + /// Verifies that WriteSecuredBulk forwards both user ids per entry. + [Fact] + public async Task DispatchAsync_WriteSecuredBulk_ForwardsUserIdsPerEntry() + { + FakeMxAccessComObject fakeComObject = new(registerHandle: 82); + FakeMxAccessComObjectFactory factory = new(fakeComObject); + using StaRuntime runtime = CreateRuntime(); + using MxAccessStaSession session = new(runtime, factory, new NoopEventSink()); + await session.StartAsync(workerProcessId: 1234); + + MxCommandReply reply = await session.DispatchAsync(CreateWriteSecuredBulkCommand( + "write-secured-bulk", + serverHandle: 82, + new[] { (itemHandle: 821, currentUserId: 11, verifierUserId: 22, value: 555) })); + + Assert.Equal(ProtocolStatusCode.Ok, reply.ProtocolStatus.Code); + BulkWriteResult result = Assert.Single(reply.WriteSecuredBulk.Results); + Assert.True(result.WasSuccessful); + Assert.Equal(11, fakeComObject.WriteCurrentUserId); + Assert.Equal(22, fakeComObject.WriteVerifierUserId); + Assert.Equal(555, fakeComObject.WriteValue); + Assert.Contains("WriteSecured:82:821", fakeComObject.OperationNames); + } + + /// Verifies that WriteSecured2Bulk forwards user ids, value, and timestamp per entry. + [Fact] + public async Task DispatchAsync_WriteSecured2Bulk_ForwardsUserIdsValueAndTimestampPerEntry() + { + FakeMxAccessComObject fakeComObject = new(registerHandle: 83); + FakeMxAccessComObjectFactory factory = new(fakeComObject); + using StaRuntime runtime = CreateRuntime(); + using MxAccessStaSession session = new(runtime, factory, new NoopEventSink()); + await session.StartAsync(workerProcessId: 1234); + DateTime timestamp = new(2026, 5, 19, 13, 30, 0, DateTimeKind.Utc); + + MxCommandReply reply = await session.DispatchAsync(CreateWriteSecured2BulkCommand( + "write-secured2-bulk", + serverHandle: 83, + new[] { (itemHandle: 831, currentUserId: 33, verifierUserId: 44, value: 999, timestamp) })); + + Assert.Equal(ProtocolStatusCode.Ok, reply.ProtocolStatus.Code); + BulkWriteResult result = Assert.Single(reply.WriteSecured2Bulk.Results); + Assert.True(result.WasSuccessful); + Assert.Equal(33, fakeComObject.WriteCurrentUserId); + Assert.Equal(44, fakeComObject.WriteVerifierUserId); + Assert.Equal(999, fakeComObject.WriteValue); + Assert.Equal(timestamp, fakeComObject.WriteTimestamp); + Assert.Contains("WriteSecured2:83:831", fakeComObject.OperationNames); + } + + /// + /// Verifies ReadBulk's snapshot path: with no cached value, the worker takes + /// the AddItem + Advise + wait + UnAdvise + RemoveItem lifecycle itself, and + /// surfaces a timeout as a per-tag failure when no OnDataChange arrives. + /// The fake COM object never fires events so the wait always times out — but + /// the lifecycle calls must still happen, in order, on the STA. + /// + [Fact] + public async Task DispatchAsync_ReadBulk_WhenTagNotCached_TakesSnapshotLifecycleAndTimesOut() + { + FakeMxAccessComObject fakeComObject = new( + registerHandle: 90, + addItemHandle: 900); + FakeMxAccessComObjectFactory factory = new(fakeComObject); + using StaRuntime runtime = CreateRuntime(); + using MxAccessStaSession session = new(runtime, factory, new NoopEventSink()); + await session.StartAsync(workerProcessId: 1234); + await session.DispatchAsync(CreateRegisterCommand("register-before-read-bulk", "client-a")); + + MxCommandReply reply = await session.DispatchAsync(CreateReadBulkCommand( + "read-bulk-snapshot", + serverHandle: 90, + tagAddresses: new[] { "Galaxy.Tag.Value" }, + timeoutMs: 80)); + + Assert.Equal(ProtocolStatusCode.Ok, reply.ProtocolStatus.Code); + Assert.Equal(MxCommandKind.ReadBulk, reply.Kind); + BulkReadResult result = Assert.Single(reply.ReadBulk.Results); + Assert.False(result.WasSuccessful); + Assert.False(result.WasCached); + Assert.Equal("Galaxy.Tag.Value", result.TagAddress); + Assert.Equal(900, result.ItemHandle); + Assert.Contains("timed out", result.ErrorMessage, StringComparison.OrdinalIgnoreCase); + + // The snapshot lifecycle must call AddItem → Advise → UnAdvise → RemoveItem + // in order on the STA. We don't assert exact ordering of UnAdvise vs. + // RemoveItem here because both are best-effort cleanup in a finally + // block; the operation list confirms both happened. + Assert.Contains("AddItem:90:Galaxy.Tag.Value", fakeComObject.OperationNames); + Assert.Contains("Advise:90:900", fakeComObject.OperationNames); + Assert.Contains("UnAdvise:90:900", fakeComObject.OperationNames); + Assert.Contains("RemoveItem:90:900", fakeComObject.OperationNames); + } + + /// Verifies that ReadBulk with no payload returns an invalid request error. + [Fact] + public async Task DispatchAsync_ReadBulkWithoutPayload_ReturnsInvalidRequest() + { + FakeMxAccessComObject fakeComObject = new(registerHandle: 91); + FakeMxAccessComObjectFactory factory = new(fakeComObject); + using StaRuntime runtime = CreateRuntime(); + using MxAccessStaSession session = new(runtime, factory, new NoopEventSink()); + await session.StartAsync(workerProcessId: 1234); + + MxCommandReply reply = await session.DispatchAsync(new StaCommand( + "session-1", + "missing-read-bulk-payload", + new MxCommand + { + Kind = MxCommandKind.ReadBulk, + })); + + Assert.Equal(ProtocolStatusCode.InvalidRequest, reply.ProtocolStatus.Code); + } + /// Verifies that UnsubscribeBulk removes items after UnAdvise failure. [Fact] public async Task DispatchAsync_UnsubscribeBulk_RemovesItemAfterUnAdviseFailure() @@ -1048,6 +1245,149 @@ public sealed class MxAccessCommandExecutorTests }); } + private static StaCommand CreateWriteBulkCommand( + string correlationId, + int serverHandle, + IEnumerable<(int itemHandle, int value, int userId)> entries) + { + WriteBulkCommand command = new() + { + ServerHandle = serverHandle, + }; + foreach ((int itemHandle, int value, int userId) in entries) + { + command.Entries.Add(new WriteBulkEntry + { + ItemHandle = itemHandle, + Value = CreateIntegerValue(value), + UserId = userId, + }); + } + + return new StaCommand( + "session-1", + correlationId, + new MxCommand + { + Kind = MxCommandKind.WriteBulk, + WriteBulk = command, + }); + } + + private static StaCommand CreateWrite2BulkCommand( + string correlationId, + int serverHandle, + IEnumerable<(int itemHandle, int value, DateTime timestamp, int userId)> entries) + { + Write2BulkCommand command = new() + { + ServerHandle = serverHandle, + }; + foreach ((int itemHandle, int value, DateTime timestamp, int userId) in entries) + { + command.Entries.Add(new Write2BulkEntry + { + ItemHandle = itemHandle, + Value = CreateIntegerValue(value), + TimestampValue = CreateTimestampValue(timestamp), + UserId = userId, + }); + } + + return new StaCommand( + "session-1", + correlationId, + new MxCommand + { + Kind = MxCommandKind.Write2Bulk, + Write2Bulk = command, + }); + } + + private static StaCommand CreateWriteSecuredBulkCommand( + string correlationId, + int serverHandle, + IEnumerable<(int itemHandle, int currentUserId, int verifierUserId, int value)> entries) + { + WriteSecuredBulkCommand command = new() + { + ServerHandle = serverHandle, + }; + foreach ((int itemHandle, int currentUserId, int verifierUserId, int value) in entries) + { + command.Entries.Add(new WriteSecuredBulkEntry + { + ItemHandle = itemHandle, + CurrentUserId = currentUserId, + VerifierUserId = verifierUserId, + Value = CreateIntegerValue(value), + }); + } + + return new StaCommand( + "session-1", + correlationId, + new MxCommand + { + Kind = MxCommandKind.WriteSecuredBulk, + WriteSecuredBulk = command, + }); + } + + private static StaCommand CreateWriteSecured2BulkCommand( + string correlationId, + int serverHandle, + IEnumerable<(int itemHandle, int currentUserId, int verifierUserId, int value, DateTime timestamp)> entries) + { + WriteSecured2BulkCommand command = new() + { + ServerHandle = serverHandle, + }; + foreach ((int itemHandle, int currentUserId, int verifierUserId, int value, DateTime timestamp) in entries) + { + command.Entries.Add(new WriteSecured2BulkEntry + { + ItemHandle = itemHandle, + CurrentUserId = currentUserId, + VerifierUserId = verifierUserId, + Value = CreateIntegerValue(value), + TimestampValue = CreateTimestampValue(timestamp), + }); + } + + return new StaCommand( + "session-1", + correlationId, + new MxCommand + { + Kind = MxCommandKind.WriteSecured2Bulk, + WriteSecured2Bulk = command, + }); + } + + private static StaCommand CreateReadBulkCommand( + string correlationId, + int serverHandle, + IEnumerable tagAddresses, + uint timeoutMs) + { + ReadBulkCommand command = new() + { + ServerHandle = serverHandle, + TimeoutMs = timeoutMs, + }; + command.TagAddresses.Add(tagAddresses); + + return new StaCommand( + "session-1", + correlationId, + new MxCommand + { + Kind = MxCommandKind.ReadBulk, + ReadBulk = command, + }); + } + private static StaCommand CreateAdviseSupervisoryCommand( string correlationId, int serverHandle, @@ -1087,6 +1427,7 @@ public sealed class MxAccessCommandExecutorTests private readonly Exception? adviseException; private readonly Exception? unAdviseException; private readonly Exception? adviseSupervisoryException; + private readonly IReadOnlyDictionary writeExceptionByItemHandle; private readonly List operationNames = new(); /// Initializes a fake MXAccess COM object with the given handles and optional exceptions. @@ -1110,7 +1451,8 @@ public sealed class MxAccessCommandExecutorTests Exception? removeItemException = null, Exception? adviseException = null, Exception? unAdviseException = null, - Exception? adviseSupervisoryException = null) + Exception? adviseSupervisoryException = null, + IReadOnlyDictionary? writeExceptionByItemHandle = null) { this.registerHandle = registerHandle; this.addItemHandle = addItemHandle; @@ -1122,6 +1464,8 @@ public sealed class MxAccessCommandExecutorTests this.adviseException = adviseException; this.unAdviseException = unAdviseException; this.adviseSupervisoryException = adviseSupervisoryException; + this.writeExceptionByItemHandle = writeExceptionByItemHandle + ?? new Dictionary(); } /// Gets the client name passed to Register, if called. @@ -1380,6 +1724,7 @@ public sealed class MxAccessCommandExecutorTests WriteValue = value; WriteUserId = userId; WriteThreadId = Environment.CurrentManagedThreadId; + ThrowIfWriteFailureConfigured(itemHandle); } /// Writes a timestamped value to an item and tracks the operation. @@ -1402,6 +1747,7 @@ public sealed class MxAccessCommandExecutorTests WriteTimestamp = timestamp; WriteUserId = userId; WriteThreadId = Environment.CurrentManagedThreadId; + ThrowIfWriteFailureConfigured(itemHandle); } /// Performs a secured write to an item and tracks the operation. @@ -1424,6 +1770,7 @@ public sealed class MxAccessCommandExecutorTests WriteVerifierUserId = verifierUserId; WriteValue = value; WriteThreadId = Environment.CurrentManagedThreadId; + ThrowIfWriteFailureConfigured(itemHandle); } /// Performs a secured timestamped write to an item and tracks the operation. @@ -1449,6 +1796,18 @@ public sealed class MxAccessCommandExecutorTests WriteValue = value; WriteTimestamp = timestamp; WriteThreadId = Environment.CurrentManagedThreadId; + ThrowIfWriteFailureConfigured(itemHandle); + } + + private void ThrowIfWriteFailureConfigured(int itemHandle) + { + // Per-item write-failure injection — used by the bulk-write tests to + // exercise the "one bad entry surfaces as was_successful=false but + // the loop keeps going" contract on BulkWriteResult. + if (writeExceptionByItemHandle.TryGetValue(itemHandle, out Exception? exception)) + { + throw exception; + } } } diff --git a/src/MxGateway.Worker.Tests/MxAccess/MxAccessValueCacheTests.cs b/src/MxGateway.Worker.Tests/MxAccess/MxAccessValueCacheTests.cs new file mode 100644 index 0000000..b69eb76 --- /dev/null +++ b/src/MxGateway.Worker.Tests/MxAccess/MxAccessValueCacheTests.cs @@ -0,0 +1,168 @@ +using System; +using System.Collections.Generic; +using System.Diagnostics; +using System.Threading; +using System.Threading.Tasks; +using Google.Protobuf.WellKnownTypes; +using MxGateway.Contracts.Proto; +using MxGateway.Worker.MxAccess; + +namespace MxGateway.Worker.Tests.MxAccess; + +/// +/// Unit tests for . The cache is consumed by +/// to satisfy "current value" +/// requests for already-advised tags without touching the existing +/// subscription, so its contract is exercised in isolation here before any +/// STA / COM plumbing gets layered on top. +/// +public sealed class MxAccessValueCacheTests +{ + [Fact] + public void Set_ThenTryGet_ReturnsLastValueWithIncrementingVersion() + { + MxAccessValueCache cache = new(); + Timestamp sourceTimestamp = Timestamp.FromDateTime(new(2026, 5, 19, 9, 0, 0, DateTimeKind.Utc)); + + cache.Set(serverHandle: 7, itemHandle: 21, BuildEvent(serverHandle: 7, itemHandle: 21, intValue: 100, quality: 192, sourceTimestamp)); + + Assert.True(cache.TryGet(7, 21, out MxAccessValueCache.CachedValue first)); + Assert.Equal(1UL, first.Version); + Assert.Equal(100, first.Value.Int32Value); + Assert.Equal(192, first.Quality); + Assert.Equal(sourceTimestamp, first.SourceTimestamp); + + // A second Set on the same key bumps the version and overwrites the + // payload. Different keys remain isolated. + cache.Set(7, 21, BuildEvent(7, 21, intValue: 200, quality: 192, sourceTimestamp)); + cache.Set(7, 22, BuildEvent(7, 22, intValue: 999, quality: 192, sourceTimestamp)); + + Assert.True(cache.TryGet(7, 21, out MxAccessValueCache.CachedValue second)); + Assert.Equal(2UL, second.Version); + Assert.Equal(200, second.Value.Int32Value); + + Assert.True(cache.TryGet(7, 22, out MxAccessValueCache.CachedValue other)); + Assert.Equal(1UL, other.Version); + Assert.Equal(999, other.Value.Int32Value); + } + + [Fact] + public void TryGet_WithUnknownHandle_ReturnsFalse() + { + MxAccessValueCache cache = new(); + + Assert.False(cache.TryGet(serverHandle: 7, itemHandle: 21, out _)); + } + + [Fact] + public void Remove_DropsEntryAndResetsVersion() + { + MxAccessValueCache cache = new(); + cache.Set(7, 21, BuildEvent(7, 21, intValue: 1, quality: 192, Timestamp.FromDateTime(DateTime.UtcNow))); + cache.Set(7, 21, BuildEvent(7, 21, intValue: 2, quality: 192, Timestamp.FromDateTime(DateTime.UtcNow))); + + cache.Remove(7, 21); + Assert.False(cache.TryGet(7, 21, out _)); + + // After Remove, a subsequent Set restarts the per-handle version from 1 + // — the cache must not serve a stale "version 3" entry that would race + // against a reused MXAccess item handle. + cache.Set(7, 21, BuildEvent(7, 21, intValue: 3, quality: 192, Timestamp.FromDateTime(DateTime.UtcNow))); + Assert.True(cache.TryGet(7, 21, out MxAccessValueCache.CachedValue reset)); + Assert.Equal(1UL, reset.Version); + } + + [Fact] + public void CurrentVersion_ReturnsZeroForUnknown_AndLatestForKnown() + { + MxAccessValueCache cache = new(); + Assert.Equal(0UL, cache.CurrentVersion(7, 21)); + + cache.Set(7, 21, BuildEvent(7, 21, intValue: 1, quality: 192, Timestamp.FromDateTime(DateTime.UtcNow))); + cache.Set(7, 21, BuildEvent(7, 21, intValue: 2, quality: 192, Timestamp.FromDateTime(DateTime.UtcNow))); + + Assert.Equal(2UL, cache.CurrentVersion(7, 21)); + } + + [Fact] + public void TryWaitForUpdate_ReturnsFalseAfterDeadline_WhenNoSetOccurs() + { + MxAccessValueCache cache = new(); + int pumpCalls = 0; + Stopwatch stopwatch = Stopwatch.StartNew(); + + bool result = cache.TryWaitForUpdate( + serverHandle: 7, + itemHandle: 21, + sinceVersion: 0, + deadlineUtc: DateTime.UtcNow.AddMilliseconds(80), + pumpStep: () => Interlocked.Increment(ref pumpCalls), + out MxAccessValueCache.CachedValue value, + pollIntervalMs: 5); + stopwatch.Stop(); + + Assert.False(result); + Assert.Equal(default, value.Value); + Assert.True(pumpCalls > 1, $"pumpCalls={pumpCalls}: pump step should fire each poll iteration so MXAccess events can dispatch."); + Assert.True(stopwatch.ElapsedMilliseconds >= 60, $"elapsed={stopwatch.ElapsedMilliseconds}ms: wait should approximate the deadline."); + } + + [Fact] + public async Task TryWaitForUpdate_ReturnsTrue_WhenSetFiresAfterBaselineVersion() + { + MxAccessValueCache cache = new(); + Timestamp sourceTimestamp = Timestamp.FromDateTime(DateTime.UtcNow); + // Baseline is "no entry yet" → wait for the first Set to land. + Task<(bool ok, MxAccessValueCache.CachedValue value)> waitTask = Task.Run(() => + { + bool ok = cache.TryWaitForUpdate( + serverHandle: 7, + itemHandle: 21, + sinceVersion: 0, + deadlineUtc: DateTime.UtcNow.AddSeconds(2), + pumpStep: () => { }, + out MxAccessValueCache.CachedValue v, + pollIntervalMs: 5); + return (ok, v); + }); + + // Race a Set against the wait loop. The cache's lock guarantees the + // wait observes the new version before TryGet returns it. + await Task.Delay(20); + cache.Set(7, 21, BuildEvent(7, 21, intValue: 4242, quality: 192, sourceTimestamp)); + + (bool ok, MxAccessValueCache.CachedValue value) = await waitTask; + Assert.True(ok); + Assert.Equal(4242, value.Value.Int32Value); + Assert.Equal(1UL, value.Version); + } + + private static MxEvent BuildEvent( + int serverHandle, + int itemHandle, + int intValue, + int quality, + Timestamp sourceTimestamp) + { + MxEvent mxEvent = new() + { + Family = MxEventFamily.OnDataChange, + ServerHandle = serverHandle, + ItemHandle = itemHandle, + Quality = quality, + SourceTimestamp = sourceTimestamp, + Value = new MxValue + { + DataType = MxDataType.Integer, + VariantType = "VT_I4", + Int32Value = intValue, + }, + OnDataChange = new OnDataChangeEvent(), + }; + mxEvent.Statuses.Add(new MxStatusProxy + { + Category = MxStatusCategory.Ok, + }); + return mxEvent; + } +} diff --git a/src/MxGateway.Worker/MxAccess/MxAccessBaseEventSink.cs b/src/MxGateway.Worker/MxAccess/MxAccessBaseEventSink.cs index cb8b328..86cb75d 100644 --- a/src/MxGateway.Worker/MxAccess/MxAccessBaseEventSink.cs +++ b/src/MxGateway.Worker/MxAccess/MxAccessBaseEventSink.cs @@ -9,6 +9,7 @@ public sealed class MxAccessBaseEventSink : IMxAccessEventSink { private readonly MxAccessEventMapper eventMapper; private readonly MxAccessEventQueue eventQueue; + private readonly MxAccessValueCache valueCache; private LMXProxyServerClass? server; private string sessionId = string.Empty; @@ -21,7 +22,7 @@ public sealed class MxAccessBaseEventSink : IMxAccessEventSink /// Initializes a new instance of the MxAccessBaseEventSink class with a provided queue. /// Queue for buffering converted MXAccess events. public MxAccessBaseEventSink(MxAccessEventQueue eventQueue) - : this(eventQueue, new MxAccessEventMapper()) + : this(eventQueue, new MxAccessEventMapper(), new MxAccessValueCache()) { } @@ -31,11 +32,36 @@ public sealed class MxAccessBaseEventSink : IMxAccessEventSink public MxAccessBaseEventSink( MxAccessEventQueue eventQueue, MxAccessEventMapper eventMapper) + : this(eventQueue, eventMapper, new MxAccessValueCache()) + { + } + + /// + /// Initializes a new instance of the MxAccessBaseEventSink class with + /// provided queue, mapper, and a shared value cache. The cache is + /// populated from every successful OnDataChange dispatch so the + /// worker's ReadBulk executor can satisfy a "current value" request + /// from an already-advised tag without touching the subscription. + /// + /// Queue for buffering converted MXAccess events. + /// Converter for MXAccess events to protobuf format. + /// Per-session last-value cache shared with the MxAccessSession. + public MxAccessBaseEventSink( + MxAccessEventQueue eventQueue, + MxAccessEventMapper eventMapper, + MxAccessValueCache valueCache) { this.eventQueue = eventQueue ?? throw new ArgumentNullException(nameof(eventQueue)); this.eventMapper = eventMapper ?? throw new ArgumentNullException(nameof(eventMapper)); + this.valueCache = valueCache ?? throw new ArgumentNullException(nameof(valueCache)); } + /// + /// The last-value cache populated by this sink. Exposed so the + /// MxAccessSession can share the same instance for ReadBulk lookups. + /// + public MxAccessValueCache ValueCache => valueCache; + /// public void Attach( object mxAccessComObject, @@ -81,14 +107,21 @@ public sealed class MxAccessBaseEventSink : IMxAccessEventSink ref MXSTATUS_PROXY[] pVars) { MXSTATUS_PROXY[] statuses = pVars; - EnqueueEvent(() => eventMapper.CreateOnDataChange( - sessionId, - hLMXServerHandle, - phItemHandle, - pvItemValue, - pwItemQuality, - pftItemTimeStamp, - statuses)); + // Build the protobuf event once, enqueue it for the outbound stream, and + // also publish it into the per-session value cache so ReadBulk can serve + // it as a "current value" without re-advising. The cache update is the + // ONLY new side effect — fail-fast on conversion still drops the event + // through the same EnqueueEvent path as before. + EnqueueEvent( + () => eventMapper.CreateOnDataChange( + sessionId, + hLMXServerHandle, + phItemHandle, + pvItemValue, + pwItemQuality, + pftItemTimeStamp, + statuses), + mxEvent => valueCache.Set(hLMXServerHandle, phItemHandle, mxEvent)); } /// @@ -152,9 +185,25 @@ public sealed class MxAccessBaseEventSink : IMxAccessEventSink private void EnqueueEvent(Func createEvent) { + EnqueueEvent(createEvent, postPublish: null); + } + + private void EnqueueEvent(Func createEvent, Action? postPublish) + { + Proto.MxEvent mxEvent; try { - eventQueue.Enqueue(createEvent()); + mxEvent = createEvent(); + } + catch (Exception exception) + { + eventQueue.RecordFault(CreateEventConversionFault(exception)); + return; + } + + try + { + eventQueue.Enqueue(mxEvent); } catch (Exception exception) { @@ -169,6 +218,22 @@ public sealed class MxAccessBaseEventSink : IMxAccessEventSink // this catch's RecordFault call is then a deliberate near // no-op rather than a second, conflicting fault. eventQueue.RecordFault(CreateEventConversionFault(exception)); + return; + } + + // Only publish to caches/observers after the event has cleared the + // queue, so a queue overflow does not leak a "fresher" cached value + // than what was actually shipped to the gateway. + if (postPublish is not null) + { + try + { + postPublish(mxEvent); + } + catch (Exception exception) + { + eventQueue.RecordFault(CreateEventConversionFault(exception)); + } } } diff --git a/src/MxGateway.Worker/MxAccess/MxAccessCommandExecutor.cs b/src/MxGateway.Worker/MxAccess/MxAccessCommandExecutor.cs index a9a8a20..4f0e31c 100644 --- a/src/MxGateway.Worker/MxAccess/MxAccessCommandExecutor.cs +++ b/src/MxGateway.Worker/MxAccess/MxAccessCommandExecutor.cs @@ -11,16 +11,20 @@ namespace MxGateway.Worker.MxAccess; /// public sealed class MxAccessCommandExecutor : IStaCommandExecutor { + /// Default per-tag timeout used when ReadBulkCommand.timeout_ms is zero. + internal static readonly TimeSpan DefaultReadBulkTimeout = TimeSpan.FromMilliseconds(1000); + private readonly MxAccessSession session; private readonly VariantConverter variantConverter; private readonly IAlarmCommandHandler? alarmCommandHandler; + private readonly Action pumpStep; /// /// Initializes a command executor with an MXAccess session. /// /// MXAccess session on the STA thread. public MxAccessCommandExecutor(MxAccessSession session) - : this(session, new VariantConverter(), alarmCommandHandler: null) + : this(session, new VariantConverter(), alarmCommandHandler: null, pumpStep: null) { } @@ -32,7 +36,7 @@ public sealed class MxAccessCommandExecutor : IStaCommandExecutor public MxAccessCommandExecutor( MxAccessSession session, VariantConverter variantConverter) - : this(session, variantConverter, alarmCommandHandler: null) + : this(session, variantConverter, alarmCommandHandler: null, pumpStep: null) { } @@ -46,10 +50,29 @@ public sealed class MxAccessCommandExecutor : IStaCommandExecutor MxAccessSession session, VariantConverter variantConverter, IAlarmCommandHandler? alarmCommandHandler) + : this(session, variantConverter, alarmCommandHandler, pumpStep: null) + { + } + + /// + /// Initializes a command executor with an MXAccess session, variant + /// converter, alarm command handler, and a Windows-message pump action. + /// The pump action is invoked from inside ReadBulk's wait loop so + /// MXAccess COM events queued for this STA can be dispatched while the + /// executor is still holding the thread. Pass null in tests where + /// ReadBulk is exercised against a fake worker that pre-populates the + /// value cache — the executor falls back to a no-op pump step. + /// + public MxAccessCommandExecutor( + MxAccessSession session, + VariantConverter variantConverter, + IAlarmCommandHandler? alarmCommandHandler, + Action? pumpStep) { this.session = session ?? throw new ArgumentNullException(nameof(session)); this.variantConverter = variantConverter ?? throw new ArgumentNullException(nameof(variantConverter)); this.alarmCommandHandler = alarmCommandHandler; + this.pumpStep = pumpStep ?? (static () => { }); } /// @@ -84,6 +107,11 @@ public sealed class MxAccessCommandExecutor : IStaCommandExecutor MxCommandKind.UnAdviseItemBulk => ExecuteUnAdviseItemBulk(command), MxCommandKind.SubscribeBulk => ExecuteSubscribeBulk(command), MxCommandKind.UnsubscribeBulk => ExecuteUnsubscribeBulk(command), + MxCommandKind.WriteBulk => ExecuteWriteBulk(command), + MxCommandKind.Write2Bulk => ExecuteWrite2Bulk(command), + MxCommandKind.WriteSecuredBulk => ExecuteWriteSecuredBulk(command), + MxCommandKind.WriteSecured2Bulk => ExecuteWriteSecured2Bulk(command), + MxCommandKind.ReadBulk => ExecuteReadBulk(command), MxCommandKind.SubscribeAlarms => ExecuteSubscribeAlarms(command), MxCommandKind.UnsubscribeAlarms => ExecuteUnsubscribeAlarms(command), MxCommandKind.AcknowledgeAlarm => ExecuteAcknowledgeAlarm(command), @@ -407,6 +435,149 @@ public sealed class MxAccessCommandExecutor : IStaCommandExecutor session.UnsubscribeBulk(unsubscribeBulkCommand.ServerHandle, unsubscribeBulkCommand.ItemHandles)); } + private MxCommandReply ExecuteWriteBulk(StaCommand command) + { + if (command.Command.PayloadCase != MxCommand.PayloadOneofCase.WriteBulk) + { + return CreateInvalidRequestReply(command, "WriteBulk command payload is required."); + } + + WriteBulkCommand writeBulkCommand = command.Command.WriteBulk; + foreach (WriteBulkEntry entry in writeBulkCommand.Entries) + { + if (entry.Value is null) + { + return CreateInvalidRequestReply( + command, + $"WriteBulk entry for item handle {entry.ItemHandle} is missing its value."); + } + } + + return CreateBulkWriteReply( + command, + session.WriteBulk( + writeBulkCommand.ServerHandle, + writeBulkCommand.Entries, + value => variantConverter.ConvertToComValue(value))); + } + + private MxCommandReply ExecuteWrite2Bulk(StaCommand command) + { + if (command.Command.PayloadCase != MxCommand.PayloadOneofCase.Write2Bulk) + { + return CreateInvalidRequestReply(command, "Write2Bulk command payload is required."); + } + + Write2BulkCommand write2BulkCommand = command.Command.Write2Bulk; + foreach (Write2BulkEntry entry in write2BulkCommand.Entries) + { + if (entry.Value is null) + { + return CreateInvalidRequestReply( + command, + $"Write2Bulk entry for item handle {entry.ItemHandle} is missing its value."); + } + + if (entry.TimestampValue is null) + { + return CreateInvalidRequestReply( + command, + $"Write2Bulk entry for item handle {entry.ItemHandle} is missing its timestamp value."); + } + } + + return CreateBulkWriteReply( + command, + session.Write2Bulk( + write2BulkCommand.ServerHandle, + write2BulkCommand.Entries, + value => variantConverter.ConvertToComValue(value))); + } + + private MxCommandReply ExecuteWriteSecuredBulk(StaCommand command) + { + if (command.Command.PayloadCase != MxCommand.PayloadOneofCase.WriteSecuredBulk) + { + return CreateInvalidRequestReply(command, "WriteSecuredBulk command payload is required."); + } + + WriteSecuredBulkCommand writeSecuredBulkCommand = command.Command.WriteSecuredBulk; + foreach (WriteSecuredBulkEntry entry in writeSecuredBulkCommand.Entries) + { + if (entry.Value is null) + { + return CreateInvalidRequestReply( + command, + $"WriteSecuredBulk entry for item handle {entry.ItemHandle} is missing its value."); + } + } + + return CreateBulkWriteReply( + command, + session.WriteSecuredBulk( + writeSecuredBulkCommand.ServerHandle, + writeSecuredBulkCommand.Entries, + value => variantConverter.ConvertToComValue(value))); + } + + private MxCommandReply ExecuteWriteSecured2Bulk(StaCommand command) + { + if (command.Command.PayloadCase != MxCommand.PayloadOneofCase.WriteSecured2Bulk) + { + return CreateInvalidRequestReply(command, "WriteSecured2Bulk command payload is required."); + } + + WriteSecured2BulkCommand writeSecured2BulkCommand = command.Command.WriteSecured2Bulk; + foreach (WriteSecured2BulkEntry entry in writeSecured2BulkCommand.Entries) + { + if (entry.Value is null) + { + return CreateInvalidRequestReply( + command, + $"WriteSecured2Bulk entry for item handle {entry.ItemHandle} is missing its value."); + } + + if (entry.TimestampValue is null) + { + return CreateInvalidRequestReply( + command, + $"WriteSecured2Bulk entry for item handle {entry.ItemHandle} is missing its timestamp value."); + } + } + + return CreateBulkWriteReply( + command, + session.WriteSecured2Bulk( + writeSecured2BulkCommand.ServerHandle, + writeSecured2BulkCommand.Entries, + value => variantConverter.ConvertToComValue(value))); + } + + private MxCommandReply ExecuteReadBulk(StaCommand command) + { + if (command.Command.PayloadCase != MxCommand.PayloadOneofCase.ReadBulk) + { + return CreateInvalidRequestReply(command, "ReadBulk command payload is required."); + } + + ReadBulkCommand readBulkCommand = command.Command.ReadBulk; + TimeSpan timeout = readBulkCommand.TimeoutMs == 0 + ? DefaultReadBulkTimeout + : TimeSpan.FromMilliseconds(readBulkCommand.TimeoutMs); + + IReadOnlyList results = session.ReadBulk( + readBulkCommand.ServerHandle, + readBulkCommand.TagAddresses, + timeout, + pumpStep); + + MxCommandReply reply = CreateOkReply(command); + BulkReadReply bulkReply = new(); + bulkReply.Results.Add(results); + reply.ReadBulk = bulkReply; + return reply; + } + private MxCommandReply ExecuteSubscribeAlarms(StaCommand command) { if (command.Command.PayloadCase != MxCommand.PayloadOneofCase.SubscribeAlarms) @@ -653,6 +824,35 @@ public sealed class MxAccessCommandExecutor : IStaCommandExecutor return reply; } + private static MxCommandReply CreateBulkWriteReply( + StaCommand command, + IEnumerable results) + { + MxCommandReply reply = CreateOkReply(command); + BulkWriteReply bulkReply = new(); + bulkReply.Results.Add(results); + + switch (command.Kind) + { + case MxCommandKind.WriteBulk: + reply.WriteBulk = bulkReply; + break; + case MxCommandKind.Write2Bulk: + reply.Write2Bulk = bulkReply; + break; + case MxCommandKind.WriteSecuredBulk: + reply.WriteSecuredBulk = bulkReply; + break; + case MxCommandKind.WriteSecured2Bulk: + reply.WriteSecured2Bulk = bulkReply; + break; + default: + throw new InvalidOperationException($"Unsupported bulk write command kind {command.Kind}."); + } + + return reply; + } + private static MxCommandReply CreateInvalidRequestReply( StaCommand command, string message) diff --git a/src/MxGateway.Worker/MxAccess/MxAccessSession.cs b/src/MxGateway.Worker/MxAccess/MxAccessSession.cs index 81f0d78..1aab7b4 100644 --- a/src/MxGateway.Worker/MxAccess/MxAccessSession.cs +++ b/src/MxGateway.Worker/MxAccess/MxAccessSession.cs @@ -12,6 +12,7 @@ public sealed class MxAccessSession : IDisposable private readonly IMxAccessServer mxAccessServer; private readonly IMxAccessEventSink eventSink; private readonly MxAccessHandleRegistry handleRegistry; + private readonly MxAccessValueCache valueCache; private bool disposed; private MxAccessSession( @@ -19,12 +20,14 @@ public sealed class MxAccessSession : IDisposable IMxAccessServer mxAccessServer, IMxAccessEventSink eventSink, MxAccessHandleRegistry handleRegistry, + MxAccessValueCache valueCache, int creationThreadId) { this.mxAccessComObject = mxAccessComObject ?? throw new ArgumentNullException(nameof(mxAccessComObject)); this.mxAccessServer = mxAccessServer ?? throw new ArgumentNullException(nameof(mxAccessServer)); this.eventSink = eventSink ?? throw new ArgumentNullException(nameof(eventSink)); this.handleRegistry = handleRegistry ?? throw new ArgumentNullException(nameof(handleRegistry)); + this.valueCache = valueCache ?? throw new ArgumentNullException(nameof(valueCache)); CreationThreadId = creationThreadId; } @@ -34,6 +37,14 @@ public sealed class MxAccessSession : IDisposable /// The registry for tracking opened handles. public MxAccessHandleRegistry HandleRegistry => handleRegistry; + /// + /// Per-session last-value cache populated by the event sink. ReadBulk + /// consults this cache before falling back to its own snapshot + /// lifecycle so it can serve a "current value" for an already-advised + /// tag without touching the existing subscription. + /// + public MxAccessValueCache ValueCache => valueCache; + /// Creates a WorkerReady message with session metadata. /// Process ID of the worker. public WorkerReady CreateWorkerReady(int workerProcessId) @@ -78,11 +89,21 @@ public sealed class MxAccessSession : IDisposable eventSink.Attach(mxAccessComObject, sessionId); + // Share the event sink's value cache when one is wired (the + // production MxAccessBaseEventSink path) so OnDataChange writes and + // ReadBulk reads both see the same instance. Fall back to a fresh + // cache for test fakes that supply their own sink — ReadBulk simply + // never serves cached values in that case. + MxAccessValueCache valueCache = eventSink is MxAccessBaseEventSink baseSink + ? baseSink.ValueCache + : new MxAccessValueCache(); + return new MxAccessSession( mxAccessComObject, new MxAccessComServer(mxAccessComObject), eventSink, new MxAccessHandleRegistry(), + valueCache, Environment.CurrentManagedThreadId); } catch (Exception exception) @@ -180,6 +201,10 @@ public sealed class MxAccessSession : IDisposable mxAccessServer.RemoveItem(serverHandle, itemHandle); handleRegistry.RemoveItemHandle(serverHandle, itemHandle); + // Evict the last-value entry so a future AddItem + Advise on the + // same handle id (which MXAccess may reuse) does not serve a stale + // OnDataChange snapshot from the previous lifetime. + valueCache.Remove(serverHandle, itemHandle); } /// Advises on item changes with plain subscription. @@ -513,6 +538,394 @@ public sealed class MxAccessSession : IDisposable return results; } + /// + /// Bulk write — runs sequentially for each entry. + /// Each entry's turns the protobuf + /// MxValue into a COM-marshalable variant. Per-item failures are + /// captured as entries with + /// was_successful = false; the loop never throws. + /// + public IReadOnlyList WriteBulk( + int serverHandle, + IReadOnlyList entries, + Func convertValue) + { + ThrowIfDisposed(); + if (entries is null) + { + throw new ArgumentNullException(nameof(entries)); + } + + if (convertValue is null) + { + throw new ArgumentNullException(nameof(convertValue)); + } + + List results = new(entries.Count); + foreach (WriteBulkEntry entry in entries) + { + results.Add(ExecuteBulkWriteEntry( + serverHandle, + entry.ItemHandle, + () => Write(serverHandle, entry.ItemHandle, convertValue(entry.Value), entry.UserId))); + } + + return results; + } + + /// Bulk Write2 — sequential MXAccess per entry. + public IReadOnlyList Write2Bulk( + int serverHandle, + IReadOnlyList entries, + Func convertValue) + { + ThrowIfDisposed(); + if (entries is null) + { + throw new ArgumentNullException(nameof(entries)); + } + + if (convertValue is null) + { + throw new ArgumentNullException(nameof(convertValue)); + } + + List results = new(entries.Count); + foreach (Write2BulkEntry entry in entries) + { + results.Add(ExecuteBulkWriteEntry( + serverHandle, + entry.ItemHandle, + () => Write2( + serverHandle, + entry.ItemHandle, + convertValue(entry.Value), + convertValue(entry.TimestampValue), + entry.UserId))); + } + + return results; + } + + /// Bulk WriteSecured — sequential MXAccess per entry. + public IReadOnlyList WriteSecuredBulk( + int serverHandle, + IReadOnlyList entries, + Func convertValue) + { + ThrowIfDisposed(); + if (entries is null) + { + throw new ArgumentNullException(nameof(entries)); + } + + if (convertValue is null) + { + throw new ArgumentNullException(nameof(convertValue)); + } + + List results = new(entries.Count); + foreach (WriteSecuredBulkEntry entry in entries) + { + results.Add(ExecuteBulkWriteEntry( + serverHandle, + entry.ItemHandle, + () => WriteSecured( + serverHandle, + entry.ItemHandle, + entry.CurrentUserId, + entry.VerifierUserId, + convertValue(entry.Value)))); + } + + return results; + } + + /// Bulk WriteSecured2 — sequential MXAccess per entry. + public IReadOnlyList WriteSecured2Bulk( + int serverHandle, + IReadOnlyList entries, + Func convertValue) + { + ThrowIfDisposed(); + if (entries is null) + { + throw new ArgumentNullException(nameof(entries)); + } + + if (convertValue is null) + { + throw new ArgumentNullException(nameof(convertValue)); + } + + List results = new(entries.Count); + foreach (WriteSecured2BulkEntry entry in entries) + { + results.Add(ExecuteBulkWriteEntry( + serverHandle, + entry.ItemHandle, + () => WriteSecured2( + serverHandle, + entry.ItemHandle, + entry.CurrentUserId, + entry.VerifierUserId, + convertValue(entry.Value), + convertValue(entry.TimestampValue)))); + } + + return results; + } + + /// + /// Bulk read snapshot. For each requested tag, returns the most recent + /// OnDataChange value if the tag is already advised AND a cached value + /// exists (no subscription side effects); otherwise takes the AddItem + /// + Advise + wait + UnAdvise + RemoveItem snapshot lifecycle itself. + /// bounds the wait per-tag in the snapshot + /// case; is invoked on every poll + /// iteration so the worker's STA can dispatch the incoming MXAccess + /// message that carries the value. + /// + public IReadOnlyList ReadBulk( + int serverHandle, + IReadOnlyList tagAddresses, + TimeSpan timeout, + Action pumpStep) + { + ThrowIfDisposed(); + if (tagAddresses is null) + { + throw new ArgumentNullException(nameof(tagAddresses)); + } + + if (pumpStep is null) + { + throw new ArgumentNullException(nameof(pumpStep)); + } + + List results = new(tagAddresses.Count); + foreach (string? tagAddress in tagAddresses) + { + if (string.IsNullOrWhiteSpace(tagAddress)) + { + results.Add(FailedRead(serverHandle, tagAddress ?? string.Empty, itemHandle: 0, wasCached: false, "Tag address is required.")); + continue; + } + + results.Add(ReadOneTag(serverHandle, tagAddress, timeout, pumpStep)); + } + + return results; + } + + private BulkReadResult ReadOneTag( + int serverHandle, + string tagAddress, + TimeSpan timeout, + Action pumpStep) + { + // 1. Cached-and-advised fast path: scan the registry for a live item + // handle matching this tag and check whether the value cache has a + // payload for it. If so, return the cached value without touching + // the existing subscription — the caller didn't create it, so + // ReadBulk must not tear it down. + if (TryGetCachedReadFor(serverHandle, tagAddress, out int cachedItemHandle, out MxAccessValueCache.CachedValue cachedValue)) + { + return SucceededRead( + serverHandle, + tagAddress, + cachedItemHandle, + wasCached: true, + cachedValue); + } + + // 2. Snapshot lifecycle. Reserve our own item handle, advise, pump + // until we see a fresh OnDataChange (or the deadline elapses), + // then tear it down. + int itemHandle = 0; + bool advised = false; + try + { + itemHandle = AddItem(serverHandle, tagAddress); + ulong baseline = valueCache.CurrentVersion(serverHandle, itemHandle); + Advise(serverHandle, itemHandle); + advised = true; + + DateTime deadline = DateTime.UtcNow + timeout; + bool gotValue = valueCache.TryWaitForUpdate( + serverHandle, + itemHandle, + baseline, + deadline, + pumpStep, + out MxAccessValueCache.CachedValue snapshot); + + return gotValue + ? SucceededRead(serverHandle, tagAddress, itemHandle, wasCached: false, snapshot) + : FailedRead( + serverHandle, + tagAddress, + itemHandle, + wasCached: false, + $"ReadBulk timed out after {timeout.TotalMilliseconds:F0} ms waiting for first OnDataChange."); + } + catch (Exception exception) + { + return FailedRead(serverHandle, tagAddress, itemHandle, wasCached: false, exception.Message); + } + finally + { + // Snapshot teardown — best-effort. Errors here are noted on the + // diagnostic message of the original result (above) by appending + // a cleanup suffix; we never re-throw from finally. + if (advised) + { + try { UnAdvise(serverHandle, itemHandle); } catch { /* swallow — best effort */ } + } + + if (itemHandle != 0) + { + try { RemoveItem(serverHandle, itemHandle); } catch { /* swallow — best effort */ } + } + } + } + + private bool TryGetCachedReadFor( + int serverHandle, + string tagAddress, + out int itemHandle, + out MxAccessValueCache.CachedValue cachedValue) + { + // Linear scan — bulk-read sizes are small in practice and the registry + // is keyed by handle, not by tag. If profiling ever shows this hot, a + // reverse tag→handle map can be added on the registry side. + foreach (RegisteredItemHandle registered in handleRegistry.ItemHandles) + { + if (registered.ServerHandle != serverHandle) + { + continue; + } + + if (!string.Equals(registered.ItemDefinition, tagAddress, StringComparison.Ordinal)) + { + continue; + } + + if (!handleRegistry.ContainsAdviceHandle(serverHandle, registered.ItemHandle, MxAccessAdviceKind.Plain) + && !handleRegistry.ContainsAdviceHandle(serverHandle, registered.ItemHandle, MxAccessAdviceKind.Supervisory)) + { + // Tag is added but not advised — no fresh OnDataChange will + // arrive without us advising. Fall through to the snapshot + // path which advises explicitly. + continue; + } + + if (valueCache.TryGet(serverHandle, registered.ItemHandle, out cachedValue)) + { + itemHandle = registered.ItemHandle; + return true; + } + } + + itemHandle = 0; + cachedValue = default; + return false; + } + + private BulkWriteResult ExecuteBulkWriteEntry( + int serverHandle, + int itemHandle, + Action invokeWrite) + { + try + { + invokeWrite(); + return new BulkWriteResult + { + ServerHandle = serverHandle, + ItemHandle = itemHandle, + WasSuccessful = true, + ErrorMessage = string.Empty, + }; + } + catch (System.Runtime.InteropServices.COMException comException) + { + BulkWriteResult result = new() + { + ServerHandle = serverHandle, + ItemHandle = itemHandle, + WasSuccessful = false, + ErrorMessage = comException.Message, + }; + result.Hresult = comException.HResult; + return result; + } + catch (Exception exception) + { + return new BulkWriteResult + { + ServerHandle = serverHandle, + ItemHandle = itemHandle, + WasSuccessful = false, + ErrorMessage = exception.Message, + }; + } + } + + private static BulkReadResult SucceededRead( + int serverHandle, + string tagAddress, + int itemHandle, + bool wasCached, + MxAccessValueCache.CachedValue snapshot) + { + BulkReadResult result = new() + { + ServerHandle = serverHandle, + TagAddress = tagAddress, + ItemHandle = itemHandle, + WasSuccessful = true, + WasCached = wasCached, + Quality = snapshot.Quality, + ErrorMessage = string.Empty, + }; + + if (snapshot.Value is not null) + { + result.Value = snapshot.Value; + } + + if (snapshot.SourceTimestamp is not null) + { + result.SourceTimestamp = snapshot.SourceTimestamp; + } + + if (snapshot.Statuses is not null) + { + result.Statuses.Add(snapshot.Statuses); + } + + return result; + } + + private static BulkReadResult FailedRead( + int serverHandle, + string tagAddress, + int itemHandle, + bool wasCached, + string errorMessage) + { + return new BulkReadResult + { + ServerHandle = serverHandle, + TagAddress = tagAddress, + ItemHandle = itemHandle, + WasSuccessful = false, + WasCached = wasCached, + ErrorMessage = errorMessage, + }; + } + /// Gracefully shuts down the session, cleaning up all handles. public MxAccessShutdownResult ShutdownGracefully() { diff --git a/src/MxGateway.Worker/MxAccess/MxAccessStaSession.cs b/src/MxGateway.Worker/MxAccess/MxAccessStaSession.cs index d8c3c7a..4c040ff 100644 --- a/src/MxGateway.Worker/MxAccess/MxAccessStaSession.cs +++ b/src/MxGateway.Worker/MxAccess/MxAccessStaSession.cs @@ -196,7 +196,13 @@ public sealed class MxAccessStaSession : IWorkerRuntimeSession new MxAccessCommandExecutor( session, new VariantConverter(), - alarmCommandHandler)); + alarmCommandHandler, + // ReadBulk needs to pump Windows messages while it waits + // for the first OnDataChange callback so the inbound COM + // event can dispatch on this same STA thread. The pump + // step closes over staRuntime so it always pumps the + // pump tied to the apartment that owns this session. + pumpStep: () => staRuntime.PumpPendingMessages())); return session.CreateWorkerReady(workerProcessId); }, diff --git a/src/MxGateway.Worker/MxAccess/MxAccessValueCache.cs b/src/MxGateway.Worker/MxAccess/MxAccessValueCache.cs new file mode 100644 index 0000000..09967b1 --- /dev/null +++ b/src/MxGateway.Worker/MxAccess/MxAccessValueCache.cs @@ -0,0 +1,190 @@ +using System; +using System.Collections.Generic; +using System.Threading; +using Google.Protobuf.Collections; +using Google.Protobuf.WellKnownTypes; +using MxGateway.Contracts.Proto; + +namespace MxGateway.Worker.MxAccess; + +/// +/// Per-session cache of the most recent OnDataChange payload for +/// each (server handle, item handle) pair. Written by the MXAccess event +/// sink as new OnDataChange callbacks arrive; read by the ReadBulk command +/// executor so it can satisfy a "current value" request from a tag that is +/// already advised without modifying the existing subscription. +/// +/// +/// Both writers and readers run on the worker's STA thread (COM dispatches +/// events on the apartment thread; commands also execute on the STA), so +/// no internal locking is required. The class is still nominally +/// thread-safe via a single sync root in case tests drive it from a +/// non-STA thread. +/// +public sealed class MxAccessValueCache +{ + private readonly Dictionary entries = new(); + private readonly object syncRoot = new(); + + /// Records a fresh OnDataChange payload for the given handle pair. + /// MXAccess server handle. + /// MXAccess item handle. + /// The protobuf MxEvent created by the event mapper. + public void Set( + int serverHandle, + int itemHandle, + MxEvent mxEvent) + { + if (mxEvent is null) + { + throw new ArgumentNullException(nameof(mxEvent)); + } + + long key = CreateItemKey(serverHandle, itemHandle); + lock (syncRoot) + { + ulong nextVersion = entries.TryGetValue(key, out CachedValue existing) + ? existing.Version + 1 + : 1UL; + + entries[key] = new CachedValue( + nextVersion, + mxEvent.Value, + mxEvent.Quality, + mxEvent.SourceTimestamp, + mxEvent.Statuses); + } + } + + /// Tries to read the most recent cached value for the handle pair. + public bool TryGet( + int serverHandle, + int itemHandle, + out CachedValue value) + { + long key = CreateItemKey(serverHandle, itemHandle); + lock (syncRoot) + { + return entries.TryGetValue(key, out value); + } + } + + /// + /// Removes the cache slot for a handle pair. The session calls this + /// when an item is unregistered so stale values are not served to a + /// subsequent ReadBulk after a tag is removed and re-added. + /// + public void Remove( + int serverHandle, + int itemHandle) + { + long key = CreateItemKey(serverHandle, itemHandle); + lock (syncRoot) + { + entries.Remove(key); + } + } + + /// + /// Waits until the cache entry's version exceeds + /// or the deadline elapses, calling on every poll + /// iteration so the worker's STA can dispatch the inbound MXAccess message. + /// + /// MXAccess server handle. + /// MXAccess item handle. + /// Version snapshot captured before the wait. + /// Absolute UTC deadline. + /// Action that pumps any pending Windows messages. + /// How long to sleep between pump cycles. Default 5 ms. + public bool TryWaitForUpdate( + int serverHandle, + int itemHandle, + ulong sinceVersion, + DateTime deadlineUtc, + Action pumpStep, + out CachedValue value, + int pollIntervalMs = 5) + { + if (pumpStep is null) + { + throw new ArgumentNullException(nameof(pumpStep)); + } + + while (true) + { + pumpStep(); + + if (TryGet(serverHandle, itemHandle, out value) && value.Version > sinceVersion) + { + return true; + } + + if (DateTime.UtcNow >= deadlineUtc) + { + return false; + } + + Thread.Sleep(pollIntervalMs); + } + } + + /// Returns the current version for a handle pair, or 0 if no entry exists. + public ulong CurrentVersion( + int serverHandle, + int itemHandle) + { + return TryGet(serverHandle, itemHandle, out CachedValue existing) + ? existing.Version + : 0UL; + } + + private static long CreateItemKey( + int serverHandle, + int itemHandle) + { + return ((long)serverHandle << 32) | (uint)itemHandle; + } + + /// + /// Snapshot of the most recent OnDataChange payload for a handle pair. + /// increments by one on every + /// call so the bulk read executor can detect "a new value arrived + /// since I started waiting". + /// + /// + /// Plain readonly struct (not a record) so this compiles under the + /// worker's net48 target, which lacks IsExternalInit. + /// + public readonly struct CachedValue + { + /// Initializes a new cached value snapshot. + public CachedValue( + ulong version, + MxValue value, + int quality, + Timestamp sourceTimestamp, + RepeatedField statuses) + { + Version = version; + Value = value; + Quality = quality; + SourceTimestamp = sourceTimestamp; + Statuses = statuses; + } + + /// Monotonic per-handle version counter. + public ulong Version { get; } + + /// The cached MxValue payload. + public MxValue Value { get; } + + /// Quality code from the OnDataChange event. + public int Quality { get; } + + /// Source timestamp from the OnDataChange event. + public Timestamp SourceTimestamp { get; } + + /// MxStatusProxy entries from the OnDataChange event. + public RepeatedField Statuses { get; } + } +} diff --git a/src/MxGateway.Worker/Sta/StaRuntime.cs b/src/MxGateway.Worker/Sta/StaRuntime.cs index 07a11ee..28cc3b3 100644 --- a/src/MxGateway.Worker/Sta/StaRuntime.cs +++ b/src/MxGateway.Worker/Sta/StaRuntime.cs @@ -79,6 +79,15 @@ public sealed class StaRuntime : IDisposable /// public bool IsRunning => startedEvent.IsSet && !stoppedEvent.IsSet; + /// + /// Pumps any pending Windows messages on the calling thread. Intended + /// for commands that synchronously hold the STA (e.g. ReadBulk) and + /// must allow inbound MXAccess COM events to dispatch while they + /// wait. Callers must already be on the STA; the method is otherwise + /// safe (PeekMessage simply finds no messages). + /// + public int PumpPendingMessages() => messagePump.PumpPendingMessages(); + /// /// Starts the STA thread. ///