void ProcessNetworkLine(string line)
{
Console.WriteLine(line);
mLog.WriteLine(line);
JObject obj = JsonConvert.DeserializeObject<JObject>(line);
string pendingMethod = null;
int? nid = (obj["id"]).Value<int?>();
if( nid == null )
{
pendingMethod = (string)obj["method"];
}
else
{
int id = (int)obj["id"];
if (mPendingRPCs.ContainsKey(id))
{
//JObject error = (JObject)obj["error"];
//if( !error.HasValues )
{
pendingMethod = mPendingRPCs[id];
}
//else
//{
// Console.WriteLine("RPC error for method: " + pendingMethod);
// Disconnect();
//}
mPendingRPCs.Remove(id);
}
else
{
Console.WriteLine("Unexpected RPC id: " + id);
}
}
if( pendingMethod != null )
{
switch (pendingMethod)
{
case "mining.subscribe":
MiningSubscribe(obj);
break;
case "mining.authorize":
MiningAuthorize(obj);
break;
case "mining.notify":
MiningNotify(obj);
break;
case "mining.submit":
MiningSubmit(obj, line);
break;
case "mining.set_difficulty":
MiningSetDifficulty(obj);
break;
default:
Console.WriteLine("Unhandled RPC response: " + pendingMethod);
break;
}
}
else
{
Console.WriteLine("unknown method: " + line);
}
}