package com.jcumulus.server.rtmfp; /** * jCumulus is a Java port of Cumulus OpenRTMP * * Copyright 2011 OpenRTMFP * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License received along this program for more * details (or else see http://www.gnu.org/licenses/). * * * This file is a part of jCumulus. */ import com.jcumulus.server.rtmfp.packet.*; import org.apache.log4j.Logger; import org.jboss.netty.buffer.ChannelBuffer; import org.jboss.netty.channel.*; public class RtmfpChannelUpstreamHandler extends SimpleChannelUpstreamHandler { private static final Logger Log = Logger.getLogger(RtmfpChannelUpstreamHandler.class); private Sessions sessions; public RtmfpChannelUpstreamHandler(Sessions sessions) { this.sessions = sessions; } public void messageReceived(ChannelHandlerContext channelhandlercontext, MessageEvent messageevent) throws Exception { ChannelBuffer channelbuffer = (ChannelBuffer)messageevent.getMessage(); if(channelbuffer.readableBytes() < 16) Log.debug((new StringBuilder()).append("Incorrect packet received from ").append(messageevent.getRemoteAddress()).toString()); byte abyte0[] = channelbuffer.array(); AudioPacket packet = new AudioPacket(abyte0, channelbuffer.readableBytes()); int i = com.jcumulus.server.rtmfp.N.A(packet); ServerSession h = sessions.A(i); if(h == null) { Log.warn((new StringBuilder()).append("Session with id=").append(i).append(" isn't found").toString()); return; } else { h.A(messageevent.getChannel(), messageevent.getRemoteAddress()); h.A(packet); return; } } }