ObjIRC  Diff

Differences From Artifact [161d77c9d0]:

To Artifact [dc79d3b924]:


19
20
21
22
23
24
25


26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44

45
46
47
48
49
50
51
52

53
54
55

56
57
58
59
60
61
62
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45

46
47
48
49
50
51
52
53

54
55
56

57
58
59
60
61
62
63
64







+
+


















-
+







-
+


-
+







 * 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/ObjFW.h>

OF_ASSUME_NONNULL_BEGIN

@class IRCConnection;
@class IRCUser;

@protocol IRCConnectionDelegate <OFObject>
@optional
- (void)connection: (IRCConnection *)connection
   didCreateSocket: (OF_KINDOF(OFTCPSocket) *)socket;
- (void)connection: (IRCConnection *)connection
    didReceiveLine: (OFString *)line;
- (void)connection: (IRCConnection *)connection
       didSendLine: (OFString *)line;
- (void)connectionWasEstablished: (IRCConnection *)connection;
- (void)connection: (IRCConnection *)connection
	didSeeUser: (IRCUser *)user
       joinChannel: (OFString *)channel;
- (void)connection: (IRCConnection *)connection
	didSeeUser: (IRCUser *)user
      leaveChannel: (OFString *)channel
	    reason: (OFString *)reason;
	    reason: (nullable OFString *)reason;
- (void)connection: (IRCConnection *)connection
        didSeeUser: (IRCUser *)user
  changeNicknameTo: (OFString *)nickname;
- (void)connection: (IRCConnection *)connection
	didSeeUser: (IRCUser *)user
	  kickUser: (OFString *)kickedUser
	   channel: (OFString *)channel
	    reason: (OFString *)reason;
	    reason: (nullable OFString *)reason;
- (void)connection: (IRCConnection *)connection
    didSeeUserQuit: (IRCUser *)user
	    reason: (OFString *)reason;
	    reason: (nullable OFString *)reason;
-  (void)connection: (IRCConnection *)connection
  didReceiveMessage: (OFString *)msg
	    channel: (OFString *)channel
	       user: (IRCUser *)user;
-	  (void)connection: (IRCConnection *)connection
  didReceivePrivateMessage: (OFString *)msg
		      user: (IRCUser *)user;
71
72
73
74
75
76
77
78
79


80

81

82
83

84
85
86
87


88
89
90
91
92
93
94
95
96
97











98
99
100
101
102
103
104

105
106
107
108
109


110
111
112
113
114
115

116
117
118
119

120


73
74
75
76
77
78
79


80
81
82
83

84
85

86
87
88


89
90
91
92








93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109

110
111
112
113


114
115
116
117
118
119
120

121
122
123
124

125
126
127
128







-
-
+
+

+
-
+

-
+


-
-
+
+


-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+






-
+



-
-
+
+





-
+



-
+

+
+
  didReceiveNamesForChannel: (OFString *)channel;
- (void)connectionWasClosed: (IRCConnection *)connection;
@end

@interface IRCConnection: OFObject
{
	Class _socketClass;
	OF_KINDOF(OFTCPSocket) *_socket;
	OFString *_server;
	OF_KINDOF(OFTCPSocket) *_Nullable _socket;
	OFString *_Nullable _server;
	uint16_t _port;
	OFString *_Nullable _nickname, *_Nullable _username;
	OFString *_nickname, *_username, *_realname;
	OFString *_Nullable _realname;
	OFMutableDictionary OF_GENERIC(OFString *, OFMutableSet *) *_channels;
	id <IRCConnectionDelegate> _delegate;
	id <IRCConnectionDelegate> _Nullable _delegate;
	of_string_encoding_t _fallbackEncoding;
	of_time_interval_t _pingInterval, _pingTimeout;
	OFString *_pingData;
	OFTimer *_pingTimer;
	OFString *_Nullable _pingData;
	OFTimer *_Nullable _pingTimer;
}

@property (assign) Class socketClass;
@property (nonatomic, copy) OFString *server;
@property uint16_t port;
@property (nonatomic, copy) OFString *nickname, *username, *realname;
@property (assign) id <IRCConnectionDelegate> delegate;
@property (readonly, nonatomic) OFTCPSocket *socket;
@property of_string_encoding_t fallbackEncoding;
@property of_time_interval_t pingInterval, pingTimeout;
@property (readonly, nonatomic) Class socketClass;
@property OF_NULLABLE_PROPERTY (copy, nonatomic) OFString *server;
@property (nonatomic) uint16_t port;
@property OF_NULLABLE_PROPERTY (copy, nonatomic)
    OFString *nickname, *username, *realname;
@property OF_NULLABLE_PROPERTY (assign, nonatomic)
    id <IRCConnectionDelegate> delegate;
@property OF_NULLABLE_PROPERTY (readonly, nonatomic)
    OF_KINDOF(OFTCPSocket *) socket;
@property (nonatomic) of_string_encoding_t fallbackEncoding;
@property (nonatomic) of_time_interval_t pingInterval, pingTimeout;

+ (instancetype)connection;
- (void)sendLine: (OFString *)line;
- (void)sendLineWithFormat: (OFConstantString *)line, ...;
- (void)connect;
- (void)disconnect;
- (void)disconnectWithReason: (OFString *)reason;
- (void)disconnectWithReason: (nullable OFString *)reason;
- (void)joinChannel: (OFString *)channelName;
- (void)leaveChannel: (OFString *)channel;
- (void)leaveChannel: (OFString *)channel
	      reason: (OFString *)reason;
- (void)sendMessage: (OFString *)msg
	      reason: (nullable OFString *)reason;
- (void)sendMessage: (OFString *)message
		 to: (OFString *)to;
- (void)sendNotice: (OFString *)notice
		to: (OFString *)to;
- (void)kickUser: (OFString *)user
	 channel: (OFString *)channel
	  reason: (OFString *)reason;
	  reason: (nullable OFString *)reason;
- (void)changeNicknameTo: (OFString *)nickname;
- (void)processLine: (OFString *)line;
- (void)handleConnection;
- (OFSet OF_GENERIC(OFString *) *)usersInChannel: (OFString *)channel;
- (nullable OFSet OF_GENERIC(OFString *) *)usersInChannel: (OFString *)channel;
@end

OF_ASSUME_NONNULL_END