Symbian C/S 机制分析
以下分析基于:
Developer Platform :S60 3rd Edition, Feature Pack 2 SDK
Operating System :Symbian OS v9.3
一,为什么要使用Client/Server架构
在Symibian OS中所有的异步服务都是Server通过C/S架构来实现的。Client是利用Server提供的特定服务的程序,Server接受来至Client的请求消息并同步或异步的处理他们。C/S架构有如下的优点:
1,可扩展性
2,有效性:相同的Server可以服务多个Client。
3,安全性:Server和Client存在于单独的进程中,并且通过消息传递进行通信。具有错误行为Client不会使他的Server崩溃(但是,Server可以通过客户线程的句柄来是具有错误行为的Client产生严重错误)。
4,异步性:在服务器完成请求的时候使用AO机制来通知他的Client。通过AO来挂起线程而不是轮询请求的状态,SymbianOS减少了处理该请求的处理器周期,从而节约了电源,这对于移动设备来说是非常重要的。
二,Client/Server架构的处理流程
Clinet和Server处于不同的进程中,他们无法访问彼此的虚地址空间,所以他们使用消息传递协议来通信,这种通信的渠道就称为会话。会话由内核创建,同时内核还在所有的Client/Server通信中充当媒介。
服 务,特别是系统提供的服务,比如:文件服务,窗口服务和字体和位图服务等都是在系统启动的时候就启动了。当然如果是自己做的server可以在需要的时 候,即当有client发出请求的时候再启动。然后服务器阻塞在某个点上,等待client请求的到来。在Client发出一个请求后,服务器会new一 个子会话来处理这个client的请求,然后自己又继续阻塞在监听请求的点上,以满足其他Client的请求。每个Client和Server的后续交互 都是通过连接Server时创建的Session来完成的。
三,R类介绍
C/S架构免不了要使用R类,那么什么是R类呢?这里的"R"是Resource的第一个字母,是资源的意思。
1,简介
具有"R"前缀的类表示某个资源的客户端句柄。应用程序实际上并不拥有资源,资源由设备上一个Symbian OS 服务器所拥有,服务器管理资源的使用。客户可以使用这些句柄访问服务器管理的资源,并请求使用它的功能。
R 类没有任何公共的基类,有些分块的派系类,比如,有些类是从RHandleBase派生—RFs,而有的什么都不是—RWindow等。一般来说,R类是 在栈上实例化或是嵌套在C类中,然后通过某种方式打开他们(通常通过一个方法调用来打开,例如调用Open()或Connect())。结束使用它们时, 有必要使
相关文档:
#include <stdio.h>
long long mod(long long a,long long b)
{
return (a % b + b) % b;
}
struct triple
{
long long d,x,y;
};
long long Euclid(long long a,long long b)
{
if(b == 0)
return a;
else
retu ......
C/C++/VC++ 变量命名规则
是VC++的么?
4.变量风格
变量尽量采用匈牙利命名法,同时结合VC的原则;一般情况下,变量的取名方式为:
<scope><prefix><qualifier>
有关项目的全局变量必须用g_开始,类成员变量用m_,局部变量若函数较大则可考虑用l_用以显示说明其是局部变量。
前缀
类型
示例
g_
......
//linux下编译g++ $(mysql_config --cflags) ***.cpp $(mysql_config --libs)
/*mysql数据库中表的内容
mysql> select * from maindb;
+------------------+---------+-------------+---------+----------+---------------------+---------------------+---------------------+------------------- ......
va系列宏的用法的一般步骤:
vsptr(char *format, ...) //切记此处的格式
{
va_list argptr;
va_start(argptr, format); //使得argptr指向以format开头的存储空间
va_arg(argptr, type); //取传递的参数
......
内容:Introduction 和 Error Reporting
1. glibc 所实现全部或部分规范下的功能有
ISO C: The international standard for the C programming language.
POSIX: The ISO/IEC 9945 (aka IEEE 1003) standards for operating systems.
Berkeley Unix: BSD and SunOS.
SVID: The System V Interface Description.
X ......