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

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>
            亚洲欧洲日本mm| 9色精品在线| 性色av香蕉一区二区| 中日韩视频在线观看| 国产精品男女猛烈高潮激情| 新狼窝色av性久久久久久| 欧美一区2区三区4区公司二百| 国产日韩精品久久| 老司机aⅴ在线精品导航| 久久久久久网| 一区二区三区回区在观看免费视频| 亚洲精品欧美专区| 国产精品视频免费一区| 久久成人在线| 欧美激情一区二区| 亚洲一区二区在线观看视频| 小黄鸭精品aⅴ导航网站入口| 伊人精品久久久久7777| 亚洲精品视频一区| 国产亚洲观看| 亚洲欧洲日本mm| 国产一区二区剧情av在线| 欧美激情视频免费观看| 国产精品久久久久婷婷| 欧美成人精品三级在线观看| 欧美日韩四区| 欧美 日韩 国产精品免费观看| 欧美精品一区二区三区在线看午夜| 亚洲欧美日韩国产精品| 久久人人爽爽爽人久久久| 在线视频日韩精品| 久久一区欧美| 久久国产黑丝| 欧美视频在线观看免费| 欧美国产日韩在线| 国产日韩欧美精品| 一区二区三区日韩精品视频| 亚洲第一区在线观看| 亚洲在线不卡| 亚洲香蕉网站| 欧美护士18xxxxhd| 免费观看在线综合| 国产亚洲毛片在线| 亚洲视频精品| 亚洲午夜精品久久| 免费看成人av| 欧美成人一区二区三区| 国产日韩精品一区二区| 一本色道久久综合亚洲精品不 | 国内成+人亚洲+欧美+综合在线| 欧美激情片在线观看| 国模私拍视频一区| 一区二区三区视频在线观看| 亚洲精品久久久久中文字幕欢迎你 | 欧美日韩你懂的| 欧美国产先锋| 在线观看国产精品淫| 午夜精品美女自拍福到在线 | 伊人久久亚洲美女图片| 亚洲综合精品自拍| 亚洲欧美一区二区激情| 欧美日韩免费看| 91久久中文字幕| 亚洲精品国产欧美| 美女久久一区| 亚洲成在人线av| 亚洲国产婷婷| 欧美成人黑人xx视频免费观看| 免费日本视频一区| 亚洲电影免费| 欧美成人免费一级人片100| 欧美第一黄网免费网站| 亚洲国产裸拍裸体视频在线观看乱了| 欧美一区在线视频| 久久久青草青青国产亚洲免观| 国产精品一区亚洲| 欧美一区二区三区在线| 久久国产精品99国产| 国产午夜精品久久久久久免费视| 性欧美大战久久久久久久免费观看| 欧美一级专区免费大片| 国产亚洲精品久久久久久| 久久爱www久久做| 欧美激情精品久久久久久久变态| 亚洲国产一区在线| 欧美日韩三区四区| 亚洲在线免费视频| 久久综合给合| 亚洲片国产一区一级在线观看| 欧美黄免费看| 亚洲综合导航| 嫩草国产精品入口| 亚洲深夜福利网站| 国产亚洲一区二区精品| 久久精品亚洲一区二区三区浴池| 亚洲东热激情| 午夜久久久久久久久久一区二区| 激情伊人五月天久久综合| 免费精品视频| 亚洲一区二区三区免费观看| 久久综合伊人| 亚洲一区二区三区在线视频| 国产一区二区三区高清在线观看| 欧美超级免费视 在线| 亚洲一区影院| 亚洲精品1234| 久久美女性网| 亚洲一区二区高清| 亚洲大胆女人| 国产精品亚洲综合久久| 美女诱惑一区| 先锋资源久久| 亚洲乱码视频| 另类国产ts人妖高潮视频| 亚洲一区二区三区视频| 亚洲福利视频网| 国产午夜精品一区理论片飘花| 欧美激情一区二区三级高清视频| 午夜亚洲激情| 欧美一级视频精品观看| 久久成人综合网| 亚洲私拍自拍| 亚洲日韩欧美视频一区| 噜噜噜91成人网| 欧美在线观看天堂一区二区三区| 日韩视频三区| 亚洲国产日韩欧美在线动漫| 国产精品亚洲аv天堂网| 欧美精品一区三区| 免费中文日韩| 久久久精品国产免费观看同学| 亚洲一区影音先锋| 亚洲私人影院| 99伊人成综合| 亚洲精品乱码视频| 亚洲韩国日本中文字幕| 欧美成人69av| 欧美超级免费视 在线| 久久久精品免费视频| 欧美一区二区国产| 午夜精品影院| 欧美亚洲在线观看| 欧美亚洲一区三区| 午夜在线a亚洲v天堂网2018| 亚洲一区国产精品| 亚洲一区二区三区精品动漫| 中日韩美女免费视频网站在线观看| 日韩网站在线看片你懂的| 亚洲区在线播放| 夜夜嗨av一区二区三区四季av| 亚洲美女性视频| 在线一区二区三区做爰视频网站 | 欧美日韩亚洲综合| 欧美色视频一区| 国产精品成人va在线观看| 欧美午夜www高清视频| 欧美午夜无遮挡| 国产亚洲毛片在线| 在线看视频不卡| 99在线视频精品| 亚洲综合好骚| 久久精品国内一区二区三区| 久久亚洲电影| 亚洲第一色在线| 日韩亚洲成人av在线| 亚洲欧美久久| 久久青草欧美一区二区三区| 免费看成人av| 国产精品久久久久久久第一福利 | 欧美精品免费看| 国产伦精品一区二区| 精品999在线观看| 日韩视频在线一区二区| 亚洲尤物在线视频观看| 久久精品人人| 亚洲国产婷婷综合在线精品| 一区二区欧美视频| 久久久99爱| 欧美日韩在线播放三区| 国产一区二区三区在线观看免费视频 | 欧美精品一区视频| 国产日韩欧美不卡| 亚洲区一区二| 久久国产精品电影| 一本一道久久综合狠狠老精东影业| 亚洲欧美日韩在线播放| 欧美成人第一页| 国产手机视频一区二区| 日韩视频在线免费观看| 久久久久久久久久久久久久一区 | 老鸭窝毛片一区二区三区 | 亚洲激情一区二区| 欧美一区二区精品久久911| 欧美一二三区精品| 亚洲国产午夜| 久久久久久久综合| 国产精品伊人日日| 99在线视频精品| 欧美大香线蕉线伊人久久国产精品| 亚洲欧美日韩网|