private Message MakeMessage(string command, byte[] payloadBytes)
{
// We use an if ladder rather than reflection because reflection can be slow on some platforms.
if (command.Equals("version"))
{
return new VersionMessage(_params, payloadBytes);
}
if (command.Equals("inv"))
{
return new InventoryMessage(_params, payloadBytes);
}
if (command.Equals("block"))
{
return new Block(_params, payloadBytes);
}
if (command.Equals("getdata"))
{
return new GetDataMessage(_params, payloadBytes);
}
if (command.Equals("tx"))
{
return new Transaction(_params, payloadBytes);
}
if (command.Equals("addr"))
{
return new AddressMessage(_params, payloadBytes);
}
if (command.Equals("ping"))
{
return new Ping();
}
if (command.Equals("verack"))
{
return new VersionAck(_params, payloadBytes);
}
throw new ProtocolException("No support for deserializing message with name " + command);
}