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

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 ()的參數(模板參數)中推導出來。
posted on 2005-09-28 22:57 qiezi 閱讀(682) 評論(3)  編輯 收藏 引用 所屬分類: C++asgard項目
青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <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>
            亚洲天堂免费观看| 久久成人免费电影| 久久全球大尺度高清视频| 99ri日韩精品视频| 亚洲图片欧美午夜| 亚洲国产精品美女| 久久精彩免费视频| 久久久久99| 久久久精品性| 久久国产欧美日韩精品| 亚洲欧美中文另类| 亚洲女爱视频在线| 日韩性生活视频| 亚洲欧洲99久久| 亚洲国产欧美久久| 亚洲国产一区二区在线| 亚洲第一伊人| 欧美日韩国产系列| 亚洲免费电影在线| 香蕉尹人综合在线观看| 亚洲欧美激情在线视频| 午夜精彩视频在线观看不卡 | 欧美日韩国产在线一区| 亚洲美女在线观看| 亚洲一区三区在线观看| 在线成人亚洲| 免费在线欧美黄色| 亚洲精品一区二区在线| 亚洲综合精品自拍| 亚洲香蕉成视频在线观看| 久久久之久亚州精品露出| 久久免费偷拍视频| 亚洲麻豆一区| 农夫在线精品视频免费观看| 亚洲一区综合| 中文精品99久久国产香蕉| 欧美中文在线观看| 欧美午夜免费影院| 国产精品久久久久一区二区三区| 永久域名在线精品| 亚洲日本成人网| 国语自产精品视频在线看抢先版结局| 尤物99国产成人精品视频| 欧美在线视频一区| 国产视频精品va久久久久久| 亚洲女与黑人做爰| 欧美在线视频在线播放完整版免费观看| 亚洲深夜福利在线| 先锋影音网一区二区| 国产一区二区三区精品久久久| 亚洲国产激情| 国产精品vvv| 欧美一区二区啪啪| 麻豆成人精品| 亚洲在线视频观看| 久久精品91久久香蕉加勒比 | 免费国产一区二区| 91久久线看在观草草青青| 亚洲高清视频在线| 国产精品成av人在线视午夜片 | 伊人精品视频| 欧美精品自拍| 欧美激情一区二区三区高清视频| 中国成人黄色视屏| 99在线精品免费视频九九视| 国产色综合网| 欧美有码视频| 亚洲欧美另类在线| 伊人激情综合| 亚洲激情女人| 久久精品99久久香蕉国产色戒| 国产亚洲网站| 久久精品最新地址| 亚洲图片你懂的| 久久精品视频在线观看| 国外成人性视频| 欧美区国产区| 亚洲免费不卡| 午夜视频一区二区| 国内一区二区在线视频观看 | 亚洲午夜激情| 狠狠干成人综合网| 99精品国产热久久91蜜凸| 欧美视频官网| 亚洲一区二区三区高清不卡| 亚洲精品一区在线观看| 欧美xxx成人| 亚洲婷婷免费| 国产精品入口日韩视频大尺度| 欧美va天堂va视频va在线| 亚洲女同同性videoxma| 亚洲在线日韩| 一本大道久久a久久精二百| 永久久久久久| 亚洲女女女同性video| 国产精品扒开腿做爽爽爽软件| 亚洲欧美资源在线| 91久久极品少妇xxxxⅹ软件| 亚洲一区二区在线播放| 欧美手机在线| 狠狠色狠狠色综合日日小说| 欧美精品一区二区三| 国产欧美一二三区| 欧美成人一品| 老司机成人网| 久久这里只有| 国产色综合网| 欧美一区二区精品在线| 久久亚洲捆绑美女| 午夜激情综合网| 亚洲综合好骚| 91久久午夜| 亚洲视频在线二区| 女同性一区二区三区人了人一| 亚洲高清二区| 久久激情视频| 99re6热只有精品免费观看| 午夜精品剧场| 欧美日韩国产成人| 日韩一级黄色大片| 久久久www成人免费精品| 亚洲欧洲日本一区二区三区| 亚洲欧美网站| 欧美性事免费在线观看| 国产精品午夜在线| 亚洲国产老妈| 亚洲一区二区视频在线| 亚洲综合另类| 在线性视频日韩欧美| 蜜桃av一区二区| 欧美视频一区二区三区…| 久久久久久久一区二区三区| 国产精品免费视频观看| 欧美综合77777色婷婷| 欧美v国产在线一区二区三区| 欧美国产日本在线| 亚洲精品美女在线观看| 久久九九久久九九| 久久精品人人爽| 亚洲精品乱码久久久久久日本蜜臀 | 一区二区三区日韩欧美精品| 亚洲一区在线看| 日韩亚洲欧美成人一区| 欧美日韩一区二区在线观看视频| 夜夜嗨一区二区三区| 久久亚洲精品网站| 亚洲免费观看在线观看| 欧美女主播在线| 亚洲人成绝费网站色www| 亚洲一区二区三区四区在线观看| 欧美激情一区二区三区在线视频观看 | 欧美gay视频激情| 午夜视频久久久| 亚洲二区视频| 99视频超级精品| 国产午夜一区二区三区| 久久亚洲色图| 欧美高清视频www夜色资源网| 好看不卡的中文字幕| 亚洲一区二区三区免费视频 | 欧美在线视频播放| 美女被久久久| 激情综合视频| 亚洲与欧洲av电影| 亚洲美女在线看| 亚洲欧美一区二区三区极速播放| 在线电影院国产精品| 夜夜嗨av一区二区三区四区| 午夜一级久久| 久久国产日韩| 国内免费精品永久在线视频| 久久伊人精品天天| 在线亚洲精品| 欧美日本中文| 夜夜狂射影院欧美极品| 亚洲欧美综合另类中字| 亚洲欧美国产va在线影院| 欧美一区二区三区另类| 欧美一区二区在线播放| 亚洲福利精品| 欧美日韩中文字幕日韩欧美| 在线视频亚洲欧美| 久久亚洲国产精品日日av夜夜| 国产在线精品自拍| 午夜亚洲一区| 99www免费人成精品| 韩国一区二区三区美女美女秀| 欧美一区二区播放| 亚洲一区欧美二区| 亚洲高清不卡| 久久久欧美一区二区| 国产乱码精品一区二区三区五月婷| 一区二区三区高清在线观看| 欧美在线观看天堂一区二区三区| 欧美人与禽猛交乱配视频| 亚洲天堂成人在线观看| 亚洲春色另类小说| 欧美bbbxxxxx| 久久这里只精品最新地址| 亚洲国产精品久久久久婷婷老年|