public override Task <ImageReply> RequestImage(ImageRequest request, ServerCallContext context) { // Start the callback task before responding ImageReply result = callback(request); return(Task.FromResult(result)); }
/// <summary> /// /// </summary> /// <param name="image"></param> /// <returns>Null on error</returns> public List <ImageFeature> Process(ByteString image) { bool succeeded = false; try { List <ImageFeature> result = new List <ImageFeature>(); EnsureConnection(); ImageBody body = new ImageBody { Image = image }; ImageReply reply = grpcClient.SubmitImage(body); for (int i = 0; i < reply.Classes.Count; i++) { ImageFeature feature = new ImageFeature(reply.Classes[i], reply.Scores[i], reply.Boxes[i].YMin, reply.Boxes[i].XMin, reply.Boxes[i].YMax, reply.Boxes[i].XMax); result.Add(feature); } succeeded = true; return(result); } catch (Grpc.Core.RpcException ex) { if (ex.StatusCode == StatusCode.Unavailable) { Console.WriteLine($"Error sending grpc message: Grpc server for FPGA is unavailable"); return(null); } else { Console.WriteLine($"Error sending grpc for FPGA message"); Console.WriteLine(ex); return(null); } } catch (Exception ex) { Console.WriteLine($"Error sending grpc for FPGA message"); Console.WriteLine(ex); return(null); } finally { if (!succeeded) { Disconnect(); } } }
/// <summary> /// Request an image from the camera server /// </summary> /// <param name="body"></param> /// <returns>True for success</returns> private ImageReply RequestImage(ImageRequest body) { bool succeeded = false; try { EnsureConnection(); ImageReply result = grpcClient.RequestImage(body); if (result.Error != string.Empty) { Console.WriteLine($"Error returned from CameraServer: {result.Error}"); return(null); } else { succeeded = true; return(result); } } catch (Grpc.Core.RpcException ex) { if (ex.StatusCode == StatusCode.Unavailable) { Console.WriteLine($"Error sending grpc message: CameraServer gRPC is unavailable"); return(null); } else { Console.WriteLine($"Error sending CameraServer gRPC message"); Console.WriteLine(ex); return(null); } } catch (Exception ex) { Console.WriteLine($"Error sending CameraServer gRPC message"); Console.WriteLine(ex); return(null); } finally { if (!succeeded) { ((IImageSource)this).Disconnect(); } } }
VideoProcessorGrpc.ImageBody IImageSource.RequestImages() { ImageRequest request = new ImageRequest() { CameraHardwareId = HardwareId }; ImageReply reply = RequestImage(request); if (reply != null) { VideoProcessorGrpc.ImageBody result = new VideoProcessorGrpc.ImageBody() { Image = reply.FullImage, SmallImage = reply.SmallImage }; return(result); } else { return(null); } }
/// <summary> /// Upload an image /// </summary> /// <param name="request"></param> /// <returns>True for success</returns> public ImageReply RequestImage(ImageRequest request) { ImageReply result = null; try { EnsureConnection(); result = grpcClient.RequestImage(request); } catch (Grpc.Core.RpcException ex) { if (ex.StatusCode == StatusCode.Unavailable) { Console.WriteLine($"Error sending grpc message: Grpc server is unavailable"); result = null; } else { Console.WriteLine($"Error sending grpc message"); Console.WriteLine(ex); result = null; } } catch (Exception ex) { Console.WriteLine($"Error sending grpc message"); Console.WriteLine(ex); result = null; } finally { if (result == null) { Disconnect(); } } return(result); }