/*
* pass the message to the node for final delivery. Note that the connection
* itself needs to know about links (in case of connection failure), so we
* snoop for link/unlink too here.
*/
public override void deliver(OtpMsg msg)
{
bool delivered = self.deliver(msg);
switch (msg.type())
{
case OtpMsg.linkTag:
if (delivered)
{
links.addLink(msg.getRecipientPid(), msg.getSenderPid());
}
else
{
try
{
// no such pid - send exit to sender
base.sendExit(msg.getRecipientPid(), msg.getSenderPid(), new OtpErlangAtom("noproc"));
}
catch (IOException)
{
}
}
break;
case OtpMsg.unlinkTag:
case OtpMsg.exitTag:
links.removeLink(msg.getRecipientPid(), msg.getSenderPid());
break;
case OtpMsg.exit2Tag:
break;
}
return;
}