⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 chordcd.h

📁 chord 源码 http://pdos.csail.mit.edu/chord/
💻 H
字号:
#include "arpc.h"#include "sfsclient.h"#include "bigint.h"#include "chord.h"#include "dhash.h"#include "qhash.h"#include "sfsro_prot_cfs.h"#include "dhash_prot.h"#include "lrucache.h"#include <dhashclient.h>typedef callback<void, ptr<sfsro_data> >::ref cbdata_t;typedef callback<void, sfsro_inode * >::ref cbinode_t;typedef callback<void, char *, size_t>::ref cbblock_t;typedef callback<void, chordID, bool>::ref cbbmap_t; // XXX change the bool to an nfsstat3??typedef callback<void, ptr<sfsro_data>, chordID, nfsstat3 >::ref cblookup_t;typedef cblookup_t cbnamei_t;typedef callback<void, nfs_fh3 *>::ref cbfh_t;typedef callback<void, char *, size_t>::ref cbfetch_buffer_t;typedef callback<void, ptr<sfsro_inode> >::ref cbfetch_inode_t;struct namei_state;struct lookup_state;struct getdata_state;class chord_server {  dhashclient dh;  cfs_fsinfo fsinfo;  ptr<sfsro_data> rootdir;  chordID rootdirID;  lrucache<chordID, ref<sfsro_data>, hashID> data_cache;  qhash<chordID, vec<cbdata_t>, hashID> pf_waiters;  chordID nfsfh_to_chordid (nfs_fh3 *nfh);  void chordid_to_nfsfh (chordID *n, nfs_fh3 *nfh);  chordID sfshash_to_chordid (sfs_hash *fh);  unsigned int chordid_to_fileid (chordID &ID);  void fh2fileid (sfs_hash *fh, uint64 *fileid);  void getroot_fh (cbfh_t rfh_cb, ptr<sfsro_data> d);  void getrootdir_cb (cbfh_t rfh_cb, ptr<sfsro_data> data);  void readlink_inode_cb (nfscall *sbp, chordID ID, ptr<sfsro_data> data);  void getattr_inode_cb (nfscall *sbp, chordID ID, ptr<sfsro_data> data);   void access_inode_cb (nfscall *sbp, chordID ID, ptr<sfsro_data> data);  uint32 access_check(sfsro_inode *ip, uint32 access_req);  void lookup_inode_cb (nfscall *sbp, chordID ID, ptr<sfsro_data> data);  void lookup_lookup_cb (nfscall *sbp, ptr<sfsro_data> dirdata, chordID dirID, 			 ptr<sfsro_data> data, chordID dataID, nfsstat3 status);  sfsro_dirent *dirent_lookup (str name, sfsro_directory *dir);  void readdir_inode_cb (nfscall *sbp, chordID ID, ptr<sfsro_data> data);  void readdir_fetch_dirdata_cb (nfscall *sbp, ptr<sfsro_data> dirdata, chordID dirID,				 ptr<sfsro_data> dirblk);  void readdirp_inode_cb (nfscall *sbp, chordID ID, ptr<sfsro_data> data);  void readdirp_fetch_dir_data (nfscall *sbp, ptr<sfsro_data> dirdata,				chordID dirID, ptr<sfsro_data> data);  void read_inode_cb (nfscall *sbp, chordID ID, ptr<sfsro_data> data);  void read_data_cb (nfscall *sbp, ptr<sfsro_data> inode, chordID inodeID,		     ptr<sfsro_data> data);  void ignore_data_cb (ptr<sfsro_data> data);  void lookup(ptr<sfsro_data> dirdata, chordID dirID, str component, cblookup_t cb);  void lookup_scandir_nextblock(ref<lookup_state> st);  void lookup_scandir_nextblock_cb(ref<lookup_state> st, ptr<sfsro_data> dat);  void lookup_component_inode_cb (ref<lookup_state> st, chordID ID, ptr<sfsro_data> data);  void bmap(bool pfonly, size_t block, sfsro_inode_reg *inode, cbbmap_t cb);  void bmap_recurse(bool pfonly, cbbmap_t cb, unsigned int slotno, chordID ID, bool success);  void bmap_recurse_data_cb(bool pfonly, cbbmap_t cb, unsigned int slotno, ptr<sfsro_data> dat);  void namei (str path, cbnamei_t cb);  void namei_iter (ref<namei_state> st, ptr<sfsro_data> inode, chordID inodeID);  void namei_iter_cb (ref<namei_state> st, ptr<sfsro_data> data, chordID dataID, nfsstat3 status);  void read_file_data (bool pfonly, size_t block, sfsro_inode_reg *inode, cbdata_t cb);  void read_file_data_bmap_cb (bool pfonly, cbdata_t cb, chordID ID, bool success);  void fetch_data (bool pfonly, chordID ID, cbdata_t cb);  void fetch_data (bool pfonly, chordID ID, dhash_ctype ct, cbdata_t cb);  void fetch_data_cb (chordID ID, dhash_ctype ct,		      cbdata_t cb,		      dhash_stat stat,		      ptr<dhash_block> blk,		      vec<chordID> path); public:  void dispatch (ref<nfsserv> ns, nfscall *sbp);  void setrootfh (str root, cbfh_t cb);  chord_server (u_int cache_maxsize);};

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -