blob: b4183fb8f32c0fee6a4e467adba8c3b8cb15a452 [file] [log] [blame]
David Reissea2cba82009-03-30 21:35:00 +00001/*
2 * Licensed to the Apache Software Foundation (ASF) under one
3 * or more contributor license agreements. See the NOTICE file
4 * distributed with this work for additional information
5 * regarding copyright ownership. The ASF licenses this file
6 * to you under the Apache License, Version 2.0 (the
7 * "License"); you may not use this file except in compliance
8 * with the License. You may obtain a copy of the License at
9 *
10 * http://www.apache.org/licenses/LICENSE-2.0
11 *
12 * Unless required by applicable law or agreed to in writing,
13 * software distributed under the License is distributed on an
14 * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
15 * KIND, either express or implied. See the License for the
16 * specific language governing permissions and limitations
17 * under the License.
18 */
Mark Slee77575e62007-09-24 19:24:53 +000019#import "TSocketClient.h"
Andrew McGeachiebbd55ad2009-07-24 15:58:07 +000020#import <CFNetwork/CFSocketStream.h>
Mark Slee77575e62007-09-24 19:24:53 +000021
22@implementation TSocketClient
23
24- (id) initWithHostname: (NSString *) hostname
25 port: (int) port
26{
Andrew McGeachiebbd55ad2009-07-24 15:58:07 +000027 NSInputStream * inputStream = NULL;
28 NSOutputStream * outputStream = NULL;
29 CFReadStreamRef readStream = NULL;
30 CFWriteStreamRef writeStream = NULL;
31 CFStreamCreatePairWithSocketToHost(kCFAllocatorDefault, (CFStringRef)hostname, port, &readStream, &writeStream);
32 if (readStream && writeStream) {
33 CFReadStreamSetProperty(readStream, kCFStreamPropertyShouldCloseNativeSocket, kCFBooleanTrue);
34 CFWriteStreamSetProperty(writeStream, kCFStreamPropertyShouldCloseNativeSocket, kCFBooleanTrue);
35
36 inputStream = (NSInputStream *)readStream;
37 [inputStream retain];
38 [inputStream setDelegate:self];
39 [inputStream scheduleInRunLoop:[NSRunLoop currentRunLoop] forMode:NSDefaultRunLoopMode];
40 [inputStream open];
41
42 outputStream = (NSOutputStream *)writeStream;
43 [outputStream retain];
44 [outputStream setDelegate:self];
45 [outputStream scheduleInRunLoop:[NSRunLoop currentRunLoop] forMode:NSDefaultRunLoopMode];
46 [outputStream open];
47 }
48
49 self = [super initWithInputStream: inputStream outputStream: outputStream];
50
51 return self;
Mark Slee77575e62007-09-24 19:24:53 +000052}
53
54
55@end
56
57
58