new object $ident_connection: $outbound_connection;
var $connection buffer = `[];
var $connection line_buffer = [];
var $connection local_addr = "";
var $connection remote_addr = "";
var $connection tid = -1;
var $connection timeout = 300;
var $ident_connection task = 0;
var $root created_on = 859834690;
var $root flags = ['core, 'methods, 'code, 'variables];
var $root inited = 1;
var $root managed = [$ident_connection];
var $root manager = $ident_connection;
var $root quota_exempt = 1;
public method .get() {
arg @args;
var conn;
(caller() != $connection) && (> .perms(sender()) <);
conn = .spawn();
conn.add_writer(sender());
return conn.get_ident(@args);
};
public method .get_ident() {
arg host, remote_port, local_port;
var out;
(> .perms(caller(), definer()) <);
task = task_id();
catch any
.open_connection(host, 113);
with
return [];
.write(((remote_port + ", ") + local_port) + "\n");
out = $scheduler.suspend(this());
.close();
return out.explode(":");
};
protected method .parse_line() {
arg line;
return $scheduler.resume(task, line);
};