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
+


Reply via email to