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

qiezi的學習園地

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

  C++博客 :: 首頁 :: 新隨筆 ::  ::  :: 管理 ::
本篇沒什么清晰的目的,只是解釋一下前面的幾個問題,并提出一些新的目標。

在“asgard項目遺留問題”中,我簡單提到了幾個問題,并且想了一些解決方案。

其中,最首要解決的是第2條“服務對象的大小”和第5條“全局元信息”,這2條將影響到調用機制、call對象的生成。一個調用將生成一個call對象,由線程池來處理,同步調用將由異步調用來模擬。

在call對象中,保存了所有in/out參數的包裝對象。當處理同步調用時,由于out參數可能是一個棧上對象(或簡單類型,這里統稱對象),所以需要另一個包裝類——outret模板類,它保存out參數的引用。

當同步調用發生時,生成一個call對象(當然out參數的引用已經包含在里面),把這個call對象交給線程池處理,調用的線程阻塞等待調用結束后被喚醒,這就是所謂的異步調用模擬同步調用。由于異步調用被包裝起來了,所以在調用者看來跟同步調用沒什么區別。當然這個動作并非必要,完全可以不使用模擬,而采用真正的同步調用,只是看到ICE是這么實現的,心癢癢而已。


asgard的目標是把現有的系統功能包裝成為服務,所以在通用方面我考慮得比較多。

比如服務端要開放下面這樣一個服務:

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

并且把C標準庫中的strcat和strncat作為這2個方法的實現。

看一下存在哪些問題?

1、函數第1個參數如果直接映射為string,在服務端將出現緩沖區溢出。

2、C標準庫中的strcat返回值是一個指針,它指向strcat的第一個參數(搞這個標準庫的人是不是沒想過這個返回值多么沒用啊??直接返回一個操作的長度不是更好?),在服務端發回客戶端時,這個并不需要被發回來,因為strcat的第1個參數已經能帶回操作后的內容了。

3、strncat的第3個參數表示第1個緩沖區參數的長度,如果能把它和第1個參數合起來用一個buffer對象表示,就能省事了。

理想情況下,我們的服務對象這樣來寫:

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

我們的目的是把老的代碼包裝成新鮮時髦的服務,當然不用保留老式代碼中的指針,以及使用指針和長度2個值來表示一個緩沖區的做法。buffer類在構造時要接受一個size_t參數,指定緩沖區的大小。

這在服務端將產生映射問題,由于這個Method定義的形式和C標準庫中的函數形式不一致。

我想應該去實現一個適配器模板類,比如:

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個參數(這里指返回值)轉成void類型,length<in<uint>, 1>表示這個參數類型是int<uint>,它是從第1個參數中提取的長度,大致就是使用這種規則,語法可能以后會有變動。

這點內容是我幾個月前就在考慮的,也是我想做這個項目的動機,不過直到最近一段時間才從可行性方面仔細考慮。

通過前面幾個模板的練習,現在已經大致知道哪些東西是可以用模板做出來,哪些不能使用模板,這應該是最大的收獲了。很多東西單靠模板或是虛函數都不好完成,但結合起來就能產生意想不到的效果。



又仔細想了一下,上面的代碼應該還可以修改簡化:

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));

