public int Send(ISerializable message, DeliveryOptions deliveryOptions, Guid peer)
        {
            var stream = _shamanStreamPool.Rent(message.GetType());

            try
            {
                _serializer.Serialize(message, stream);
                _roomSender.Send(new Payload(stream.GetBuffer()), deliveryOptions, peer);
                return((int)stream.Length);
            }
            finally
            {
                _shamanStreamPool.Return(stream, message.GetType());
            }
        }
        public int Send(ISerializable message, DeliveryOptions deliveryOptions, IPeerSender peer)
        {
            var stream = _shamanStreamPool.Rent(message.GetType());

            try
            {
                _serializer.Serialize(message, stream);
                _packetSender.AddPacket(peer, deliveryOptions, new Payload(stream.GetBuffer()));
                return((int)stream.Length);
            }
            finally
            {
                _shamanStreamPool.Return(stream, message.GetType());
            }
        }