Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(134)

Side by Side Diff: net/tools/flip_server/epoll_server.h

Issue 4094002: flip_in_mem_edsm_server builds again. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 10 years, 2 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
« no previous file with comments | « net/tools/flip_server/balsa_headers.cc ('k') | net/tools/flip_server/other_defines.h » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright (c) 2010 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2010 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #ifndef NET_TOOLS_FLIP_SERVER_EPOLL_SERVER_H_ 5 #ifndef NET_TOOLS_FLIP_SERVER_EPOLL_SERVER_H_
6 #define NET_TOOLS_FLIP_SERVER_EPOLL_SERVER_H_ 6 #define NET_TOOLS_FLIP_SERVER_EPOLL_SERVER_H_
7 #pragma once 7 #pragma once
8 8
9 #include <fcntl.h> 9 #include <fcntl.h>
10 #include <sys/queue.h> 10 #include <sys/queue.h>
11 #include <ext/hash_map> // it is annoying that gcc does this. oh well.
12 #include <ext/hash_set>
13 #include <map> 11 #include <map>
14 #include <string> 12 #include <string>
15 #include <utility> 13 #include <utility>
16 #include <set> 14 #include <set>
17 #include <vector> 15 #include <vector>
18 16
19 // #define EPOLL_SERVER_EVENT_TRACING 1 17 // #define EPOLL_SERVER_EVENT_TRACING 1
20 // 18 //
21 // Defining EPOLL_SERVER_EVENT_TRACING 19 // Defining EPOLL_SERVER_EVENT_TRACING
22 // causes code to exist which didn't before. 20 // causes code to exist which didn't before.
23 // This code tracks each event generated by the epollserver, 21 // This code tracks each event generated by the epollserver,
24 // as well as providing a per-fd-registered summary of 22 // as well as providing a per-fd-registered summary of
25 // events. Note that enabling this code vastly slows 23 // events. Note that enabling this code vastly slows
26 // down operations, and uses substantially more 24 // down operations, and uses substantially more
27 // memory. For these reasons, it should only be enabled when doing 25 // memory. For these reasons, it should only be enabled when doing
28 // developer debugging at his/her workstation. 26 // developer debugging at his/her workstation.
29 // 27 //
30 // A structure called 'EventRecorder' will exist when 28 // A structure called 'EventRecorder' will exist when
31 // the macro is defined. See the EventRecorder class interface 29 // the macro is defined. See the EventRecorder class interface
32 // within the EpollServer class for more details. 30 // within the EpollServer class for more details.
33 #ifdef EPOLL_SERVER_EVENT_TRACING 31 #ifdef EPOLL_SERVER_EVENT_TRACING
34 #include <iostream> 32 #include <iostream>
35 #include "base/logging.h" 33 #include "base/logging.h"
36 #endif 34 #endif
37 35
38 #include "base/basictypes.h" 36 #include "base/basictypes.h"
37 #include "base/hash_tables.h"
39 #include "base/scoped_ptr.h" 38 #include "base/scoped_ptr.h"
40 #include <sys/epoll.h> 39 #include <sys/epoll.h>
41 40
42 namespace net { 41 namespace net {
43 42
44 class EpollServer; 43 class EpollServer;
45 class EpollAlarmCallbackInterface; 44 class EpollAlarmCallbackInterface;
46 class ReadPipeCallback; 45 class ReadPipeCallback;
47 46
48 struct EpollEvent { 47 struct EpollEvent {
(...skipping 518 matching lines...) Expand 10 before | Expand all | Expand 10 after
567 mutable bool in_use; 566 mutable bool in_use;
568 }; 567 };
569 568
570 // Custom hash function to be used by hash_set. 569 // Custom hash function to be used by hash_set.
571 struct CBAndEventMaskHash { 570 struct CBAndEventMaskHash {
572 size_t operator()(const CBAndEventMask& cb_and_eventmask) const { 571 size_t operator()(const CBAndEventMask& cb_and_eventmask) const {
573 return static_cast<size_t>(cb_and_eventmask.fd); 572 return static_cast<size_t>(cb_and_eventmask.fd);
574 } 573 }
575 }; 574 };
576 575
577 typedef __gnu_cxx::hash_set<CBAndEventMask, CBAndEventMaskHash> FDToCBMap; 576 typedef base::hash_set<CBAndEventMask, CBAndEventMaskHash> FDToCBMap;
578 577
579 // the following four functions are OS-specific, and are likely 578 // the following four functions are OS-specific, and are likely
580 // to be changed in a subclass if the poll/select method is changed 579 // to be changed in a subclass if the poll/select method is changed
581 // from epoll. 580 // from epoll.
582 581
583 // Summary: 582 // Summary:
584 // Deletes a file-descriptor from the set of FDs that should be 583 // Deletes a file-descriptor from the set of FDs that should be
585 // monitored with epoll. 584 // monitored with epoll.
586 // Note that this only deals with modifying data relating -directly- 585 // Note that this only deals with modifying data relating -directly-
587 // with the epoll call-- it does not modify any data within the 586 // with the epoll call-- it does not modify any data within the
(...skipping 348 matching lines...) Expand 10 before | Expand all | Expand 10 after
936 unsigned int epoll_wrband; 935 unsigned int epoll_wrband;
937 unsigned int epoll_msg; 936 unsigned int epoll_msg;
938 unsigned int epoll_err; 937 unsigned int epoll_err;
939 unsigned int epoll_hup; 938 unsigned int epoll_hup;
940 unsigned int epoll_oneshot; 939 unsigned int epoll_oneshot;
941 unsigned int epoll_et; 940 unsigned int epoll_et;
942 }; 941 };
943 942
944 std::vector<DebugOutput*> debug_events_; 943 std::vector<DebugOutput*> debug_events_;
945 std::vector<Events> unregistered_fds_; 944 std::vector<Events> unregistered_fds_;
946 typedef __gnu_cxx::hash_map<int, Events> EventCountsMap; 945 typedef base::hash_map<int, Events> EventCountsMap;
947 EventCountsMap event_counts_; 946 EventCountsMap event_counts_;
948 int64 num_records_; 947 int64 num_records_;
949 int64 record_threshold_; 948 int64 record_threshold_;
950 }; 949 };
951 950
952 void ClearEventRecords() { 951 void ClearEventRecords() {
953 event_recorder_.Clear(); 952 event_recorder_.Clear();
954 } 953 }
955 void WriteEventRecords(ostream* os) const { 954 void WriteEventRecords(ostream* os) const {
956 (*os) << event_recorder_; 955 (*os) << event_recorder_;
(...skipping 106 matching lines...) Expand 10 before | Expand all | Expand 10 after
1063 private: 1062 private:
1064 EpollServer::AlarmRegToken token_; 1063 EpollServer::AlarmRegToken token_;
1065 EpollServer* eps_; 1064 EpollServer* eps_;
1066 bool registered_; 1065 bool registered_;
1067 }; 1066 };
1068 1067
1069 } // namespace net 1068 } // namespace net
1070 1069
1071 #endif // NET_TOOLS_FLIP_SERVER_EPOLL_SERVER_H_ 1070 #endif // NET_TOOLS_FLIP_SERVER_EPOLL_SERVER_H_
1072 1071
OLDNEW
« no previous file with comments | « net/tools/flip_server/balsa_headers.cc ('k') | net/tools/flip_server/other_defines.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698