第二人生的原始碼分析 四十四 虛擬檔案系統的請求處理

2021-04-17 00:14:53 字數 1624 閱讀 8973

在虛擬檔案系統的訊息佇列裡,主要就是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 設定當前正在設定的語...

第二人生的原始碼分析 二十 顯示人物名稱

在第二人生裡,每個人物顯示都有乙個名稱,那麼這個名稱又是怎麼樣顯示出來的呢?怎麼樣實現的呢?帶著這兩個問題,下面就去分析第二人生裡面的實現 它的人物名稱顯示如下 從上面的上,可以看到人物的頭上有乙個名稱顯示,用來標識人物角色。要顯示這個人物名稱,肯定是在二維的空間裡顯示的。每個人都有乙個名稱顯示,很...