using Google.Protobuf; using Grpc.Core; using Grpc.Net.Client; using HotelPms.Data.Common; using HotelPms.Data.UseInfo; using HotelPms.Share.Util; using System; using System.Data; using System.Threading.Tasks; using HotelPms.Data; using System.Collections.Generic; using HotelPms.Data.Common.Pagination; using System.Text.Json; using System.Threading; using HotelPms.Data.Client; namespace HotelPms.DataAccessGrpc.Client { public class UseAccess : IDisposable { /// /// チャネル /// public GrpcChannel Channel { get; private set; } public UseCore.UseCoreClient Client { get; private set; } public UseAccess(GrpcChannel channel) { Channel = channel; Client = new UseCore.UseCoreClient(Channel); } public void Dispose() { } /// /// 同期データ取得 /// /// /// public Use GetData(string where) { return Client.GetData(GrpcClient.CreateDataRequest(0, where)); } public async Task GetDataAsync(string where) { return await Client.GetDataAsync(GrpcClient.CreateDataRequest(0, where)); } public async Task GetDataStream() { return await GetDataStream(string.Empty); } /// /// データ取得 /// /// public async Task GetDataStream(string where) { Use table = null; using (var call = Client.GetDataStream()) { await call.RequestStream.WriteAsync(GrpcClient.CreateDataRequest(0, where)); await call.RequestStream.CompleteAsync(); // Finish call and report results //データの取得 await foreach (var message in call.ResponseStream.ReadAllAsync()) { table = message; break; } } return table; } public DataResult SetData(Use table) { return Client.SetData(table); } public async Task SetDataAsync(Use table) { return await Client.SetDataAsync(table); } /// /// バッチ更新 /// /// /// public async Task SetDataStream(Use table) { DataResult result = null; using (var call = Client.SetDataStream()) { await call.RequestStream.WriteAsync(table); await call.RequestStream.CompleteAsync(); // Finish call and report results //データの取得 await foreach (var message in call.ResponseStream.ReadAllAsync()) { result = message; break; } } return result; } } }