lichat-protocol

API Reference

lichat-protocol

The independent protocol part of Lichat.

LICHAT-PROTOCOL

  • Condition PROTOCOL-CONDITION  (CONDITION)
  • Condition WIRE-CONDITION  (PROTOCOL-CONDITION)
  • Condition PRINTER-CONDITION  (WIRE-CONDITION)
  • Condition UNPRINTABLE-OBJECT  (ERROR, PRINTER-CONDITION)
  • Condition NULL-IN-SYMBOL-DESIGNATOR  (ERROR, PRINTER-CONDITION)
  • Condition READER-CONDITION  (WIRE-CONDITION)
  • Condition STRAY-NULL-FOUND  (ERROR, READER-CONDITION)
  • Condition INCOMPLETE-TOKEN  (ERROR, READER-CONDITION)
  • Condition UNKNOWN-SYMBOL  (ERROR, READER-CONDITION)
  • Condition READ-LIMIT-HIT  (ERROR, READER-CONDITION)
  • Condition MISSING-UPDATE-ARGUMENT  (WIRE-CONDITION)
  • Condition MISSING-ID  (ERROR, MISSING-UPDATE-ARGUMENT)
  • Condition MISSING-CLOCK  (ERROR, MISSING-UPDATE-ARGUMENT)
  • Condition UNKNOWN-WIRE-OBJECT  (ERROR, WIRE-CONDITION)
  • Condition MALFORMED-WIRE-OBJECT  (ERROR, WIRE-CONDITION)
  • Condition INCOMPATIBLE-VALUE-TYPE-FOR-SLOT  (PROTOCOL-CONDITION, ERROR)
  • Function PRINT-SEXPR (sexpr stream)
  • Function WHITESPACE-P (char)
  • Function READ-SEXPR (stream)
  • Variable *ID-COUNTER*
    (random (get-universal-time) (make-random-state t))
  • Variable *DEFAULT-PROFILE-LIFETIME*
    (* 60 60 24 30)
  • Variable *DEFAULT-CHANNEL-LIFETIME*
    (* 60 60 24 30)
  • Variable *DEFAULT-REGULAR-CHANNEL-PERMISSIONS*
    '((lichat-protocol:permissions :registrant) (lichat-protocol:join t)
      (lichat-protocol:leave t) (lichat-protocol:kick :registrant)
      (lichat-protocol:pull t) (lichat-protocol:message t)
      (lichat-protocol:users t) (lichat-protocol:channels t)
      (lichat-protocol:backfill t) (lichat-protocol:data t))
  • Variable *DEFAULT-ANONYMOUS-CHANNEL-PERMISSIONS*
    '((lichat-protocol:permissions) (lichat-protocol:join)
      (lichat-protocol:leave t) (lichat-protocol:kick :registrant)
      (lichat-protocol:pull t) (lichat-protocol:message t) (lichat-protocol:users)
      (lichat-protocol:channels) (lichat-protocol:backfill t)
      (lichat-protocol:data t))
  • Variable *DEFAULT-PRIMARY-CHANNEL-PERMISSIONS*
    '((lichat-protocol:permissions :registrant) (lichat-protocol:create t)
      (lichat-protocol:join t) (lichat-protocol:leave)
      (lichat-protocol:kick :registrant) (lichat-protocol:pull)
      (lichat-protocol:message :registrant) (lichat-protocol:users t)
      (lichat-protocol:channels t) (lichat-protocol:backfill :registrant)
      (lichat-protocol:data :registrant) (lichat-protocol:emotes t)
      (lichat-protocol:emote :registrant))
  • Type WIREABLE
  • Function USERNAME-P (name)
  • Type USERNAME
  • Function CHANNELNAME-P (name)
  • Type CHANNELNAME
  • Function PASSWORD-P (pass)
  • Type PASSWORD
  • Function ID-P (id)
  • Type ID
  • Function NEXT-ID
  • Function PROTOCOL-VERSION
  • Macro DEFINE-PROTOCOL-CLASS (name direct-superclasses direct-slots &rest options)
  • Class SERVER-OBJECT  (TYPED-OBJECT)
    No slots.
  • Class NAMED-OBJECT  (TYPED-OBJECT)
    NAME   Accessor: NAME
  • Class PROFILE  (NAMED-OBJECT, SERVER-OBJECT, TYPED-OBJECT)
    NAME
    LIFETIME   Accessor: LIFETIME
  • Class USER  (NAMED-OBJECT, SERVER-OBJECT, TYPED-OBJECT)
    NAME
    CONNECTIONS   Accessor: CONNECTIONS
    CHANNELS   Accessor: CHANNELS
  • Class CONNECTION  (SERVER-OBJECT, TYPED-OBJECT)
    USER   Accessor: USER
  • Class CHANNEL  (NAMED-OBJECT, SERVER-OBJECT, TYPED-OBJECT)
    NAME
    PERMISSIONS   Accessor: PERMISSIONS
    LIFETIME   Accessor: LIFETIME
    USERS   Accessor: USERS
  • Class WIRE-OBJECT  (TYPED-OBJECT)
    No slots.
  • Class UPDATE  (WIRE-OBJECT, TYPED-OBJECT)
    ID   Accessor: ID
    CLOCK   Accessor: CLOCK
    FROM   Accessor: FROM
  • Class PING  (UPDATE, TYPED-OBJECT)
    No slots.
  • Class PONG  (UPDATE, TYPED-OBJECT)
    No slots.
  • Class CONNECT  (UPDATE, TYPED-OBJECT)
    PASSWORD   Accessor: PASSWORD
    VERSION   Accessor: VERSION
    EXTENSIONS   Accessor: EXTENSIONS
  • Class DISCONNECT  (UPDATE, TYPED-OBJECT)
    No slots.
  • Class REGISTER  (UPDATE, TYPED-OBJECT)
    PASSWORD   Accessor: PASSWORD
  • Class CHANNEL-UPDATE  (UPDATE, TYPED-OBJECT)
    CHANNEL   Accessor: CHANNEL
  • Class TARGET-UPDATE  (UPDATE, TYPED-OBJECT)
    TARGET   Accessor: TARGET
  • Class TEXT-UPDATE  (UPDATE, TYPED-OBJECT)
    TEXT   Accessor: TEXT
  • Class JOIN  (CHANNEL-UPDATE, TYPED-OBJECT)
    No slots.
  • Class LEAVE  (CHANNEL-UPDATE, TYPED-OBJECT)
    No slots.
  • Class CREATE  (CHANNEL-UPDATE, TYPED-OBJECT)
    CHANNEL   Accessor: CHANNEL
  • Class KICK  (CHANNEL-UPDATE, TARGET-UPDATE, TYPED-OBJECT)
    No slots.
  • Class PULL  (CHANNEL-UPDATE, TARGET-UPDATE, TYPED-OBJECT)
    No slots.
  • Class PERMISSIONS  (CHANNEL-UPDATE, TYPED-OBJECT)
    PERMISSIONS   Accessor: PERMISSIONS
  • Class MESSAGE  (CHANNEL-UPDATE, TEXT-UPDATE, TYPED-OBJECT)
    No slots.
  • Class USERS  (CHANNEL-UPDATE, TYPED-OBJECT)
    USERS   Accessor: USERS
  • Class CHANNELS  (UPDATE, TYPED-OBJECT)
    CHANNELS   Accessor: CHANNELS
  • Class USER-INFO  (TARGET-UPDATE, TYPED-OBJECT)
    REGISTERED   Accessor: REGISTERED
    CONNECTIONS   Accessor: CONNECTIONS
  • Class BACKFILL  (CHANNEL-UPDATE, TYPED-OBJECT)
    No slots.
  • Class DATA  (CHANNEL-UPDATE, TYPED-OBJECT)
    CONTENT-TYPE   Accessor: CONTENT-TYPE
    FILENAME   Accessor: FILENAME
    PAYLOAD   Accessor: PAYLOAD
  • Class EMOTES  (UPDATE, TYPED-OBJECT)
    NAMES   Accessor: NAMES
  • Class EMOTE  (UPDATE, TYPED-OBJECT)
    CONTENT-TYPE   Accessor: CONTENT-TYPE
    NAME   Accessor: NAME
    PAYLOAD   Accessor: PAYLOAD
  • Class EDIT  (MESSAGE, TYPED-OBJECT)
    No slots.
  • Class FAILURE  (TEXT-UPDATE, TYPED-OBJECT)
    No slots.
  • Class MALFORMED-UPDATE  (FAILURE, TYPED-OBJECT)
    No slots.
  • Class UPDATE-TOO-LONG  (FAILURE, TYPED-OBJECT)
    No slots.
  • Class CONNECTION-UNSTABLE  (FAILURE, TYPED-OBJECT)
    No slots.
  • Class TOO-MANY-CONNECTIONS  (FAILURE, TYPED-OBJECT)
    No slots.
  • Class UPDATE-FAILURE  (FAILURE, TYPED-OBJECT)
    UPDATE-ID   Accessor: UPDATE-ID
  • Class INVALID-UPDATE  (UPDATE-FAILURE, TYPED-OBJECT)
    No slots.
  • Class USERNAME-MISMATCH  (UPDATE-FAILURE, TYPED-OBJECT)
    No slots.
  • Class INCOMPATIBLE-VERSION  (UPDATE-FAILURE, TYPED-OBJECT)
    COMPATIBLE-VERSIONS   Accessor: COMPATIBLE-VERSIONS
  • Class INVALID-PASSWORD  (UPDATE-FAILURE, TYPED-OBJECT)
    No slots.
  • Class NO-SUCH-PROFILE  (UPDATE-FAILURE, TYPED-OBJECT)
    No slots.
  • Class USERNAME-TAKEN  (UPDATE-FAILURE, TYPED-OBJECT)
    No slots.
  • Class NO-SUCH-CHANNEL  (UPDATE-FAILURE, TYPED-OBJECT)
    No slots.
  • Class REGISTRATION-REJECTED  (UPDATE-FAILURE, TYPED-OBJECT)
    No slots.
  • Class ALREADY-IN-CHANNEL  (UPDATE-FAILURE, TYPED-OBJECT)
    No slots.
  • Class NOT-IN-CHANNEL  (UPDATE-FAILURE, TYPED-OBJECT)
    No slots.
  • Class CHANNELNAME-TAKEN  (UPDATE-FAILURE, TYPED-OBJECT)
    No slots.
  • Class BAD-NAME  (UPDATE-FAILURE, TYPED-OBJECT)
    No slots.
  • Class INSUFFICIENT-PERMISSIONS  (UPDATE-FAILURE, TYPED-OBJECT)
    No slots.
  • Class INVALID-PERMISSIONS  (UPDATE-FAILURE, TYPED-OBJECT)
    No slots.
  • Class NO-SUCH-USER  (UPDATE-FAILURE, TYPED-OBJECT)
    No slots.
  • Class TOO-MANY-UPDATES  (UPDATE-FAILURE, TYPED-OBJECT)
    No slots.
  • Class BAD-CONTENT-TYPE  (UPDATE-FAILURE, TYPED-OBJECT)
    ALLOWED-CONTENT-TYPES   Accessor: ALLOWED-CONTENT-TYPES
  • Function TO-WIRE (wireable stream)
  • Function CHECK-UPDATE-OPTIONS (sexpr)
  • Function FROM-WIRE (stream &optional limit)