@Override
    public void route(Packet packet) {
        if (packet instanceof Message) {
            route((Message)packet);
        }
        else if (packet instanceof Presence) {
            route((Presence)packet);
        }
        else if (packet instanceof IQ) {
            route((IQ)packet);
        }
        else {
            throw new IllegalArgumentException();
        }
    }
Routes the given packet based on packet recipient and sender. The
router defers actual routing decisions to other classes.
<h2>Warning</h2>
Be careful to enforce concurrency DbC of concurrent by synchronizing
any accesses to class resources.

@param packet The packet to route
xmppserver/src/main/java/org/jivesoftware/openfire/spi/PacketRouterImpl.java