+++ /dev/null
-#include "e.h"
-
-#define PATH "/org/enlightenment/wm/RemoteObject"
-
-/* local subsystem functions */
-static void _e_msgbus_request_name_cb(void *data, const Eldbus_Message *msg, Eldbus_Pending *pending);
-
-static Eldbus_Message *_e_msgbus_core_version_cb(const Eldbus_Service_Interface *iface, const Eldbus_Message *msg);
-static Eldbus_Message *_e_msgbus_core_restart_cb(const Eldbus_Service_Interface *iface, const Eldbus_Message *msg);
-static Eldbus_Message *_e_msgbus_core_shutdown_cb(const Eldbus_Service_Interface *iface, const Eldbus_Message *msg);
-
-static const Eldbus_Method core_methods[] =
-{
- { "Version", NULL, ELDBUS_ARGS({"s", "version"}), _e_msgbus_core_version_cb, 0 },
- { "Restart", NULL, NULL, _e_msgbus_core_restart_cb, 0 },
- { "Shutdown", NULL, NULL, _e_msgbus_core_shutdown_cb, 0 },
- { NULL, NULL, NULL, NULL, 0}
-};
-
-static const Eldbus_Service_Interface_Desc core_desc = {
- "org.enlightenment.wm.Core", core_methods, NULL, NULL, NULL, NULL
-};
-
-/* local subsystem globals */
-static E_Msgbus_Data *_e_msgbus_data = NULL;
-
-/* externally accessible functions */
-EINTERN int
-e_msgbus_init(void)
-{
- _e_msgbus_data = E_NEW(E_Msgbus_Data, 1);
- if (!_e_msgbus_data) return 0;
-
- eldbus_init();
-
- _e_msgbus_data->conn = eldbus_connection_get(ELDBUS_CONNECTION_TYPE_SESSION);
- if (!_e_msgbus_data->conn)
- {
- WRN("Cannot get ELDBUS_CONNECTION_TYPE_SESSION");
- return 0;
- }
-
- _e_msgbus_data->iface = eldbus_service_interface_register
- (_e_msgbus_data->conn, PATH, &core_desc);
- eldbus_name_request(_e_msgbus_data->conn,
- "org.enlightenment.wm.service",
- 0, _e_msgbus_request_name_cb, NULL);
- return 1;
-}
-
-EINTERN int
-e_msgbus_shutdown(void)
-{
- if (_e_msgbus_data->iface)
- eldbus_service_object_unregister(_e_msgbus_data->iface);
- if (_e_msgbus_data->conn)
- {
- eldbus_name_release(_e_msgbus_data->conn,
- "org.enlightenment.wm.service",
- NULL, NULL);
- eldbus_connection_unref(_e_msgbus_data->conn);
- }
- eldbus_shutdown();
-
- E_FREE(_e_msgbus_data);
- _e_msgbus_data = NULL;
- return 1;
-}
-
-E_API Eldbus_Service_Interface *
-e_msgbus_interface_attach(const Eldbus_Service_Interface_Desc *desc)
-{
- if (!_e_msgbus_data->iface) return NULL;
- return eldbus_service_interface_register(_e_msgbus_data->conn, PATH, desc);
-}
-
-static void
-_e_msgbus_request_name_cb(void *data EINA_UNUSED, const Eldbus_Message *msg,
- Eldbus_Pending *pending EINA_UNUSED)
-{
- unsigned int flag;
-
- if (eldbus_message_error_get(msg, NULL, NULL))
- {
- ERR("Could not request bus name");
- return;
- }
-
- if (!eldbus_message_arguments_get(msg, "u", &flag))
- {
- ERR("Could not get arguments on on_name_request");
- return;
- }
-
- if (!(flag & ELDBUS_NAME_REQUEST_REPLY_PRIMARY_OWNER))
- WRN("Name already in use\n");
-}
-
-/* Core Handlers */
-static Eldbus_Message *
-_e_msgbus_core_version_cb(const Eldbus_Service_Interface *iface EINA_UNUSED,
- const Eldbus_Message *msg)
-{
- Eldbus_Message *reply = eldbus_message_method_return_new(msg);
- EINA_SAFETY_ON_NULL_RETURN_VAL(reply, NULL);
- eldbus_message_arguments_append(reply, "s", VERSION);
- return reply;
-}
-
-static Eldbus_Message *
-_e_msgbus_core_restart_cb(const Eldbus_Service_Interface *iface EINA_UNUSED,
- const Eldbus_Message *msg)
-{
- ERR("DBus restart API disabled for security reasons");
- return eldbus_message_method_return_new(msg);
-}
-
-static Eldbus_Message *
-_e_msgbus_core_shutdown_cb(const Eldbus_Service_Interface *iface EINA_UNUSED,
- const Eldbus_Message *msg)
-{
- ERR("DBus shutdown API disabled for security reasons");
- return eldbus_message_method_return_new(msg);
-}