本文主要内容涉及:
- CORBA基本架构
- IDL文件编写
- CPP示例实现(上)
- CPP示例实现(下)
- C示例实现(IOR+NS上)
- C示例实现(IOR+NS下)
- C示例实现(IOR上)
- C示例实现(IOR下)
要写一个静态绑定的CORBA程序,首先要完成的就是定义接口。CORBA采用的接口描述方式为IDL(Interface Description Language),IDL的语法规则类似于CPP。
IDL与CPP常见类型映射关系如下:
IDL Type | C++ Type | Word size and range |
short | CORBA::Short | 16 bit: -2^15 … +2^15 – 1 |
long | CORBA::Long | 32 bit: -2^31 … +2^31 – 1 |
long long | CORBA::LongLong | 64 bit: -2^63 … +2^63 – 1 |
unsigned short | CORBA::UShort | 16 bit: 0 … 2^16 – 1 |
unsigned long | CORBA::ULong | 32 bit: 0 … 2^32 – 1 |
unsigned long long | CORBA::ULongLong | 64 bit: 0 … 2^64 |
float | CORBA::Float | 32 bit IEEE single precision floating point number |
double | CORBA::Double | 64 bit IEEE double precision floating point number |
long double | CORBA::LongDouble | |
char | CORBA::Char | 8 bit |
wchar | CORBA::WChar (Wide Char) | |
string | CORBA::char * | |
wstring | CORBA::WChar * | |
boolean | CORBA::Boolean | true/false |
octet | CORBA::Octet (unsigned char) | 8 bit raw. No conversion. |
any | CORBA::Any | Arbitrary |
比如,下面就是一个很简单的IDL文件:
hi.idl
module HiCorba { interface Hi { string sayHiTo(in string someone); long add(in long numa, in long numb); oneway void shutdown(); }; };