Модераторы: xvr
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> dbus отправка сигнала, организация взаимодействия 
V
    Опции темы
null56
Дата 16.3.2011, 17:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 721
Регистрация: 19.3.2008

Репутация: 4
Всего: 12



Всем привет
Возникла следующая ситуация: необходимо отправлять по dbus сигналы и принимать их из приложения
отправляющая сторона реализована на чистом dbus api, принимающая на glib
ссылки на api:
http://dbus.freedesktop.org/doc/api/html/g...Connection.html
http://dbus.freedesktop.org/doc/api/html/g...BusMessage.html

меня больше интересует организация этого взаимодействия:
1) кто что должен зарегистрировать на dbus?
на стороне сервера что нужно сделать для того, чтобы была возможность посылать сигналы?
дело в том, что я оринтируюсь на готовый исходный код bind dns сервера, где у него есть небольшой фреймворк для работы с dbus, вот его суть
- создание подключения
Код

connection = dbus_bus_get (DBUS_BUS_SESSION, &error);
dbus_connection_set_exit_on_disconnect(connection, FALSE);


2) если пункта 1 достаточно для отправки сигналов, тогда какие параметры я должен указывать в следующих функциях?
Код

DBusMessage *msg = dbus_message_new(DBUS_MESSAGE_TYPE_SIGNAL);
dbus_message_set_reply_serial(msg,reply_serial); // < что за номер? лдя подтверждения? нужен ли он мне для сигналов??
dbus_message_set_destination(msg, destination); // < что указывать в destination
dbus_message_set_path(msg, path); // < что за путь?
dbus_message_set_interface(msg,interface); // < что за интерфейс?
dbus_message_set_member(msg,member); // < что за member

если оринтироваться на описание фукнций, то
Цитата

reply_serial: the serial we're replying to - не ясно мне
destination: The destination is the name of another connection on the bus and may be either the unique name assigned by the bus to each connection, or a well-known name specified in -advance. - это получатель?
path: ... or the interface a signal is being emitted from (for DBUS_MESSAGE_TYPE_SIGNAL). - имя сигнала?
interface: Sets the interface member being invoked (DBUS_MESSAGE_TYPE_METHOD_CALL) or emitted (DBUS_MESSAGE_TYPE_SIGNAL). - для сигнала можно NULL?


в общем я изложил, что мне не ясно и если кто знает, как правильно организовать связь между отправителем сигнала и его получателем, отпишитесь пожалуйста.
клиентскую сторону пока показывать не буду, буду пробовать, но хотелось бы ответа с разъяснениями

заранее благодарен за помощь
PM MAIL   Вверх
null56
Дата 16.3.2011, 17:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 721
Регистрация: 19.3.2008

Репутация: 4
Всего: 12



вот альтернативная функция
Код

DBUS_EXPORT DBusMessage * dbus_message_new_signal    (    const char *    path,
        const char *    interface,
        const char *    name     
    )            

Constructs a new message representing a signal emission.

Returns NULL if memory can't be allocated for the message. A signal is identified by its originating object path, interface, and the name of the signal.

Path, interface, and signal name must all be valid (the D-Bus specification defines the syntax of these fields).

Parameters:
     path    the path to the object emitting the signal
     interface    the interface the signal is emitted from
     name    name of the signal 

еще больше запутало... получается path - путь к приложению генератору сигнала, а interface тоже относится к отправителю?
PM MAIL   Вверх
null56
Дата 17.3.2011, 18:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 721
Регистрация: 19.3.2008

Репутация: 4
Всего: 12



необходима регистрация на шине со стороны сервера + нельзя удалять прокси со стороны клиента и все работает
вот тут необходимое для сервера
http://www.matthew.ath.cx/misc/dbus

я забыл на серверной стороне регистрацию сервиса
Код

dbus_bus_request_name(conn, "test.method.server", DBUS_NAME_FLAG_REPLACE_EXISTING, &err);


Это сообщение отредактировал(а) null56 - 17.3.2011, 18:53
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С/С++: Программирование под Unix/Linux"
xvr
  • Проставьте несколько ключевых слов темы, чтобы её можно было легче найти.
  • Не забывайте пользоваться кнопкой "Код".
  • Вопросы мобильной разработки тут
  • Телепатов на форуме нет! Задавайте чёткий, конкретный и полный вопрос. Указывайте полностью ошибки компилятора и компоновщика.
  • Новое сообщение должно иметь прямое отношение к разделу форума. Флуд, флейм, оффтопик запрещены.
  • Категорически запрещается обсуждение вареза, "кряков", взлома программ и т.д.

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, xvr.

 
 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Программирование под Unix/Linux | Следующая тема »


 




[ Время генерации скрипта: 0.0442 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.