使用一個仿函數來做,函數指針的類型可以從operator ()的參數(模板參數)中推導出來。
青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <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亚洲va日韩∨a综合色| 久久精品一区四区| 欧美日韩国产高清| 欧美成人官网二区| 欧美精品三级日韩久久| 欧美日韩国产黄| 国产精品va在线播放| 欧美视频免费| 国产欧美日韩免费| 亚洲夫妻自拍| 亚洲小说春色综合另类电影| 性欧美videos另类喷潮| 老司机午夜精品| 国产精品亚洲片夜色在线| 亚洲精品一品区二品区三品区| 国产精品久线观看视频| 国产一区二区三区四区| 亚洲国产欧美日韩精品| 亚洲少妇诱惑| 久久综合给合久久狠狠色| 亚洲高清自拍| 一区二区三区久久久| 亚洲欧美日韩国产综合| 卡一卡二国产精品| 国产精品男gay被猛男狂揉视频| 狠狠噜噜久久| 亚洲午夜在线| 久久综合电影一区| 亚洲调教视频在线观看| 麻豆成人小视频| 国产精品老女人精品视频| 欲香欲色天天天综合和网| 亚洲免费中文字幕| 亚洲国产高清一区| 久久人人97超碰人人澡爱香蕉| 欧美日在线观看| 亚洲国产精品成人va在线观看| 亚洲欧美日韩综合| 亚洲人成人一区二区三区| 久久国产精品72免费观看| 欧美午夜视频一区二区| 亚洲精品久久久久久下一站| 久久久国产精品亚洲一区| 一区二区三区日韩欧美| 欧美激情精品久久久| 尤妮丝一区二区裸体视频| 欧美在线一二三| 亚洲午夜av在线| 国产精品www.| 亚洲一区二区三区免费在线观看| 亚洲高清免费| 欧美1区2区| 91久久精品国产91性色| 浪潮色综合久久天堂| 久久精品成人| 一区在线免费观看| 噜噜爱69成人精品| 久久久99精品免费观看不卡| 国产综合久久久久久| 羞羞答答国产精品www一本| 日韩系列欧美系列| 国产精品qvod| 亚洲免费影视| 亚洲欧美一区二区激情| 国产女主播一区二区三区| 午夜免费久久久久| 性色av一区二区三区| 国产一区二区三区日韩欧美| 西瓜成人精品人成网站| 亚洲欧洲一区二区在线观看 | 欧美韩日一区| 狠狠久久综合婷婷不卡| 久久亚洲一区二区| 久久精品二区| 亚洲欧洲一区二区三区久久| 亚洲国产婷婷| 欧美视频在线免费看| 欧美影院成人| 久久综合成人精品亚洲另类欧美| 亚洲国产精品精华液网站| 亚洲黄一区二区| 国产精品嫩草影院av蜜臀| 久久精品亚洲一区二区三区浴池| 久久精品一区| 在线综合亚洲| 小嫩嫩精品导航| 亚洲欧洲精品一区二区三区波多野1战4| 91久久精品日日躁夜夜躁国产| 欧美视频一区二区| 老牛嫩草一区二区三区日本| 欧美高清视频一区二区| 亚洲欧美日韩国产中文在线| 久久成人资源| 一区二区三区产品免费精品久久75 | 一本久道综合久久精品| 亚洲性xxxx| 亚洲国产mv| 亚洲在线一区二区| 亚洲国产日韩欧美综合久久| 亚洲一区观看| 亚洲精品中文字幕在线观看| 亚洲欧美国产高清va在线播| 亚洲国产欧美一区| 午夜精品国产| 在线亚洲免费| 美女久久网站| 欧美资源在线观看| 欧美日韩成人| 欧美国产精品va在线观看| 国产精品美女久久久久久2018| 欧美激情国产高清| 国产一区二区三区高清| 99视频精品在线| 亚洲人成网在线播放| 欧美一区二区视频观看视频| 亚洲一区二区三区在线观看视频| 男女视频一区二区| 狂野欧美一区| 国内自拍一区| 午夜精品福利视频| 午夜国产一区| 国产精品久久久久7777婷婷| 亚洲欧洲日韩女同| 亚洲欧洲在线视频| 狼人天天伊人久久| 美国成人毛片| 黄色精品一区| 亚洲欧美成人网| 欧美黄色影院| 一区二区精品| 欧美激情导航| 亚洲第一天堂无码专区| 经典三级久久| 久久露脸国产精品| 乱码第一页成人| 韩国精品在线观看| 久久国产精品久久国产精品 | 最近看过的日韩成人| 亚洲欧洲日本在线| 麻豆精品一区二区av白丝在线| 老司机一区二区三区| 一区二区三区在线高清| 久久久久www| 欧美二区乱c少妇| 亚洲人成绝费网站色www| 欧美大片一区| 99亚洲一区二区| 欧美一区亚洲| 一区在线影院| 欧美激情综合网| 在线亚洲自拍| 久久久久久9999| 亚洲国产你懂的| 欧美人与禽猛交乱配| 中文在线一区| 狂野欧美一区| 在线午夜精品| 国产精品一区二区久久精品| 欧美在线国产精品| 亚洲国产成人久久综合一区| 日韩亚洲欧美精品| 国产精品久久久亚洲一区| 欧美伊人久久| 亚洲人成精品久久久久| 欧美一级理论片| 最新69国产成人精品视频免费| 欧美女人交a| 欧美在线免费一级片| 亚洲人精品午夜在线观看| 亚洲欧美日韩在线播放| 亚洲福利视频网| 国产精品女同互慰在线看| 巨乳诱惑日韩免费av| 一区二区三区av| 欧美国产日韩视频| 欧美一区二区三区喷汁尤物| 亚洲激情国产精品| 国产日韩欧美三级| 欧美区高清在线| 久久久久久国产精品mv| 亚洲图中文字幕| 亚洲高清不卡在线| 久久一二三国产| 亚洲欧美日韩一区二区三区在线| 伊人成年综合电影网| 国产精品日韩精品欧美精品| 欧美激情视频在线播放| 久久久久久久999精品视频| 一区二区高清视频在线观看| 欧美a级片网| 久久av一区二区三区亚洲| 一区二区欧美日韩| 亚洲黄色av| 在线免费精品视频| 国产视频在线一区二区 | 亚洲激情视频在线| 一区二区三区我不卡| 国产欧美精品日韩精品| 欧美午夜精彩| 亚洲免费在线播放|