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
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
|
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
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
|
-
-
+
+
-
+
-
+
-
+
-
-
+
+
-
+
-
+
-
+
-
-
+
+
-
+
-
-
+
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
|
#import "OFUnsupportedVersionException.h"
@implementation OFHTTPRequestReply
- init
{
self = [super init];
protocolVersion.major = 1;
protocolVersion.minor = 1;
_protocolVersion.major = 1;
_protocolVersion.minor = 1;
return self;
}
- (void)dealloc
{
[headers release];
[_headers release];
[super dealloc];
}
- (void)setProtocolVersion: (of_http_request_protocol_version_t)protocolVersion_
- (void)setProtocolVersion: (of_http_request_protocol_version_t)protocolVersion
{
if (protocolVersion_.major != 1 || protocolVersion.minor > 1)
if (protocolVersion.major != 1 || protocolVersion.minor > 1)
@throw [OFUnsupportedVersionException
exceptionWithClass: [self class]
version: [OFString stringWithFormat: @"%u.%u",
protocolVersion_.major,
protocolVersion_.minor]];
protocolVersion.major,
protocolVersion.minor]];
protocolVersion = protocolVersion_;
_protocolVersion = protocolVersion;
}
- (of_http_request_protocol_version_t)protocolVersion
{
return protocolVersion;
return _protocolVersion;
}
- (void)setProtocolVersionFromString: (OFString*)string
{
void *pool = objc_autoreleasePoolPush();
OFArray *components = [string componentsSeparatedByString: @"."];
intmax_t major, minor;
of_http_request_protocol_version_t protocolVersion_;
of_http_request_protocol_version_t protocolVersion;
if ([components count] != 2)
@throw [OFInvalidFormatException
exceptionWithClass: [self class]];
major = [[components firstObject] decimalValue];
minor = [[components lastObject] decimalValue];
if (major < 0 || major > UINT8_MAX || minor < 0 || minor > UINT8_MAX)
@throw [OFOutOfRangeException exceptionWithClass: [self class]];
protocolVersion_.major = (uint8_t)major;
protocolVersion_.minor = (uint8_t)minor;
protocolVersion.major = (uint8_t)major;
protocolVersion.minor = (uint8_t)minor;
[self setProtocolVersion: protocolVersion_];
[self setProtocolVersion: protocolVersion];
objc_autoreleasePoolPop(pool);
}
- (OFString*)protocolVersionString
{
return [OFString stringWithFormat: @"%u.%u", protocolVersion.major,
protocolVersion.minor];
return [OFString stringWithFormat: @"%u.%u", _protocolVersion.major,
_protocolVersion.minor];
}
- (short)statusCode
{
return statusCode;
return _statusCode;
}
- (void)setStatusCode: (short)statusCode_
- (void)setStatusCode: (short)statusCode
{
statusCode = statusCode_;
_statusCode = statusCode;
}
- (OFDictionary*)headers
{
OF_GETTER(headers, YES)
OF_GETTER(_headers, YES)
}
- (void)setHeaders: (OFDictionary*)headers_
- (void)setHeaders: (OFDictionary*)headers
{
OF_SETTER(headers, headers_, YES, YES)
OF_SETTER(_headers, headers, YES, YES)
}
- (OFString*)description
{
void *pool = objc_autoreleasePoolPush();
OFString *indentedHeaders, *ret;
indentedHeaders = [[headers description]
indentedHeaders = [[_headers description]
stringByReplacingOccurrencesOfString: @"\n"
withString: @"\n\t"];
ret = [[OFString alloc] initWithFormat:
@"<%@:\n"
@"\tStatus code = %d\n"
@"\tHeaders = %@\n"
@">",
[self class], statusCode, indentedHeaders];
[self class], _statusCode, indentedHeaders];
objc_autoreleasePoolPop(pool);
return [ret autorelease];
}
@end
|