1e9a87fce9
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>
187 lines
4.6 KiB
Protocol Buffer
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);
|
|
}
|
|
|