首页 理论教育 数据库服务器程序-物联网操作系统Contiki及其应用

数据库服务器程序-物联网操作系统Contiki及其应用

时间:2023-11-20 理论教育 版权反馈
【摘要】:程序文件netdb_server.c 是数据库服务器应用程序,netdb_server.c 文件的源代码大多数与上面介绍的netdb_client.c源文件相同,即有类似的mesh_conn数据结构、回调函数、进程PROCESS 和进程线程PROTO_THREADS。服务器程序文件的回调函数的实现完全类似于客户的回调函数,仅received回调函数的实现不同。

数据库服务器程序-物联网操作系统Contiki及其应用

程序文件netdb_server.c 是数据库服务器应用程序,netdb_server.c 文件的源代码大多数与上面介绍的netdb_client.c源文件相同,即有类似的mesh_conn数据结构、回调函数、进程PROCESS 和进程线程PROTO_THREADS。下面是一些重要的代码模块:

上面的代码片段说明了NetDB 进程和该进程的原线程的建立。netdb_pro⁃cess的原线程中启动了另一进程query_process。服务器程序文件的回调函数的实现完全类似于客户的回调函数,仅received回调函数的实现不同。下面是服务器方received回调函数的实现:

当信道上接收到分组时调用上面的函数received(),其中对接收到的查询执行一些必要的验证,如接收到的查询的长度是否超过最大缓存大小等。使用process_post 方法调用query_process 处理查询,事件类型被当作是serial_line_event_message。查询进程query_process 的结构如下,进程线程的完整代码参见源文件netdb_server.c。

上面的代码块创建了名称为query_process 的进程,并且创建了该进程的原线程。下面分析query_process进程的代码:(www.xing528.com)

上面的源代码初始化数据库系统,db_init()函数建立关系、属性和检索所需要的内存以及antelope 数据库操作所需要的各种信息。db_query 执行参数规定的查询并且调用aql_execute,AQL是Antelope数据库使用的查询语言

上面的源代码准备建立元组基数CARDINALITY为1000的数据库,基数由标志值PREPARE_DB 指定,把随机的整数抽样值CARDINALITY 插入数据库,如果一切运行正常,会在实验的传感器节点上输出提示信息Ready to process Queries,这些提示信息与后面看到的Cooja仿真器中输出的信息类似。

上面的源代码运行一个无限循环,该循环等待给进程“query_process”发布的事件,等待查询处理的数据,要执行的查询db_query,执行查询后要处理的错误条件。这就是“query_process”进程的主要内容。

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