parent $utilities
object $housekeeper
var $root child_index 0
var $root owners [$housekeeper, $core]
var $root fertile 0
var $has_commands commands []
var $has_commands shortcuts []
var $has_verbs verbs #[]
var $location contents []
var $located location $void
var $user password "*"
var $user connected_at 0
var $user last_command_at 0
var $user connections []
var $user creation_time 758252662
var $user action ""
var $root inited 1
var $root owned [$housekeeper]
var $root manager $housekeeper
var $root writable [$housekeeper]
var $root readable ['parameters, 'methods, 'code]
var $root dbref 'housekeeper
method did_disconnect
var task_queue, task;
if (caller() != $user)
throw(~perm, "Permission denied");
// because of guests
if (valid(sender()))
$scheduler.add_task(300, 'move_user_home, sender());
.
method _move_user_home
arg who;
var home, curloc;
.perms(caller(), 'this);
if (who.connected())
return;
curloc = who.location();
home = who.home();
if (curloc == home)
return;
curloc.sending_user_home(who);
who.move_to(home);
.
method move_user_home
arg who;
var home, curloc;
.perms(sender(), 'system);
if (who.connected())
return;
curloc = who.location();
home = who.home();
if (curloc == home)
return;
who.move_to(home);
curloc.did_housekeep(who);
.