public void HandleRpc(ISender caller, string method, IList arguments, object request_state)
{
object result = null;
MemBlock key;
MemBlock value;
int ttl;
try {
switch(method) {
case "Register":
key = MemBlock.Reference((byte[]) arguments[0]);
value = MemBlock.Reference((byte[]) arguments[1]);
ttl = (int) arguments[2];
result = Register(key, value, ttl);
break;
case "Unregister":
key = MemBlock.Reference((byte[]) arguments[0]);
value = MemBlock.Reference((byte[]) arguments[1]);
result = Unregister(key, value);
break;
case "ListEntries":
result = ListEntries();
break;
default:
throw new Exception("Invalid method");
}
}
catch (Exception e) {
result = new AdrException(-32602, e);
}
_rpc.SendResult(request_state, result);
}