Пример #1
0
gboolean
Services_describe(Matahari *matahari, const char *name,
                  DBusGMethodInvocation *context)
{
    GError* error = NULL;
    if (!check_authorization(SERVICES_BUS_NAME ".describe", &error, context)) {
        dbus_g_method_return_error(context, error);
        g_error_free(error);
        return FALSE;
    }
    // TODO: Implement when implemented in backend
    error = g_error_new(MATAHARI_ERROR, MH_RES_NOT_IMPLEMENTED,
                        "%s", mh_result_to_str(MH_RES_NOT_IMPLEMENTED));
    dbus_g_method_return_error(context, error);
    g_error_free(error);
    return TRUE;
}
Пример #2
0
gboolean
Resources_fail(Matahari *matahari, const char *name, unsigned int rc,
                         DBusGMethodInvocation *context)
{
    GError* error = NULL;
    if (!check_authorization(RESOURCES_INTERFACE_NAME ".fail",
                             &error, context)) {
        dbus_g_method_return_error(context, error);
        g_error_free(error);
        return FALSE;
    }
    // TODO: Implement when implemented in backend
    error = g_error_new(MATAHARI_ERROR, MH_RES_NOT_IMPLEMENTED,
                        "%s", mh_result_to_str(MH_RES_NOT_IMPLEMENTED));
    dbus_g_method_return_error(context, error);
    g_error_free(error);
    return TRUE;
}
gboolean
Host_set_power_profile(Matahari* matahari, const char *profile, DBusGMethodInvocation *context)
{
    GError *error = NULL;
    enum mh_result res;

    if (!check_authorization(HOST_BUS_NAME ".set_power_profile", &error, context)) {
        dbus_g_method_return_error(context, error);
        g_error_free(error);
        return FALSE;
    }
    res = mh_host_set_power_profile(profile);
    if (res != MH_RES_SUCCESS) {
        error = g_error_new(MATAHARI_ERROR, res, mh_result_to_str(res));
        dbus_g_method_return_error(context, error);
        g_error_free(error);
        return FALSE;
    }

    dbus_g_method_return(context, 0);
    return TRUE;
}
gboolean
NetAgent::invoke(qmf::AgentSession session, qmf::AgentEvent event,
                 gpointer user_data)
{
    if (event.getType() != qmf::AGENT_METHOD) {
        return TRUE;
    }

    const std::string& methodName(event.getMethodName());
    qpid::types::Variant::Map& args = event.getArguments();

    if (methodName == "list") {
        GList *plist = NULL;
        GList *interface_list = NULL;

        _qtype::Variant::List s_list;

        interface_list = mh_network_get_interfaces();
        for (plist = g_list_first(interface_list); plist;
             plist = g_list_next(plist)) {
            struct mh_network_interface *iface =
                        static_cast<struct mh_network_interface *>(plist->data);
            s_list.push_back(mh_network_interface_get_name(iface));
        }
        g_list_free_full(interface_list, mh_network_interface_destroy);
        event.addReturnArgument("iface_map", s_list);
    } else if (methodName == "start") {
        int rc = interface_status(
                args["iface"].asString().c_str());

        if (rc == 1) {
            mh_network_start(args["iface"].asString().c_str());
            rc = interface_status(
                    args["iface"].asString().c_str());
        }
        event.addReturnArgument("status", rc);
    } else if (methodName == "stop") {
        int rc = interface_status(
                args["iface"].asString().c_str());
        if (rc == 0) {
            mh_network_stop(args["iface"].asString().c_str());
            rc = interface_status(
                    args["iface"].asString().c_str());
        }
        event.addReturnArgument("status", rc);
    } else if (methodName == "status") {
        event.addReturnArgument("status", interface_status(
                args["iface"].asString().c_str()));
    } else if (methodName == "get_ip_address") {
        char buf[64];
        event.addReturnArgument("ip", mh_network_get_ip_address(
                args["iface"].asString().c_str(),
                buf, sizeof(buf)));
    } else if (methodName == "get_mac_address") {
        char buf[32];
        event.addReturnArgument("mac", mh_network_get_mac_address(
                args["iface"].asString().c_str(),
                buf, sizeof(buf)));
    } else {
        session.raiseException(event, mh_result_to_str(MH_RES_NOT_IMPLEMENTED));
        goto bail;
    }

    session.methodSuccess(event);

bail:
    return TRUE;
}