@@ -41,95 +41,107 @@ - init { self = [super init]; @try { - channels = [[OFMutableDictionary alloc] init]; - port = 6667; + _channels = [[OFMutableDictionary alloc] init]; + _port = 6667; } @catch (id e) { [self release]; @throw e; } return self; } -- (void)setServer: (OFString*)server_ +- (void)dealloc +{ + [_socket release]; + [_server release]; + [_nickname release]; + [_username release]; + [_realname release]; + [_channels release]; + + [super dealloc]; +} + +- (void)setServer: (OFString*)server { - OF_SETTER(server, server_, YES, YES) + OF_SETTER(_server, server, YES, YES) } - (OFString*)server { - OF_GETTER(server, YES) + OF_GETTER(_server, YES) } -- (void)setPort: (uint16_t)port_ +- (void)setPort: (uint16_t)port { - port = port_; + _port = port; } - (uint16_t)port { - return port; + return _port; } -- (void)setNickname: (OFString*)nickname_ +- (void)setNickname: (OFString*)nickname { - OF_SETTER(nickname, nickname_, YES, YES) + OF_SETTER(_nickname, nickname, YES, YES) } - (OFString*)nickname { - OF_GETTER(nickname, YES) + OF_GETTER(_nickname, YES) } -- (void)setUsername: (OFString*)username_ +- (void)setUsername: (OFString*)username { - OF_SETTER(username, username_, YES, YES) + OF_SETTER(_username, username, YES, YES) } - (OFString*)username { - OF_GETTER(username, YES) + OF_GETTER(_username, YES) } -- (void)setRealname: (OFString*)realname_ +- (void)setRealname: (OFString*)realname { - OF_SETTER(realname, realname_, YES, YES) + OF_SETTER(_realname, realname, YES, YES) } - (OFString*)realname { - OF_GETTER(realname, YES) + OF_GETTER(_realname, YES) } -- (void)setDelegate: (id )delegate_ +- (void)setDelegate: (id )delegate { - delegate = delegate_; + _delegate = delegate; } - (id )delegate { - return delegate; + OF_GETTER(_delegate, NO) } - (OFTCPSocket*)socket { - OF_GETTER(sock, YES) + OF_GETTER(_socket, YES) } - (void)connect { OFAutoreleasePool *pool = [[OFAutoreleasePool alloc] init]; - sock = [[OFTCPSocket alloc] init]; - [sock connectToHost: server - port: port]; + _socket = [[OFTCPSocket alloc] init]; + [_socket connectToHost: _server + port: _port]; - [self sendLineWithFormat: @"NICK %@", nickname]; - [self sendLineWithFormat: @"USER %@ * 0 :%@", username, realname]; + [self sendLineWithFormat: @"NICK %@", _nickname]; + [self sendLineWithFormat: @"USER %@ * 0 :%@", _username, _realname]; [pool release]; } - (void)disconnect @@ -169,19 +181,19 @@ if (reason == nil) [self sendLineWithFormat: @"PART %@", channel]; else [self sendLineWithFormat: @"PART %@ :%@", channel, reason]; - [channels removeObjectForKey: channel]; + [_channels removeObjectForKey: channel]; } - (void)sendLine: (OFString*)line { - [delegate connection: self - didSendLine: line]; + [_delegate connection: self + didSendLine: line]; - [sock writeLine: line]; + [_socket writeLine: line]; } - (void)sendLineWithFormat: (OFConstantString*)format, ... { OFAutoreleasePool *pool = [[OFAutoreleasePool alloc] init]; @@ -227,25 +239,25 @@ reason = [[reason componentsSeparatedByString: @"\n"] firstObject]; [self sendLineWithFormat: @"KICK %@ %@ :%@", channel, user, reason]; } -- (void)changeNicknameTo: (OFString*)nickname_ +- (void)changeNicknameTo: (OFString*)nickname { - nickname_ = [[nickname_ componentsSeparatedByString: @"\n"] + nickname = [[nickname componentsSeparatedByString: @"\n"] firstObject]; - [self sendLineWithFormat: @"NICK %@", nickname_]; + [self sendLineWithFormat: @"NICK %@", nickname]; } - (void)IRC_processLine: (OFString*)line { OFArray *components; OFString *action = nil; - [delegate connection: self - didReceiveLine: line]; + [_delegate connection: self + didReceiveLine: line]; components = [line componentsSeparatedByString: @" "]; /* PING */ if ([components count] == 2 && @@ -260,11 +272,11 @@ action = [[components objectAtIndex: 1] uppercaseString]; /* Connected */ if ([action isEqual: @"001"] && [components count] >= 4) { - [delegate connectionWasEstablished: self]; + [_delegate connectionWasEstablished: self]; return; } /* JOIN */ if ([action isEqual: @"JOIN"] && [components count] == 3) { @@ -274,22 +286,23 @@ OFMutableSet *channel; who = [who substringWithRange: of_range(1, [who length] - 1)]; user = [IRCUser IRCUserWithString: who]; - if ([who hasPrefix: [nickname stringByAppendingString: @"!"]]) { + if ([who hasPrefix: + [_nickname stringByAppendingString: @"!"]]) { channel = [OFMutableSet set]; - [channels setObject: channel - forKey: where]; + [_channels setObject: channel + forKey: where]; } else - channel = [channels objectForKey: where]; + channel = [_channels objectForKey: where]; [channel addObject: [user nickname]]; - [delegate connection: self - didSeeUser: user - joinChannel: where]; + [_delegate connection: self + didSeeUser: user + joinChannel: where]; return; } /* NAMES reply */ @@ -301,11 +314,11 @@ OFEnumerator *enumerator; OFString *user; where = [components objectAtIndex: 4]; - if ((channel = [channels objectForKey: where]) == nil) { + if ((channel = [_channels objectForKey: where]) == nil) { /* We did not request that */ return; } pos = [[components objectAtIndex: 0] length] + @@ -326,11 +339,11 @@ of_range(1, [user length] - 1)]; [channel addObject: user]; } - [delegate connection: self + [_delegate connection: self didReceiveNamesForChannel: where]; return; } @@ -344,22 +357,22 @@ size_t pos = [who length] + 1 + [[components objectAtIndex: 1] length] + 1 + [where length]; who = [who substringWithRange: of_range(1, [who length] - 1)]; user = [IRCUser IRCUserWithString: who]; - channel = [channels objectForKey: where]; + channel = [_channels objectForKey: where]; if ([components count] > 3) reason = [line substringWithRange: of_range(pos + 2, [line length] - pos - 2)]; [channel removeObject: [user nickname]]; - [delegate connection: self - didSeeUser: user - leaveChannel: where - reason: reason]; + [_delegate connection: self + didSeeUser: user + leaveChannel: where + reason: reason]; return; } /* KICK */ @@ -374,23 +387,23 @@ [[components objectAtIndex: 1] length] + 1 + [where length] + 1 + [whom length]; who = [who substringWithRange: of_range(1, [who length] - 1)]; user = [IRCUser IRCUserWithString: who]; - channel = [channels objectForKey: where]; + channel = [_channels objectForKey: where]; if ([components count] > 4) reason = [line substringWithRange: of_range(pos + 2, [line length] - pos - 2)]; [channel removeObject: [user nickname]]; - [delegate connection: self - didSeeUser: user - kickUser: whom - channel: where - reason: reason]; + [_delegate connection: self + didSeeUser: user + kickUser: whom + channel: where + reason: reason]; return; } /* QUIT */ @@ -408,51 +421,51 @@ if ([components count] > 2) reason = [line substringWithRange: of_range(pos + 2, [line length] - pos - 2)]; - enumerator = [channels objectEnumerator]; + enumerator = [_channels objectEnumerator]; while ((channel = [enumerator nextObject]) != nil) [channel removeObject: [user nickname]]; - [delegate connection: self - didSeeUserQuit: user - reason: reason]; + [_delegate connection: self + didSeeUserQuit: user + reason: reason]; return; } /* NICK */ if ([action isEqual: @"NICK"] && [components count] == 3) { OFString *who = [components objectAtIndex: 0]; - OFString *newNickname = [components objectAtIndex: 2]; + OFString *nickname = [components objectAtIndex: 2]; IRCUser *user; OFEnumerator *enumerator; OFMutableSet *channel; who = [who substringWithRange: of_range(1, [who length] - 1)]; - newNickname = [newNickname substringWithRange: - of_range(1, [newNickname length] - 1)]; + nickname = [nickname substringWithRange: + of_range(1, [nickname length] - 1)]; user = [IRCUser IRCUserWithString: who]; - if ([[user nickname] isEqual: nickname]) { - [nickname release]; - nickname = [[user nickname] copy]; + if ([[user nickname] isEqual: _nickname]) { + [_nickname release]; + _nickname = [nickname copy]; } - enumerator = [channels keyEnumerator]; + enumerator = [_channels keyEnumerator]; while ((channel = [enumerator nextObject]) != nil) { if ([channel containsObject: [user nickname]]) { [channel removeObject: [user nickname]]; - [channel addObject: newNickname]; + [channel addObject: nickname]; } } - [delegate connection: self - didSeeUser: user - changeNicknameTo: newNickname]; + [_delegate connection: self + didSeeUser: user + changeNicknameTo: nickname]; return; } /* PRIVMSG */ @@ -468,17 +481,17 @@ of_range(1, [from length] - 1)]; msg = [line substringWithRange: of_range(pos + 2, [line length] - pos - 2)]; user = [IRCUser IRCUserWithString: from]; - if (![to isEqual: nickname]) - [delegate connection: self - didReceiveMessage: msg - channel: to - user: user]; + if (![to isEqual: _nickname]) + [_delegate connection: self + didReceiveMessage: msg + channel: to + user: user]; else - [delegate connection: self + [_delegate connection: self didReceivePrivateMessage: msg user: user]; return; } @@ -502,19 +515,19 @@ return; } user = [IRCUser IRCUserWithString: from]; - if (![to isEqual: nickname]) - [delegate connection: self - didReceiveNotice: notice - channel: to - user: user]; + if (![to isEqual: _nickname]) + [_delegate connection: self + didReceiveNotice: notice + channel: to + user: user]; else - [delegate connection: self - didReceiveNotice: notice - user: user]; + [_delegate connection: self + didReceiveNotice: notice + user: user]; return; } } @@ -525,66 +538,54 @@ [self IRC_processLine: line]; [pool release]; } -- (BOOL)connection: (OFTCPSocket*)connection - didReceiveISO88591Line: (OFString*)line - exception: (OFException*)exception +- (BOOL)socket: (OFTCPSocket*)socket + didReceiveISO88591Line: (OFString*)line + exception: (OFException*)exception { if (line != nil) { [self IRC_processLine: line]; - [sock asyncReadLineWithTarget: self - selector: @selector(connection: - didReceiveLine: - exception:)]; + [socket asyncReadLineWithTarget: self + selector: @selector(connection: + didReceiveLine: + exception:)]; } return NO; } -- (BOOL)connection: (OFTCPSocket*)connection - didReceiveLine: (OFString*)line - exception: (OFException*)exception +- (BOOL)socket: (OFTCPSocket*)socket + didReceiveLine: (OFString*)line + exception: (OFException*)exception { if (line != nil) { [self IRC_processLine: line]; return YES; } if ([exception isKindOfClass: [OFInvalidEncodingException class]]) - [sock asyncReadLineWithEncoding: OF_STRING_ENCODING_ISO_8859_1 - target: self - selector: @selector(connection: - didReceiveISO88591Line: - exception:)]; + [socket asyncReadLineWithEncoding: OF_STRING_ENCODING_ISO_8859_1 + target: self + selector: @selector(socket: + didReceiveISO88591Line: + exception:)]; return NO; } - (void)handleConnection { - [sock asyncReadLineWithTarget: self - selector: @selector(connection:didReceiveLine: - exception:)]; + [_socket asyncReadLineWithTarget: self + selector: @selector(socket:didReceiveLine: + exception:)]; } - (OFSet*)usersInChannel: (OFString*)channel { - return [[[channels objectForKey: channel] copy] autorelease]; -} - -- (void)dealloc -{ - [sock release]; - [server release]; - [nickname release]; - [username release]; - [realname release]; - [channels release]; - - [super dealloc]; + return [[[_channels objectForKey: channel] copy] autorelease]; } @end @implementation OFObject (IRCConnectionDelegate) - (void)connection: (IRCConnection*)connection