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;
};