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

Unified Diff: third_party/libjingle/overrides/talk/base/messagequeue.cc

Issue 9455070: Remove the dependency to ws2_32.dll from talk_base::ThreadManager and talk_base::Thread. (Closed) Base URL: https://src.chromium.org/svn/trunk/src/
Patch Set: Created 8 years, 10 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 side-by-side diff with in-line comments
Download patch
Index: third_party/libjingle/overrides/talk/base/messagequeue.cc
===================================================================
--- third_party/libjingle/overrides/talk/base/messagequeue.cc (revision 124023)
+++ third_party/libjingle/overrides/talk/base/messagequeue.cc (working copy)
@@ -34,6 +34,7 @@
#endif
#include "talk/base/common.h"
+#include "talk/base/event.h"
#include "talk/base/logging.h"
#include "talk/base/messagequeue.h"
#include "talk/base/physicalsocketserver.h"
@@ -44,6 +45,34 @@
const uint32 kMaxMsgLatency = 150; // 150 ms
//------------------------------------------------------------------
+// NullSocketServer
+
+class NullSocketServer : public SocketServer {
Sergey Ulanov 2012/02/28 21:54:02 should this be in an anonymous namespace?
Ronghua Wu (Left Chromium) 2012/02/28 23:16:57 Done.
+ public:
+ NullSocketServer() : event_(false, false) { }
+
+ virtual bool Wait(int cms, bool process_io) {
+ return event_.Wait(kForever);
+ }
+
+ virtual void WakeUp() {
+ event_.Set();
+ }
+
+ virtual Socket* CreateSocket(int type) {
+ return NULL;
+ }
+
+ // Returns a new socket for nonblocking communication. The type can be
+ // SOCK_DGRAM and/or SOCK_STREAM.
+ virtual AsyncSocket* CreateAsyncSocket(int type) {
+ return NULL;
+ }
+ private:
Sergey Ulanov 2012/02/28 21:54:02 nit: empty line before this one.
Ronghua Wu (Left Chromium) 2012/02/28 23:16:57 Done.
+ Event event_;
+};
+
+//------------------------------------------------------------------
// MessageQueueManager
MessageQueueManager* MessageQueueManager::instance_;
@@ -105,18 +134,30 @@
//------------------------------------------------------------------
// MessageQueue
-MessageQueue::MessageQueue(SocketServer* ss)
- : ss_(ss), fStop_(false), fPeekKeep_(false), active_(false),
- dmsgq_next_num_(0) {
- if (!ss_) {
- // Currently, MessageQueue holds a socket server, and is the base class for
- // Thread. It seems like it makes more sense for Thread to hold the socket
- // server, and provide it to the MessageQueue, since the Thread controls
- // the I/O model, and MQ is agnostic to those details. Anyway, this causes
- // messagequeue_unittest to depend on network libraries... yuck.
- default_ss_.reset(new PhysicalSocketServer());
- ss_ = default_ss_.get();
+MessageQueue::MessageQueue() {
+ // TODO(ronghuawu):
+ // Currently, MessageQueue holds a socket server, and is the base class for
+ // Thread. It seems like it makes more sense for Thread to hold the socket
+ // server, and provide it to the MessageQueue, since the Thread controls
+ // the I/O model, and MQ is agnostic to those details. Anyway, this causes
+ // messagequeue_unittest to depend on network libraries... yuck.
+ default_ss_.reset(new PhysicalSocketServer());
+ Construct();
+}
+
+MessageQueue::MessageQueue(SocketServer* ss) {
+ if (!ss) {
+ default_ss_.reset(new NullSocketServer());
Sergey Ulanov 2012/02/28 21:54:02 here we lose |ss| if it is set.
Ronghua Wu (Left Chromium) 2012/02/28 23:16:57 Done.
}
+ Construct();
+}
+
+void MessageQueue::Construct() {
+ fStop_ = false;
+ fPeekKeep_ = false;
+ active_ = false;
+ dmsgq_next_num_ = 0;
+ ss_ = default_ss_.get();
ss_->SetMessageQueue(this);
}

Powered by Google App Engine
This is Rietveld 408576698