server_thread.h revision 1e9bf3e0803691d0a228da41fc608347b6db4340
168043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles)// Copyright 2013 The Chromium Authors. All rights reserved. 268043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles)// Use of this source code is governed by a BSD-style license that can be 368043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles)// found in the LICENSE file. 468043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles) 568043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles)#ifndef NET_TOOLS_QUIC_SERVER_THREAD_H_ 668043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles)#define NET_TOOLS_QUIC_SERVER_THREAD_H_ 768043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles) 868043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles)#include "base/threading/simple_thread.h" 968043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles)#include "net/base/ip_endpoint.h" 1068043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles)#include "net/quic/quic_config.h" 1168043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles)#include "net/tools/quic/quic_server.h" 1268043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles) 1368043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles)namespace net { 1468043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles)namespace tools { 1568043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles)namespace test { 1668043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles) 1768043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles)// Simple wrapper class to run server in a thread. 1868043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles)class ServerThread : public base::SimpleThread { 1968043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles) public: 2068043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles) ServerThread(IPEndPoint address, 2168043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles) const QuicConfig& config, 221e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles) const QuicVersionVector& supported_versions, 2368043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles) bool strike_register_no_startup_period); 2468043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles) 2568043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles) virtual ~ServerThread(); 2668043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles) 2768043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles) virtual void Run() OVERRIDE; 2868043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles) 2968043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles) int GetPort(); 3068043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles) 3168043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles) base::WaitableEvent* listening() { return &listening_; } 3268043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles) base::WaitableEvent* quit() { return &quit_; } 331e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles) QuicServer* server() { return &server_; } 3468043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles) 3568043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles) private: 3668043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles) base::WaitableEvent listening_; 3768043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles) base::WaitableEvent quit_; 3868043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles) base::Lock port_lock_; 3968043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles) tools::QuicServer server_; 4068043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles) IPEndPoint address_; 4168043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles) int port_; 4268043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles) 4368043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles) DISALLOW_COPY_AND_ASSIGN(ServerThread); 4468043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles)}; 4568043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles) 4668043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles)} // namespace test 4768043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles)} // namespace tools 4868043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles)} // namespace net 4968043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles) 5068043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles)#endif // NET_TOOLS_QUIC_SERVER_THREAD_H_ 51