archie/tcl-dp/examples/conference/enter.tcl

86 lines
1.6 KiB
Tcl
Raw Normal View History

2024-05-27 16:13:40 +02:00
#
# enter.tcl -- Tcl/Tk script for conference client.
#
# Get information from user.
#
package require dp 4.0
set host localhost;
set port 9943;
set name Bubba
# Become an RPC client of the conference server. Store the
# file handle that represents the RPC connection in the
# global variable server;
#
set server [dp_MakeRPCClient $host $port]
# The conference server will occasionally RPC a Hear
# command to us when we need to hear a message from some speaker.
#
proc Hear {speaker message} \
{
puts stdout "$speaker --> $message";
}
# Commands available to user, who invokes these commands from stdin.
#
proc help {} \
{
puts stdout "Conferencing Commands: ";
puts stdout "\thelp";
puts stdout "\twho";
puts stdout "\tsay ?message?";
puts stdout "\tbye or quit or leave";
}
proc who {} \
{
global server;
# RPC to the conference server to get the list of all its client names;
#
puts stdout [dp_RPC $server set names];
}
proc say {args} \
{
global server;
# Tell the conference server, by RPC, what I want to said to all clients.
# The conference server will repeat my message to all clients, by RPC,
# for them to Hear.
#
dp_RPC $server Say $args;
}
# To leave, we just exit, and the file is automatically closed. The
# conference server will automatically clen up on his end.
proc leave {} {exit}
proc bye {} {exit};
proc quit {} {exit}
# On startup, automatically enter the conference.
#
proc enter {} \
{
global server;
global name;
# Tell the conference server, by RPC, that I'm Entering the conference.
#
dp_RPC $server Enter $name;
puts stdout "Entered conference.";
}
enter;