本软件提供类SNACC功能,完成抽象数据结构到网络字节流的编解码功能。与SNACC不一样的是CASN仅适用一份代码(SNACC根据每个抽象数据结构要生成一份不同的代码),将大大减小软件发布包大小;SNACC使用ASN.1文法来描述抽象数据,而CASN使用XML描述。
目前提供C++/Java包;
抽象数据结构由XML描述,CASN提供初始化接口读入此描述文件;
本软件提供接口完成抽象数据结构的创建;
提供Set、Get方法设置查询抽象数据结构;
提供接口编码抽象数据结构为网络字节流,并提供解码接口;
如下是抽象数据结构的XML描述样例。
student_t name string private_data binary age int student_list student_t
|
使用结构之前需要先用XML抽象类型描述文件初始化CASN,如下:
if (!NodeTypeMgr::Instance()->LoadNodeTypeInfo("a.xml")) { cout << "load typedefine failed!" << endl; return -1; } |
创建抽象结构对象,如下:
char buf[3] = {'a', 'b', '\0'}; NodeType *student= CCAsnFactory::Create("student_t"); student->SetStr("name", "zhanglei"); student->SetInt("age", 27); student->SetBin("private_data", buf, sizeof(buf));
NodeType *studentList = CCAsnFactory::Create("student_list"); studentList->GetList().Push(data); NodeType *studentListBak = studentList->Clone(); //深拷贝 |
对象深拷贝,如下:
NodeType *studentListBak = studentList->Clone(); //深拷贝 |
编解码操作,如下:
char *buf = 0; size_t len = 0; NodeType *student2 = CCAsnFactory::Create("student_t"); buf = student->Encode(len); student2->Decode(buf);
char *bufList = 0; size_t lenList = 0; NodeType *student2 = CCAsnFactory::Create("student_list"); bufList = studentlist->Encode(lenList); studentlist2->Decode(bufList); |
删除编码缓冲区,如下:
delete []buf; buf = 0; delete []bufList; bufList = 0; |
阅读(4186) | 评论(0) | 转发(0) |