Yapircl vs PhpSmartIRC - comparison
| From: | Geir Torstein Kristiansen | Date: | Tue, 17 Dec 2002 11:27:52 +0000 |
| Subject: | Yapircl vs PhpSmartIRC - comparison | ||
| References: | 1 | Groups: | php.pear.dev |
| Request: | Send a blank email to pear-dev+get-11729@lists.php.net to get a copy of this message | ||
On Tuesday 17 December 2002 11:06, Lukas Smith wrote:
> Well step one would be to determine what the differences are between the
> packages ..
>
> If I understood this correctly, competing packages should only live in
> PEAR if they take a fundamentally different approach. If they do things
> the same way they should rather be merged.
Net_Yapircl would be nice.
It should be noted that SmartIRC is GPL while Yapircl is licenced under the
php license. But I would say from looking at the code that they take a very
different approach.
Comparison.
SmartIRC uses regex stuff, Yapircl none.
In SmartIRC you must register your callbacks, in Yapircl clients are built by
extending the Yapircl class and adding event_* callbacks to that (nice idea
from Net_IRC). The timer systems and main event loops are different.
What Yapircl lacks compared to SmartIRC
debug levels (planned)
logging to file
actionhandlers (I will not impose policy on users, its up to them if they want
to make an actionhandler system in their client)
What Yapircl has that SmartIRC has not:
RFC compliant message parser
Normal message queue/Priority message queue
Proper message throttling like IRCu, means it can first burst 5 messages then
2 messages each second after that. Throttling can be turned off temporary or
permanently with setUseQ()
YapirlBot class for looping a server list and reconnecting forever with
increasing timeouts if connecting is unsuccessfull.
Other convenience functions in YapirclBot.
Tracking topic changes and topic set timestamp and setby info.
Tracking usermodes, ops/voices
Tracking channelmodes, channel created timestamp
Keeping track of the nicklist, when users join, quit, part, kick, quit, kill
and nickchanges.
WHO syncing of the users in a channel after join, gets hostname, realname,
ircop status whatever.
Statistics counters.
Checks for ping timeout via a timer.
Timeout on failed socket_connect() (SmartIRC will hang)
Details about Yapircl mainloop/timersystem
If Yapircl is used to connect to one server only: It will call socket_select()
with the time to the next timer expires as the usec argument so it will sit
idle until there is either socket activity or the timer should run.
Win32 compatability
SmartIRC calls usleep() this will not work on win32 (Yapircl used to do this
too)
Correct me if I am wrong on any of these points. I am not familiar with the
SmartIRC code.
Disclaimer:
You asked for a comparison, but it should be noted that I have a bias towards
my own package because of the time I have put into it. I realize this thing
probably reads like a marketing letter though :)
--
Geir Torstein Kristiansen
web: http://projects.gtk.mine.nu