SRTWebSocketOperation.m 1.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081
  1. //
  2. // SRTWebSocketOperation.m
  3. // SocketRocket
  4. //
  5. // Created by Mike Lewis on 1/28/12.
  6. // Copyright (c) 2012 __MyCompanyName__. All rights reserved.
  7. //
  8. #import "SRTWebSocketOperation.h"
  9. @interface SRTWebSocketOperation ()
  10. @end
  11. @implementation SRTWebSocketOperation {
  12. NSInteger _testNumber;
  13. SRWebSocket *_webSocket;
  14. NSURL *_url;
  15. }
  16. @synthesize isFinished = _isFinished;
  17. @synthesize isExecuting = _isExecuting;
  18. @synthesize error = _error;
  19. - (id)initWithURL:(NSURL *)URL;
  20. {
  21. self = [super init];
  22. if (self) {
  23. _url = URL;
  24. _isExecuting = NO;
  25. _isFinished = NO;
  26. }
  27. return self;
  28. }
  29. - (BOOL)isConcurrent;
  30. {
  31. return YES;
  32. }
  33. - (void)start;
  34. {
  35. dispatch_async(dispatch_get_main_queue(), ^{
  36. _webSocket = [[SRWebSocket alloc] initWithURLRequest:[NSURLRequest requestWithURL:_url]];
  37. _webSocket.delegate = self;
  38. [_webSocket open];
  39. });
  40. self.isExecuting = YES;
  41. }
  42. - (void)webSocket:(SRWebSocket *)webSocket didCloseWithCode:(NSInteger)code reason:(NSString *)reason wasClean:(BOOL)wasClean;
  43. {
  44. [self willChangeValueForKey:@"isExecuting"];
  45. [self willChangeValueForKey:@"isFinished"];
  46. _isFinished = YES;
  47. _isExecuting = NO;
  48. [self didChangeValueForKey:@"isExecuting"];
  49. [self didChangeValueForKey:@"isFinished"];
  50. _webSocket.delegate = nil;
  51. _webSocket = nil;
  52. }
  53. - (void)webSocket:(SRWebSocket *)webSocket didReceiveMessage:(id)message;
  54. {
  55. NSAssert(NO, @"Not implemented");
  56. }
  57. - (void)webSocket:(SRWebSocket *)webSocket didFailWithError:(NSError *)error;
  58. {
  59. _error = error;
  60. [self willChangeValueForKey:@"isExecuting"];
  61. [self willChangeValueForKey:@"isFinished"];
  62. _isFinished = YES;
  63. _isExecuting = NO;
  64. [self didChangeValueForKey:@"isExecuting"];
  65. [self didChangeValueForKey:@"isFinished"];
  66. _webSocket.delegate = nil;
  67. _webSocket = nil;
  68. }
  69. @end