青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

qiezi的學(xué)習(xí)園地

AS/C/C++/D/Java/JS/Python/Ruby

  C++博客 :: 首頁(yè) :: 新隨筆 ::  ::  :: 管理 ::
本篇沒(méi)什么清晰的目的,只是解釋一下前面的幾個(gè)問(wèn)題,并提出一些新的目標(biāo)。

在“asgard項(xiàng)目遺留問(wèn)題”中,我簡(jiǎn)單提到了幾個(gè)問(wèn)題,并且想了一些解決方案。

其中,最首要解決的是第2條“服務(wù)對(duì)象的大小”和第5條“全局元信息”,這2條將影響到調(diào)用機(jī)制、call對(duì)象的生成。一個(gè)調(diào)用將生成一個(gè)call對(duì)象,由線程池來(lái)處理,同步調(diào)用將由異步調(diào)用來(lái)模擬。

在call對(duì)象中,保存了所有in/out參數(shù)的包裝對(duì)象。當(dāng)處理同步調(diào)用時(shí),由于out參數(shù)可能是一個(gè)棧上對(duì)象(或簡(jiǎn)單類型,這里統(tǒng)稱對(duì)象),所以需要另一個(gè)包裝類——outret模板類,它保存out參數(shù)的引用。

當(dāng)同步調(diào)用發(fā)生時(shí),生成一個(gè)call對(duì)象(當(dāng)然out參數(shù)的引用已經(jīng)包含在里面),把這個(gè)call對(duì)象交給線程池處理,調(diào)用的線程阻塞等待調(diào)用結(jié)束后被喚醒,這就是所謂的異步調(diào)用模擬同步調(diào)用。由于異步調(diào)用被包裝起來(lái)了,所以在調(diào)用者看來(lái)跟同步調(diào)用沒(méi)什么區(qū)別。當(dāng)然這個(gè)動(dòng)作并非必要,完全可以不使用模擬,而采用真正的同步調(diào)用,只是看到ICE是這么實(shí)現(xiàn)的,心癢癢而已。


asgard的目標(biāo)是把現(xiàn)有的系統(tǒng)功能包裝成為服務(wù),所以在通用方面我考慮得比較多。

比如服務(wù)端要開(kāi)放下面這樣一個(gè)服務(wù):

service StringService
{
    Method 
<string(inout<string>in<string>)> strcat;
    Method 
<string(inout<string>in<string>in<uint>)> strncat;
};

并且把C標(biāo)準(zhǔn)庫(kù)中的strcat和strncat作為這2個(gè)方法的實(shí)現(xiàn)。

看一下存在哪些問(wèn)題?

1、函數(shù)第1個(gè)參數(shù)如果直接映射為string,在服務(wù)端將出現(xiàn)緩沖區(qū)溢出。

2、C標(biāo)準(zhǔn)庫(kù)中的strcat返回值是一個(gè)指針,它指向strcat的第一個(gè)參數(shù)(搞這個(gè)標(biāo)準(zhǔn)庫(kù)的人是不是沒(méi)想過(guò)這個(gè)返回值多么沒(méi)用啊??直接返回一個(gè)操作的長(zhǎng)度不是更好?),在服務(wù)端發(fā)回客戶端時(shí),這個(gè)并不需要被發(fā)回來(lái),因?yàn)閟trcat的第1個(gè)參數(shù)已經(jīng)能帶回操作后的內(nèi)容了。

3、strncat的第3個(gè)參數(shù)表示第1個(gè)緩沖區(qū)參數(shù)的長(zhǎng)度,如果能把它和第1個(gè)參數(shù)合起來(lái)用一個(gè)buffer對(duì)象表示,就能省事了。

理想情況下,我們的服務(wù)對(duì)象這樣來(lái)寫(xiě):

service StringService
{
    Method 
<void(inout< buffer<char> >in<string>)> strcat;
    Method 
<void(inout< buffer<char> >in<string>)> strncat;
};

我們的目的是把老的代碼包裝成新鮮時(shí)髦的服務(wù),當(dāng)然不用保留老式代碼中的指針,以及使用指針和長(zhǎng)度2個(gè)值來(lái)表示一個(gè)緩沖區(qū)的做法。buffer類在構(gòu)造時(shí)要接受一個(gè)size_t參數(shù),指定緩沖區(qū)的大小。

