LINUX.ORG.RU

Awesome и dbus.

 ,


0

1

Приветствую. Есть у меня питоновский код который создает dbus сервис. В этом коде реализован метод get_message, который возвращает строку: This is the service. Код на основе https://gist.github.com/caspian311/4676061

dbus-send --print-reply  --session --dest='soln.awesome.mail' '/soln/awesome/mail' 'soln.awesome.mail.Message.get_message'

method return time=1516014840.089297 sender=:1.2718 -> destination=:1.2953 serial=197 reply_serial=2
   string "This is the service"

В rc.lua я регистрирую на сесионой шине имя, где я хочу получать сообщения.

dbus.request_name("session", "soln.awesome.client")

Создаю правило для матча сообщений.

dbus.add_match("session", "interface=soln.awesome.mail.Message.get_message")

Добавляю обработчик (Обработчик на данном этапе просто функция отладки. А как принято вести отладку в lua?)

dbus.connect_signal("soln.awesome.mail.Message",
		    function(...)
                        log = io.open("/tmp/lua.log", "w")
	                log:write('Awesome mail widget tabel struc ...\n')
		        local data = {...}
		        log:write(tostring(data) .. '\n')
		            for i,v in pairs(data) do
		                local index = tostring(i) .. '\t'
                                local value = tostring(v) .. '\n'
		                log:write(index .. value)
			        if type(v) ==  'table' then
			            for ii, vv in pairs(v) do
		                        local _index = '\t    ' .. tostring(ii)
				        local _value = '\t' .. tostring(vv)
				        log:write(_index .. _value .. '\n')
			            end
			        else
			            log:write('Type value: ' .. type(v) .. '\n')
	 		        end
                            end
                            log:flush ()
                       end)

Отпровляю сообщение soln.awesome.client.

~$ dbus-send --print-reply  --session --dest='soln.awesome.client' '/soln/awesome/mail' 'soln.awesome.mail.Message.get_message'
method return time=1516020338.162989 sender=:1.3053 -> destination=:1.3063 serial=12 reply_serial=2

В мониторе в этот момент.

method call time=1516020338.157824 sender=:1.3063 -> destination=soln.awesome.client serial=2 path=/soln/awesome/mail; 
interface=soln.awesome.mail.Message; member=get_message
method return time=1516020338.161027 sender=:1.3053 -> destination=:1.3063 serial=12 reply_serial=2

В обробочик приехала таблица следующего содержания.

table: 0x564823c8c330
1	table: 0x5648234f11b0
	    type	method_call
	    bus	session
	    sender	:1.3129
	    member	get_message
	    path	/soln/awesome/mail
	    interface	soln.awesome.mail.Message

Строки This is the service в приехавшей таблице нет.

Что - то я не понял судя по всему. Если кто разжует, или придаст ускорение в нужном направлении, буду благодарен.



Последнее исправление: soln (всего исправлений: 2)

что ты ему в dbus-send послал то он тебе в обробчике и напечатал

actionless ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.