| OLD | NEW |
| 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 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 #include "net/tools/quic/quic_server.h" | 5 #include "net/tools/quic/quic_server.h" |
| 6 | 6 |
| 7 #include <errno.h> | 7 #include <errno.h> |
| 8 #include <features.h> | 8 #include <features.h> |
| 9 #include <netinet/in.h> | 9 #include <netinet/in.h> |
| 10 #include <string.h> | 10 #include <string.h> |
| (...skipping 21 matching lines...) Expand all Loading... |
| 32 | 32 |
| 33 namespace net { | 33 namespace net { |
| 34 namespace tools { | 34 namespace tools { |
| 35 | 35 |
| 36 QuicServer::QuicServer() | 36 QuicServer::QuicServer() |
| 37 : port_(0), | 37 : port_(0), |
| 38 fd_(-1), | 38 fd_(-1), |
| 39 packets_dropped_(0), | 39 packets_dropped_(0), |
| 40 overflow_supported_(false), | 40 overflow_supported_(false), |
| 41 use_recvmmsg_(false), | 41 use_recvmmsg_(false), |
| 42 crypto_config_(kSourceAddressTokenSecret, QuicRandom::GetInstance()) { | 42 crypto_config_(kSourceAddressTokenSecret, QuicRandom::GetInstance()), |
| 43 supported_versions_(QuicSupportedVersions()) { |
| 43 // Use hardcoded crypto parameters for now. | 44 // Use hardcoded crypto parameters for now. |
| 44 config_.SetDefaults(); | 45 config_.SetDefaults(); |
| 45 Initialize(); | 46 Initialize(); |
| 46 } | 47 } |
| 47 | 48 |
| 48 QuicServer::QuicServer(const QuicConfig& config) | 49 QuicServer::QuicServer(const QuicConfig& config, |
| 50 const QuicVersionVector& supported_versions) |
| 49 : port_(0), | 51 : port_(0), |
| 50 fd_(-1), | 52 fd_(-1), |
| 51 packets_dropped_(0), | 53 packets_dropped_(0), |
| 52 overflow_supported_(false), | 54 overflow_supported_(false), |
| 53 use_recvmmsg_(false), | 55 use_recvmmsg_(false), |
| 54 config_(config), | 56 config_(config), |
| 55 crypto_config_(kSourceAddressTokenSecret, QuicRandom::GetInstance()) { | 57 crypto_config_(kSourceAddressTokenSecret, QuicRandom::GetInstance()), |
| 58 supported_versions_(supported_versions) { |
| 56 Initialize(); | 59 Initialize(); |
| 57 } | 60 } |
| 58 | 61 |
| 59 void QuicServer::Initialize() { | 62 void QuicServer::Initialize() { |
| 60 #if MMSG_MORE | 63 #if MMSG_MORE |
| 61 use_recvmmsg_ = true; | 64 use_recvmmsg_ = true; |
| 62 #endif | 65 #endif |
| 63 epoll_server_.set_timeout_in_us(50 * 1000); | 66 epoll_server_.set_timeout_in_us(50 * 1000); |
| 64 // Initialize the in memory cache now. | 67 // Initialize the in memory cache now. |
| 65 QuicInMemoryCache::GetInstance(); | 68 QuicInMemoryCache::GetInstance(); |
| (...skipping 68 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 134 if (getsockname(fd_, storage.addr, &storage.addr_len) != 0 || | 137 if (getsockname(fd_, storage.addr, &storage.addr_len) != 0 || |
| 135 !server_address.FromSockAddr(storage.addr, storage.addr_len)) { | 138 !server_address.FromSockAddr(storage.addr, storage.addr_len)) { |
| 136 LOG(ERROR) << "Unable to get self address. Error: " << strerror(errno); | 139 LOG(ERROR) << "Unable to get self address. Error: " << strerror(errno); |
| 137 return false; | 140 return false; |
| 138 } | 141 } |
| 139 port_ = server_address.port(); | 142 port_ = server_address.port(); |
| 140 LOG(INFO) << "Kernel assigned port is " << port_; | 143 LOG(INFO) << "Kernel assigned port is " << port_; |
| 141 } | 144 } |
| 142 | 145 |
| 143 epoll_server_.RegisterFD(fd_, this, kEpollFlags); | 146 epoll_server_.RegisterFD(fd_, this, kEpollFlags); |
| 144 dispatcher_.reset(new QuicDispatcher(config_, crypto_config_, fd_, | 147 dispatcher_.reset(new QuicDispatcher(config_, crypto_config_, |
| 145 &epoll_server_)); | 148 supported_versions_, |
| 149 fd_, &epoll_server_)); |
| 146 | 150 |
| 147 return true; | 151 return true; |
| 148 } | 152 } |
| 149 | 153 |
| 150 void QuicServer::WaitForEvents() { | 154 void QuicServer::WaitForEvents() { |
| 151 epoll_server_.WaitForEventsAndExecuteCallbacks(); | 155 epoll_server_.WaitForEventsAndExecuteCallbacks(); |
| 152 } | 156 } |
| 153 | 157 |
| 154 void QuicServer::Shutdown() { | 158 void QuicServer::Shutdown() { |
| 155 // Before we shut down the epoll server, give all active sessions a chance to | 159 // Before we shut down the epoll server, give all active sessions a chance to |
| (...skipping 62 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 218 QuicEncryptedPacket packet(buf, bytes_read, false); | 222 QuicEncryptedPacket packet(buf, bytes_read, false); |
| 219 | 223 |
| 220 IPEndPoint server_address(server_ip, port); | 224 IPEndPoint server_address(server_ip, port); |
| 221 MaybeDispatchPacket(dispatcher, packet, server_address, client_address); | 225 MaybeDispatchPacket(dispatcher, packet, server_address, client_address); |
| 222 | 226 |
| 223 return true; | 227 return true; |
| 224 } | 228 } |
| 225 | 229 |
| 226 } // namespace tools | 230 } // namespace tools |
| 227 } // namespace net | 231 } // namespace net |
| OLD | NEW |