blob: 467105a6a8d081cede46da122a657af169f04e1b [file] [log] [blame]
henrike@webrtc.orgf7795df2014-05-13 18:00:26 +00001/*
2 * Copyright 2004 The WebRTC Project Authors. All rights reserved.
3 *
4 * Use of this source code is governed by a BSD-style license
5 * that can be found in the LICENSE file in the root of the source
6 * tree. An additional intellectual property rights grant can be found
7 * in the file PATENTS. All contributing project authors may
8 * be found in the AUTHORS file in the root of the source tree.
9 */
10
11#ifndef WEBRTC_BASE_SOCKETSERVER_H_
12#define WEBRTC_BASE_SOCKETSERVER_H_
13
14#include "webrtc/base/socketfactory.h"
15
16namespace rtc {
17
18class MessageQueue;
19
20// Provides the ability to wait for activity on a set of sockets. The Thread
21// class provides a nice wrapper on a socket server.
22//
23// The server is also a socket factory. The sockets it creates will be
24// notified of asynchronous I/O from this server's Wait method.
25class SocketServer : public SocketFactory {
26 public:
27 // When the socket server is installed into a Thread, this function is
28 // called to allow the socket server to use the thread's message queue for
29 // any messaging that it might need to perform.
30 virtual void SetMessageQueue(MessageQueue* queue) {}
31
32 // Sleeps until:
33 // 1) cms milliseconds have elapsed (unless cms == kForever)
34 // 2) WakeUp() is called
35 // While sleeping, I/O is performed if process_io is true.
36 virtual bool Wait(int cms, bool process_io) = 0;
37
38 // Causes the current wait (if one is in progress) to wake up.
39 virtual void WakeUp() = 0;
40};
41
42} // namespace rtc
43
44#endif // WEBRTC_BASE_SOCKETSERVER_H_