Files
histsdk/src/AVEVA.Historian.Client/Grpc/Protos/RetrievalService.proto
T
Joseph Doherty 1e9a87fce9 Add 2023 R2 gRPC transport (RemoteGrpc) reusing native byte payloads
Stands up HistorianTransport.RemoteGrpc end-to-end for the read path,
built on the recovered 2023 R2 gRPC contract (gRPC-Web/HTTP-1.1, port
32565, gzip). The opaque protobuf `bytes` fields carry the SAME native
binary payloads as the 2020 WCF/MDAS path, so the proven serializers and
parsers are reused unchanged.

- Grpc/Protos/*.proto: 6 protoc-validated contracts recovered from
  embedded FileDescriptors (authoritative, not guessed).
- Grpc/HistorianGrpcChannelFactory: GrpcWebHandler/HTTP-1.1 channel,
  ResolvePort/ResolveAddress, optional TLS + gzip.
- Grpc/HistorianGrpcReadOrchestrator: mirrors the WCF read chain over
  gRPC; auth uses HistoryService.ExchangeKey (the gRPC ValCl op).
- Wcf/HistorianNativeHandshake: transport-agnostic Open2 request builder
  + SSPI/Negotiate token loop + response decode, shared by WCF and gRPC.
- Op map (2020 -> gRPC): ValCl->ExchangeKey, Open2->OpenConnection,
  StartQuery2->StartQuery, GetNextQueryResultBuffer2->GetNextQueryResultBuffer.
- HistorianClientOptions: DefaultGrpcPort=32565, GrpcUseTls.
- csproj: Google.Protobuf, Grpc.Net.Client(.Web), Grpc.Tools codegen.

Not yet live-verified against a 2023 R2 server: ExchangeKey is the first
thing to revisit if a live server rejects the handshake; the inner byte
payloads are the proven 2020 protocol. Gated live test via
HISTORIAN_GRPC_HOST. 188 unit tests green; build clean.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-19 14:27:47 -04:00

187 lines
4.6 KiB
Protocol Buffer

// Recovered from RetrievalService.proto (AVEVA Historian SDK 2023 R2, Archestra.Grpc.Contract).
// Reconstructed from the embedded protobuf FileDescriptor; field numbers are authoritative.
syntax = "proto3";
import "Status.proto";
option csharp_namespace = "ArchestrA.Grpc.Contract.Retrieval";
message GetRetrievalInterfaceVersionRequest {
}
message GetRetrievalInterfaceVersionResponse {
uint32 uiError = 1;
uint32 uiVersion = 2;
}
message StartQueryRequest {
uint32 uiHandle = 1;
uint32 uiQueryRequestType = 2;
bytes btRequestBuffer = 3;
}
message StartQueryResponse {
.Status status = 1;
uint32 uiQueryHandle = 2;
bytes btResponseBuffer = 3;
}
message GetNextQueryResultBufferRequest {
uint32 uiHandle = 1;
uint32 uiQueryHandle = 2;
}
message GetNextQueryResultBufferResponse {
.Status status = 1;
bytes btQueryResult = 2;
}
message EndQueryRequest {
uint32 uiHandle = 1;
uint32 uiQueryHandle = 2;
}
message EndQueryResponse {
.Status status = 1;
}
message GetShardTagidsByTagnameAndSourceRequest {
string strHandle = 1;
bytes btTagnameAndSource = 2;
}
message GetShardTagidsByTagnameAndSourceResponse {
.Status status = 1;
bytes btShardTagids = 2;
}
message GetTagInfosFromNameRequest {
string strHandle = 1;
bytes btTagNames = 2;
uint32 uiSequence = 3;
}
message GetTagInfosFromNameResponse {
.Status status = 1;
bytes btTagInfos = 2;
uint32 uiSequence = 3;
}
message GetTagExtendedPropertiesFromNameRequest {
string strHandle = 1;
bytes btTagNames = 2;
uint32 uiSequence = 3;
}
message GetTagExtendedPropertiesFromNameResponse {
.Status status = 1;
bytes btTeps = 2;
uint32 uiSequence = 3;
}
message ExecuteSqlCommandRequest {
string strHandle = 1;
string StrCommand = 2;
uint32 uiOption = 3;
uint32 uiQueryHandle = 4;
}
message ExecuteSqlCommandResponse {
.Status status = 1;
int32 iRetValue = 2;
uint32 uiQueryHandle = 3;
}
message StartEventQueryRequest {
uint32 uiHandle = 1;
uint32 uiQueryRequestType = 2;
bytes btRequest = 3;
uint32 uiQueryHandle = 4;
}
message StartEventQueryResponse {
.Status status = 1;
uint32 uiQueryHandle = 2;
bytes btResonse = 3;
}
message GetNextEventQueryResultBufferRequest {
uint32 uiHandle = 1;
uint32 uiQueryHandle = 2;
}
message GetNextEventQueryResultBufferResponse {
.Status status = 1;
bytes btResult = 2;
}
message EndEventQueryRequest {
uint32 uiHandle = 1;
uint32 uiQueryHandle = 2;
}
message EndEventQueryResponse {
.Status status = 1;
}
message StartTagQueryRequest {
string strHandle = 1;
bytes btRequest = 2;
}
message StartTagQueryResponse {
.Status status = 1;
bytes btResponse = 2;
}
message QueryTagRequest {
string strHandle = 1;
uint32 uiQueryHandle = 2;
bytes btRequest = 3;
}
message QueryTagResponse {
.Status status = 1;
bytes btResonse = 2;
}
message EndTagQueryRequest {
string strHandle = 1;
uint32 uiQueryHandle = 2;
}
message EndTagQueryResponse {
.Status status = 1;
}
message GetTagLocalizedPropertiesFromNameRequest {
string strHandle = 1;
bytes btTagNames = 2;
uint32 uiSequence = 3;
}
message GetTagLocalizedPropertiesFromNameResponse {
.Status status = 1;
uint32 uiSequence = 2;
bytes btOutBuffer = 3;
}
service RetrievalService {
rpc GetRetrievalInterfaceVersion (.GetRetrievalInterfaceVersionRequest) returns (.GetRetrievalInterfaceVersionResponse);
rpc StartQuery (.StartQueryRequest) returns (.StartQueryResponse);
rpc GetNextQueryResultBuffer (.GetNextQueryResultBufferRequest) returns (.GetNextQueryResultBufferResponse);
rpc EndQuery (.EndQueryRequest) returns (.EndQueryResponse);
rpc GetShardTagidsByTagnameAndSource (.GetShardTagidsByTagnameAndSourceRequest) returns (.GetShardTagidsByTagnameAndSourceResponse);
rpc GetTagInfosFromName (.GetTagInfosFromNameRequest) returns (.GetTagInfosFromNameResponse);
rpc GetTagExtendedPropertiesFromName (.GetTagExtendedPropertiesFromNameRequest) returns (.GetTagExtendedPropertiesFromNameResponse);
rpc ExecuteSqlCommand (.ExecuteSqlCommandRequest) returns (.ExecuteSqlCommandResponse);
rpc StartEventQuery (.StartEventQueryRequest) returns (.StartEventQueryResponse);
rpc GetNextEventQueryResultBuffer (.GetNextEventQueryResultBufferRequest) returns (.GetNextEventQueryResultBufferResponse);
rpc EndEventQuery (.EndEventQueryRequest) returns (.EndEventQueryResponse);
rpc StartTagQuery (.StartTagQueryRequest) returns (.StartTagQueryResponse);
rpc QueryTag (.QueryTagRequest) returns (.QueryTagResponse);
rpc EndTagQuery (.EndTagQueryRequest) returns (.EndTagQueryResponse);
rpc GetTagLocalizedPropertiesFromName (.GetTagLocalizedPropertiesFromNameRequest) returns (.GetTagLocalizedPropertiesFromNameResponse);
}