Vczh Serialization Demo :在网络上传递复杂对象
作者 佚名技术
来源 程序设计
浏览
发布时间 2012-06-29
amespace vl::serialization; 14 using namespace vl::commondata; 15 using namespace vl::communication; 16 17 class Node : public VL_SerializableObject 18 { 19 public: 20 typedef VL_AutoPtr<Node> Ptr; 21 22 virtual VUnicodeString ToString(VUnicodeString Prefix)=0; 23 }; 24 25 class NumberNode : public Node 26 { 27 public: 28 VInt Number; 29 30 NumberNode() 31 { 32 VL_SERIALIZABLE_FIELD(NumberNode,Number); 33 } 34 35 VUnicodeString ToString(VUnicodeString Prefix) 36 { 37 return Prefix+VUnicodeString(Number); 38 } 39 }; 40 41 class IdNode : public Node 42 { 43 public: 44 VUnicodeString Id; 45 46 IdNode() 47 { 48 VL_SERIALIZABLE_FIELD(IdNode,Id); 49 } 50 51 VUnicodeString ToString(VUnicodeString Prefix) 52 { 53 return Prefix+Id; 54 } 55 }; 56 57 class ListNode : public Node 58 { 59 public: 60 VL_List<Ptr , false , Node*> Children; 61 62 ListNode() 63 { 64 VL_SERIALIZABLE_FIELD(ListNode,Children); 65 } 66 67 VUnicodeString ToString(VUnicodeString Prefix) 68 { 69 VUnicodeString Result; 70 Result+=Prefix+L"List {\r\n"; 71 for(VInt i=0;i<Children.GetCount();i++) 72 { 73 if(Children[i]) 74 { 75 Result+=Children[i]->ToString(Prefix+L" ")+L"\r\n"; 76 } 77 else 78 { 79 Result+=Prefix+L" <NULL>\r\n"; 80 } 81 } 82 Result+=Prefix+L"}"; 83 return Result; 84 } 85 }; 86 87 void InitializeSeriailzer(VL_Serializer& Serializer) 88 { 89 VL_SERIALIZABLE_CLASS(&Serializer,NumberNode); 90 VL_SERIALIZABLE_CLASS(&Serializer,IdNode); 91 VL_SERIALIZABLE_CLASS(&Serializer,ListNode); 92 } 93 94 Node::Ptr BuildNode() 95 { 96 ListNode* Root=new ListNode; 97 { 98 NumberNode* Number=new NumberNode; 99 Number->Number=10; 100 Root->Children.Add(Number); 101 } 102 { 103 ListNode* List=new ListNode; 104 { 105 NumberNode* Number=new NumberNode; 106 Number->Number=20; 107 List->Children.Add(Number); 108 } 109 List->Children.Add(0); 110 { 111 IdNode* Id=new IdNode; 112 Id->Id=L"Serialization"; 113 List->Children.Add(Id); 114 } 115 Root->Children.Add(List); 116 } 117 { 118 IdNode* Id=new IdNode; 119 Id->Id=L"VCZH"; 120 Root->Children.Add(Id); 121 } 122 return Root; 123 } 124 125 void ServerMain() 126 { 127 GetConsole()->SetTitle(L"Vczh Library++ 2.0 Communication [Server]"); 128 129 VL_Serializer Serializer; 130 InitializeSeriailzer(Serializer); 131 132 VL_SocketServer Server(vspTCP,L"8000",false); 133 if(Server.IsSuccess()) 134 { 13 |
凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢! |
你可能对下面的文章感兴趣
上一篇: C++必知必会(一) 数据抽象下一篇: POJ 1694 C++ £¨??Dò£?
关于Vczh Serialization Demo :在网络上传递复杂对象的所有评论