예제 #1
0
def _generate_class(model, t, type_handlers):
    ref_name = t.java_name_lower
    is_alias = t.name in model._aliases

    if t.name == "ip6_address_with_prefix":
        is_alias = True

    type_handlers.append(
        _TYPE_HOST_TO_NET_TEMPLATE.substitute(
            c_name=t.name,
            json_filename=model.json_api_files,
            json_definition=t.doc,
            type_reference_name=ref_name,
            class_FQN=t.jni_name,
            jni_identifiers=generate_j2c_identifiers(t,
                                                     class_ref_name="%sClass" %
                                                     ref_name,
                                                     object_ref_name="_host"),
            type_swap=generate_j2c_swap(t,
                                        struct_ref_name="_net",
                                        is_alias=is_alias)))

    type_handlers.append(
        _TYPE_NET_TO_HOST_TEMPLATE.substitute(
            c_name=t.name,
            json_filename=model.json_api_files,
            json_definition=t.doc,
            type_reference_name=ref_name,
            class_FQN=t.jni_name,
            type_swap=generate_c2j_swap(t,
                                        object_ref_name="_host",
                                        struct_ref_name="_net",
                                        is_alias=is_alias)))
예제 #2
0
def _generate_class(model, t, type_handlers):
    ref_name = t.java_name_lower
    jni_identifiers = generate_j2c_identifiers(t,
                                               class_ref_name="%sClass" %
                                               ref_name,
                                               object_ref_name="_host")
    type_handlers.append(
        _TYPE_NET_TO_HOST_TEMPLATE.substitute(
            c_name=t.name,
            json_filename=model.json_api_files,
            json_definition=t.doc,
            type_reference_name=ref_name,
            class_FQN=t.jni_name,
            jni_identifiers=jni_identifiers,
            type_swap=generate_j2c_swap(t, struct_ref_name="_net")))

    type_handlers.append(
        _TYPE_HOST_TO_NET_TEMPLATE.substitute(
            c_name=t.name,
            json_filename=model.json_api_files,
            json_definition=t.doc,
            type_reference_name=ref_name,
            class_FQN=t.jni_name,
            jni_identifiers=jni_identifiers,
            type_swap=generate_c2j_swap(t,
                                        object_ref_name="_host",
                                        struct_ref_name="_net")))
예제 #3
0
def generate_jni_handlers(model):
    """
    Generates msg handlers for all messages except for dumps and requests (handled by vpp, not client).
    :param model: meta-model of VPP API used for jVPP generation.
    """
    jni_impl = []
    for msg in model.messages:
        msg_name = msg.name
        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

        jni_impl.append(_MSG_HANDLER_TEMPLATE.substitute(
            c_name=msg_name,
            json_filename=model.json_api_files,
            json_definition=msg.doc,
            plugin_name=model.plugin_name,
            err_handler=_generate_error_handler(msg),
            class_ref_name=msg.java_name_lower,
            dto_name=msg.java_name_upper,
            dto_setters=generate_c2j_swap(msg, object_ref_name="dto", struct_ref_name="mp", is_alias=False)
        ))
    return "".join(jni_impl)
예제 #4
0
def _generate_union_net_to_host(model, t):
    return _UNION_NET_TO_HOST_TEMPLATE.substitute(
        c_name=t.name,
        json_filename=model.json_api_files,
        json_definition=t.doc,
        type_reference_name=t.java_name_lower,
        class_FQN=t.jni_name,
        swap=generate_c2j_swap(t, object_ref_name="_host", struct_ref_name="_net")
    )
예제 #5
0
def generate_type_handlers(model):
    """
    Generates msg handlers for all messages except for dumps and requests (handled by vpp, not client).
    :param model: meta-model of VPP API used for jVPP generation.
    """
    type_handlers = []
    for t in model.types:
        if not isinstance(t, Class):
            continue
        ref_name = t.java_name_lower
        jni_identifiers = generate_j2c_identifiers(t,
                                                   class_ref_name="%sClass" %
                                                   ref_name,
                                                   object_ref_name="_host")
        type_handlers.append(
            _TYPE_NET_TO_HOST_TEMPLATE.substitute(
                c_name=t.name,
                json_filename=model.json_api_files,
                json_definition=t.doc,
                type_reference_name=ref_name,
                class_FQN=t.jni_name,
                jni_identifiers=jni_identifiers,
                type_swap=generate_j2c_swap(t, struct_ref_name="_net")))

        type_handlers.append(
            _TYPE_HOST_TO_NET_TEMPLATE.substitute(
                c_name=t.name,
                json_filename=model.json_api_files,
                json_definition=t.doc,
                type_reference_name=ref_name,
                class_FQN=t.jni_name,
                jni_identifiers=jni_identifiers,
                type_swap=generate_c2j_swap(t,
                                            object_ref_name="_host",
                                            struct_ref_name="_net")))

    return "\n".join(type_handlers)