/
CDC-1.2b/
CDC-1.2b/src/
parent $slate
object $dictionary_slate

var $root dbref 'dictionary_slate
var $root child_index 0
var $root fertile 0
var $root manager $dictionary_slate
var $root owned [$dictionary_slate]
var $root owners [$dictionary_slate]
var $root writable []
var $root readable ['parameters, 'methods, 'code]
var $root inited 1
var $has_verbs verbs #[["lookup % in %this", ['lookup_vrb, 'remote]]]
var $dictionary_slate listener 0
var $located location $nowhere
var $named name ['uniq, "Webseter's Dictionary"]
var $named name_aliases []

method receive
    arg str, status;
    
    (> .perms(sender(), .slate_connection()) <);
    if (status == 'external) {
        if (str == ".") {
            (.connection()).close();
            .fail_to_find_word();
        }
        if (!str)
            (.connection()).close();
        else
            received_text = [@received_text, str];
    } else {
        switch (status) {
            case 'connection_closed:
                .finished_finding_word();
            case 'connection_established:
                .send((request_method + " ") + word);
            case 'connection_failed:
        }
    }
.

method finished_finding_word
    (> .perms(sender(), 'this) <);
    listener.tell(.received_text());
.

method lookup_vrb
    arg com, aword, [args];
    var slate;
    
    if (listener)
        return sender().tell(("Sorry, " + (sender().name())) + " is already reading the dictionary.");
    slate = $slate_connection.spawn();
    listener = sender();
    word = aword;
    sender().tell(("You open " + (.name('def))) + " and begin flipping through it's pages...");
    slate.open(remote_host, remote_port);
.