Remove the IRCChannels class.

It was only overcomplicating things with no gain at all. Instead,
strings are used to describe channels now and the storage of users in a
channel is inside IRCConnection now.

FossilOrigin-Name: 620b9b2a3087ddf679bb44eaa5e7e1a688c4cb99ffdc450e1073ab31e693c556
This commit is contained in:
Jonathan Schleifer 2012-11-24 11:56:57 +00:00
parent c29ff783e2
commit 5f6b64efbd
7 changed files with 90 additions and 250 deletions

View file

@ -7,8 +7,6 @@
objects = {
/* Begin PBXBuildFile section */
4BBE6ECC1338258D007EE595 /* IRCChannel.h in Headers */ = {isa = PBXBuildFile; fileRef = 4BBE6EC81338258D007EE595 /* IRCChannel.h */; };
4BBE6ECD1338258D007EE595 /* IRCChannel.m in Sources */ = {isa = PBXBuildFile; fileRef = 4BBE6EC91338258D007EE595 /* IRCChannel.m */; };
4BBE6ECE1338258D007EE595 /* IRCConnection.h in Headers */ = {isa = PBXBuildFile; fileRef = 4BBE6ECA1338258D007EE595 /* IRCConnection.h */; };
4BBE6ECF1338258D007EE595 /* IRCConnection.m in Sources */ = {isa = PBXBuildFile; fileRef = 4BBE6ECB1338258D007EE595 /* IRCConnection.m */; };
4BBE6EE313382DAE007EE595 /* IRCUser.h in Headers */ = {isa = PBXBuildFile; fileRef = 4BBE6EE113382DAE007EE595 /* IRCUser.h */; };
@ -44,8 +42,6 @@
/* Begin PBXFileReference section */
4BBE6EB013382479007EE595 /* ObjIRC.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = ObjIRC.framework; sourceTree = BUILT_PRODUCTS_DIR; };
4BBE6EC713382541007EE595 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = SOURCE_ROOT; };
4BBE6EC81338258D007EE595 /* IRCChannel.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = IRCChannel.h; path = src/IRCChannel.h; sourceTree = SOURCE_ROOT; };
4BBE6EC91338258D007EE595 /* IRCChannel.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = IRCChannel.m; path = src/IRCChannel.m; sourceTree = SOURCE_ROOT; };
4BBE6ECA1338258D007EE595 /* IRCConnection.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = IRCConnection.h; path = src/IRCConnection.h; sourceTree = SOURCE_ROOT; };
4BBE6ECB1338258D007EE595 /* IRCConnection.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = IRCConnection.m; path = src/IRCConnection.m; sourceTree = SOURCE_ROOT; };
4BBE6EE113382DAE007EE595 /* IRCUser.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = IRCUser.h; path = src/IRCUser.h; sourceTree = SOURCE_ROOT; };
@ -109,8 +105,6 @@
children = (
4BBE6F0213383A19007EE595 /* Frameworks */,
4BBE6EBA1338247A007EE595 /* Supporting Files */,
4BBE6EC81338258D007EE595 /* IRCChannel.h */,
4BBE6EC91338258D007EE595 /* IRCChannel.m */,
4BBE6ECA1338258D007EE595 /* IRCConnection.h */,
4BBE6ECB1338258D007EE595 /* IRCConnection.m */,
4BBE6EE113382DAE007EE595 /* IRCUser.h */,
@ -151,7 +145,6 @@
isa = PBXHeadersBuildPhase;
buildActionMask = 2147483647;
files = (
4BBE6ECC1338258D007EE595 /* IRCChannel.h in Headers */,
4BBE6ECE1338258D007EE595 /* IRCConnection.h in Headers */,
4BBE6EE313382DAE007EE595 /* IRCUser.h in Headers */,
);
@ -234,7 +227,6 @@
isa = PBXSourcesBuildPhase;
buildActionMask = 2147483647;
files = (
4BBE6ECD1338258D007EE595 /* IRCChannel.m in Sources */,
4BBE6ECF1338258D007EE595 /* IRCConnection.m in Sources */,
4BBE6EE413382DAE007EE595 /* IRCUser.m in Sources */,
);

View file

@ -1,45 +0,0 @@
/*
* Copyright (c) 2010, 2011, Jonathan Schleifer <js@webkeks.org>
*
* https://webkeks.org/git/?p=objirc.git
*
* Permission to use, copy, modify, and/or distribute this software for any
* purpose with or without fee is hereby granted, provided that the above
* copyright notice and this permission notice is present in all copies.
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
* AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
* ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
* LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
* CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
* SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
* INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
* CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
* ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
* POSSIBILITY OF SUCH DAMAGE.
*/
#import <ObjFW/OFObject.h>
#import <ObjFW/OFSet.h>
@class OFString;
@interface IRCChannel: OFObject
{
OFString *name;
OFMutableSet *users;
}
#ifdef OF_HAVE_PROPERTIES
@property (readonly) OFString *name;
@property (readonly, copy) OFSet *users;
#endif
+ channelWithName: (OFString*)name;
- initWithName: (OFString*)name;
- (OFString*)name;
- (OFSet*)users;
- (void)IRC_addUser: (OFString*)user;
- (void)IRC_removeUser: (OFString*)user;
@end

View file

@ -1,82 +0,0 @@
/*
* Copyright (c) 2010, 2011, Jonathan Schleifer <js@webkeks.org>
*
* https://webkeks.org/git/?p=objirc.git
*
* Permission to use, copy, modify, and/or distribute this software for any
* purpose with or without fee is hereby granted, provided that the above
* copyright notice and this permission notice is present in all copies.
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
* AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
* ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
* LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
* CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
* SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
* INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
* CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
* ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
* POSSIBILITY OF SUCH DAMAGE.
*/
#import <ObjFW/OFString.h>
#import <ObjFW/macros.h>
#import "IRCChannel.h"
@implementation IRCChannel
+ channelWithName: (OFString*)name
{
return [[[self alloc] initWithName: name] autorelease];
}
- initWithName: (OFString*)name_
{
self = [super init];
@try {
name = [name_ copy];
users = [[OFMutableSet alloc] init];
} @catch (id e) {
[self release];
@throw e;
}
return self;
}
- (void)dealloc
{
[name release];
[users release];
[super dealloc];
}
- (OFString*)name
{
OF_GETTER(name, YES)
}
- (OFSet*)users
{
return [[users copy] autorelease];
}
- (OFString*)description
{
return [[name copy] autorelease];
}
- (void)IRC_addUser: (OFString*)user
{
[users addObject: user];
}
- (void)IRC_removeUser: (OFString*)user
{
[users removeObject: user];
}
@end

View file

@ -20,14 +20,10 @@
* POSSIBILITY OF SUCH DAMAGE.
*/
#import <ObjFW/OFObject.h>
#import <ObjFW/ObjFW.h>
@class OFString;
@class OFMutableDictionary;
@class OFTCPSocket;
@class IRCConnection;
@class IRCUser;
@class IRCChannel;
#ifndef IRC_CONNECTION_M
@protocol IRCConnectionDelegate <OFObject>
@ -44,10 +40,10 @@
- (void)connectionWasEstablished: (IRCConnection*)connection;
- (void)connection: (IRCConnection*)connection
didSeeUser: (IRCUser*)user
joinChannel: (IRCChannel*)channel;
joinChannel: (OFString*)channel;
- (void)connection: (IRCConnection*)connection
didSeeUser: (IRCUser*)user
leaveChannel: (IRCChannel*)channel
leaveChannel: (OFString*)channel
reason: (OFString*)reason;
- (void)connection: (IRCConnection*)connection
didSeeUser: (IRCUser*)user
@ -55,15 +51,15 @@
- (void)connection: (IRCConnection*)connection
didSeeUser: (IRCUser*)user
kickUser: (OFString*)kickedUser
channel: (IRCChannel*)channel
channel: (OFString*)channel
reason: (OFString*)reason;
- (void)connection: (IRCConnection*)connection
didSeeUserQuit: (IRCUser*)user
reason: (OFString*)reason;
- (void)connection: (IRCConnection*)connection
didReceiveMessage: (OFString*)msg
user: (IRCUser*)user
channel: (IRCChannel*)channel;
channel: (OFString*)channel
user: (IRCUser*)user;
- (void)connection: (IRCConnection*)connection
didReceivePrivateMessage: (OFString*)msg
user: (IRCUser*)user;
@ -72,10 +68,10 @@
user: (IRCUser*)user;
- (void)connection: (IRCConnection*)connection
didReceiveNotice: (OFString*)notice
user: (IRCUser*)user
channel: (IRCChannel*)channel;
channel: (OFString*)channel
user: (IRCUser*)user;
- (void)connection: (IRCConnection*)connection
didReceiveNamesForChannel: (IRCChannel*)channel;
didReceiveNamesForChannel: (OFString*)channel;
- (void)connectionWasClosed: (IRCConnection*)connection;
@end
@ -116,23 +112,20 @@
- (void)disconnect;
- (void)disconnectWithReason: (OFString*)reason;
- (void)joinChannel: (OFString*)channelName;
- (void)leaveChannel: (IRCChannel*)channel;
- (void)leaveChannel: (IRCChannel*)channel
- (void)leaveChannel: (OFString*)channel;
- (void)leaveChannel: (OFString*)channel
reason: (OFString*)reason;
- (void)sendMessage: (OFString*)msg
channel: (IRCChannel*)channel;
- (void)sendMessage: (OFString*)msg
user: (OFString*)user;
to: (OFString*)to;
- (void)sendNotice: (OFString*)notice
user: (OFString*)user;
- (void)sendNotice: (OFString*)notice
channel: (IRCChannel*)channel;
to: (OFString*)to;
- (void)kickUser: (OFString*)user
channel: (IRCChannel*)channel
channel: (OFString*)channel
reason: (OFString*)reason;
- (void)changeNicknameTo: (OFString*)nickname;
- (void)processLine: (OFString*)line;
- (void)handleConnection;
- (OFSet*)usersInChannel: (OFString*)channel;
@end
@interface OFObject (IRCConnectionDelegate) <IRCConnectionDelegate>

View file

@ -36,7 +36,6 @@
#import "IRCConnection.h"
#import "IRCUser.h"
#import "IRCChannel.h"
@implementation IRCConnection
- init
@ -146,27 +145,26 @@
[self sendLineWithFormat: @"QUIT :%@", reason];
}
- (void)joinChannel: (OFString*)channelName
- (void)joinChannel: (OFString*)channel
{
[self sendLineWithFormat: @"JOIN %@", channelName];
[self sendLineWithFormat: @"JOIN %@", channel];
}
- (void)leaveChannel: (IRCChannel*)channel
- (void)leaveChannel: (OFString*)channel
{
[self leaveChannel: channel
reason: nil];
}
- (void)leaveChannel: (IRCChannel*)channel
- (void)leaveChannel: (OFString*)channel
reason: (OFString*)reason
{
if (reason == nil)
[self sendLineWithFormat: @"PART %@", [channel name]];
[self sendLineWithFormat: @"PART %@", channel];
else
[self sendLineWithFormat: @"PART %@ :%@",
[channel name], reason];
[self sendLineWithFormat: @"PART %@ :%@", channel, reason];
[channels removeObjectForKey: [channel name]];
[channels removeObjectForKey: channel];
}
- (void)sendLine: (OFString*)line
@ -194,35 +192,22 @@
}
- (void)sendMessage: (OFString*)msg
channel: (IRCChannel*)channel
to: (OFString*)to
{
[self sendLineWithFormat: @"PRIVMSG %@ :%@", [channel name], msg];
}
- (void)sendMessage: (OFString*)msg
user: (OFString*)user
{
[self sendLineWithFormat: @"PRIVMSG %@ :%@", user, msg];
[self sendLineWithFormat: @"PRIVMSG %@ :%@", to, msg];
}
- (void)sendNotice: (OFString*)notice
user: (OFString*)user
to: (OFString*)to
{
[self sendLineWithFormat: @"NOTICE %@ :%@", user, notice];
}
- (void)sendNotice: (OFString*)notice
channel: (IRCChannel*)channel
{
[self sendLineWithFormat: @"NOTICE %@ :%@", [channel name], notice];
[self sendLineWithFormat: @"NOTICE %@ :%@", to, notice];
}
- (void)kickUser: (OFString*)user
channel: (IRCChannel*)channel
channel: (OFString*)channel
reason: (OFString*)reason
{
[self sendLineWithFormat: @"KICK %@ %@ :%@",
[channel name], user, reason];
[self sendLineWithFormat: @"KICK %@ %@ :%@", channel, user, reason];
}
- (void)changeNicknameTo: (OFString*)nickname_
@ -264,38 +249,39 @@
OFString *who = [components objectAtIndex: 0];
OFString *where = [components objectAtIndex: 2];
IRCUser *user;
IRCChannel *channel;
OFMutableSet *channel;
who = [who substringWithRange: of_range(1, [who length] - 1)];
user = [IRCUser IRCUserWithString: who];
if ([who hasPrefix: [nickname stringByAppendingString: @"!"]]) {
channel = [IRCChannel channelWithName: where];
channel = [OFMutableSet set];
[channels setObject: channel
forKey: where];
} else
channel = [channels objectForKey: where];
[channel IRC_addUser: [user nickname]];
[channel addObject: [user nickname]];
[delegate connection: self
didSeeUser: user
joinChannel: channel];
joinChannel: where];
return;
}
/* NAMES reply */
if ([action isEqual: @"353"] && [components count] >= 6) {
IRCChannel *channel;
OFString *where;
OFMutableSet *channel;
OFArray *users;
size_t pos;
OFEnumerator *enumerator;
OFString *user;
channel = [channels
objectForKey: [components objectAtIndex: 4]];
if (channel == nil) {
where = [components objectAtIndex: 4];
if ((channel = [channels objectForKey: where]) == nil) {
/* We did not request that */
return;
}
@ -317,11 +303,11 @@
user = [user substringWithRange:
of_range(1, [user length] - 1)];
[channel IRC_addUser: user];
[channel addObject: user];
}
[delegate connection: self
didReceiveNamesForChannel: channel];
didReceiveNamesForChannel: where];
return;
}
@ -331,7 +317,7 @@
OFString *who = [components objectAtIndex: 0];
OFString *where = [components objectAtIndex: 2];
IRCUser *user;
IRCChannel *channel;
OFMutableSet *channel;
OFString *reason = nil;
size_t pos = [who length] + 1 +
[[components objectAtIndex: 1] length] + 1 + [where length];
@ -344,11 +330,11 @@
reason = [line substringWithRange:
of_range(pos + 2, [line length] - pos - 2)];
[channel IRC_removeUser: [user nickname]];
[channel removeObject: [user nickname]];
[delegate connection: self
didSeeUser: user
leaveChannel: channel
leaveChannel: where
reason: reason];
return;
@ -360,7 +346,7 @@
OFString *where = [components objectAtIndex: 2];
OFString *whom = [components objectAtIndex: 3];
IRCUser *user;
IRCChannel *channel;
OFMutableSet *channel;
OFString *reason = nil;
size_t pos = [who length] + 1 +
[[components objectAtIndex: 1] length] + 1 +
@ -374,12 +360,12 @@
reason = [line substringWithRange:
of_range(pos + 2, [line length] - pos - 2)];
[channel IRC_removeUser: [user nickname]];
[channel removeObject: [user nickname]];
[delegate connection: self
didSeeUser: user
kickUser: whom
channel: channel
channel: where
reason: reason];
return;
@ -393,7 +379,7 @@
size_t pos = [who length] + 1 +
[[components objectAtIndex: 1] length];
OFEnumerator *enumerator;
IRCChannel *channel;
OFMutableSet *channel;
who = [who substringWithRange: of_range(1, [who length] - 1)];
user = [IRCUser IRCUserWithString: who];
@ -402,9 +388,9 @@
reason = [line substringWithRange:
of_range(pos + 2, [line length] - pos - 2)];
enumerator = [channels keyEnumerator];
enumerator = [channels objectEnumerator];
while ((channel = [enumerator nextObject]) != nil)
[channel IRC_removeUser: [user nickname]];
[channel removeObject: [user nickname]];
[delegate connection: self
didSeeUserQuit: user
@ -419,7 +405,7 @@
OFString *newNickname = [components objectAtIndex: 2];
IRCUser *user;
OFEnumerator *enumerator;
IRCChannel *channel;
OFMutableSet *channel;
who = [who substringWithRange: of_range(1, [who length] - 1)];
newNickname = [newNickname substringWithRange:
@ -434,9 +420,9 @@
enumerator = [channels keyEnumerator];
while ((channel = [enumerator nextObject]) != nil) {
if ([[channel users] containsObject: [user nickname]]) {
[channel IRC_removeUser: [user nickname]];
[channel IRC_addUser: newNickname];
if ([channel containsObject: [user nickname]]) {
[channel removeObject: [user nickname]];
[channel addObject: newNickname];
}
}
@ -462,16 +448,12 @@
of_range(pos + 2, [line length] - pos - 2)];
user = [IRCUser IRCUserWithString: from];
if (![to isEqual: nickname]) {
IRCChannel *channel;
channel = [channels objectForKey: to];
if (![to isEqual: nickname])
[delegate connection: self
didReceiveMessage: msg
user: user
channel: channel];
} else
channel: to
user: user];
else
[delegate connection: self
didReceivePrivateMessage: msg
user: user];
@ -500,16 +482,12 @@
user = [IRCUser IRCUserWithString: from];
if (![to isEqual: nickname]) {
IRCChannel *channel;
channel = [channels objectForKey: to];
if (![to isEqual: nickname])
[delegate connection: self
didReceiveNotice: notice
user: user
channel: channel];
} else
channel: to
user: user];
else
[delegate connection: self
didReceiveNotice: notice
user: user];
@ -568,6 +546,11 @@
exception:)];
}
- (OFSet*)usersInChannel: (OFString*)channel
{
return [[[channels objectForKey: channel] copy] autorelease];
}
- (void)dealloc
{
[sock release];
@ -598,13 +581,13 @@
- (void)connection: (IRCConnection*)connection
didSeeUser: (IRCUser*)user
joinChannel: (IRCChannel*)channel
joinChannel: (OFString*)channel
{
}
- (void)connection: (IRCConnection*)connection
didSeeUser: (IRCUser*)user
leaveChannel: (IRCChannel*)channel
leaveChannel: (OFString*)channel
reason: (OFString*)reason
{
}
@ -618,7 +601,7 @@
- (void)connection: (IRCConnection*)connection
didSeeUser: (IRCUser*)user
kickUser: (OFString*)kickedUser
channel: (IRCChannel*)channel
channel: (OFString*)channel
reason: (OFString*)reason
{
}
@ -631,8 +614,8 @@
- (void)connection: (IRCConnection*)connection
didReceiveMessage: (OFString*)msg
fromUser: (IRCUser*)user
channel: (IRCChannel*)channel
channel: (OFString*)channel
user: (IRCUser*)user
{
}
@ -644,6 +627,7 @@
- (void)connection: (IRCConnection*)connection
didReceiveNotice: (OFString*)notice
channel: (OFString*)channel
user: (IRCUser*)user
{
}
@ -651,12 +635,11 @@
- (void)connection: (IRCConnection*)connection
didReceiveNotice: (OFString*)notice
user: (IRCUser*)user
channel: (IRCChannel*)channel
{
}
- (void)connection: (IRCConnection*)connection
didReceiveNamesForChannel: (IRCChannel*)channel
didReceiveNamesForChannel: (OFString*)channel
{
}

View file

@ -21,5 +21,4 @@
*/
#import "IRCConnection.h"
#import "IRCChannel.h"
#import "IRCUser.h"

View file

@ -26,7 +26,6 @@
#import "IRCConnection.h"
#import "IRCUser.h"
#import "IRCChannel.h"
@interface TestApp: OFObject
@end
@ -67,15 +66,15 @@ OF_APPLICATION_DELEGATE(TestApp)
- (void)connection: (IRCConnection*)connection
didSeeUser: (IRCUser*)user
joinChannel: (IRCChannel*)channel
joinChannel: (OFString*)channel
{
of_log(@"%@ joined %@.", user, channel);
}
- (void)connection: (IRCConnection*)connection
didSeeUser: (IRCUser*)user
leaveChannel: (IRCChannel*)channel
withReason: (OFString*)reason
leaveChannel: (OFString*)channel
reason: (OFString*)reason
{
of_log(@"%@ left %@ (%@).", user, channel, reason);
}
@ -83,15 +82,15 @@ OF_APPLICATION_DELEGATE(TestApp)
- (void)connection: (IRCConnection*)connection
didSeeUser: (IRCUser*)user
kickUser: (OFString*)kickedUser
fromChannel: (IRCChannel*)channel
withReason: (OFString*)reason
channel: (OFString*)channel
reason: (OFString*)reason
{
of_log(@"%@ kicked %@ from %@: %@", user, kickedUser, channel, reason);
}
- (void)connection: (IRCConnection*)connection
didSeeUserQuit: (IRCUser*)user
withReason: (OFString*)reason
reason: (OFString*)reason
{
of_log(@"%@ quit (%@).", user, reason);
}
@ -105,37 +104,38 @@ OF_APPLICATION_DELEGATE(TestApp)
- (void)connection: (IRCConnection*)connection
didReceiveMessage: (OFString*)msg
fromUser: (IRCUser*)user
inChannel: (IRCChannel*)channel
channel: (OFString*)channel
user: (IRCUser*)user
{
of_log(@"[%@] %@: %@", channel, user, msg);
of_log(@"[%@] %@: %@", channel, [user nickname], msg);
}
- (void)connection: (IRCConnection*)connection
didReceivePrivateMessage: (OFString*)msg
fromUser: (IRCUser*)user
user: (IRCUser*)user
{
of_log(@"(%@): %@", user, msg);
}
- (void)connection: (IRCConnection*)connection
didReceiveNotice: (OFString*)notice
fromUser: (IRCUser*)user
channel: (OFString*)channel
user: (IRCUser*)user
{
of_log(@"NOTICE: (%@): %@", user, notice);
of_log(@"NOTICE: [%@] %@: %@", channel, [user nickname], notice);
}
- (void)connection: (IRCConnection*)connection
didReceiveNotice: (OFString*)notice
fromUser: (IRCUser*)user
inChannel: (IRCChannel*)channel
user: (IRCUser*)user
{
of_log(@"NOTICE: [%@] %@: %@", channel, user, notice);
of_log(@"NOTICE: (%@): %@", user, notice);
}
- (void)connection: (IRCConnection*)connection
didReceiveNamesForChannel: (IRCChannel*)channel
didReceiveNamesForChannel: (OFString*)channel
{
of_log(@"Users in %@: %@", channel, [channel users]);
of_log(@"Users in %@: %@", channel,
[connection usersInChannel: channel]);
}
@end