SmartIrc4net 0.3.5 review
DownloadSmartIrc4net is a C# class for communication with IRC networks, which conforms to the RFC 2812 (IRC Protocol)
|
|
SmartIrc4net is a C# class for communication with IRC networks, which conforms to the RFC 2812 (IRC Protocol). It's orignally a port of SmartIRC (written in PHP), but it's much more now (I will backport it to PHP5 some day). SmartIrc4net an API that handles all IRC protocol messages and is designed for creating IRC bots or even GUI clients.
Here are some key features of "SmartIrc4net":
3 layered API:
- IrcConnection (low-level API) contains socket handling and message buffer
- IrcCommands (extends IrcConnection, middle-level API) contains RFC IRC commands plus easy to use IRC methods (like Op/Deop/Ban/Unban...)
- IrcClient (extends IrcCommands, high-level API) full featured IRC class, with channel syncing, fully event driven
send/receive floodprotection
detects and changes nickname on nickname collisions
autoreconnect, if connection is lost
autoretry for connecting to IRC servers
debugging/logging system with log levels (using log4net)
compatible with Mono and Micrsoft .NET Framework
sendbuffer with a queue that has 3 priority levels (high, medium, low) plus a bypass level (critical)
channel syncing (tracking of users/modes/topic etc in objects)
user syncing (tracking the user in channels, nick/ident/host/realname/server/hopcount in objects)
when channel syncing is acticated the following methods are available:
- IsJoined
- IsOpped
- IsVoiced
- IsBanned
on reconnect all joined channels will be rejoined, also when keys are used
own CTCP version reply can be set
What's New in This Release:
Fixes:
fixed bug in channel sync that caused duplicate exception (Closes sf.net bug #1064190)
fixed tracking of ops and voices list on join
fixed bug that the initial channel mode is not synced (on join).
fixed a crash bug in the channel sync code when a user was voiced/opped/banned 2 times, an ArgumentException was thrown
fixed handling of a stalled connectionIOException was not catched in the write thread, and in the read thread the IsConnectionError was not set
fixed InviteEventArgs, mixed who with channel name
fixed OnConnected event now it's raised when the connection is ready for sending data.
fixed Reconnect() handling in the Listen() loop, moved to ReadLine().
fixed InviteEventArgs.Channel property, initialized with the right value now.
fixed nullref exception in _Event_QUIT() added sanity checks, FreshIRC network does very ugly things with the IRC protocol.
Changes:
improved handling of rejoining channels after reconnect.
using keep-alive socket now.
removed underscores in parameter names (violates .NET library standards)
renamed parameters with "text" to different names (violates .NET library standards)
using new case-insensitive hashtables (FxCop spotted this)
improved the example/test program
main bin/ directory is now used for the example programs
changed overrides to new (method hiding is sufficient here).
updated all MS VS.NET project files.
New:
added Halfop support (with OnHalfop and OnDehalfop events) if you want to use it do:
irc.NonRfcSupport = true;
NonRfcChannel nchan = GetChannel("#channel");
nchan.Halfops....
or
NonRfcChannelUser nuser = GetChannelUser("#channel", "nick");
nuser.Halfop.....
added Halfop() and Dehalfop() command to IrcCommands
added OnErrorMessage event as general hook for all ERR_ messages
added SendReply(), easy way of replying to a message (regardless if its a channel, query or notice message)
added OnMotd event (with MotdEventArgs)
added IrcClient.Motd property
added OnChannelPassiveSynced event
added channel sync timings to channels (Channel.ActiveSyncTime).
added IrcClient.AutoRelogin setting.
added IrcConnection.AutoRetryDelay property.
added IrcConnection.OnConnectionError event.
added Rfc2812.IsValidNickname() method.
added IrcConnection.SocketSendTimeout and IrcConnection.SocketReceiveTimeout
added little benchmark program (examples/benchmark).
added stresstest program (examples/stresstest).
added sign target to the makefile
SmartIrc4net 0.3.5 keywords