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>
93 lines
2.3 KiB
Protocol Buffer
93 lines
2.3 KiB
Protocol Buffer
// Recovered from TransactionService.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.Transaction";
|
|
|
|
message ForwardSnapshotRequest {
|
|
string strHandle = 1;
|
|
string strSessionID = 2;
|
|
uint32 queryID = 3;
|
|
uint64 snapShotChunkOffset = 4;
|
|
bytes btInput = 5;
|
|
}
|
|
|
|
message ForwardSnapshotResponse {
|
|
.Status status = 1;
|
|
}
|
|
|
|
message ForwardSnapshotBeginRequest {
|
|
string strHandle = 1;
|
|
uint64 totalSize = 2;
|
|
uint64 startTime = 3;
|
|
uint64 endTime = 4;
|
|
}
|
|
|
|
message ForwardSnapshotBeginResponse {
|
|
string strSessionID = 1;
|
|
uint32 queryID = 2;
|
|
.Status status = 3;
|
|
}
|
|
|
|
message ForwardSnapshotEndRequest {
|
|
string strHandle = 1;
|
|
string strSessionID = 2;
|
|
uint32 queryID = 3;
|
|
bytes timeRange = 4;
|
|
}
|
|
|
|
message ForwardSnapshotEndResponse {
|
|
bytes tagIds = 1;
|
|
.Status status = 2;
|
|
}
|
|
|
|
message GetTransactionInterfaceVersionRequest {
|
|
}
|
|
|
|
message GetTransactionInterfaceVersionResponse {
|
|
uint32 error = 1;
|
|
uint32 version = 2;
|
|
}
|
|
|
|
message AddNonStreamValuesBeginRequest {
|
|
string strHandle = 1;
|
|
}
|
|
|
|
message AddNonStreamValuesBeginResponse {
|
|
.Status status = 1;
|
|
string strTransactionId = 2;
|
|
}
|
|
|
|
message AddNonStreamValuesRequest {
|
|
string strHandle = 1;
|
|
string strTransactionId = 2;
|
|
bytes btInput = 3;
|
|
}
|
|
|
|
message AddNonStreamValuesResponse {
|
|
.Status status = 1;
|
|
}
|
|
|
|
message AddNonStreamValuesEndRequest {
|
|
string strHandle = 1;
|
|
string strTransactionId = 2;
|
|
bool bCommit = 3;
|
|
}
|
|
|
|
message AddNonStreamValuesEndResponse {
|
|
.Status status = 1;
|
|
}
|
|
|
|
service TransactionService {
|
|
rpc ForwardSnapshot (.ForwardSnapshotRequest) returns (.ForwardSnapshotResponse);
|
|
rpc ForwardSnapshotBegin (.ForwardSnapshotBeginRequest) returns (.ForwardSnapshotBeginResponse);
|
|
rpc ForwardSnapshotEnd (.ForwardSnapshotEndRequest) returns (.ForwardSnapshotEndResponse);
|
|
rpc GetTransactionInterfaceVersion (.GetTransactionInterfaceVersionRequest) returns (.GetTransactionInterfaceVersionResponse);
|
|
rpc AddNonStreamValuesBegin (.AddNonStreamValuesBeginRequest) returns (.AddNonStreamValuesBeginResponse);
|
|
rpc AddNonStreamValues (.AddNonStreamValuesRequest) returns (.AddNonStreamValuesResponse);
|
|
rpc AddNonStreamValuesEnd (.AddNonStreamValuesEndRequest) returns (.AddNonStreamValuesEndResponse);
|
|
}
|
|
|