Move ivars to class extensions

This commit is contained in:
Pierre-Olivier Latour
2014-03-19 09:19:59 -07:00
parent 08e58e4a5a
commit e65b569ddc
9 changed files with 133 additions and 94 deletions

View File

@@ -31,14 +31,7 @@
typedef GCDWebServerRequest* (^GCDWebServerMatchBlock)(NSString* requestMethod, NSURL* requestURL, NSDictionary* requestHeaders, NSString* urlPath, NSDictionary* urlQuery);
typedef GCDWebServerResponse* (^GCDWebServerProcessBlock)(GCDWebServerRequest* request);
@interface GCDWebServer : NSObject {
@private
NSMutableArray* _handlers;
NSUInteger _port;
dispatch_source_t _source;
CFNetServiceRef _service;
}
@interface GCDWebServer : NSObject
@property(nonatomic, readonly, getter=isRunning) BOOL running;
@property(nonatomic, readonly) NSUInteger port;
@property(nonatomic, readonly) NSString* bonjourName; // Only non-nil if Bonjour registration is active

View File

@@ -36,6 +36,23 @@
#define kMaxPendingConnections 16
@interface GCDWebServer () {
@private
NSMutableArray* _handlers;
NSUInteger _port;
dispatch_source_t _source;
CFNetServiceRef _service;
}
@end
@interface GCDWebServerHandler () {
@private
GCDWebServerMatchBlock _matchBlock;
GCDWebServerProcessBlock _processBlock;
}
@end
static BOOL _run;
NSString* GCDWebServerGetMimeTypeForExtension(NSString* extension) {

View File

@@ -29,20 +29,7 @@
@class GCDWebServerHandler;
@interface GCDWebServerConnection : NSObject {
@private
GCDWebServer* _server;
NSData* _address;
CFSocketNativeHandle _socket;
NSUInteger _bytesRead;
NSUInteger _bytesWritten;
CFHTTPMessageRef _requestMessage;
GCDWebServerRequest* _request;
GCDWebServerHandler* _handler;
CFHTTPMessageRef _responseMessage;
GCDWebServerResponse* _response;
}
@interface GCDWebServerConnection : NSObject
@property(nonatomic, readonly) GCDWebServer* server;
@property(nonatomic, readonly) NSData* address; // struct sockaddr
@property(nonatomic, readonly) NSUInteger totalBytesRead;

View File

@@ -45,6 +45,22 @@ static NSData* _continueData = nil;
static NSDateFormatter* _dateFormatter = nil;
static dispatch_queue_t _formatterQueue = NULL;
@interface GCDWebServerConnection () {
@private
GCDWebServer* _server;
NSData* _address;
CFSocketNativeHandle _socket;
NSUInteger _bytesRead;
NSUInteger _bytesWritten;
CFHTTPMessageRef _requestMessage;
GCDWebServerRequest* _request;
GCDWebServerHandler* _handler;
CFHTTPMessageRef _responseMessage;
GCDWebServerResponse* _response;
}
@end
@implementation GCDWebServerConnection (Read)
- (void)_readBufferWithLength:(NSUInteger)length completionBlock:(ReadBufferCompletionBlock)block {

View File

@@ -126,11 +126,7 @@ NSDictionary* GCDWebServerParseURLEncodedForm(NSString* form);
@property(nonatomic, readonly) NSArray* handlers;
@end
@interface GCDWebServerHandler : NSObject {
@private
GCDWebServerMatchBlock _matchBlock;
GCDWebServerProcessBlock _processBlock;
}
@interface GCDWebServerHandler : NSObject
@property(nonatomic, readonly) GCDWebServerMatchBlock matchBlock;
@property(nonatomic, readonly) GCDWebServerProcessBlock processBlock;
- (id)initWithMatchBlock:(GCDWebServerMatchBlock)matchBlock processBlock:(GCDWebServerProcessBlock)processBlock;

View File

@@ -27,16 +27,7 @@
#import <Foundation/Foundation.h>
@interface GCDWebServerRequest : NSObject {
@private
NSString* _method;
NSURL* _url;
NSDictionary* _headers;
NSString* _path;
NSDictionary* _query;
NSString* _type;
NSUInteger _length;
}
@interface GCDWebServerRequest : NSObject
@property(nonatomic, readonly) NSString* method;
@property(nonatomic, readonly) NSURL* URL;
@property(nonatomic, readonly) NSDictionary* headers;
@@ -54,18 +45,11 @@
- (BOOL)close; // Implementation required
@end
@interface GCDWebServerDataRequest : GCDWebServerRequest {
@private
NSMutableData* _data;
}
@interface GCDWebServerDataRequest : GCDWebServerRequest
@property(nonatomic, readonly) NSData* data; // Only valid after open / write / close sequence
@end
@interface GCDWebServerFileRequest : GCDWebServerRequest {
@private
NSString* _filePath;
int _file;
}
@interface GCDWebServerFileRequest : GCDWebServerRequest
@property(nonatomic, readonly) NSString* filePath; // Only valid after open / write / close sequence
@end
@@ -77,48 +61,22 @@
+ (NSString*)mimeType;
@end
@interface GCDWebServerMultiPart : NSObject {
@private
NSString* _contentType;
NSString* _mimeType;
}
@interface GCDWebServerMultiPart : NSObject
@property(nonatomic, readonly) NSString* contentType; // May be nil
@property(nonatomic, readonly) NSString* mimeType; // Defaults to "text/plain" per specifications if undefined
@end
@interface GCDWebServerMultiPartArgument : GCDWebServerMultiPart {
@private
NSData* _data;
NSString* _string;
}
@interface GCDWebServerMultiPartArgument : GCDWebServerMultiPart
@property(nonatomic, readonly) NSData* data;
@property(nonatomic, readonly) NSString* string; // May be nil (only valid for text mime types
@end
@interface GCDWebServerMultiPartFile : GCDWebServerMultiPart {
@private
NSString* _fileName;
NSString* _temporaryPath;
}
@interface GCDWebServerMultiPartFile : GCDWebServerMultiPart
@property(nonatomic, readonly) NSString* fileName; // May be nil
@property(nonatomic, readonly) NSString* temporaryPath;
@end
@interface GCDWebServerMultiPartFormRequest : GCDWebServerRequest {
@private
NSData* _boundary;
NSUInteger _parserState;
NSMutableData* _parserData;
NSString* _controlName;
NSString* _fileName;
NSString* _contentType;
NSString* _tmpPath;
int _tmpFile;
NSMutableDictionary* _arguments;
NSMutableDictionary* _files;
}
@interface GCDWebServerMultiPartFormRequest : GCDWebServerRequest
@property(nonatomic, readonly) NSDictionary* arguments; // Only valid after open / write / close sequence
@property(nonatomic, readonly) NSDictionary* files; // Only valid after open / write / close sequence
+ (NSString*)mimeType;

View File

@@ -37,6 +37,69 @@ enum {
kParserState_End
};
@interface GCDWebServerRequest () {
@private
NSString* _method;
NSURL* _url;
NSDictionary* _headers;
NSString* _path;
NSDictionary* _query;
NSString* _type;
NSUInteger _length;
}
@end
@interface GCDWebServerDataRequest () {
@private
NSMutableData* _data;
}
@end
@interface GCDWebServerFileRequest () {
@private
NSString* _filePath;
int _file;
}
@end
@interface GCDWebServerMultiPart () {
@private
NSString* _contentType;
NSString* _mimeType;
}
@end
@interface GCDWebServerMultiPartArgument () {
@private
NSData* _data;
NSString* _string;
}
@end
@interface GCDWebServerMultiPartFile () {
@private
NSString* _fileName;
NSString* _temporaryPath;
}
@end
@interface GCDWebServerMultiPartFormRequest () {
@private
NSData* _boundary;
NSUInteger _parserState;
NSMutableData* _parserData;
NSString* _controlName;
NSString* _fileName;
NSString* _contentType;
NSString* _tmpPath;
int _tmpFile;
NSMutableDictionary* _arguments;
NSMutableDictionary* _files;
}
@end
static NSData* _newlineData = nil;
static NSData* _newlinesData = nil;
static NSData* _dashNewlineData = nil;

View File

@@ -27,14 +27,7 @@
#import <Foundation/Foundation.h>
@interface GCDWebServerResponse : NSObject {
@private
NSString* _type;
NSUInteger _length;
NSInteger _status;
NSUInteger _maxAge;
NSMutableDictionary* _headers;
}
@interface GCDWebServerResponse : NSObject
@property(nonatomic, readonly) NSString* contentType;
@property(nonatomic, readonly) NSUInteger contentLength;
@property(nonatomic) NSInteger statusCode; // Default is 200
@@ -60,11 +53,7 @@
- (id)initWithRedirect:(NSURL*)location permanent:(BOOL)permanent;
@end
@interface GCDWebServerDataResponse : GCDWebServerResponse {
@private
NSData* _data;
NSInteger _offset;
}
@interface GCDWebServerDataResponse : GCDWebServerResponse
+ (GCDWebServerDataResponse*)responseWithData:(NSData*)data contentType:(NSString*)type;
- (id)initWithData:(NSData*)data contentType:(NSString*)type;
@end
@@ -78,11 +67,7 @@
- (id)initWithHTMLTemplate:(NSString*)path variables:(NSDictionary*)variables; // Simple template system that replaces all occurences of "%variable%" with corresponding value (encodes using UTF-8)
@end
@interface GCDWebServerFileResponse : GCDWebServerResponse {
@private
NSString* _path;
int _file;
}
@interface GCDWebServerFileResponse : GCDWebServerResponse
+ (GCDWebServerFileResponse*)responseWithFile:(NSString*)path;
+ (GCDWebServerFileResponse*)responseWithFile:(NSString*)path isAttachment:(BOOL)attachment;
- (id)initWithFile:(NSString*)path;

View File

@@ -29,6 +29,30 @@
#import "GCDWebServerPrivate.h"
@interface GCDWebServerResponse () {
@private
NSString* _type;
NSUInteger _length;
NSInteger _status;
NSUInteger _maxAge;
NSMutableDictionary* _headers;
}
@end
@interface GCDWebServerDataResponse () {
@private
NSData* _data;
NSInteger _offset;
}
@end
@interface GCDWebServerFileResponse () {
@private
NSString* _path;
int _file;
}
@end
@implementation GCDWebServerResponse
@synthesize contentType=_type, contentLength=_length, statusCode=_status, cacheControlMaxAge=_maxAge, additionalHeaders=_headers;