本文整理汇总了C++中dbus_message_get_member函数的典型用法代码示例。如果您正苦于以下问题:C++ dbus_message_get_member函数的具体用法?C++ dbus_message_get_member怎么用?C++ dbus_message_get_member使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。
在下文中一共展示了dbus_message_get_member函数的20个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于我们的系统推荐出更棒的C++代码示例。
示例1: media_owner_remove
static void media_owner_remove(struct media_owner *owner)
{
struct media_transport *transport = owner->transport;
struct media_request *req = owner->pending;
if (!req)
return;
DBG("Owner %s Request %s", owner->name,
dbus_message_get_member(req->msg));
if (req->id)
transport->cancel(transport, req->id);
owner->pending = NULL;
if (req->msg)
dbus_message_unref(req->msg);
g_free(req);
}
开发者ID:Krlos0208,项目名称:Sintetizador_Voz,代码行数:20,代码来源:transport.c
示例2: wpas_dispatch_bssid_method
/**
* wpas_dispatch_bssid_method - dispatch messages for scanned networks
* @message: the incoming dbus message
* @wpa_s: a network interface's data
* @bssid: bssid of the scanned network we're interested in
* Returns: a reply dbus message, or a dbus error message
*
* This function dispatches all incoming dbus messages for scanned networks.
*/
static DBusMessage * wpas_dispatch_bssid_method(DBusMessage *message,
struct wpa_supplicant *wpa_s,
const char *bssid)
{
DBusMessage *reply = NULL;
const char *method = dbus_message_get_member(message);
struct wpa_scan_result * res = NULL;
int i;
/* Ensure we actually have scan data */
if (wpa_s->scan_results == NULL &&
wpa_supplicant_get_scan_results(wpa_s) < 0) {
reply = wpas_dbus_new_invalid_bssid_error(message);
goto out;
}
/* Find the bssid's scan data */
for (i = 0; i < wpa_s->num_scan_results; i++) {
struct wpa_scan_result * search_res = &wpa_s->scan_results[i];
char mac_str[18];
memset(mac_str, 0, sizeof(mac_str));
snprintf(mac_str, sizeof(mac_str) - 1, WPAS_DBUS_BSSID_FORMAT,
MAC2STR(search_res->bssid));
if (!strcmp(bssid, mac_str)) {
res = search_res;
}
}
if (!res) {
reply = wpas_dbus_new_invalid_bssid_error(message);
goto out;
}
/* Dispatch the method call against the scanned bssid */
if (!strcmp(method, "properties"))
reply = wpas_dbus_bssid_properties(message, wpa_s, res);
out:
return reply;
}
开发者ID:KHATEEBNSIT,项目名称:AP,代码行数:50,代码来源:ctrl_iface_dbus.c
示例3: assert
DBusHandlerResult timer_adaptor::handle_message(DBusConnection* connection, DBusMessage* message)
{
std::clog << __FUNCTION__ << std::endl;
assert(dbus_message_has_interface(message, INTERFACE_NAME));
auto dst = dbus_message_get_path(message);
if (dst == nullptr || strlen(dst) == 0) {
std::cerr << "Unknown message destination" << std::endl;
return DBUS_HANDLER_RESULT_NOT_YET_HANDLED;
}
auto obj = m_objects.find(dst);
if (obj == m_objects.end()) {
std::cerr << "Destination object " << dst << " not found" << std::endl;
return DBUS_HANDLER_RESULT_NOT_YET_HANDLED;
}
auto name = dbus_message_get_member(message);
if (name == nullptr || strlen(name) == 0) {
std::cerr << "Unknown method name " << std::endl;
return DBUS_HANDLER_RESULT_NOT_YET_HANDLED;
}
typedef dboost::dbus_ptr<DBusMessage> (timer_adaptor::*caller)(timer*, DBusMessage*);
typedef std::map<std::string, caller> caller_table;
static const caller_table vtbl {
{"add_timer", &timer_adaptor::call_add_timer},
{"remove_timer", &timer_adaptor::call_remove_timer}
};
auto func = vtbl.find(name);
if (func == vtbl.end()) {
std::cerr << "Wrong method name " << name << std::endl;
return DBUS_HANDLER_RESULT_HANDLED;
}
auto result = (this->*func->second)(obj->second, message);
std::clog << "Reply result" << std::endl;
dbus_connection_send(connection, result.get(), 0);
return DBUS_HANDLER_RESULT_HANDLED;
}
开发者ID:glucktv,项目名称:dboost,代码行数:41,代码来源:timer_adaptor.cpp
示例4: hid_event_filter
DBusHandlerResult hid_event_filter(DBusMessage *msg, JNIEnv *env) {
DBusError err;
if (!nat) {
LOGV("... skipping %s\n", __FUNCTION__);
LOGV("... ignored\n");
return DBUS_HANDLER_RESULT_NOT_YET_HANDLED;
}
dbus_error_init(&err);
if (dbus_message_get_type(msg) != DBUS_MESSAGE_TYPE_SIGNAL) {
return DBUS_HANDLER_RESULT_NOT_YET_HANDLED;
}
DBusHandlerResult result = DBUS_HANDLER_RESULT_NOT_YET_HANDLED;
if (dbus_message_is_signal(msg, "org.bluez.Input",
"PropertyChanged")) {
jobjectArray str_array =
parse_property_change(env, msg, (Properties *)&input_properties,
sizeof(input_properties) / sizeof(Properties));
const char *c_path = dbus_message_get_path(msg);
env->CallVoidMethod(nat->me,
method_onInputPropertyChanged,
env->NewStringUTF(c_path),
str_array);
result = DBUS_HANDLER_RESULT_HANDLED;
return result;
} else {
LOGV("... ignored");
}
if (env->ExceptionCheck()) {
LOGE("VM Exception occurred while handling %s.%s (%s) in %s,"
" leaving for VM",
dbus_message_get_interface(msg), dbus_message_get_member(msg),
dbus_message_get_path(msg), __FUNCTION__);
}
return result;
}
开发者ID:SciAps,项目名称:android-frameworks-base,代码行数:41,代码来源:android_server_BluetoothHidService.cpp
示例5: whiteboard_cmd_new_response
WhiteBoardCmd* whiteboard_cmd_new_response(WhiteBoardCmd* request)
{
WhiteBoardCmd* self = NULL;
const gchar *member = NULL;
const gchar* begin = WHITEBOARD_CMD_DATA_BEGIN;
whiteboard_log_debug_fb();
g_return_val_if_fail(request != NULL, NULL);
g_return_val_if_fail(request->msg != NULL, NULL);
self = g_new0(WhiteBoardCmd, 1);
g_return_val_if_fail(self != NULL, NULL);
self->refcount = 1;
self->msg = dbus_message_new_method_return(request->msg);
g_return_val_if_fail(self->msg != NULL, NULL);
/* The response message is directed back to the whiteboard generic I/F */
dbus_message_set_interface(self->msg, WHITEBOARD_DBUS_INTERFACE);
/* Copy member name from the request to this response */
member = dbus_message_get_member(request->msg);
dbus_message_set_member(self->msg, member);
/* Copy method name from the request to the response */
whiteboard_cmd_append_method_name(self,
whiteboard_cmd_get_method_name(request));
/* Copy target UUID from the request to the response */
whiteboard_cmd_append_target_uuid(self,
whiteboard_cmd_get_target_uuid(request));
dbus_message_append_args(self->msg,
DBUS_TYPE_STRING, &begin,
DBUS_TYPE_INVALID);
whiteboard_log_debug_fe();
return (WhiteBoardCmdResponse*) self;
}
开发者ID:smart-m3,项目名称:libwhiteboard,代码行数:41,代码来源:whiteboard_command.c
示例6: Run
NS_IMETHOD Run()
{
if (dbus_message_get_path(mMsg.get()) == NULL) {
return NS_OK;
}
MOZ_ASSERT(NS_IsMainThread());
// Notify observers that a message has been sent
nsDependentCString path(dbus_message_get_path(mMsg.get()));
nsDependentCString member(dbus_message_get_member(mMsg.get()));
BluetoothEventObserverList *ol;
if (!sBluetoothEventObserverTable->Get(path, &ol)) {
LOG("No objects registered for %s, returning\n",
dbus_message_get_path(mMsg.get()));
return NS_OK;
}
BluetoothEvent e;
e.mEventName = member;
ol->Broadcast(e);
return NS_OK;
}
开发者ID:hideakihata,项目名称:mozilla-central.fgv,代码行数:21,代码来源:BluetoothDBusUtils.cpp
示例7: asdbus_handle_message
DBusHandlerResult
asdbus_handle_message (DBusConnection * conn, DBusMessage * msg,
void *data)
{
Bool handled = False;
show_progress ("Dbus message received from \"%s\", member \"%s\"",
dbus_message_get_interface (msg),
dbus_message_get_member (msg));
if (dbus_message_is_signal
(msg, "org.gnome.SessionManager", "SessionOver")) {
dbus_message_unref (msg);
handled = True;
Done (False, NULL);
}
return handled ? DBUS_HANDLER_RESULT_HANDLED :
DBUS_HANDLER_RESULT_NOT_YET_HANDLED;
}
开发者ID:afterstep,项目名称:afterstep,代码行数:21,代码来源:dbus.c
示例8: wpas_dispatch_network_method
/**
* wpas_dispatch_network_method - dispatch messages for configured networks
* @message: the incoming dbus message
* @wpa_s: a network interface's data
* @network_id: id of the configured network we're interested in
* Returns: a reply dbus message, or a dbus error message
*
* This function dispatches all incoming dbus messages for configured networks.
*/
static DBusMessage * wpas_dispatch_network_method(DBusMessage *message,
struct wpa_supplicant *wpa_s,
int network_id)
{
DBusMessage *reply = NULL;
const char *method = dbus_message_get_member(message);
struct wpa_ssid *ssid;
ssid = wpa_config_get_network(wpa_s->conf, network_id);
if (ssid == NULL)
return wpas_dbus_new_invalid_network_error(message);
if (!strcmp(method, "set"))
reply = wpas_dbus_iface_set_network(message, wpa_s, ssid);
else if (!strcmp(method, "enable"))
reply = wpas_dbus_iface_enable_network(message, wpa_s, ssid);
else if (!strcmp(method, "disable"))
reply = wpas_dbus_iface_disable_network(message, wpa_s, ssid);
return reply;
}
开发者ID:MindShow,项目名称:amlogic_s905_kernel_merges,代码行数:30,代码来源:dbus_old.c
示例9: handle_message
static DBusHandlerResult handle_message(DBusConnection* conn, DBusMessage* msg, void* user_data)
{
const char* member = dbus_message_get_member(msg);
VERB1 log("%s(member:'%s')", __func__, member);
int type = dbus_message_get_type(msg);
if (type != DBUS_MESSAGE_TYPE_SIGNAL)
{
log("The message is not a signal. ignoring");
return DBUS_HANDLER_RESULT_HANDLED;
}
if (strcmp(member, "NameOwnerChanged") == 0)
NameOwnerChanged(msg);
else if (strcmp(member, "Crash") == 0)
Crash(msg);
else if (strcmp(member, "QuotaExceeded") == 0)
QuotaExceeded(msg);
return DBUS_HANDLER_RESULT_HANDLED;
}
开发者ID:rplnt,项目名称:abrt,代码行数:22,代码来源:applet.c
示例10: profile_handler
static DBusHandlerResult profile_handler(DBusConnection *c, DBusMessage *m, void *userdata) {
pa_bluetooth_backend *b = userdata;
DBusMessage *r = NULL;
const char *path, *interface, *member;
pa_assert(b);
path = dbus_message_get_path(m);
interface = dbus_message_get_interface(m);
member = dbus_message_get_member(m);
pa_log_debug("dbus: path=%s, interface=%s, member=%s", path, interface, member);
if (!pa_streq(path, HSP_AG_PROFILE) && !pa_streq(path, HSP_HS_PROFILE))
return DBUS_HANDLER_RESULT_NOT_YET_HANDLED;
if (dbus_message_is_method_call(m, "org.freedesktop.DBus.Introspectable", "Introspect")) {
const char *xml = PROFILE_INTROSPECT_XML;
pa_assert_se(r = dbus_message_new_method_return(m));
pa_assert_se(dbus_message_append_args(r, DBUS_TYPE_STRING, &xml, DBUS_TYPE_INVALID));
} else if (dbus_message_is_method_call(m, BLUEZ_PROFILE_INTERFACE, "Release")) {
pa_log_debug("Release not handled");
return DBUS_HANDLER_RESULT_NOT_YET_HANDLED;
} else if (dbus_message_is_method_call(m, BLUEZ_PROFILE_INTERFACE, "RequestDisconnection")) {
r = profile_request_disconnection(c, m, userdata);
} else if (dbus_message_is_method_call(m, BLUEZ_PROFILE_INTERFACE, "NewConnection"))
r = profile_new_connection(c, m, userdata);
else
return DBUS_HANDLER_RESULT_NOT_YET_HANDLED;
if (r) {
pa_assert_se(dbus_connection_send(pa_dbus_connection_get(b->connection), r, NULL));
dbus_message_unref(r);
}
return DBUS_HANDLER_RESULT_HANDLED;
}
开发者ID:plbossart,项目名称:pulseaudio,代码行数:39,代码来源:backend-native.c
示例11: watch_signal
DBusHandlerResult watch_signal(DBusConnection* connection, DBusMessage *msg,
void *no_use)
{
if (dbus_message_get_type(msg) != DBUS_MESSAGE_TYPE_SIGNAL)
return DBUS_HANDLER_RESULT_NOT_YET_HANDLED;
const char* iface = dbus_message_get_interface(msg);
const char* s_name = dbus_message_get_member(msg);
const char* path = dbus_message_get_path(msg);
char* key = g_strdup_printf("%s%s%s", path, iface, s_name);
GHashTable* cbs_info = g_hash_table_lookup(__sig_info_hash, key);
g_free(key);
if (cbs_info == NULL) {
return DBUS_HANDLER_RESULT_NOT_YET_HANDLED;
} else {
g_hash_table_foreach(cbs_info, (GHFunc)handle_signal_callback, msg);
return DBUS_HANDLER_RESULT_HANDLED;
}
}
开发者ID:PeterDaveHello,项目名称:deepin-installer,代码行数:22,代码来源:dbus_introspect.c
示例12: message_received
/* Callback: "a message is received to a registered object path" */
static DBusHandlerResult message_received(DBusConnection* conn, DBusMessage* msg, void* data)
{
const char* member = dbus_message_get_member(msg);
VERB1 log("%s(method:'%s')", __func__, member);
set_client_name(dbus_message_get_sender(msg));
DBusMessage* reply = dbus_message_new_method_return(msg);
int r = -1;
if (strcmp(member, "DeleteDebugDump") == 0)
r = handle_DeleteDebugDump(msg, reply);
// NB: C++ binding also handles "Introspect" method, which returns a string.
// It was sending "dummy" introspection answer whick looks like this:
// "<!DOCTYPE node PUBLIC \"-//freedesktop//DTD D-BUS Object Introspection 1.0//EN\"\n"
// "\"http://www.freedesktop.org/standards/dbus/1.0/introspect.dtd\">\n"
// "<node>\n"
// "</node>\n"
// Apart from a warning from abrt-gui, just sending error back works as well.
// NB2: we may want to handle "Disconnected" here too.
if (r < 0)
{
/* handle_XXX experienced an error (and did not send any reply) */
dbus_message_unref(reply);
if (dbus_message_get_type(msg) == DBUS_MESSAGE_TYPE_METHOD_CALL)
{
/* Create and send error reply */
reply = dbus_message_new_error(msg, DBUS_ERROR_FAILED, "not supported");
if (!reply)
die_out_of_memory();
send_flush_and_unref(reply);
}
}
set_client_name(NULL);
return DBUS_HANDLER_RESULT_HANDLED;
}
开发者ID:rplnt,项目名称:abrt,代码行数:40,代码来源:CommLayerServerDBus.c
示例13: handle_chaind_message
static DBusHandlerResult handle_chaind_message(DBusConnection* conn, DBusMessage* msg, void* userdata)
{
const char *interface = dbus_message_get_interface(msg);
const char *method = dbus_message_get_member(msg);
if(interface != NULL) printf("dbus interface: %s\n", interface);
if(method != NULL) printf("dbus method: %s\n", method);
if(strcmp(interface, DBUS_INTERFACE_INTROSPECTABLE) == 0) {
return handle_chaind_introspection(conn, msg, userdata);
} else if(strcmp(interface, "org.sarcharsoftware.chaind") == 0 && method != NULL) {
if(strcmp(method, "GetBlock") == 0) {
return handle_chaind_get_block(conn, msg, userdata);
} else if(strcmp(method, "GetBestBlock") == 0) {
return handle_chaind_get_best_block(conn, msg, userdata);
} else if(strcmp(method, "GetTransaction") == 0) {
return handle_chaind_get_transaction(conn, msg, userdata);
}
}
return DBUS_HANDLER_RESULT_NOT_YET_HANDLED;
}
开发者ID:chaind,项目名称:chaind,代码行数:22,代码来源:dbus.c
示例14: _handle_message
static DBusHandlerResult
_handle_message (DBusConnection *connection, DBusMessage *message, void *data)
{
ServiceData *svc = (ServiceData *)data;
DBusHandlerResult result;
rb_debug ("handling metadata service message: %s", dbus_message_get_member (message));
if (dbus_message_is_method_call (message, RB_METADATA_DBUS_INTERFACE, "load")) {
result = rb_metadata_dbus_load (connection, message, svc);
} else if (dbus_message_is_method_call (message, RB_METADATA_DBUS_INTERFACE, "getSaveableTypes")) {
result = rb_metadata_dbus_get_saveable_types (connection, message, svc);
} else if (dbus_message_is_method_call (message, RB_METADATA_DBUS_INTERFACE, "save")) {
result = rb_metadata_dbus_save (connection, message, svc);
} else if (dbus_message_is_method_call (message, RB_METADATA_DBUS_INTERFACE, "ping")) {
result = rb_metadata_dbus_ping (connection, message, svc);
} else {
result = DBUS_HANDLER_RESULT_NOT_YET_HANDLED;
}
svc->last_active = time (NULL);
return result;
}
开发者ID:AdamZ,项目名称:rhythmbox-magnatune,代码行数:22,代码来源:rb-metadata-dbus-service.c
示例15: message_handler
DBusHandlerResult message_handler(DBusConnection *connection,
DBusMessage *message,
void *user_data)
{
char *method = (char *)dbus_message_get_member(message);
if (dbus_message_is_method_call(message, DBUS_INTERFACE_INTROSPECTABLE, "Introspect"))
{
DBusMessage *reply = dbus_message_new_method_return(message);
dbus_message_append_args(reply, DBUS_TYPE_STRING, &introspection_xml, DBUS_TYPE_INVALID);
dbus_connection_send (connection, reply, NULL);
dbus_message_unref (reply);
}
else if (strcmp(method, "GetVersion") == 0)
{
char *v = VERSION;
DBusMessage *reply = dbus_message_new_method_return(message);
dbus_message_append_args(reply, DBUS_TYPE_STRING, &v, DBUS_TYPE_INVALID);
dbus_connection_send (connection, reply, NULL);
dbus_message_unref (reply);
}
else if (strcmp(method, "SetServers") == 0)
{
my_syslog(LOG_INFO, _("setting upstream servers from DBus"));
dbus_read_servers(message);
check_servers();
}
else if (strcmp(method, "ClearCache") == 0)
clear_cache_and_reload(dnsmasq_time());
else
return (DBUS_HANDLER_RESULT_NOT_YET_HANDLED);
method = user_data;
return (DBUS_HANDLER_RESULT_HANDLED);
}
开发者ID:qtekfun,项目名称:htcDesire820Kernel,代码行数:39,代码来源:dbus.c
示例16: g_dbus_send_message
gboolean g_dbus_send_message(DBusConnection *connection, DBusMessage *message)
{
dbus_bool_t result;
if (dbus_message_get_type(message) == DBUS_MESSAGE_TYPE_METHOD_CALL)
dbus_message_set_no_reply(message, TRUE);
else if (dbus_message_get_type(message) == DBUS_MESSAGE_TYPE_SIGNAL) {
const char *path = dbus_message_get_path(message);
const char *interface = dbus_message_get_interface(message);
const char *name = dbus_message_get_member(message);
const GDBusArgInfo *args;
if (!check_signal(connection, path, interface, name, &args))
return FALSE;
}
result = dbus_connection_send(connection, message, NULL);
dbus_message_unref(message);
return result;
}
开发者ID:akatrevorjay,项目名称:bluez-dinovo,代码行数:22,代码来源:object.c
示例17: properties_handler
static DBusMessage * properties_handler(DBusMessage *message,
struct wpa_dbus_object_desc *obj_dsc)
{
DBusMessageIter iter;
char *interface;
const char *method;
method = dbus_message_get_member(message);
dbus_message_iter_init(message, &iter);
if (!os_strncmp(WPA_DBUS_PROPERTIES_GET, method,
WPAS_DBUS_METHOD_SIGNAL_PROP_MAX) ||
!os_strncmp(WPA_DBUS_PROPERTIES_SET, method,
WPAS_DBUS_METHOD_SIGNAL_PROP_MAX) ||
!os_strncmp(WPA_DBUS_PROPERTIES_GETALL, method,
WPAS_DBUS_METHOD_SIGNAL_PROP_MAX)) {
/* First argument: interface name (DBUS_TYPE_STRING) */
if (dbus_message_iter_get_arg_type(&iter) != DBUS_TYPE_STRING)
{
return dbus_message_new_error(message,
DBUS_ERROR_INVALID_ARGS,
NULL);
}
dbus_message_iter_get_basic(&iter, &interface);
if (!os_strncmp(WPA_DBUS_PROPERTIES_GETALL, method,
WPAS_DBUS_METHOD_SIGNAL_PROP_MAX)) {
/* GetAll */
return properties_get_all(message, interface, obj_dsc);
}
/* Get or Set */
return properties_get_or_set(message, &iter, interface,
obj_dsc);
}
return dbus_message_new_error(message, DBUS_ERROR_UNKNOWN_METHOD,
NULL);
}
开发者ID:MindShow,项目名称:amlogic_s905_kernel_merges,代码行数:38,代码来源:dbus_new_helpers.c
示例18: dbus_message_get_sender
static DBusMessage *release(DBusConnection *conn, DBusMessage *msg,
void *data)
{
struct media_transport *transport = data;
struct media_owner *owner = transport->owner;
const char *sender;
struct media_request *req;
guint id;
sender = dbus_message_get_sender(msg);
if (owner == NULL || g_strcmp0(owner->name, sender) != 0)
return btd_error_not_authorized(msg);
if (owner->pending) {
const char *member;
member = dbus_message_get_member(owner->pending->msg);
/* Cancel Acquire request if that exist */
if (g_str_equal(member, "Acquire"))
media_owner_remove(owner);
else
return btd_error_in_progress(msg);
}
transport_set_state(transport, TRANSPORT_STATE_SUSPENDING);
id = transport->suspend(transport, owner);
if (id == 0) {
media_transport_remove_owner(transport);
return g_dbus_create_reply(msg, DBUS_TYPE_INVALID);
}
req = media_request_create(msg, id);
media_owner_add(owner, req);
return NULL;
}
开发者ID:Thread974,项目名称:bz,代码行数:38,代码来源:transport.c
示例19: handle_message
//! Handles a DBus message and executes related script
void
handle_message(DBusMessage *msg)
{
Py_Initialize();
const char *method = dbus_message_get_member(msg);
const char *iface = dbus_message_get_interface(msg);
const char *path = dbus_message_get_path(msg);
log_debug("Forked new process for '%s.%s' - '%s'\n", iface, method, path);
if (method == NULL || path == NULL || method == NULL) {
bus_reply_unknown_method(msg);
}
else if (strcmp("org.freedesktop.DBus.Introspectable", iface) == 0 && strcmp("Introspect", method) == 0) {
// Introspection method
message_execute(msg, NULL, "Core", "introspect");
}
else if (strcmp(config_interface, iface) == 0) {
// Core methods
message_execute(msg, NULL, "Core", method);
}
else if (strncmp(config_interface, iface, strlen(config_interface)) == 0 && iface[strlen(config_interface)] == '.') {
// Model.method
char *model = strsub(iface, strlen(config_interface) + 1, strlen(iface));
char *app = strsub(path, strlen("/package/"), strlen(path));
message_execute(msg, app, model, method);
free(model);
free(app);
}
else {
bus_reply_unknown_method(msg);
}
Py_Finalize();
}
开发者ID:Pardus-Linux,项目名称:COMAR,代码行数:39,代码来源:loop.c
示例20: msg_method_handler
static DBusMessage * msg_method_handler(DBusMessage *message,
struct wpa_dbus_object_desc *obj_dsc)
{
const struct wpa_dbus_method_desc *method_dsc = obj_dsc->methods;
const char *method;
const char *msg_interface;
method = dbus_message_get_member(message);
msg_interface = dbus_message_get_interface(message);
/* try match call to any registered method */
while (method_dsc && method_dsc->dbus_method) {
/* compare method names and interfaces */
if (!os_strncmp(method_dsc->dbus_method, method,
WPAS_DBUS_METHOD_SIGNAL_PROP_MAX) &&
!os_strncmp(method_dsc->dbus_interface, msg_interface,
WPAS_DBUS_INTERFACE_MAX))
break;
method_dsc++;
}
if (method_dsc == NULL || method_dsc->dbus_method == NULL) {
wpa_printf(MSG_DEBUG, "no method handler for %s.%s on %s",
msg_interface, method,
dbus_message_get_path(message));
return dbus_message_new_error(message,
DBUS_ERROR_UNKNOWN_METHOD, NULL);
}
if (!is_signature_correct(message, method_dsc)) {
return dbus_message_new_error(message, DBUS_ERROR_INVALID_ARGS,
NULL);
}
return method_dsc->method_handler(message,
obj_dsc->user_data);
}
开发者ID:MindShow,项目名称:amlogic_s905_kernel_merges,代码行数:37,代码来源:dbus_new_helpers.c
注:本文中的dbus_message_get_member函数示例由纯净天空整理自Github/MSDocs等源码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。 |
请发表评论