response_writer
+ _se:socket_event
+ response_writer(socket_event)- write(http_response):int
buffer
+ _data:usigned char+ _compacity:int- _used_size:int- _begin:int
event_handler
+ virtual handler_event(socket_event):int
work_thread
+ :type = defaultValue+ attribute2:type- attribute3:type
+ work_thread():set event_manager- get_event_manager():event_manager- thread_func():int
thread_pool
+ *_worker:worker+ _task_queue:queue- _thread_list:list- _number_of_worker_threads:int- _number_of_free_work_threads:int- _max_number_of_threads:int- _task_mutex:mutex- _task_event:event- _number_lock:spin_lock
+ thread_pool()- ~thread_pool()- set_max_threads(int)- get_task():ttask- add_task(task):int- set_worker(worker):int- new_worker():worker- delete_worker(worker):int0 kill(pthread):int
event_manager_impl_epoll
+ max_number_of_events:int = MAX_CONNECTIONS+ _epfd:int- _event_pool:event_pool
+ event_manager_impl_epool()- register_event(socket_event):int- unregister_event(socket_event):int- get_event():socket_event- wait_for_events():int //实现了对每个到达事件的监听和处理
task
+ virtual ~task()- start(thread_pooll):int- virtual excute(worker):int
read_event_handler
+ handle_event(socket_event):int- virtual read(socket_event):int
socket_event
+ enum:event_type_t+ event_type:_type- _slot:int- _io_handle: int- *_event_handler: event_handler- *_event_manager: event_manager
+ socket_event(event_type)- ~socket_event()- set_event_handler(evenet_handler)- get_event_handler():evant_handler- get_handler(): int- get_slot(): int- set_slot(int):int- get_type():int- get_event_manager():event_manager- set_event_manager(event_manager)- unregister(): int
pool_work_thread
+ _tp:tthread_pool+ _wkr:worker
+ pool_work_thread(thread_pool)- ~pool_work_thread()- stop()- thread_func():int
server
+ _addr:address = defaultValue+ *_listener_handler:event_handler+ _event_manager:event_manager+ _evt_read_buffer:buffer
+ server():_event_manager (event_manager_impl_epoll)- ~server()- set_listener_address(address)- set_listener_handler(event_handler)- add_client_socket_event(socket_event):int- remove_client_socket_event(socket_event):int- start():int 创建listener-get_buffer(): buffer
http_request
event_manger_impl
+ *_svr:server
+ virtual ~event_manager_impl()- virtual register_event(socket_event):int- virtual unregister_event(socket_event):int- virtual get_event():socket_event- set_server(server)- get_server():server
event_manager
+ *_imp:event_manager_imp
+ event_manger(event_manager_impl)- ~event_manager()- register_event(socket_event):int- unregiser_event(socket_event):int- get_event():socket_event- start_event_loop()
event_pool
+ _number_of_slots:int = MAX_CONNETCTIONS+ event_slots:socket_event[]- attribute3:type
+ event_pool()- ~event()- find_by_slot(int):socket_event- insert(socket_event):int- remove_by_slot(int):int- remove(socket_event):int- get_next_empty_slot():int- get_mark_index_of_slot(int):int
http_response
listerner_handler
+ _svr:thread_server2+ _event_manager:event_manager
+ set_server(thread_server2)- handle_event(socket_event):int
worker
+ _tp:thread_pool+ _stoped:bool
+ woker()- ~worker()- set_thread_pool(thread_pool)- work():int- stop()- virtual clone():worker
write_event_handler
+ handler_event():int
http_server
+ _number_of_slots:int = MAX_CONNECTIONS+ event_slots:socket_event[]- _slot_use_marks:int[]- _mark_index_of_slot:int[]- number_of_used_slot:int
+ event_pool()- ~event_pool()- find_by_slot(int):socket_event- insert(socket_event):int- remove_by_slot(int):int- remove(socket_event):int- get_next_empty_slot():int- get_mark_index_of_slot(int):int
thread_server2
+ _work_thread_number:int+ _work_threads:vector
+ thread_server2()- set_work_thread_number(int)- start():int- wait():int- stop():int- thread_func():int- virtual handle_clinet_event(socket_event):int
pthread
+ _tid:pthread_t+ _attr:pthread_attr_t- attribute3:type
+ *_func(*obj)- this_thread)id():int- pthread()- ~pthread()- start():int- kill():int- wait():int- virtual thread_func():int- get_thread_id():int
path_and_handler
+ path:string+ hdr:path_handler
client_handler
+ _svr:thread_server2
+ clinet_event_handler(thread_server2)- handle_event(socket_event):int