這在服務(wù)端將產(chǎn)生映射問(wèn)題,由于這個(gè)Method定義的形式和C標(biāo)準(zhǔn)庫(kù)中的函數(shù)形式不一致。

我想應(yīng)該去實(shí)現(xiàn)一個(gè)適配器模板類,比如:

this->strcat.setFunction (adapter<char*(char*const char*), convert<void0>(inout< buffer<char> >in<string>)> (::strcat));

this->strncat.setFunction (adapter<char*(char*const char*, size_t), convert<void0>(inout< buffer<char> >in<string>, length<in<uint>1>)> (::strncat));

convert<void, 0>表示把第0個(gè)參數(shù)(這里指返回值)轉(zhuǎn)成void類型,length<in<uint>, 1>表示這個(gè)參數(shù)類型是int<uint>,它是從第1個(gè)參數(shù)中提取的長(zhǎng)度,大致就是使用這種規(guī)則,語(yǔ)法可能以后會(huì)有變動(dòng)。

這點(diǎn)內(nèi)容是我?guī)讉€(gè)月前就在考慮的,也是我想做這個(gè)項(xiàng)目的動(dòng)機(jī),不過(guò)直到最近一段時(shí)間才從可行性方面仔細(xì)考慮。

通過(guò)前面幾個(gè)模板的練習(xí),現(xiàn)在已經(jīng)大致知道哪些東西是可以用模板做出來(lái),哪些不能使用模板,這應(yīng)該是最大的收獲了。很多東西單靠模板或是虛函數(shù)都不好完成,但結(jié)合起來(lái)就能產(chǎn)生意想不到的效果。



又仔細(xì)想了一下,上面的代碼應(yīng)該還可以修改簡(jiǎn)化:

this->strcat.setFunction (adapter<convert<void0>(inout< buffer<char> >in<string>)> ( ) (::strcat));

this->strncat.setFunction (adapter<convert<void0>(inout< buffer<char> >in<string>, length<in<uint>1>)> ( ) (::strncat));

