Skip to content
This repository

HTTPS clone URL

Subversion checkout URL

You can clone with HTTPS or Subversion.

Download ZIP
branch: master
Fetching contributors…

Octocat-spinner-32-eaf2f5

Cannot retrieve contributors at this time

file 79 lines (67 sloc) 1.819 kb
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78
//
// SRTWebSocketOperation.m
// SocketRocket
//
// Created by Mike Lewis on 1/28/12.
// Copyright (c) 2012 __MyCompanyName__. All rights reserved.
//

#import "SRTWebSocketOperation.h"
#import "SRWebSocket.h"

@interface SRTWebSocketOperation ()

@end

@implementation SRTWebSocketOperation {
    NSInteger _testNumber;
    SRWebSocket *_webSocket;
    NSURL *_url;
}

@synthesize isFinished = _isFinished;
@synthesize isExecuting = _isExecuting;
@synthesize error = _error;

- (id)initWithURL:(NSURL *)URL;
{
    self = [super init];
    if (self) {
        _url = URL;
        _isExecuting = NO;
        _isFinished = NO;
    }
    return self;
}

- (BOOL)isConcurrent;
{
    return YES;
}

- (void)start;
{
    NSLog(@"Starting %@", _url);
    dispatch_async(dispatch_get_main_queue(), ^{
        _webSocket = [[SRWebSocket alloc] initWithURLRequest:[NSURLRequest requestWithURL:_url]];
        _webSocket.delegate = self;
        [_webSocket open];
    });
    self.isExecuting = YES;
}

- (void)webSocket:(SRWebSocket *)webSocket didCloseWithCode:(NSInteger)code reason:(NSString *)reason wasClean:(BOOL)wasClean;
{
    [self willChangeValueForKey:@"isExecuting"];
    [self willChangeValueForKey:@"isFinished"];
    _isFinished = YES;
    _isExecuting = NO;
    [self didChangeValueForKey:@"isExecuting"];
    [self didChangeValueForKey:@"isFinished"];
    _webSocket.delegate = nil;
    _webSocket = nil;
}

- (void)webSocket:(SRWebSocket *)webSocket didFailWithError:(NSError *)error;
{
    _error = error;
    [self willChangeValueForKey:@"isExecuting"];
    [self willChangeValueForKey:@"isFinished"];
    _isFinished = YES;
    _isExecuting = NO;
    [self didChangeValueForKey:@"isExecuting"];
    [self didChangeValueForKey:@"isFinished"];
    _webSocket.delegate = nil;
    _webSocket = nil;
}

@end
Something went wrong with that request. Please try again.