This is the lisp-chat Reference Manual, version 0.2.0, generated automatically by Declt version 4.0 beta 2 "William Riker" on Sun Dec 15 06:38:07 2024 GMT+0.
The main system appears first, followed by any subsystem dependency.
lisp-chat
An experimental chat irc-like
Manoel Vilela
MIT
0.2.0
lisp-chat/client
(system).
lisp-chat/server
(system).
lisp-chat/client
An experimental chat irc-like: client
Manoel Vilela
MIT
0.2.0
usocket
(system).
cl-readline
(system).
bordeaux-threads
(system).
config.lisp
(file).
client.lisp
(file).
lisp-chat/server
An experimental chat irc-like: server
Manoel Vilela
MIT
0.2.0
usocket
(system).
bordeaux-threads
(system).
config.lisp
(file).
server.lisp
(file).
Files are sorted by type and then listed depth-first from the systems components trees.
lisp-chat/lisp-chat.asd
lisp-chat/client/config.lisp
lisp-chat/client/client.lisp
lisp-chat/server/config.lisp
lisp-chat/server/server.lisp
lisp-chat/client/config.lisp
lisp-chat/client
(system).
lisp-chat/client/client.lisp
config.lisp
(file).
lisp-chat/client
(system).
main
(function).
*io-lock*
(special variable).
client-loop
(function).
client-sender
(function).
erase-last-line
(function).
get-user-input
(function).
login
(function).
receive-message
(function).
send-message
(function).
server-broadcast
(function).
server-listener
(function).
lisp-chat/server/config.lisp
lisp-chat/server
(system).
lisp-chat/server/server.lisp
config.lisp
(file).
lisp-chat/server
(system).
main
(function).
*client-lock*
(special variable).
*clients*
(special variable).
*commands-names*
(special variable).
*day-names*
(special variable).
*message-semaphore*
(special variable).
*messages-log*
(special variable).
*messages-stack*
(special variable).
*server-nickname*
(special variable).
*uptime*
(special variable).
/help
(function).
/log
(function).
/nick
(function).
/uptime
(function).
/users
(function).
call-command
(function).
call-command-by-name
(function).
client
(structure).
client-address
(reader).
(setf client-address)
(writer).
client-delete
(function).
client-name
(reader).
(setf client-name)
(writer).
client-p
(function).
client-reader
(function).
client-reader-routine
(function).
client-socket
(reader).
(setf client-socket)
(writer).
client-stream
(function).
command-message
(function).
connection-handler
(function).
copy-client
(function).
copy-message
(function).
create-client
(function).
debug-format
(function).
extract-params
(function).
formated-message
(function).
get-time
(function).
make-client
(function).
make-message
(function).
message
(structure).
message-broadcast
(function).
message-content
(reader).
(setf message-content)
(writer).
message-from
(reader).
(setf message-from)
(writer).
message-p
(function).
message-time
(reader).
(setf message-time)
(writer).
push-message
(function).
safe-client-thread
(function).
send-message
(function).
server-loop
(function).
socket-peer-address
(function).
split
(function).
startswith
(function).
Packages are listed by definition order.
lisp-chat/client
bordeaux-threads
.
common-lisp
.
lisp-chat/config
.
usocket
.
main
(function).
*io-lock*
(special variable).
client-loop
(function).
client-sender
(function).
erase-last-line
(function).
get-user-input
(function).
login
(function).
receive-message
(function).
send-message
(function).
server-broadcast
(function).
server-listener
(function).
lisp-chat/server
bordeaux-threads
.
common-lisp
.
lisp-chat/config
.
usocket
.
main
(function).
*client-lock*
(special variable).
*clients*
(special variable).
*commands-names*
(special variable).
*day-names*
(special variable).
*message-semaphore*
(special variable).
*messages-log*
(special variable).
*messages-stack*
(special variable).
*server-nickname*
(special variable).
*uptime*
(special variable).
/help
(function).
/log
(function).
/nick
(function).
/uptime
(function).
/users
(function).
call-command
(function).
call-command-by-name
(function).
client
(structure).
client-address
(reader).
(setf client-address)
(writer).
client-delete
(function).
client-name
(reader).
(setf client-name)
(writer).
client-p
(function).
client-reader
(function).
client-reader-routine
(function).
client-socket
(reader).
(setf client-socket)
(writer).
client-stream
(function).
command-message
(function).
connection-handler
(function).
copy-client
(function).
copy-message
(function).
create-client
(function).
debug-format
(function).
extract-params
(function).
formated-message
(function).
get-time
(function).
make-client
(function).
make-message
(function).
message
(structure).
message-broadcast
(function).
message-content
(reader).
(setf message-content)
(writer).
message-from
(reader).
(setf message-from)
(writer).
message-p
(function).
message-time
(reader).
(setf message-time)
(writer).
push-message
(function).
safe-client-thread
(function).
send-message
(function).
server-loop
(function).
socket-peer-address
(function).
split
(function).
startswith
(function).
Definitions are sorted by export status, category, package, and then by lexicographic order.
Run application in debug mode with extra info in terminal
Host used in server and client
Default port
List of clients
Allowed command names to be called by client user
Day names
I/O Mutex for avoid terminal race conditions
Messages log
Messages pending to be send by broadcasting
The server nickname
Uptime of server variable
Show a list of the available commands of lisp-chat
Show the last messages typed on the server.
DEPTH is optional number of messages frames from log
Change the client-name given a NEW-NICK which should be a string
Return a string nice encoded to preset the uptime since the server started.
Return a list separated by commas of the currently logged users
Wow, this is a horrible hack to get a string as symbol for functions/command like /help /users /log and so on.
Delete a CLIENT from the list *clients*
Dispatch client threads for basic functioning system
name
.
This procedure is a wrapper for CLIENT-READER-ROUTINE treating all the possible errors based on HANDLER-CASE macro.
This function create a IO-bound procedure to act
by reading the events of a specific CLIENT.
On this software each client talks on your own thread.
Routine to check new messages being typed by the user
Select the stream IO from the client
This function prepare the CONTENT as a message by the @server
This is a special thread just for accepting connections from SOCKET-SERVER and creating new clients from it.
This procedure create a new client based on CONNECTION made by USOCKET:SOCKET-ACCEPT. This shit create a lot of side effects as messages if the debug is on because this makes all the log stuff to make analysis
If *debug* from lisp-chat-config is true, print debug info on running based on ARGS
Erase the last line by using ANSI Escape codes
The default message format of this server. MESSAGE is a string Changing this reflects all the layout from client/server. Probably this would be the MFRP: Manoel Fucking Raw Protocol. Because this we can still use netcat as client for lisp-chat.
Return a encoded string as HH:MM:SS based on the current timestamp.
Get the user input by using readline
Do the login of the application given a SOCKET instances
This procedure is a general independent thread to run brodcasting all the clients when a message is ping on this server
from
.
time
.
Push a messaged FROM as CONTENT into the *messages-stack*
Receive a message and print in the terminal carefully with IO race conditions
This function is a wrapper for CREATE-CLIENT treating the exceptions.
Send a MESSAGE string through a SOCKET instance
Send to CLIENT a MESSAGE :type string
Call server-listener treating exceptional cases
Routine to check new messages coming from the server
This is the general server-loop procedure. Create the threads
necessary for the basic working state of this chat. The main idea
is creating a MESSAGE-BROADCAST procedure and CONNECTION-HANDLER
procedure running as separated threads.
The first procedure send always a new message too all clients defined on *clients* when *messages-semaphore* is signalized. The second procedure is a general connection-handler for new clients trying connecting to the server.
Given a USOCKET:SOCKET instance return a ipv4 encoded IP string
Split a string by a delimiterp function character checking
Check if STRING starts with SUBSTRING.
This structure handle the creation/control of the clients of the server. NAME is a string. Socket is a USOCKET:SOCKET and address is a ipv4 encoded string.
This structure abstract the type message with is saved into *messages-log* and until consumed, temporally pushed to *messages-stack*. FROM, CONTENT and TIME has type string
Jump to: | (
/
C D E F G L M P R S |
---|
Jump to: | (
/
C D E F G L M P R S |
---|
Jump to: | *
A C F N S T |
---|
Jump to: | *
A C F N S T |
---|
Jump to: | C F L M P S |
---|
Jump to: | C F L M P S |
---|