blob: 74d4af9d7e6b534bce236362394be7ae58a8a7c6 [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 McGeachieb80024d2010-04-28 17:43:45 +000020
21#if !TARGET_OS_IPHONE
22#import <CoreServices/CoreServices.h>
23#else
24#import <CFNetwork/CFNetwork.h>
25#endif
Mark Slee77575e62007-09-24 19:24:53 +000026
27@implementation TSocketClient
28
29- (id) initWithHostname: (NSString *) hostname
30 port: (int) port
31{
Andrew McGeachiebbd55ad2009-07-24 15:58:07 +000032 NSInputStream * inputStream = NULL;
33 NSOutputStream * outputStream = NULL;
34 CFReadStreamRef readStream = NULL;
35 CFWriteStreamRef writeStream = NULL;
36 CFStreamCreatePairWithSocketToHost(kCFAllocatorDefault, (CFStringRef)hostname, port, &readStream, &writeStream);
37 if (readStream && writeStream) {
38 CFReadStreamSetProperty(readStream, kCFStreamPropertyShouldCloseNativeSocket, kCFBooleanTrue);
39 CFWriteStreamSetProperty(writeStream, kCFStreamPropertyShouldCloseNativeSocket, kCFBooleanTrue);
40
41 inputStream = (NSInputStream *)readStream;
42 [inputStream retain];
43 [inputStream setDelegate:self];
44 [inputStream scheduleInRunLoop:[NSRunLoop currentRunLoop] forMode:NSDefaultRunLoopMode];
45 [inputStream open];
46
47 outputStream = (NSOutputStream *)writeStream;
48 [outputStream retain];
49 [outputStream setDelegate:self];
50 [outputStream scheduleInRunLoop:[NSRunLoop currentRunLoop] forMode:NSDefaultRunLoopMode];
51 [outputStream open];
52 }
53
54 self = [super initWithInputStream: inputStream outputStream: outputStream];
55
56 return self;
Mark Slee77575e62007-09-24 19:24:53 +000057}
58
59
60@end
61
62
63