squid关键数据结构
2016-01-18 16:31:28 0 举报
squid的关键数据结构以及互相之间的关联关系
作者其他创作
大纲/内容
class ConnStateData{ void readSomeData(); int fd; struct In { char *addressToReadInto() const; ChunkedCodingParser *bodyParser; /// parses chunked request body MemBuf chunked; /// contains unparsed raw (chunked) body data MemBuf dechunked; /// accumulates parsed (dechunked) content char *buf; size_t notYetUsed; size_t allocatedSize; size_t chunkedSeen; /// size of processed or ignored raw read data DechunkingState dechunkingState; /// request dechunking state } in; struct sockaddr_in peer; struct sockaddr_in me; struct { bool readMoreRequests; }flags; http_port_list *port;}
struct _comm_io_callback {\tiocb_type type;\tint fd;\tIOCB *callback;\tvoid *callback_data;\tchar *buf;\tFREE *freefunc;\tint size;\tint offset;\tbool active;\tbool completed;\tcomm_err_t errcode;\tint xerrno;\tdlink_node node;};typedef struct _comm_io_callback comm_io_callback_t;
IOACB httpAccept
class StoreIOBuffer{ struct { unsigned error:1; }flags; size_t length; int64_t offset; char *data;}
class mem_node{public: size_t space() const; int64_t start() const; int64_t end() const; Range dataRange() const; StoreIOBuffer nodeBuffer; char data[SM_PAGE_SIZE]; unsigned int write_pending:1;}
class StoreClient{public: virtual ~StoreClient () {} virtual void created (StoreEntry *newEntry) = 0;};
struct _close_handler{ PF *handler; void *data; close_handler *next;};
class StoreEntry : public hash_link{public: MemObject* mem_obj; time_t timestamp; time_t lastref; time_t expires; time_t lastmod; uint64_t swap_file_sz; u_short refcount; u_short flags; sfileno swap_filen:25; sdirno swap_dirn:7}
IOCB clientReadRequestIOCB clientWriteCompleteIOCB clientWriteBodyCompleteIOCB SendCompleteIOCB ReadReplyWrapper
class fde{ PF *read_handler; void *read_data; PF *write_handler; void *write_data; PF *timeout_handler; time_t timeout; void *timeout_data; void *lifetime_data; close_handler *closeHandler; /* linked list */ CommWriteStateData *wstate; /* State data for comm_write */ READ_HANDLER *read_method; WRITE_HANDLER *write_method; struct { long handle; } win32;}
static PF commConnectFree;static PF commHandleWrite;static PF comm_accept_try;
class ClientHttpRequest{public: HttpRequest *request;\t\t/* Parsed URL ... */ char *uri; char *log_uri; struct { int64_t offset; int64_t size; size_t headers_sz; }out; private: CBDATA_CLASS(ClientHttpRequest); int64_t maxReplyBodySize_; StoreEntry *entry_; StoreEntry *loggingEntry_; ConnStateData::Pointer conn_;}
templateclass CallBack{ C *handler; void *data;}
class MemObject{public: method_t method; char *url; String unified_url; mem_hdr data_hdr; int64_t inmem_lo; dlink_list clients; class SwapOut { public: int64_t queue_offset; /* relative to in-mem data */ mem_node *memnode; /* which node we're currently paging out */ StoreIOState::Pointer sio; }; SwapOut swapout; /* Read only - this reply must be preserved by store clients */ /* The original reply. possibly with updated metadata. */ HttpRequest *request;private: HttpReply *_reply;}
struct _comm_fd {\tint fd;\tcomm_io_callback_t\t readcb;\tcomm_io_callback_t writecb;};typedef struct _comm_fd comm_fd_t;
class HttpReply: public HttpMsg{public: time_t date; time_t last_modified; time_t expires; String content_type; HttpHdrSc *surrogate_control; HttpHdrContRange *content_range;}
class fdc_t{public: void acceptOne(int fd); void beginAccepting(); int acceptCount() const; int active; int fd; dlink_list CommCallbackList; template bool findCallback(P predicate); class Accept { public: AcceptFD accept; ConnectionDetail connDetails; }; Accept accept; bool half_closed;};
fde fd_tablefdc_t *fdc_table;static fd_set global_readfds;static fd_set global_writefds;static int nreadfds;static int nwritefds;comm_fd_t *commfd_table;
class mem_hdr{public: ssize_t copy (StoreIOBuffer const &) const; bool hasContigousContentRange(Range const &range) const; mem_node const *start() const; mem_node *getBlockContainingLocation (int64_t location) const;private: Splay nodes;}
0 条评论
下一页