From 21784a8d30007449a727ba0215a083bc619bfc82 Mon Sep 17 00:00:00 2001 From: Jonathan Schleifer Date: Sun, 22 Jan 2017 17:24:17 +0000 Subject: [PATCH] IRCConnection: Make the socket class configurable This makes using TLS possible. FossilOrigin-Name: 38de3de8ed2056e1116492cc44443d814ff115d85b81ba5c9014d0bf925a0f83 --- src/IRCConnection.h | 6 +++++- src/IRCConnection.m | 9 ++++++++- 2 files changed, 13 insertions(+), 2 deletions(-) diff --git a/src/IRCConnection.h b/src/IRCConnection.h index 84ec669..9484936 100644 --- a/src/IRCConnection.h +++ b/src/IRCConnection.h @@ -28,6 +28,8 @@ @protocol IRCConnectionDelegate @optional +- (void)connection: (IRCConnection*)connection + didCreateSocket: (OF_KINDOF(OFTCPSocket)*)socket; - (void)connection: (IRCConnection*)connection didReceiveLine: (OFString*)line; - (void)connection: (IRCConnection*)connection @@ -72,7 +74,8 @@ @interface IRCConnection: OFObject { - OFTCPSocket *_socket; + Class _socketClass; + OF_KINDOF(OFTCPSocket) *_socket; OFString *_server; uint16_t _port; OFString *_nickname, *_username, *_realname; @@ -80,6 +83,7 @@ id _delegate; } +@property (assign) Class socketClass; @property (copy) OFString *server; @property (assign) uint16_t port; @property (copy) OFString *nickname, *username, *realname; diff --git a/src/IRCConnection.m b/src/IRCConnection.m index 0b590b5..61d3123 100644 --- a/src/IRCConnection.m +++ b/src/IRCConnection.m @@ -38,6 +38,7 @@ #import "IRCUser.h" @implementation IRCConnection +@synthesize socketClass = _socketClass; @synthesize server = _server, port = _port; @synthesize nickname = _nickname, username = _username, realname = _realname; @synthesize delegate = _delegate, socket = _socket; @@ -52,6 +53,7 @@ self = [super init]; @try { + _socketClass = [OFTCPSocket class]; _channels = [[OFMutableDictionary alloc] init]; _port = 6667; } @catch (id e) { @@ -81,7 +83,12 @@ if (_socket != nil) @throw [OFAlreadyConnectedException exception]; - _socket = [[OFTCPSocket alloc] init]; + _socket = [[_socketClass alloc] init]; + if ([_delegate respondsToSelector: + @selector(connection:didCreateSocket:)]) + [_delegate connection: self + didCreateSocket: _socket]; + [_socket connectToHost: _server port: _port];