/* * RED5 Open Source Flash Server - http://code.google.com/p/red5/ * * Copyright 2006-2012 by respective authors (see below). All rights reserved. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.red5.server.net.rtmp.codec; import org.apache.mina.core.buffer.IoBuffer; import org.red5.server.net.rtmp.event.Aggregate; import org.red5.server.net.rtmp.event.AudioData; import org.red5.server.net.rtmp.event.BytesRead; import org.red5.server.net.rtmp.event.ChunkSize; import org.red5.server.net.rtmp.event.Invoke; import org.red5.server.net.rtmp.event.Notify; import org.red5.server.net.rtmp.event.Ping; import org.red5.server.net.rtmp.event.Unknown; import org.red5.server.net.rtmp.event.VideoData; import org.red5.server.so.ISharedObjectMessage; /** * Encodes events to byte buffer. */ public interface IEventEncoder { /** * Encodes Notify event to byte buffer. * * @param notify Notify event * @param rtmp RTMP protocol state * @return Byte buffer */ public abstract IoBuffer encodeNotify(Notify notify, RTMP rtmp); /** * Encodes Invoke event to byte buffer. * * @param invoke Invoke event * @param rtmp RTMP protocol state * @return Byte buffer */ public abstract IoBuffer encodeInvoke(Invoke invoke, RTMP rtmp); /** * Encodes Ping event to byte buffer. * * @param ping Ping event * @return Byte buffer */ public abstract IoBuffer encodePing(Ping ping); /** * Encodes BytesRead event to byte buffer. * * @param streamBytesRead BytesRead event * @return Byte buffer */ public abstract IoBuffer encodeBytesRead(BytesRead streamBytesRead); /** * Encodes Aggregate event to byte buffer. * * @param aggregate Aggregate event * @return Byte buffer */ public abstract IoBuffer encodeAggregate(Aggregate aggregate); /** * Encodes AudioData event to byte buffer. * * @param audioData AudioData event * @return Byte buffer */ public abstract IoBuffer encodeAudioData(AudioData audioData); /** * Encodes VideoData event to byte buffer. * * @param videoData VideoData event * @return Byte buffer */ public abstract IoBuffer encodeVideoData(VideoData videoData); /** * Encodes Unknown event to byte buffer. * * @param unknown Unknown event * @return Byte buffer */ public abstract IoBuffer encodeUnknown(Unknown unknown); /** * Encodes ChunkSize event to byte buffer. * * @param chunkSize ChunkSize event * @return Byte buffer */ public abstract IoBuffer encodeChunkSize(ChunkSize chunkSize); /** * Encodes SharedObjectMessage event to byte buffer. * * @param so ISharedObjectMessage event * @param rtmp RTMP protocol state * @return Byte buffer */ public abstract IoBuffer encodeSharedObject(ISharedObjectMessage so, RTMP rtmp); /** * Encodes SharedObjectMessage event to byte buffer using AMF3 encoding. * * @param so ISharedObjectMessage event * @param rtmp RTMP protocol state * @return Byte buffer */ public IoBuffer encodeFlexSharedObject(ISharedObjectMessage so, RTMP rtmp); }