Convert MessageQueue to use a ThreadSafeDelegate.
authorRobert Sesek <rsesek@bluestatic.org>
Thu, 20 Jun 2013 02:11:29 +0000 (22:11 -0400)
committerRobert Sesek <rsesek@bluestatic.org>
Thu, 20 Jun 2013 02:11:29 +0000 (22:11 -0400)
Source/MessageQueue.h
Source/MessageQueue.m

index a7878b05cefc4bf003d0dc63da5d1ffe6b82e482..2e4f968c4809f97493db409b1a83e17f1c0d37d7 100644 (file)
@@ -16,6 +16,8 @@
 
 #import <Foundation/Foundation.h>
 
+#import "ThreadSafeDeleage.h"
+
 @protocol MessageQueueDelegate;
 
 // MessageQueue operates a listening socket, that is connected to another
@@ -38,7 +40,7 @@
   NSMutableArray* _queue;
 
   // The delegate for this class.
-  id<MessageQueueDelegate> _delegate;
+  ThreadSafeDeleage<MessageQueueDelegate>* _delegate;
 
   // The socket that listens for new incoming connections.
   CFSocketRef _socket;
index 731fca680b0993c25ded588c65a652fdb034f71d..c7c4ff0446c1b2978cbd45e89ccf36ab16c68009 100644 (file)
@@ -88,13 +88,18 @@ static void MessageQueueWriteEvent(CFWriteStreamRef stream,
   if ((self = [super init])) {
     _port = port;
     _queue = [[NSMutableArray alloc] init];
-    _delegate = delegate;
+    _delegate = (ThreadSafeDeleage<MessageQueueDelegate>*)
+        [[ThreadSafeDeleage alloc] initWithObject:delegate
+                                         protocol:@protocol(MessageQueueDelegate)
+                                           thread:[NSThread currentThread]
+                                            modes:@[ NSDefaultRunLoopMode ]];
   }
   return self;
 }
 
 - (void)dealloc {
   [_queue release];
+  [_delegate release];
   [super dealloc];
 }
 
@@ -225,7 +230,7 @@ static void MessageQueueWriteEvent(CFWriteStreamRef stream,
   if (![_queue count])
     return;
 
-  if (![_delegate shouldSendMessage])
+  if (![(id<MessageQueueDelegate>)_delegate.object shouldSendMessage])
     return;
 
   if (!CFWriteStreamCanAcceptBytes(_writeStream))