public void disposePacket(PacketInfo packetInfo, String subscriberKey, ChannelInfo channelInfo, 
    		ChannelContext channelCtx, boolean blnSuccess)
    {
        reportOnAfterPacketIsSent(channelInfo.channel.getChannelName(), subscriberKey);

        channelInfo.channel.disposePacket(packetInfo, subscriberKey, blnSuccess);

        if (blnSuccess)
        {
            //QoS
            if (channelCtx.getChannelInfo() == channelInfo)
            {
                channelCtx.incrementSentPackets();
                if (channelCtx.getSentPackets() == channelInfo.packetQuota)
                {
                	List<ChannelInfo> channelInfoList = channelInfo.parentGroup.itemList;
                	int idx = channelInfoList.indexOf(channelInfo);
                	if (idx > 0 && idx < channelInfoList.size() - 1)
                	{
                        channelCtx.setChannelInfo(channelInfoList.get(idx + 1));
                	}
                	else
                	{
                        channelCtx.setChannelInfo(null);
                	}
                    channelCtx.setSentPackets(0);
                }
            }
            else
            {
                channelCtx.setChannelInfo(channelInfo);
                channelCtx.setSentPackets(1);
            }
        }
    }