使用一個(gè)仿函數(shù)來(lái)做,函數(shù)指針的類型可以從operator ()的參數(shù)(模板參數(shù))中推導(dǎo)出來(lái)。
posted on 2005-09-28 22:57 qiezi 閱讀(686) 評(píng)論(3)  編輯 收藏 引用 所屬分類: C++asgard項(xiàng)目
青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <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>
            国产精品尤物| 日韩五码在线| 一区二区高清在线观看| 亚洲精品久久久久久久久久久久| 在线免费观看欧美| 久久久久久久综合色一本| 麻豆乱码国产一区二区三区| 国产精品啊v在线| 国产日韩在线看片| 一区二区欧美国产| 亚洲激情视频在线观看| 日韩视频在线免费观看| 亚洲一级电影| 亚洲激情视频在线播放| 亚洲天堂av高清| 欧美在线黄色| 国产精品美女www爽爽爽| 亚洲激情影视| 亚洲高清不卡在线观看| 香蕉尹人综合在线观看| 久久先锋资源| 亚洲黄一区二区| 久久躁日日躁aaaaxxxx| 午夜亚洲性色福利视频| 欧美久久九九| 亚洲精品久久视频| 日韩视频精品在线| 国产精品久久久久久妇女6080 | 欧美一区综合| 亚洲高清精品中出| 你懂的视频一区二区| 国产欧美日韩一级| 午夜精品久久久久影视| 久久久青草青青国产亚洲免观| 亚洲午夜女主播在线直播| 欧美日韩一区视频| 在线视频精品一| 亚洲国产欧美一区| 欧美日韩免费| 性久久久久久久久久久久| 香蕉久久一区二区不卡无毒影院 | 夜夜嗨av色综合久久久综合网| 在线亚洲一区| 亚洲国产美女久久久久 | 亚洲国产日韩美| 亚洲国产片色| 欧美激情精品久久久久| 国产免费亚洲高清| 亚洲在线第一页| 久久伊人免费视频| 亚洲国产成人久久| 久久激情综合网| 麻豆精品传媒视频| 一区二区三区在线视频免费观看 | 欧美女同在线视频| 99国产精品久久久久久久成人热 | 亚洲精品小视频| 欧美性做爰毛片| 亚洲美女av在线播放| 亚洲神马久久| 艳女tv在线观看国产一区| 久久久蜜桃一区二区人| 最新亚洲电影| 亚洲一区二区三区高清| 亚洲人成小说网站色在线| 一区二区三区视频在线播放| 亚洲欧美日韩视频二区| 伊人成人在线| 久久大逼视频| 麻豆精品精品国产自在97香蕉| 国产精品第三页| 日韩视频免费观看高清在线视频| 影音先锋中文字幕一区| 美女诱惑黄网站一区| 久久久久综合| 国产亚洲毛片| 欧美在线视频观看| 欧美激情视频网站| 国产精品久久久久9999| 亚洲日本欧美天堂| 久热精品视频在线观看| 国产乱码精品一区二区三| 亚洲成人资源网| 国产精品系列在线播放| 久久国产精品久久久久久电车| 午夜精品久久久久久久男人的天堂| 欧美日韩一区不卡| 欧美激情精品久久久久久大尺度| 亚洲在线一区二区| 国产精品日韩专区| 欧美一区三区二区在线观看| 亚洲四色影视在线观看| 亚洲黄色视屏| 欧美一区成人| 亚洲国产乱码最新视频 | 亚洲综合成人婷婷小说| 亚洲欧美国产另类| 国产精品久久久久久久久| 一个人看的www久久| 久久婷婷国产综合精品青草 | 精品不卡一区| 黑丝一区二区| 欧美日韩在线三级| 卡一卡二国产精品| 欧美尤物一区| 久久久最新网址| 亚洲一区二区三区四区在线观看| 欧美国产综合| 91久久综合亚洲鲁鲁五月天| 国产精品久久久999| 久久在线91| 欧美激情中文字幕乱码免费| 亚洲一区二区欧美日韩| 亚洲第一中文字幕| 欧美日韩在线观看一区二区| 亚洲一区二区高清| 久久综合导航| 在线播放亚洲| 国产精品久久久久久模特| 久久欧美肥婆一二区| 亚洲国产欧美精品| 亚洲国产高潮在线观看| 美女国产一区| 亚洲免费在线播放| 亚洲人成人一区二区在线观看| 一区二区三区四区国产精品| 91久久夜色精品国产网站| 国产视频久久网| 国产精品嫩草久久久久| 欧美精品亚洲| 免费观看成人| 国产精品激情| 国产精品一区在线观看| 国模叶桐国产精品一区| 亚洲日本欧美日韩高观看| 精品av久久久久电影| 国内在线观看一区二区三区| 91久久亚洲| 久久精品最新地址| 亚洲精品精选| 正在播放欧美视频| 国产午夜精品视频免费不卡69堂| 狠狠色狠狠色综合系列| 亚洲第一毛片| 亚洲欧美日韩精品久久| 一区二区三区国产精品| 亚洲国产精品嫩草影院| 亚洲视频中文字幕| 久久精品国产免费观看| 国产老女人精品毛片久久| 国产精品黄色| 国模 一区 二区 三区| 欧美在线播放| 亚洲国产美女精品久久久久∴| 亚洲视频免费在线| 免费观看日韩av| 欧美日韩午夜激情| 在线日本高清免费不卡| 午夜一区在线| 亚洲国产美女精品久久久久∴| 一本色道久久综合亚洲91| 久久一区二区三区四区| 久久久久国产精品人| 欧美久久久久免费| 亚洲裸体在线观看| 欧美激情中文字幕乱码免费| 日韩视频免费在线观看| 免费影视亚洲| 国产日韩欧美亚洲一区| 亚洲美洲欧洲综合国产一区| 亚洲一区久久久| 欧美在线国产| 亚洲高清免费| 亚洲第一黄色网| 欧美一区二区三区日韩| 国产亚洲精品久久久久动| 午夜精品久久久久久| 亚洲一区免费在线观看| 国产精品户外野外| 在线视频日本亚洲性| 久久网站免费| 欧美人与性动交cc0o| 一区二区高清| 欧美jizz19hd性欧美| 蜜臀99久久精品久久久久久软件| 亚洲欧美一区二区视频| 国产区在线观看成人精品| 欧美日韩国产成人在线免费| 亚洲激情视频| 免费一级欧美在线大片| 欧美日韩国产小视频在线观看| 一本色道久久综合| 99精品国产福利在线观看免费 | 国产区精品在线观看| 久久人人97超碰国产公开结果| 亚洲精品亚洲人成人网| 国产精品成av人在线视午夜片| 久久久久.com| 欧美日韩国产综合久久| 亚洲一区二区三区四区中文 |