︙ | | |
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
|
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
|
-
+
-
-
+
+
-
+
-
-
+
+
-
+
-
+
-
-
+
+
|
- (void)connectionWasEstablished: (IRCConnection*)connection;
- (void)connection: (IRCConnection*)connection
didSeeUser: (IRCUser*)user
joinChannel: (IRCChannel*)channel;
- (void)connection: (IRCConnection*)connection
didSeeUser: (IRCUser*)user
leaveChannel: (IRCChannel*)channel
withReason: (OFString*)reason;
reason: (OFString*)reason;
- (void)connection: (IRCConnection*)connection
didSeeUser: (IRCUser*)user
changeNicknameTo: (OFString*)nickname;
- (void)connection: (IRCConnection*)connection
didSeeUser: (IRCUser*)user
kickUser: (OFString*)kickedUser
fromChannel: (IRCChannel*)channel
withReason: (OFString*)reason;
channel: (IRCChannel*)channel
reason: (OFString*)reason;
- (void)connection: (IRCConnection*)connection
didSeeUserQuit: (IRCUser*)user
withReason: (OFString*)reason;
reason: (OFString*)reason;
- (void)connection: (IRCConnection*)connection
didReceiveMessage: (OFString*)msg
fromUser: (IRCUser*)user
inChannel: (IRCChannel*)channel;
user: (IRCUser*)user
channel: (IRCChannel*)channel;
- (void)connection: (IRCConnection*)connection
didReceivePrivateMessage: (OFString*)msg
fromUser: (IRCUser*)user;
user: (IRCUser*)user;
- (void)connection: (IRCConnection*)connection
didReceiveNotice: (OFString*)notice
fromUser: (IRCUser*)user;
user: (IRCUser*)user;
- (void)connection: (IRCConnection*)connection
didReceiveNotice: (OFString*)notice
fromUser: (IRCUser*)user
inChannel: (IRCChannel*)channel;
user: (IRCUser*)user
channel: (IRCChannel*)channel;
- (void)connection: (IRCConnection*)connection
didReceiveNamesForChannel: (IRCChannel*)channel;
- (void)connectionWasClosed: (IRCConnection*)connection;
@end
@interface IRCConnection: OFObject
{
|
︙ | | |
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
|
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
|
-
+
-
+
-
+
-
+
-
+
-
-
+
+
|
- (void)sendLineWithFormat: (OFConstantString*)line, ...;
- (void)connect;
- (void)disconnect;
- (void)disconnectWithReason: (OFString*)reason;
- (void)joinChannel: (OFString*)channelName;
- (void)leaveChannel: (IRCChannel*)channel;
- (void)leaveChannel: (IRCChannel*)channel
withReason: (OFString*)reason;
reason: (OFString*)reason;
- (void)sendMessage: (OFString*)msg
toChannel: (IRCChannel*)channel;
channel: (IRCChannel*)channel;
- (void)sendMessage: (OFString*)msg
toUser: (OFString*)user;
user: (OFString*)user;
- (void)sendNotice: (OFString*)notice
toUser: (OFString*)user;
user: (OFString*)user;
- (void)sendNotice: (OFString*)notice
toChannel: (IRCChannel*)channel;
channel: (IRCChannel*)channel;
- (void)kickUser: (OFString*)user
fromChannel: (IRCChannel*)channel
withReason: (OFString*)reason;
channel: (IRCChannel*)channel
reason: (OFString*)reason;
- (void)changeNicknameTo: (OFString*)nickname;
- (void)processLine: (OFString*)line;
- (void)handleConnection;
@end
@interface OFObject (IRCConnectionDelegate) <IRCConnectionDelegate>
@end
|
︙ | | |
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
|
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
|
-
+
-
+
|
{
[self sendLineWithFormat: @"JOIN %@", channelName];
}
- (void)leaveChannel: (IRCChannel*)channel
{
[self leaveChannel: channel
withReason: nil];
reason: nil];
}
- (void)leaveChannel: (IRCChannel*)channel
withReason: (OFString*)reason
reason: (OFString*)reason
{
if (reason == nil)
[self sendLineWithFormat: @"PART %@", [channel name]];
else
[self sendLineWithFormat: @"PART %@ :%@",
[channel name], reason];
|
︙ | | |
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
|
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
|
-
+
-
+
-
+
-
+
-
-
+
+
|
[self sendLine: line];
[pool release];
}
- (void)sendMessage: (OFString*)msg
toChannel: (IRCChannel*)channel
channel: (IRCChannel*)channel
{
[self sendLineWithFormat: @"PRIVMSG %@ :%@", [channel name], msg];
}
- (void)sendMessage: (OFString*)msg
toUser: (OFString*)user
user: (OFString*)user
{
[self sendLineWithFormat: @"PRIVMSG %@ :%@", user, msg];
}
- (void)sendNotice: (OFString*)notice
toUser: (OFString*)user
user: (OFString*)user
{
[self sendLineWithFormat: @"NOTICE %@ :%@", user, notice];
}
- (void)sendNotice: (OFString*)notice
toChannel: (IRCChannel*)channel
channel: (IRCChannel*)channel
{
[self sendLineWithFormat: @"NOTICE %@ :%@", [channel name], notice];
}
- (void)kickUser: (OFString*)user
fromChannel: (IRCChannel*)channel
withReason: (OFString*)reason
channel: (IRCChannel*)channel
reason: (OFString*)reason
{
[self sendLineWithFormat: @"KICK %@ %@ :%@",
[channel name], user, reason];
}
- (void)changeNicknameTo: (OFString*)nickname_
{
|
︙ | | |
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
|
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
|
-
+
|
of_range(pos + 2, [line length] - pos - 2)];
[channel IRC_removeUser: [user nickname]];
[delegate connection: self
didSeeUser: user
leaveChannel: channel
withReason: reason];
reason: reason];
return;
}
/* KICK */
if ([action isEqual: @"KICK"] && [components count] >= 4) {
OFString *who = [components objectAtIndex: 0];
|
︙ | | |
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
|
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
|
-
-
+
+
|
of_range(pos + 2, [line length] - pos - 2)];
[channel IRC_removeUser: [user nickname]];
[delegate connection: self
didSeeUser: user
kickUser: whom
fromChannel: channel
withReason: reason];
channel: channel
reason: reason];
return;
}
/* QUIT */
if ([action isEqual: @"QUIT"] && [components count] >= 2) {
OFString *who = [components objectAtIndex: 0];
|
︙ | | |
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
|
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
|
-
+
|
enumerator = [channels keyEnumerator];
while ((channel = [enumerator nextObject]) != nil)
[channel IRC_removeUser: [user nickname]];
[delegate connection: self
didSeeUserQuit: user
withReason: reason];
reason: reason];
return;
}
/* NICK */
if ([action isEqual: @"NICK"] && [components count] == 3) {
OFString *who = [components objectAtIndex: 0];
|
︙ | | |
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
|
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
|
-
-
+
+
-
+
|
if (![to isEqual: nickname]) {
IRCChannel *channel;
channel = [channels objectForKey: to];
[delegate connection: self
didReceiveMessage: msg
fromUser: user
inChannel: channel];
user: user
channel: channel];
} else
[delegate connection: self
didReceivePrivateMessage: msg
fromUser: user];
user: user];
return;
}
/* NOTICE */
if ([action isEqual: @"NOTICE"] && [components count] >= 4) {
OFString *from = [components objectAtIndex: 0];
|
︙ | | |
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
|
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
|
-
-
+
+
-
+
|
if (![to isEqual: nickname]) {
IRCChannel *channel;
channel = [channels objectForKey: to];
[delegate connection: self
didReceiveNotice: notice
fromUser: user
inChannel: channel];
user: user
channel: channel];
} else
[delegate connection: self
didReceiveNotice: notice
fromUser: user];
user: user];
return;
}
}
- (void)processLine: (OFString*)line
{
|
︙ | | |
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
|
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
|
-
+
-
-
+
+
-
+
-
+
-
+
-
+
-
-
+
+
|
joinChannel: (IRCChannel*)channel
{
}
- (void)connection: (IRCConnection*)connection
didSeeUser: (IRCUser*)user
leaveChannel: (IRCChannel*)channel
withReason: (OFString*)reason
reason: (OFString*)reason
{
}
- (void)connection: (IRCConnection*)connection
didSeeUser: (IRCUser*)user
changeNicknameTo: (OFString*)nickname
{
}
- (void)connection: (IRCConnection*)connection
didSeeUser: (IRCUser*)user
kickUser: (OFString*)kickedUser
fromChannel: (IRCChannel*)channel
withReason: (OFString*)reason
channel: (IRCChannel*)channel
reason: (OFString*)reason
{
}
- (void)connection: (IRCConnection*)connection
didSeeUserQuit: (IRCUser*)user
withReason: (OFString*)reason
reason: (OFString*)reason
{
}
- (void)connection: (IRCConnection*)connection
didReceiveMessage: (OFString*)msg
fromUser: (IRCUser*)user
inChannel: (IRCChannel*)channel
channel: (IRCChannel*)channel
{
}
- (void)connection: (IRCConnection*)connection
didReceivePrivateMessage: (OFString*)msg
fromUser: (IRCUser*)user
user: (IRCUser*)user
{
}
- (void)connection: (IRCConnection*)connection
didReceiveNotice: (OFString*)notice
fromUser: (IRCUser*)user
user: (IRCUser*)user
{
}
- (void)connection: (IRCConnection*)connection
didReceiveNotice: (OFString*)notice
fromUser: (IRCUser*)user
inChannel: (IRCChannel*)channel
user: (IRCUser*)user
channel: (IRCChannel*)channel
{
}
- (void)connection: (IRCConnection*)connection
didReceiveNamesForChannel: (IRCChannel*)channel
{
}
- (void)connectionWasClosed: (IRCConnection*)connection
{
}
@end
|