The Global State Manager: /lib/global
Certain pieces of global information must be maintained throughout the
simulation. The Global State Manager keeps the following records:
- All current logged-in and un-logged-in network connections
 - Information related to all currently forked/suspended tasks
 - References to all MOO player objects
 - The current value of 
max_object()
 - A list of recycled object numbers
 - A global cache of regular expression patterns
 
In addition, the following pieces of static data are kept:
- A list of all MOO error names and descriptions
 - A list of all MOO command prepositions
 - Reverse maps for error names and command prepositions
 - The current size of the MOO value stack
 - The maximum depth for MOO verb calls
 - The name of the current timezone
 - The name of the current log file
 
These pieces of "static" data can change across server restarts; much of it is
configurable from the LPMOO configuration file.
The Global State Manager has many hooks for querying and maintaining this
data, as well as performing special related utility operations:
get_max_object()
- return the current value of 
max_object()
 take_task()
- return a task ID for a new task
 register_task()
- queue a new forked MOO task associated with a DGD 
call_out()
 task_started()
- dequeue a task which has begun execution
 remove_refs()
- delete references to verbs on the MOO call stack
 kill_task()
- dequeue a task and prevent execution of it
 get_queued_tasks()
- return a list of queued task information for 
queued_tasks()
 error_name()
- return the error name for an error code
 error_desc()
- return the error description for an error code
 prep_name()
- return the full name for a preposition code
 prep_code()
- parse and return the preposition code for a string
 vs_name()
- return the name for an object specifier
 vs_code()
- return the code for an object specifier string
 match_preposition()
- parse a command line into dobj, prep, and iobj
 fetch_object()
- return a new (or renumbered) MOO object (used only by the Driver
Interface)
 create_object()
- return a new MOO object
 bootstrap_max_object()
- used to bootstrap the value for 
max_object()
 bootstrap_recycled()
- used to bootstrap a recycled object
 renumber()
- change the object number of a MOO object
 reset_max_object()
- make 
max_object() be the highest existing object number
 log_msg()
- write a log message to the server log
 checkpoint()
- initiate a DGD checkpoint
 restart()
- called at server restart to re-initialize static data
 recycle()
- irrevocably destroy an object (called from destroyee)
 bootstrap_player()
- bootstrap an object's player status
 set_player_status()
- add or remove an object's player status
 all_players()
- return a list of all player objects
 connected_players()
- return a list of connected player objects
 get_connection_obj()
- return the connection object for a player, if any
 accept()
- assign an un-logged-in ID to a new connection
 get_unlogged_in()
- return the connection associated with an un-logged-in ID, if any
 assign_pfd()
- allocate a pseudo file-descriptor for a connection
 user_description()
- return a descriptive string for a user
 conn_description()
- return a descriptive string for a connection
 log_connect_timeout()
- a connection timed out
 log_client_disconnect()
- a client terminated the connection
 log_disconnected()
- a connection was terminated via 
boot_player()
 log_recycled()
- a player was recycled
 connect()
- a connection was established to a player object
 redirect()
- a connection was redirected
 shutdown()
- initiate a shutdown of the server
 unique_number()
- return a number that will not be repeated
 get_regexp()
- return a compiled regexp pattern
 get_stack_size()
- return the configured value stack size
 get_max_depth()
- return the configured maximum verb depth
 get_timezone()
- return the current configured timezone
 traceback()
- deliver a MOO traceback to a user
 prep_verb()
- given a MOO verb syntax tree, compile into LPC and save the source
 erase_verb()
- remove a verb's associated LPC and source files
 
rob@ccs.neu.edu