Example #1
0
    def send(self, request):
        """Sends the given request to the dm_env_rpc server and returns the response.

    The request should be an instance of one of the dm_env_rpc Request messages,
    such
    as CreateWorldRequest.  Based on the type the correct payload for the
    EnvironmentRequest will be constructed and set to the dm_env_rpc server.

    Blocks until the server sends back its response.

    Args:
      request: An instance of a dm_env_rpc Request type, such as
        CreateWorldRequest.

    Returns:
      The response the dm_env_rpc server returned for the given RPC call,
      unwrapped
      from the EnvironmentStream message.  For instance if `request` had type
      `CreateWorldRequest` this returns a message of type `CreateWorldResponse`.

    Raises:
      DmEnvRpcError: The dm_env_rpc server responded to the request with an
        error.
    """
        field_name = self._type_to_field[type(request).__name__]
        environment_request = dm_env_rpc_pb2.EnvironmentRequest()
        getattr(environment_request, field_name).CopyFrom(request)
        self._stream.write(environment_request)
        response = self._stream.read()
        if response.HasField('error'):
            raise error.DmEnvRpcError(response.error)
        return getattr(response, field_name)
Example #2
0
def _create_property_request_key(text_proto):
    extension_message = any_pb2.Any()
    extension_message.Pack(
        text_format.Parse(text_proto, properties_pb2.PropertyRequest()))
    return dm_env_rpc_pb2.EnvironmentRequest(
        extension=extension_message).SerializeToString()
Example #3
0
    world_name='foo')
_INCORRECT_RESPONSE = dm_env_rpc_pb2.EnvironmentResponse(
    leave_world=dm_env_rpc_pb2.LeaveWorldResponse())

_EXTENSION_REQUEST = struct_pb2.Value(string_value='extension request')
_EXTENSION_RESPONSE = struct_pb2.Value(number_value=555)


def _wrap_in_any(proto):
    any_proto = any_pb2.Any()
    any_proto.Pack(proto)
    return any_proto


_REQUEST_RESPONSE_PAIRS = {
    dm_env_rpc_pb2.EnvironmentRequest(create_world=_CREATE_REQUEST).SerializeToString(
    ):
    dm_env_rpc_pb2.EnvironmentResponse(create_world=_CREATE_RESPONSE),
    dm_env_rpc_pb2.EnvironmentRequest(create_world=_BAD_CREATE_REQUEST).SerializeToString(
    ):
    _TEST_ERROR,
    dm_env_rpc_pb2.EnvironmentRequest(extension=_wrap_in_any(_EXTENSION_REQUEST)).SerializeToString(
    ):
    dm_env_rpc_pb2.EnvironmentResponse(
        extension=_wrap_in_any(_EXTENSION_RESPONSE)),
    dm_env_rpc_pb2.EnvironmentRequest(destroy_world=_INCORRECT_RESPONSE_TEST_MSG).SerializeToString(
    ):
    _INCORRECT_RESPONSE,
}


def _process(request_iterator):
Example #4
0
_BAD_CREATE_REQUEST = dm_env_rpc_pb2.CreateWorldRequest()
_TEST_ERROR = dm_env_rpc_pb2.EnvironmentResponse(error=status_pb2.Status(
    message='A test error.'))

_EXTENSION_REQUEST = struct_pb2.Value(string_value='extension request')
_EXTENSION_RESPONSE = struct_pb2.Value(number_value=555)


def _wrap_in_any(proto):
    any_proto = any_pb2.Any()
    any_proto.Pack(proto)
    return any_proto


_REQUEST_RESPONSE_PAIRS = {
    dm_env_rpc_pb2.EnvironmentRequest(create_world=_CREATE_REQUEST).SerializeToString(
    ):
    dm_env_rpc_pb2.EnvironmentResponse(create_world=_CREATE_RESPONSE),
    dm_env_rpc_pb2.EnvironmentRequest(create_world=_BAD_CREATE_REQUEST).SerializeToString(
    ):
    _TEST_ERROR,
    dm_env_rpc_pb2.EnvironmentRequest(extension=_wrap_in_any(_EXTENSION_REQUEST)).SerializeToString(
    ):
    dm_env_rpc_pb2.EnvironmentResponse(
        extension=_wrap_in_any(_EXTENSION_RESPONSE)),
}


def _process(request_iterator):
    for request in request_iterator:
        yield _REQUEST_RESPONSE_PAIRS.get(request.SerializeToString(),
                                          _TEST_ERROR)