在虛擬檔案系統的訊息佇列裡,主要就是llvfsthread::request類的請求,request類是巢狀類,定義在llvfsthread類裡面。它主要實現對類llvfs的封裝訪問,讓操作更加方便一些,當然它是繼續queuedrequest類的,這樣才可以新增到訊息佇列裡去,否則不能新增到這個訊息佇列容器,也不能實現請求處理的多型了。
下面是類request的建構函式。
#001 llvfsthread::request::request(handle_t handle, u32 priority, u32 flags,
#002
operation_t op, llvfs* vfs,
#003
const lluuid &file_id, const llassettype::etype file_type,
#004
u8* buffer, s32 offset, s32 numbytes) :
#005
queuedrequest(handle, priority, flags),
#006
moperation(op),
#007
mvfs(vfs),
#008
mfileid(file_id),
#009
mfiletype(file_type),
#010
mbuffer(buffer),
#011
moffset(offset),
#012
mbytes(numbytes),
#013
mbytesread(0)
#014
寫資料到虛擬檔案系統。
#024
if (moperation == file_write)
#025
#031
#032
}重新命名檔名稱。
#033
else if (moperation == file_rename)
#034
從虛擬檔案系統裡讀取資料。
#037
else // if (moperation == file_read)
#038
#041 }
#042
下面的函式是正式開始操作虛擬檔案系統,
#001 bool llvfsthread::request::processrequest()
#002
如果是寫資料,就呼叫虛擬檔案系統的storedata函式來寫資料。
#011
else if (moperation == file_write)
#012
如果是重新命名檔名稱,就呼叫虛擬檔案系統的函式renamefile。
#017
else if (moperation == file_rename)
#018
#026
else
#027
#030
return complete;
#031 }
通過上面函式呼叫,就把其它對虛擬檔案系統的操作轉換為對成員mvfs的操作,這樣就非常方便系統的更新,容易增加新的功能。
第二人生的原始碼分析 2 第二人生的基本功能
分享一下我老師大神的人工智慧教程!零基礎,通俗易懂!第二人生的基功能可以定義為網路遊戲 社交網路和 web2.0 作為網路遊戲,它可以讓人扮演角色,也就是第二人生裡的居民。居民只要買到地,或者租到地後就可以建造各種各樣的自己想得到的東西。比如建造遊樂園,或者建造電影院,又或者建造過山車。同時,還可以...
第二人生的原始碼分析 八十 介面語言的選擇
隨著全球化的發展,地球變得平坦了。我有乙個同事現在還在美國 oracle進行學習,說明軟體是真正的無國界產品。那麼在第二人生裡,到底是怎麼樣實現多語言的支援呢?帶著這個問題來分析下面一段 如下 001void lluictrlfactory setuppaths 002 025 設定當前正在設定的語...
第二人生的原始碼分析 二十 顯示人物名稱
在第二人生裡,每個人物顯示都有乙個名稱,那麼這個名稱又是怎麼樣顯示出來的呢?怎麼樣實現的呢?帶著這兩個問題,下面就去分析第二人生裡面的實現 它的人物名稱顯示如下 從上面的上,可以看到人物的頭上有乙個名稱顯示,用來標識人物角色。要顯示這個人物名稱,肯定是在二維的空間裡顯示的。每個人都有乙個名稱顯示,很...