Ejemplo n.º 1
0
def _generate_future_jvpp_callback_methods(model):
    methods = []
    for msg in model.messages:
        if is_control_ping(msg) or is_control_ping_reply(msg):
            # Skip control_ping managed by jvpp registry.
            continue
        if is_dump(msg) or is_request(msg):
            continue

        # Generate callbacks for all messages except for dumps and requests (handled by vpp, not client).
        template = None
        request_dto = None
        if is_details(msg):
            template = _FUTURE_JVPP_FACADE_DETAILS_CALLBACK_TEMPLATE
            request_dto = msg.request_java
        elif is_reply(msg):
            template = _FUTURE_JVPP_FACADE_REPLY_CALLBACK_TEMPLATE
            request_dto = msg.request_java
        elif is_event(msg):
            template = _FUTURE_JVPP_FACADE_EVENT_CALLBACK_TEMPLATE
        else:
            raise TypeError("Unknown message type %s", msg)

        methods.append(template.substitute(
            plugin_package=model.plugin_package,
            callback_dto=msg.java_name_upper,
            request_dto=request_dto,
            callback_dto_field=msg.java_name_lower,
        ))
    return "".join(methods)
Ejemplo n.º 2
0
def _generate_callback_methods(model):
    plugin_package = model.plugin_package
    methods = []
    for msg in model.messages:
        if is_dump(msg) or is_request(msg):
            continue
        if is_control_ping_reply(msg):
            # Skip control ping managed by jvpp registry.
            continue

        # Generate callbacks for all messages except for dumps and requests (handled by vpp, not client).
        template = _CALLBACK_METHOD_TEMPLATE
        if is_event(msg):
            template = _CALLBACK_EVENT_METHOD_TEMPLATE
        msg_name = msg.java_name_upper
        methods.append(
            template.substitute(message=msg_name,
                                callback="%sCallback" % msg_name,
                                plugin_package=plugin_package))
    return "\n".join(methods)
Ejemplo n.º 3
0
def _generate_message_dtos(work_dir, model, logger):
    for msg in model.messages:
        logger.debug("Generating DTO for message %s", msg)
        class_name = msg.java_name_upper

        if is_control_ping(msg) or is_control_ping_reply(msg):
            # Skip control_ping managed by jvpp registry.
            continue
        if is_request(msg):
            dto = _generate_request_dto(msg, model, base_type="JVppRequest")
        elif is_dump(msg):
            dto = _generate_request_dto(msg, model, base_type="JVppDump")
        elif is_reply(msg) or is_details(msg):
            dto = _generate_reply_dto(msg, model)
        elif is_event(msg):
            dto = _generate_event_dto(msg, model)
        else:
            logger.warn(
                "Failed to generate DTO for: %s. Message type is not supported."
                % msg)
            continue
        with open("%s/%s.java" % (work_dir, class_name), "w") as f:
            f.write(dto)
Ejemplo n.º 4
0
def _jvpp_impl_filter(msg):
    return is_request(msg) or is_dump(msg) or is_event(msg)