def Run(self, request: RequestType) -> ResponseType: self._connection.Send(self.PackRequest(request), b'') while True: packed_response, attachment = self._connection.Recv() if packed_response.HasField('device_data_request'): device_data_request = packed_response.device_data_request data = self._device.Read(device_data_request.offset, device_data_request.size) device_data = filesystem_pb2.DeviceData() request = filesystem_pb2.Request(device_data=device_data) self._connection.Send(request, data) elif packed_response.HasField('exception'): raise OperationError(packed_response.exception.message, packed_response.exception.formatted_exception) else: response = self.UnpackResponse(packed_response) self.MergeResponseAttachment(response, attachment) return response
def PackRequest( self, request: filesystem_pb2.LookupCaseInsensitiveRequest ) -> filesystem_pb2.Request: return filesystem_pb2.Request(lookup_case_insensitive_request=request)
def PackRequest( self, request: filesystem_pb2.ListNamesRequest) -> filesystem_pb2.Request: return filesystem_pb2.Request(list_names_request=request)
def PackRequest( self, request: filesystem_pb2.CloseRequest) -> filesystem_pb2.Request: return filesystem_pb2.Request(close_request=request)
def PackRequest( self, request: filesystem_pb2.StatRequest) -> filesystem_pb2.Request: return filesystem_pb2.Request(stat_request=request)
def PackRequest( self, request: filesystem_pb2.ReadRequest) -> filesystem_pb2.Request: return filesystem_pb2.Request(read_request=request)
def PackRequest( self, request: filesystem_pb2.OpenRequest) -> filesystem_pb2.Request: return filesystem_pb2.Request(open_request=request)
def PackRequest( self, request: filesystem_pb2.InitRequest) -> filesystem_pb2.Request: return filesystem_pb2.Request(init_request=request)
def Recv(self) -> Tuple[filesystem_pb2.Request, bytes]: raw_request, attachment = self._connection.Recv() request = filesystem_pb2.Request() request.ParseFromString(raw_request) return request, attachment