private IAkkaPdu DecodeControlPdu(AkkaControlMessage controlPdu)
{
switch (controlPdu.CommandType)
{
case CommandType.ASSOCIATE:
if (controlPdu.HasHandshakeInfo)
{
var handshakeInfo = controlPdu.HandshakeInfo;
return new Associate(new HandshakeInfo(DecodeAddress(handshakeInfo.Origin), (int)handshakeInfo.Uid));
}
break;
case CommandType.DISASSOCIATE:
return new Disassociate(DisassociateInfo.Unknown);
case CommandType.DISASSOCIATE_QUARANTINED:
return new Disassociate(DisassociateInfo.Quarantined);
case CommandType.DISASSOCIATE_SHUTTING_DOWN:
return new Disassociate(DisassociateInfo.Shutdown);
case CommandType.HEARTBEAT:
return new Heartbeat();
}
throw new PduCodecException(string.Format("Decoding of control PDU failed, invalid format, unexpected {0}", controlPdu));
}