diff -r f9bb0fca356a -r 0fd27995241b javauis/mmapi_qt/baseline/javasrc/com/nokia/microedition/media/InputStreamSourceStream.java --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/javauis/mmapi_qt/baseline/javasrc/com/nokia/microedition/media/InputStreamSourceStream.java Tue May 11 16:07:20 2010 +0300 @@ -0,0 +1,205 @@ +/* +* Copyright (c) 2002 Nokia Corporation and/or its subsidiary(-ies). +* All rights reserved. +* This component and the accompanying materials are made available +* under the terms of "Eclipse Public License v1.0" +* which accompanies this distribution, and is available +* at the URL "http://www.eclipse.org/legal/epl-v10.html". +* +* Initial Contributors: +* Nokia Corporation - initial contribution. +* +* Contributors: +* +* Description: SourceStream that reads InputStream +* +*/ + + +package com.nokia.microedition.media; + +import com.nokia.microedition.media.InputStreamSeekControl; + +import java.io.IOException; +import java.io.InputStream; +import javax.microedition.media.protocol.ContentDescriptor; +import javax.microedition.media.protocol.SourceStream; +import javax.microedition.media.Control; + +/** + * This class implements SourceStream interface. From the interface + * only read and getSeekType method will be used. This class is used + * to read InputStream. + */ +public class InputStreamSourceStream implements SourceStream +{ + // Stream used to read the content. + protected InputStream iInputStream = null; + + private static final String SEEK_CONTROL = "SeekControl"; + + private InputStreamSeekControl iSeekControl; + /** + * Constructor. + * @param aInputStream An InputStream + */ + public InputStreamSourceStream(InputStream aInputStream) + { + setStream(aInputStream); + iSeekControl = new InputStreamSeekControl(aInputStream); + } + + /** + * Constructor. + */ + public InputStreamSourceStream() + { + } + + /** + * Sets new InputStream. + * @param aInputStream An InputStream + */ + public final void setStream(InputStream aInputStream) + { + iInputStream = aInputStream; + } + + /** + * Closes the InputStream. This method can only be called if MMA + * must close the stream. + * + * @throws NullPointerException if setStream is not called. + * @throws IOException If an I/O error occurs + */ + public void close() throws IOException + { + iInputStream.close(); + } + + /** + * Read from Input Stream + * @param aBuffer Input Stream + * @param aOffset where reading starts + * @param aLength length of read data + * @return bytes read + * @throws IOException + */ + public int read(byte[] aBuffer, int aOffset, int aLength) throws IOException + { + return iInputStream.read(aBuffer, aOffset, aLength); + } + + /** + * Seek type of the stream + * @return seek type based on the inputstream's capability + */ + public int getSeekType() + { + if (iInputStream != null && iInputStream.markSupported() == true) + { + + return SEEKABLE_TO_START; + } + else + { + return NOT_SEEKABLE; + } + } + + /** + * From interface SourceStream. Method not implemented. + * @see SourceStream + * @return size of the stream available + */ + public int getTransferSize() + { + return 0; + } + + /** + * From interface SourceStream. Method not implemented. + * @see SourceStream + * @param aWhere where to seek + * @return seeked position, allways the current position + * @throws IOException + */ + public long seek(long aWhere) throws IOException + { + return 0; + } + + /** + * From interface SourceStream. Method not implemented. + * @see SourceStream + * @return current position + */ + public long tell() + { + return 0; + } + + /** + * From interface SourceStream. Method not implemented. + * @see SourceStream + * @return The content type + * @see ContentDescriptor + */ + public ContentDescriptor getContentDescriptor() + { + // Return empty content descriptor. + // This method is not used. + return new ContentDescriptor(""); + } + + /** + * From interface SourceStream. Method not implemented. + * @see SourceStream + * @return content length which is allways 0 + */ + public long getContentLength() + { + return 0; + } + + /** + * From interface Controllable. Method not implemented. + * @see SourceStream + * @see Controllable + */ + public Control[] getControls() + { + Control [] aControls = new Control[1]; + + aControls[0] = iSeekControl; + + return aControls; + } + + /** + * From interface Controllable. Method not implemented. + * @param aControlType wanted control type + * @return Control null + * @See Controllable + */ + public Control getControl(String aControlType) + { + if (aControlType == SEEK_CONTROL && getSeekType() == SEEKABLE_TO_START) + { + return iSeekControl; + } + else + { + return null; + } + } + /** + * @author d35kumar + * @return + */ + public InputStream getInputStream(){ + return iInputStream; + } +} + +// End of File