示例#1
0
  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
示例#2
0
 def PackRequest(
     self, request: filesystem_pb2.LookupCaseInsensitiveRequest
 ) -> filesystem_pb2.Request:
   return filesystem_pb2.Request(lookup_case_insensitive_request=request)
示例#3
0
 def PackRequest(
     self, request: filesystem_pb2.ListNamesRequest) -> filesystem_pb2.Request:
   return filesystem_pb2.Request(list_names_request=request)
示例#4
0
 def PackRequest(
     self, request: filesystem_pb2.CloseRequest) -> filesystem_pb2.Request:
   return filesystem_pb2.Request(close_request=request)
示例#5
0
 def PackRequest(
     self, request: filesystem_pb2.StatRequest) -> filesystem_pb2.Request:
   return filesystem_pb2.Request(stat_request=request)
示例#6
0
 def PackRequest(
     self, request: filesystem_pb2.ReadRequest) -> filesystem_pb2.Request:
   return filesystem_pb2.Request(read_request=request)
示例#7
0
 def PackRequest(
     self, request: filesystem_pb2.OpenRequest) -> filesystem_pb2.Request:
   return filesystem_pb2.Request(open_request=request)
示例#8
0
 def PackRequest(
     self, request: filesystem_pb2.InitRequest) -> filesystem_pb2.Request:
   return filesystem_pb2.Request(init_request=request)
示例#9
0
 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