public JoinInfo requestToJoin(string server_guid)
{
// (1) record his guid
next_stage.setValue(new RecordKey()
.appendKeyPart("_config").appendKeyPart("seeds").appendKeyPart(server_guid),
RecordUpdate.WithPayload(""));
// (2) send him our instance ID and a list of seeds
var ji = new JoinInfo();
ji.data_instance_id = this.data_instance_id;
ji.seed_servers = new List<string>();
var seed_key_prefix = new RecordKey()
.appendKeyPart("_config")
.appendKeyPart("seeds");
foreach (var row in next_stage.scanForward(new ScanRange<RecordKey>(seed_key_prefix, RecordKey.AfterPrefix(seed_key_prefix), null))) {
string sname =
((RecordKeyType_String)row.Key.key_parts[row.Key.key_parts.Count - 1]).GetString();
ji.seed_servers.Add(sname);
}
// add ourself to the seed list!
if (!ji.seed_servers.Contains(this.ctx.server_guid)) {
ji.seed_servers.Add(this.ctx.server_guid);
}
return ji;
}