javauis/mmapi_qt/baseline/src/cmmaoutputstream.cpp
branchRCL_3
changeset 18 9ac0a0a7da70
parent 17 0fd27995241b
child 19 71c436fe3ce0
--- a/javauis/mmapi_qt/baseline/src/cmmaoutputstream.cpp	Tue May 11 16:07:20 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,221 +0,0 @@
-/*
-* Copyright (c) 2002-2007 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:  Class to handle OutputStream operations.
-*
-*/
-
-#include <logger.h>
-
-#include <JniEnvWrapper.h>
-#include "cmmaoutputstream.h"
-#include "mmmaeventposter.h"
-#include "cmmaoutputstreamevent.h"
-
-// CONSTANTS
-const TInt KMMACommit = -10000; // indicates native started commit
-
-CMMAOutputStream* CMMAOutputStream::NewL(JNIEnv* aJNIEnv,
-        MMMAEventPoster* aEventPoster,
-        jobject aJavaOutputStreamWriter
-                                        )
-{
-    CMMAOutputStream* self = CMMAOutputStream::NewLC(aJNIEnv,
-                             aEventPoster,
-                             aJavaOutputStreamWriter
-                                                    );
-    CleanupStack::Pop();
-    return self;
-}
-
-
-CMMAOutputStream* CMMAOutputStream::NewLC(JNIEnv* aJNIEnv,
-        MMMAEventPoster* aEventPoster,
-        jobject aJavaOutputStreamWriter
-                                         )
-{
-    CMMAOutputStream* self = new(ELeave) CMMAOutputStream(aEventPoster);
-    CleanupStack::PushL(self);
-    self->ConstructL(aJNIEnv, aJavaOutputStreamWriter);
-    return self;
-}
-
-
-void CMMAOutputStream::CreateL(CMMAOutputStream** aOutputStream,
-																MMAFunctionServer* aEventServer,
-                               JNIEnv* aJniEnv,
-                               MMMAEventPoster* aEventPoster,
-                               jobject aJavaOutputStreamWriter)
-{
-
-    // JNI interface pointer can't be passed to different thread, so
-    // it is needed to get valid JNI interface pointer for Event Server thread
- 	aJniEnv = aEventServer->getValidJniEnv();
-
-    *aOutputStream = NewL(aJniEnv, aEventPoster, aJavaOutputStreamWriter);
-}
-
-
-CMMAOutputStream::~CMMAOutputStream()
-{
-    LOG( EJavaMMAPI, EInfo, "MMA::CMMAOutputStream::~");
-
-    // If write event is in the event server, it cannot be deleted.
-    // Thus set the event to be deleted when event dispatch is called.
-    if (iWriteEvent &&
-            iWriteEvent->State() == CMMAOutputStreamEvent::EMMAEventActive)
-    {
-        iWriteEvent->SetState(CMMAOutputStreamEvent::EMMADeleteEvent);
-    }
-    else
-    {
-        delete iWriteEvent;
-    }
-
-    delete iData;
-    LOG( EJavaMMAPI, EInfo, "MMA::CMMAOutputStream::~ OK");
-}
-
-
-// Default constructor
-CMMAOutputStream::CMMAOutputStream(MMMAEventPoster* aEventPoster)
-        : iEventSource(aEventPoster),
-        iPtr(NULL, 0)
-{
-    LOG( EJavaMMAPI, EInfo, "MMA::CMMAOutputStream constructed");
-}
-
-
-void CMMAOutputStream::ConstructL(JNIEnv* aJNIEnv,
-                                  jobject aJavaOutputStreamWriter)
-{
-    LOG( EJavaMMAPI, EInfo, "CMMAOutputStream::ConstructL()");
-
-    // void write( int aLength, int aStatus ) method in OutputStreamWriter
-    jmethodID classMethodID =
-        aJNIEnv->GetMethodID(
-            aJNIEnv->GetObjectClass(aJavaOutputStreamWriter),
-            "write",
-            "(II)V");
-    if (!classMethodID)
-    {
-        LOG( EJavaMMAPI, EInfo, "CMMAOutputStream::ConstructL: Cannot find java method");
-        User::Panic(_L("Java method write(II)V not found"), KErrGeneral);
-    }
-
-    iWriteEvent = new(ELeave) CMMAOutputStreamEvent(classMethodID,
-            aJavaOutputStreamWriter);
-}
-
-void CMMAOutputStream::ReadDataL(TUint8* aOutputData,
-                                 TInt* aBufferSize,
-                                 TInt* aReadStatus)
-{
-    if (!iData)
-    {
-        User::Leave(KErrNotReady);
-    }
-
-    // Status code to be returned
-    TInt status = KErrNone;
-
-    TPtr8 buffer(aOutputData, *aBufferSize);
-    LOG1( EJavaMMAPI, EInfo, " MMA::CMMAOutputStream::ReadDataL SIZE BEFORE READL %d", buffer.Length());
-    LOG1( EJavaMMAPI, EInfo, " MMA::CMMAOutputStream::ReadDataL BYTES AVAILABLE %d", iPtr.Length());
-
-    // Bytes available in native buffer
-    TInt bytesAvailable = iPtr.Length();
-
-    // Maximum size that can be written to Java buffer
-    TInt outputMaxLength = buffer.MaxLength();
-
-    // Length that can be written
-    TInt writeLength = 0;
-
-    if (outputMaxLength < bytesAvailable)
-    {
-        // Not all bytes can be written Java buffer
-        writeLength = outputMaxLength;
-
-        // Java need to read more data
-        status = EMoreData;
-    }
-    else
-    {
-        // All bytes can be written to Java buffer
-        writeLength = bytesAvailable;
-
-        // All data is copied
-        status = ECompleted;
-    }
-
-    // Copy maximum number of bytes to Java buffer
-    buffer.Copy(iPtr.Left(writeLength));
-    *aBufferSize = buffer.Length();
-
-    // Move pointer to next read position.
-    iPtr = iPtr.Mid(writeLength);
-
-    LOG1( EJavaMMAPI, EInfo, " MMA::CMMAOutputStream::ReadDataL SIZE AFTER READL %d", buffer.Length());
-    LOG1( EJavaMMAPI, EInfo, " MMA::CMMAOutputStream::ReadDataL RETURN %d", status);
-    LOG1( EJavaMMAPI, EInfo, " MMA::CMMAOutputStream::ReadDataL dataLeft %d", iPtr.Length());
-
-    if (iPtr.Length() == 0)
-    {
-        // All data is read and buffer is not needed anymore.
-        delete iData;
-        iData = NULL;
-    }
-    *aReadStatus = status;
-}
-
-void CMMAOutputStream::WriteL(const TDesC8& aData)
-{
-    LOG1( EJavaMMAPI, EInfo, "CMMAOutputStream::WriteL data size = %d", aData.Size());
-    if (iData)
-    {
-        // Previous data was not readed from the stream.
-        User::Leave(KErrNotReady);
-    }
-
-    if (aData.Length() > 0)
-    {
-        // Take a copy of new data.
-        HBufC8* data = aData.AllocL();
-        delete iData;
-        iData = data;
-        iPtr.Set(iData->Des());
-
-        // Set java event
-        LOG1( EJavaMMAPI, EInfo, "CMMAOutputStream::WriteL: available data: %d", iData->Length());
-        iWriteEvent->SetLength(iData->Length());
-        iWriteEvent->SetStatus(EMoreData);
-    }
-    else
-    {
-        LOG( EJavaMMAPI, EInfo, "CMMAOutputStream::WriteL Zero length data");
-        iWriteEvent->SetLength(0);
-        iWriteEvent->SetStatus(ECompleted);
-    }
-    iEventSource->PostEvent(iWriteEvent, CMMAEvent::ENotifyPriority);
-}
-
-void CMMAOutputStream::Commit()
-{
-    iWriteEvent->SetLength(0);
-    iWriteEvent->SetStatus(KMMACommit);
-    iEventSource->PostEvent(iWriteEvent, CMMAEvent::ENotifyPriority);
-}
-
-//  END OF FILE
-