• <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>

            網(wǎng)絡(luò)服務(wù)器軟件開發(fā)/中間件開發(fā),關(guān)注ACE/ICE/boost

            C++博客 首頁 新隨筆 聯(lián)系 聚合 管理
              152 Posts :: 3 Stories :: 172 Comments :: 0 Trackbacks
                     CDR可以提供對基本數(shù)據(jù)類型如int,short,double,string等的序列化機制,簡單包裝后即可擔(dān)當(dāng)RPC中的序列化角色。
            #include <iostream>
            #include 
            <string>
            #include 
            <ace/OS.h>
            #include 
            <ace/String_Base.h>
            #include 
            <ace/CDR_Stream.h>
            using namespace std;
            #pragma comment(lib,
            "aced")

            int main(int argc, char* argv[])
            {
                cout 
            << "ACE CDR demo" << endl;

                ACE_CString sAppName 
            = "CDRDemo",sAppName2;
                ACE_CDR::Long nUID 
            = 123456,nUID2;
                ACE_CDR::Float nfPosX 
            = 120.51,nfPosX2;
                ACE_CDR::Double ndScore 
            = 120.51,ndScore2;
                ACE_CString sDummy 
            = "another string",sDummy2;
                ACE_CDR::Short  nsLength 
            = 10,nsLength2;

                ACE_OutputCDR outCDR(ACE_DEFAULT_CDR_BUFSIZE);    
                
                outCDR 
            << nUID;
                outCDR 
            << nfPosX;
                outCDR 
            << ndScore;
                outCDR 
            << sAppName;//寫字符串時,先寫入字符串的長度
                outCDR << sDummy;
                outCDR 
            << nsLength;

                cout 
            << "OutputCDR size = " << outCDR.length() << endl;

                
            //可以通過socket發(fā)送出去,而在服務(wù)端進行下面的解析
                
            //1.ACE_Message_Block *ACE_OutputCDR::begin (void)
                
            //2.通過ACE_SOCK_Stream發(fā)送出去    

                ACE_InputCDR inCDR(outCDR);

                inCDR 
            >> nUID2;
                inCDR 
            >> nfPosX2;
                inCDR 
            >> ndScore2;
                inCDR 
            >> sAppName2;
                inCDR 
            >> sDummy2;
                inCDR 
            >> nsLength2;
                    

                ACE_ASSERT(nUID 
            == nUID2);
                ACE_ASSERT(nfPosX 
            == nfPosX2);
                ACE_ASSERT(ndScore 
            == ndScore2);
                ACE_ASSERT(sAppName 
            == sAppName2);
                ACE_ASSERT(sDummy 
            == sDummy2);
                ACE_ASSERT(nsLength 
            == nsLength2);

                cout 
            << "test ok." << endl;

                
            return 0;
            }

            假若有如下的demo.idl,內(nèi)容如下:

                  struct user_info
                  {
                        int user_id;
                        string user_name;            
                  }
            利用idl_gen生成代碼時:
                  (1)如果是侵入式的方案,則生成user_info類時,自動添加成員OutputCDR和InputCDR成員,并添加pack(ACE_Message_Block &* msg)和parse(ACE_Message_Block * msg)成員函數(shù),在pack和parse里面,調(diào)到對于的CDR類,按照類中數(shù)據(jù)成員的聲明順序依次序列化,反序列化
                  (2)如果是非侵入式方案,則生成user_info類時,生成獨立函數(shù)的pack(user_info& info, ACE_Message_Block &* msg)和parse(user_info& info,ACE_Message_Block * msg),pack和parse的函數(shù)實現(xiàn)同上
            posted on 2010-12-26 09:52 true 閱讀(3233) 評論(2)  編輯 收藏 引用 所屬分類: ACE

            Feedback

            # re: ACE中簡易的序列化機制:ACE_OutputCDR/ACE_InputCDR 2010-12-30 01:45 zjh
            要注意對齊,默認(rèn)8字節(jié)對齊  回復(fù)  更多評論
              

            # re: ACE中簡易的序列化機制:ACE_OutputCDR/ACE_InputCDR 2010-12-30 17:46 true
            @zjh
            謝謝提醒。序列化用<<,反序列化用>>,不改變它的對齊規(guī)則,應(yīng)該是可以的  回復(fù)  更多評論
              

            久久天天躁狠狠躁夜夜网站| 狠狠色丁香久久综合五月| 欧美激情一区二区久久久| 久久久久波多野结衣高潮| 久久精品欧美日韩精品| 久久久久久av无码免费看大片| 少妇久久久久久被弄到高潮| 久久ZYZ资源站无码中文动漫| 品成人欧美大片久久国产欧美| 久久99国产精品久久99小说| 91久久精品91久久性色| 色播久久人人爽人人爽人人片aV | 久久久久亚洲AV成人片| 久久亚洲国产精品123区| 久久久久久久久无码精品亚洲日韩 | 97r久久精品国产99国产精| 国产精品嫩草影院久久| 久久国产色AV免费看| 超级97碰碰碰碰久久久久最新 | 一本综合久久国产二区| 久久99久久99精品免视看动漫| 亚洲欧洲久久av| 久久99久久成人免费播放| 久久综合给合久久狠狠狠97色69| 免费一级做a爰片久久毛片潮 | 精品久久久久久无码不卡| 91精品国产高清久久久久久91 | 午夜天堂精品久久久久| 亚洲精品99久久久久中文字幕| 免费精品99久久国产综合精品| 亚洲日本va中文字幕久久| 亚洲国产成人久久精品99 | 丁香五月网久久综合| 色偷偷偷久久伊人大杳蕉| 免费精品久久天干天干| 久久综合九色综合欧美就去吻| 国产999精品久久久久久| 久久精品一区二区国产| 久久久精品一区二区三区| 日本福利片国产午夜久久| 香蕉久久一区二区不卡无毒影院|