All Downloads are FREE. Search and download functionalities are using the official Maven repository.

org.red5.io.object.Output Maven / Gradle / Ivy

Go to download

Ant Media Server supports RTMP, RTSP, MP4, HLS, WebRTC, Adaptive Streaming, etc.

The newest version!
/*
 * RED5 Open Source Media Server - https://github.com/Red5/ Copyright 2006-2016 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.io.object;

import java.util.Collection;
import java.util.Date;
import java.util.Map;
import java.util.Vector;

import org.red5.io.amf3.ByteArray;
import org.w3c.dom.Document;

/**
 * Output interface which defines contract methods to be implemented
 *
 * @author The Red5 Project
 * @author Luke Hubbard, Codegent Ltd ([email protected])
 */
public interface Output {

    void putString(String string);

    // Basic Data Types
    /**
     * Write number
     * 
     * @param num
     *            Number
     */
    void writeNumber(Number num);

    /**
     * Write boolean
     * 
     * @param bol
     *            Boolean
     */
    void writeBoolean(Boolean bol);

    /**
     * Write string
     * 
     * @param string
     *            String
     */
    void writeString(String string);

    /**
     * Write date
     * 
     * @param date
     *            Date
     */
    void writeDate(Date date);

    void writeNull();

    /**
     * Write array.
     * 
     * @param array
     *            Array to write
     */
    void writeArray(Collection array);

    /**
     * Write array.
     * 
     * @param array
     *            Array to write
     */
    void writeArray(Object[] array);

    /**
     * Write primitive array.
     * 
     * @param array
     *            Array to write
     */
    void writeArray(Object array);

    /**
     * Write map.
     *
     * @param map
     *            Map to write
     */
    void writeMap(Map map);

    /**
     * Write array as map.
     *
     * @param array
     *            Array to write
     */
    void writeMap(Collection array);

    /**
     * Write object.
     *
     * @param object
     *            Object to write
     */
    void writeObject(Object object);

    /**
     * Write map as object.
     *
     * @param map
     *            Map to write
     */
    void writeObject(Map map);

    /**
     * Write recordset.
     *
     * @param recordset
     *            Recordset to write
     */
    void writeRecordSet(RecordSet recordset);

    /**
     * Write XML object
     * 
     * @param xml
     *            XML document
     */
    void writeXML(Document xml);

    /**
     * Write ByteArray object (AMF3 only).
     * 
     * @param array
     *            object to write
     */
    void writeByteArray(ByteArray array);

    /**
     * Write a Vector<int>.
     * 
     * @param vector
     *            vector
     */
    void writeVectorInt(Vector vector);

    /**
     * Write a Vector<uint>.
     * 
     * @param vector
     *            vector
     */
    void writeVectorUInt(Vector vector);

    /**
     * Write a Vector<Number>.
     * 
     * @param vector
     *            vector
     */
    void writeVectorNumber(Vector vector);

    /**
     * Write a Vector<Object>.
     * 
     * @param vector
     *            vector
     */
    void writeVectorObject(Vector vector);

    /**
     * Write reference to complex data type
     * 
     * @param obj
     *            Referenced object
     */
    void writeReference(Object obj);

    /**
     * Whether object is custom
     *
     * @param custom
     *            Object
     * @return true if object is of user type, false otherwise
     */
    boolean isCustom(Object custom);

    /**
     * Write custom (user) object
     * 
     * @param custom
     *            Custom data type object
     */
    void writeCustom(Object custom);

    /**
     * Clear references
     */
    void clearReferences();
}