D Bus学习(七):利用XML定义D Bus之Client的例子
继续学习D-Bus。之前学习了使用底层的API来发送,监听消息的方式。在
D-
Bus学习(四):基础小例子(同步和异步)
之中,我们给出了利用proxy进行发送method_call,并等待method_reply或者error的client情况。在D-Bus中,可以将D-Bus接口定义用XML格式表述处理,并利用工具,自动生成头文件,给出工整的调用方式。下面是一个XML的例子。
<?xml version="1.0" encoding="UTF-8" ?>
<node name="/com/wei/MyObject">
<interface name="com.wei.MyObject.Sample">
<method name="Test">
<annotation name="org.freedesktop.DBus.GLib.CSymbol" value="wei_response" />
<arg type="u" name="x" direction="in" />
<arg type="d" name="d_ret" direction="out" />
</method >
</interface >
</node >
其中annotation是作为server用,在下一次学习中使用。我们给这个xml文件一个名字,wei.xml。结合我们上两次学习中的图,node实际上就是相当于对象,用path来进行描述。使用dbus-bingding-tool来生成头文件:
dbus-binding-tool --mode=glib-client --prefix=com_wei
wei.xml
>
wei_client.h
头文件中给出了同步调用和异步调用的内容,我们给出一个前缀com_wei,将在头文件中出现,头文件内容如下:
/* Generated by dbus-binding-tool; do not edit! */
#include <glib.h>
#include <dbus/dbus-glib.h>
G_BEGIN_DECLS
#ifndef _DBUS_GLIB_ASYNC_DATA_FREE
#define _DBUS_GLIB_ASYNC_DATA_FREE
static
#ifdef G_HAVE_INLINE
inline
#endif
void
_dbus_glib_async_data_free (gpointer stuff)
{
g_slice_free (DBusGAsyncData, stuff);
}
#endif
#ifndef DBUS_GLIB_CLIENT_WRAPPERS_com_wei_MyObject_Sample
#define DBUS_GLIB_CLIENT_WRAPPERS_com_wei_MyObject_Sample
static
#ifdef G_HAVE_INLINE
inline
#endif
//这是同步调用内容
gboolean
com_wei
_M
相关文档:
摘要:我们描述一个简单的业务系统的用例,然后介绍不同的实现技术及其比较。我没有做过实际的基于SW技术的信息系统,因此本文只是一些猜想性的东
西,希望抛砖引玉,能得到大家的指教,也欢迎大家补充,谢谢!
注意我们讨论的对象是传统的MIS系统,如图书查询系统,学生管理系统之类的。
用例: 用户在查询界面选择 ......
(1)XML
XML是The Extensible Markup Language(可扩展标识语言)的简写。目前推荐遵循的是W3C于2000年10月6日发布的XML1.0,参考(www.w3.org/TR/2000/REC-XML-20001006)。和HTML一样,XML同样来源于SGML,但XML是一种能定义其他语言的语。XML最初设计的目的是弥补HTML的不足,以强大的扩展性满足网络信息发布的需要,后 ......
在Button上触摸按下的时候,Button有focused,pressed和default状态,可以使用不同的图片来显示这三种状态。
先定义一个名为btnselector.xml文件,代码如下:
<?xml version="1.0" encoding="UTF-8"?>
<selector xmlns:android="http://schemas.android.com/apk/re ......