/
ColdCore-3.0a9.02/
ColdCore-3.0a9.02/src/
new object $outbound_connection: $connection;

var $connection active = 0;
var $connection buffer = `[];
var $connection daemon = 0;
var $connection host = "";
var $connection interface = 0;
var $connection line_buffer = [];
var $connection local_addr = "";
var $connection read_block = 0;
var $connection remote_addr = "";
var $connection started_at = 0;
var $connection timeout = 0;
var $root created_on = 844616370;
var $root flags = ['core, 'methods, 'code, 'variables];
var $root inited = 1;
var $root managed = [$outbound_connection];
var $root manager = $outbound_connection;
var $root quota = 100000;
var $root quota_exempt = -1;
var $root trusted = [$smtp, $dns];

driver method .connect() {
    arg task_id;
    
    $scheduler.resume(task_id, 'success);
};

driver method .failed() {
    arg task_id, reason;
    
    $scheduler.resume(task_id, reason);
};

public method .new() {
    var child, daemon, port, i;
    
    (| .perms(sender(), 'trusts) |) || (> .perms(caller(), 'trusts) <);
    child = .spawn();
    
    // do perms stuff
    child.add_writer(sender());
    child.add_writer(this());
    child.new_interface(sender());
    return child;
};

public method .new_with() {
    arg name;
    var child, daemon, port, i;
    
    (| .perms(sender(), 'trusts) |) || (> .perms(caller(), 'trusts) <);
    child = .spawn();
    catch any {
        (> child.set_objname(name) <);
    } with {
        (| child.destroy() |);
        rethrow(error());
    }
    
    // do perms stuff
    child.add_writer(sender());
    child.new_interface(sender());
    return child;
};

public method .open_connection() {
    arg host, port;
    var condition;
    
    (> .perms(sender()) <);
    (> pass(host, port) <);
    condition = $scheduler.suspend(this());
    if (condition != 'success)
        throw(condition, "Unable to open connection.");
    return condition;
};