50
50
NSString* SocketMessageIdKey = @"SocketMessageId";
51
51
NSString* SocketMessageDataKey = @"SocketMessageData";
52
NSString* SocketMessengerKey = @"SocketMessenger";
53
const int kSocketMessengerTerminateMsg = -1;
54
//const int kSocketMessengerTerminateMsg = -1;
56
57
@interface SocketMessenger (Private)
221
227
//NSLog(@"dataReceived (%d) #%d", (int) [currentData length], currentMessageId);
223
229
if (receiveDataOnMainThread)
224
[delegate performSelectorOnMainThread: @selector(dataReceived:) withObject: [NSDictionary dictionaryWithObjectsAndKeys: [NSNumber numberWithInt: currentMessageId], SocketMessageIdKey, currentData, SocketMessageDataKey, nil] waitUntilDone: NO];
230
[delegate performSelectorOnMainThread: @selector(dataReceived:) withObject: [NSDictionary dictionaryWithObjectsAndKeys: self, SocketMessengerKey, [NSNumber numberWithInt: currentMessageId], SocketMessageIdKey, currentData, SocketMessageDataKey, nil] waitUntilDone: NO];
226
[delegate dataReceived: [NSDictionary dictionaryWithObjectsAndKeys: [NSNumber numberWithInt: currentMessageId], SocketMessageIdKey, currentData, SocketMessageDataKey, nil]];
232
[delegate dataReceived: [NSDictionary dictionaryWithObjectsAndKeys: self, SocketMessengerKey, [NSNumber numberWithInt: currentMessageId], SocketMessageIdKey, currentData, SocketMessageDataKey, nil]];
228
234
currentData = nil;
229
235
currentlyRead = 0;
297
303
while (txThreadShouldRun)
300
while (![sendQueue count])
306
while (![sendQueue count] && txThreadShouldRun)
305
NSDictionary* dict = [[sendQueue objectAtIndex: 0] retain];
306
NSData* data = [dict objectForKey: SocketMessageDataKey];
307
uint32_t messageId = [[dict objectForKey: SocketMessageIdKey] intValue];
308
[sendQueue removeObjectAtIndex: 0];
309
NSDictionary* dict = nil;
310
if ([sendQueue count])
312
dict = [[sendQueue objectAtIndex: 0] retain];
313
[sendQueue removeObjectAtIndex: 0];
310
316
[sendLock unlock];
312
size_t sizeToSend = 8;
314
uint32_t header[2] = {htonl(messageId), htonl([data length])};
320
socket = commsSocket;
323
//printf("sending %d bytes\n", (int) sizeToSend);
325
while (dataSent < sizeToSend)
327
if ((err = send(socket, header + dataSent, sizeToSend - dataSent, 0)) == -1)
320
NSData* data = [dict objectForKey: SocketMessageDataKey];
321
uint32_t messageId = [[dict objectForKey: SocketMessageIdKey] intValue];
323
size_t sizeToSend = 8;
325
uint32_t header[2] = {htonl(messageId), htonl([data length])};
331
socket = commsSocket;
338
sizeToSend = [data length];
334
//printf("sending %d bytes\n", (int) sizeToSend);
340
336
while (dataSent < sizeToSend)
342
if ((err = send(socket, [data bytes] + dataSent, sizeToSend - dataSent, 0)) == -1)
338
if ((err = send(socket, header + dataSent, sizeToSend - dataSent, 0)) == -1)
349
sizeToSend = [data length];
351
while (dataSent < sizeToSend)
353
if ((err = send(socket, [data bytes] + dataSent, sizeToSend - dataSent, 0)) == -1)
736
748
server.netService = [[NSNetService alloc] initWithDomain: domain type: protocol name: name port: server.portnum];
737
749
if(server.netService == nil)
740
752
[server.netService setDelegate: self];
741
753
// [server.netService scheduleInRunLoop:[NSRunLoop currentRunLoop] forMode:NSRunLoopCommonModes];
742
754
[server.netService publish];