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

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)寫:

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 閱讀(688) 評(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>
            一区二区国产日产| 亚洲男人影院| 亚洲美女在线国产| 一区二区高清在线| 亚洲一线二线三线久久久| 亚洲欧美国产一区二区三区| 亚洲欧美国产精品va在线观看| 性欧美1819sex性高清| 久久精品国产久精国产一老狼 | 欧美国产激情| 欧美色图首页| 国产伦精品一区二区三区视频孕妇 | 久久精品国产77777蜜臀 | 久久久一本精品99久久精品66| 久久久久国产成人精品亚洲午夜| 久久精品电影| 欧美成人精品1314www| 91久久夜色精品国产九色| 99精品欧美一区二区三区综合在线| 在线一区观看| 久久精品国产欧美激情| 欧美成人精品在线| 国产精品免费一区豆花| 国产在线一区二区三区四区| 亚洲国产另类久久精品| 中国女人久久久| 久久国产精品一区二区三区| 欧美电影免费观看网站| 一本到12不卡视频在线dvd| 午夜精品美女自拍福到在线 | 国产日韩一区| 亚洲欧洲日夜超级视频| 亚洲欧美日韩中文播放| 久久视频一区| 日韩视频一区二区三区| 久久精品国产99精品国产亚洲性色| 欧美成人情趣视频| 国产日产亚洲精品| 99在线精品观看| 久久久欧美一区二区| 亚洲精品国产精品久久清纯直播 | 性欧美超级视频| 欧美激情视频网站| 亚洲一区亚洲| 欧美韩国日本综合| 国产午夜亚洲精品羞羞网站 | 亚洲精选91| 久久久久久久97| 一区二区高清在线观看| 久久一本综合频道| 国产模特精品视频久久久久| 日韩午夜免费视频| 久久午夜视频| 亚洲淫性视频| 欧美日韩三级视频| 在线视频国产日韩| 久久黄色影院| 在线亚洲高清视频| 欧美二区在线观看| 一区二区三区在线免费观看| 亚洲欧美在线免费| 亚洲精选在线| 免费成人在线视频网站| 国产真实久久| 欧美一级电影久久| 中文亚洲字幕| 欧美日韩国产成人高清视频| 亚洲国产精品一区二区尤物区| 久久久噜噜噜久久人人看| 在线亚洲欧美视频| 欧美日韩亚洲三区| 亚洲精品国产精品乱码不99按摩 | 亚洲精品久久久久久久久| 久久欧美中文字幕| 国内外成人在线视频| 欧美一级成年大片在线观看| 一区二区av在线| 欧美色视频在线| 亚洲视频一二三| 亚洲国产精品成人久久综合一区| 久久综合色88| 亚洲国产黄色| 欧美成年人网| 麻豆精品在线观看| 亚洲国产精品99久久久久久久久| 老司机久久99久久精品播放免费| 欧美一区二区高清在线观看| 国产嫩草影院久久久久| 午夜精品久久久久久久久久久| 99这里只有久久精品视频| 欧美另类亚洲| 亚洲午夜av在线| 99亚洲视频| 国产精品国产馆在线真实露脸| 亚洲一区二区三区免费视频| 99热精品在线观看| 国产精品第13页| 午夜精品在线观看| 亚洲欧美日韩一区二区三区在线观看 | 午夜国产精品视频免费体验区| 国产麻豆精品久久一二三| 欧美专区日韩专区| 欧美伊人久久| 在线看一区二区| 欧美激情亚洲自拍| 欧美激情亚洲自拍| 在线综合亚洲| 亚洲综合日韩| 黄色av一区| 欧美国产视频在线观看| 欧美日韩1区| 亚洲综合另类| 欧美专区18| 亚洲欧洲偷拍精品| 夜夜嗨av一区二区三区网站四季av| 国产精品v亚洲精品v日韩精品| 欧美一二三区在线观看| 久久国产精品亚洲va麻豆| 亚洲国产精品v| 亚洲狼人综合| 国产欧美日韩伦理| 免费观看不卡av| 欧美日韩国产精品专区| 午夜在线不卡| 麻豆精品一区二区综合av| 亚洲色图综合久久| 小辣椒精品导航| 亚洲国产91精品在线观看| 亚洲美女视频在线观看| 国产三级精品三级| 亚洲激情黄色| 国产亚洲精品高潮| 亚洲国产成人精品久久久国产成人一区 | 亚洲福利久久| 日韩亚洲不卡在线| 国产一区二区三区四区老人| 亚洲高清在线观看一区| 国产精品日韩| 欧美激情精品久久久久久蜜臀| 欧美性片在线观看| 美女精品在线| 国产精品国产精品| 欧美国产日本高清在线| 国产精品美女久久久| 欧美成人精品不卡视频在线观看| 国产精品久久久爽爽爽麻豆色哟哟| 久久婷婷成人综合色| 欧美日韩视频在线第一区| 久久午夜av| 国产精品福利在线观看网址| 欧美激情2020午夜免费观看| 国产精品视频自拍| 亚洲高清123| 国一区二区在线观看| 99国产精品久久| 亚洲国产精品久久久| 亚洲欧美在线播放| 一本色道久久综合狠狠躁篇的优点| 欧美一区二区三区在线视频| 国产精品99久久久久久白浆小说| 久久午夜国产精品| 久久精品久久综合| 欧美午夜电影完整版| 亚洲国产日韩美| 韩国三级在线一区| 亚洲一区二区久久| av不卡在线看| 欧美福利视频| 久久综合五月| 国产精品一二三| 亚洲免费观看在线视频| 亚洲日本在线观看| 久久综合九色综合欧美就去吻| 久久精品一区二区三区四区| 国产精品美女久久久久aⅴ国产馆| 亚洲三级免费观看| 91久久久亚洲精品| 久久国产精品一区二区三区四区 | 欧美精品一区视频| 欧美成人精品三级在线观看| 国语对白精品一区二区| 亚洲女同精品视频| 亚洲欧美视频在线观看| 欧美视频成人| 99这里只有精品| 亚洲午夜精品久久久久久浪潮| 欧美福利视频网站| 亚洲国产精品成人| 亚洲人永久免费| 欧美freesex8一10精品| 欧美福利网址| 亚洲国产一区二区三区青草影视 | 亚洲欧洲免费视频| 噜噜噜久久亚洲精品国产品小说| 久久综合狠狠综合久久综合88| 国产视频精品xxxx| 久久国产66| 理论片一区二区在线| 伊人久久久大香线蕉综合直播| 久久久久久久久久久久久久一区|