Author: dylan Date: 2005-06-25 05:17:20 -0400 (Sat, 25 Jun 2005) New Revision: 819
Added: trunk/docs/spec/ trunk/docs/spec/Haver/ trunk/docs/spec/Haver/Spec.pod Modified: trunk/ Log: [EMAIL PROTECTED]: dylan | 2005-06-25 05:15:16 -0400 I give you, Haver::Spec. It has everything that core.txt had in it. Next, need to write Haver::Spec::Ghost and Haver::Spec::Auth. Property changes on: trunk ___________________________________________________________________ Name: svk:merge - 1f59643a-e6e5-0310-bc24-f7d4c744f460:/haver/havercurs-objc:43089 1f59643a-e6e5-0310-bc24-f7d4c744f460:/haver/local/trunk:11166 1f59643a-e6e5-0310-bc24-f7d4c744f460:/haver/local/trunk-merge-10131:11178 27e50396-46e3-0310-8b22-ae223a1f35ce:/local:212 e9404bb1-7af0-0310-a7ff-e22194cd388b:/haver/local:1183 edfcd8bd-4ce7-0310-a97e-bb1efd40edf3:/local:238 + 1f59643a-e6e5-0310-bc24-f7d4c744f460:/haver/havercurs-objc:43089 1f59643a-e6e5-0310-bc24-f7d4c744f460:/haver/local/trunk:11166 1f59643a-e6e5-0310-bc24-f7d4c744f460:/haver/local/trunk-merge-10131:11178 27e50396-46e3-0310-8b22-ae223a1f35ce:/local:212 e9404bb1-7af0-0310-a7ff-e22194cd388b:/haver/local:1184 edfcd8bd-4ce7-0310-a97e-bb1efd40edf3:/local:238 Added: trunk/docs/spec/Haver/Spec.pod =================================================================== --- trunk/docs/spec/Haver/Spec.pod 2005-06-25 09:17:17 UTC (rev 818) +++ trunk/docs/spec/Haver/Spec.pod 2005-06-25 09:17:20 UTC (rev 819) @@ -0,0 +1,201 @@ +=head1 NAME + +Haver::Spec - The core haver protocol. + +=head1 DESCRIPTION + +This document describes the core functionality of the Haver protocol. +It is not as comprehensive as the Manual, but it is slightly better than keeping these +things in plain text files. + +=head1 BEGIN YOUR FEAR + +Here's a general overview with examples. Lines beginning with C: are from the client, +and lines beginning with S: are from the server. Items enclosed in square brackets +are optional. + +=head2 HAVER/IDENT/HELLO + +C<$supported> is a comma-seperated last of supported extensions (See L</EXTENSIONS>) + + C: HAVER Foobar/1.0 [$supported] + S: HAVER example.com FoobarServer/1.0 + C: IDENT $name + S: HELLO $name + + +=head2 JOIN/PART/LIST + +C<$namespace> is one of "user", "service", or "channel". + + C: JOIN $channel + S: JOIN $channel $user + + C: PART $channel + S: PART $channel $user + + C: LIST $channel $namespace + S: LIST $channel $namespace Thing1 Thing2 Thing3 + +=head2 IN/TO/FROM + +Public messages (a message sent to everyone in a channel) + + C: IN $channel $type @args + S: IN $channel $user $type @args + +Private messages (a message sent ot a select group of users) + + C: TO $users $type @args + S: FROM $users $type @args + + +Clients must use any word (C</^\w+$/>) for $type, +but it is typically "do" or "say". + +=head2 POKE/OUCH + +POKE is used to see if the server is alive. The server will respond with OUCH. + + C: POKE $string + S: OUCH $string + +=head2 PING/PONG + +If the server sends PING, the client must respond with PONG, like so: + + S: PING $string + C: PONG $string + +=head2 BYE/QUIT + +To disconnect, a client should send BYE: + + C: BYE $detail + +The server will reply with: + + S: BYE $type $detail + +All users sharing a channel with the client will see: + + S: QUIT $sender $type $detail + +The $type of quit is one of several things: + +=over + +=item * + +closed + +=item * + +error ($detail = error code?) + +=item * + +bye ($detail = from BYE) + +=item * + +ping + +=item * + +ghost + +=item * + +kill ($detail = killer) + +=back + +=head1 YOU FAIL + +The server may respond to any given message with FAIL, which has the form of: + + S: FAIL $cmd $error [EMAIL PROTECTED] + +Where $cmd is the name of the message that failed, $error is the error name, and @args are +bits of information related to the error. + +=head2 invalid.name + +You used a name that contains invalid characters. + +=head2 reserved.name + +You used a name that contains characters only special people are allowed to use. + +=head2 exists.user + +The user name you requested is in use. + +=head2 unknown.user + +That user name does not exist on the server. + +=head2 unknown.channel + +That channel name does not exist on the server. + +=head2 unknown.namespace + +The namespace (used in LIST, for example) is not one that the server is aware of. + +=head2 invalid.type + +The $type argument of an IN or TO message contained non-word characters. + +=head2 already.joined + +Tried to join a channel that you're already in. + +=head2 already.parted + +Tried to part a channel you're not in. + + +=head1 I MEAN, HI + +I could describe the messages here in greater detail, but I think that belongs in the +manual. There might be some other useful information to put in this section, too. But it +is five thirteen in the morning, so I can't think of it. + +=head1 EXTENSIONS + +Currently defined extensions: L<Haver::Spec::Ghost>, L<Haver::Spec::Auth>. + +=head1 AUTHOR + +Dylan William Hardison, E<lt>[EMAIL PROTECTED]<gt> + +=begin comment + +add your name, too! + +=end + +=head1 SEE ALSO + +L<http://www.haverdev.org/>. + +=head1 COPYRIGHT and LICENSE + +Copyright (C) 2005 by Dylan William Hardison. All Rights Reserved. + +This module is free software; you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation; either version 2 of the License, or +(at your option) any later version. + +This module is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this module; if not, write to the Free Software +Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +
