--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/xml/xmldomandxpath/src/xmlengineserializer/xmlengserializergzip.cpp Thu Dec 17 09:29:21 2009 +0200
@@ -0,0 +1,211 @@
+// Copyright (c) 2006-2009 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:
+// Node container implementation
+//
+
+#include <xml/dom/xmlengdocument.h>
+#include <xml/dom/xmlengerrors.h>
+#include "xmlengserializergzip.h"
+#include "xmlenggzipoutputstream.h"
+#include "xmlenggzipfileoutputstream.h"
+#include "xmlenggzipbufferoutputstream.h"
+#include "ezgzip.h"
+#include <xml/dom/xmlengserializeerrors.h>
+
+
+
+TInt CXmlEngSerializerGZIP::SerializeToFileL(RFs& aRFs,
+ const TDesC& aFileName,
+ const TXmlEngNode aNode,
+ const TXmlEngSerializationOptions& aOpt)
+ {
+ RFile outFile;
+
+ User::LeaveIfError(outFile.Replace(aRFs,aFileName,EFileStream | EFileWrite | EFileShareExclusive));
+ CleanupClosePushL(outFile);
+
+ CXmlEngGZIPFileOutputStream* gzfos = CXmlEngGZIPFileOutputStream::NewLC(outFile,aRFs);
+ TRAPD(err,aNode.OwnerDocument().SaveL(*gzfos,aNode,aOpt));
+ TInt sErr = gzfos->CheckError();
+ if(sErr)
+ {
+ User::Leave(sErr);
+ }
+ if(err)
+ {
+ User::Leave(err);
+ }
+
+ TInt fSize;
+ outFile.Size(fSize);
+ CleanupStack::PopAndDestroy(gzfos);
+ CleanupStack::PopAndDestroy(&outFile);
+
+ return fSize;
+ }
+
+TInt CXmlEngSerializerGZIP::SerializeToBufferL(RBuf8& aBuf,
+ const TXmlEngNode aNode,
+ const TXmlEngSerializationOptions& aOpt)
+ {
+ CXmlEngGZIPBufferOutputStream* gzbos = CXmlEngGZIPBufferOutputStream::NewLC(aBuf);
+ TRAPD(err,aNode.OwnerDocument().SaveL(*gzbos,aNode,aOpt));
+ TInt sErr = gzbos->CheckError();
+ if(sErr)
+ {
+ User::Leave(sErr);
+ }
+ if(err)
+ {
+ User::Leave(err);
+ }
+ CleanupStack::PopAndDestroy(gzbos);
+ return aBuf.Size();
+ }
+
+TInt CXmlEngSerializerGZIP::SerializeToStreamL(MXmlEngOutputStream& aStream,
+ const TXmlEngNode aNode,
+ const TXmlEngSerializationOptions& aOpt)
+ {
+ CXmlEngGZIPOutputStream* gzbos = CXmlEngGZIPOutputStream::NewLC(aStream);
+ TInt size = 0;
+ TRAPD(err,size = aNode.OwnerDocument().SaveL(*gzbos,aNode,aOpt));
+ TInt sErr = gzbos->CheckError();
+ if(sErr)
+ {
+ User::Leave(sErr);
+ }
+ if(err)
+ {
+ User::Leave(err);
+ }
+ CleanupStack::PopAndDestroy(gzbos);
+ return size;
+ }
+
+// --------------------------------------------------------------------------------------
+// Constructor
+// --------------------------------------------------------------------------------------
+//
+CXmlEngSerializerGZIP* CXmlEngSerializerGZIP::NewL()
+ {
+ CXmlEngSerializerGZIP* self = new (ELeave) CXmlEngSerializerGZIP();
+ return self;
+ }
+
+// --------------------------------------------------------------------------------------
+// Serializes TXmlEngNode to file
+// --------------------------------------------------------------------------------------
+//
+TInt CXmlEngSerializerGZIP::SerializeL(const TXmlEngNode aRoot)
+ {
+ TXmlEngSerializationOptions* defPtr = NULL;
+ TXmlEngSerializationOptions def = TXmlEngSerializationOptions();
+ if(iSerializationOptions )
+ {
+ defPtr = iSerializationOptions;
+ }
+ else
+ {
+ defPtr = &def;
+ }
+
+ RXmlEngDocument doc = aRoot.OwnerDocument();
+
+ switch(iSerializationOutput)
+ {
+ case ESerializeToFile:
+ {
+ if (!iOutFileName)
+ {
+ User::Leave(KXmlEngErrNoParameters);
+ }
+ return SerializeL(iOutFileName->Des(), aRoot, *defPtr);
+ }
+ case ESerializeToBuffer:
+ {
+ return SerializeL(*iBuffer, aRoot, *defPtr);
+ }
+ case ESerializeToStream:
+ {
+ if(!iOutputStream)
+ {
+ User::Leave(KXmlEngErrNoParameters);
+ }
+ return SerializeToStreamL(*iOutputStream, aRoot, *defPtr);
+ }
+ default:
+ {
+ User::Leave(KErrNotSupported);
+ }
+ }
+ return KErrGeneral; //should never happen
+ }
+
+// --------------------------------------------------------------------------------------
+// Serializes TXmlEngNode to file
+// --------------------------------------------------------------------------------------
+//
+TInt CXmlEngSerializerGZIP::SerializeL( RFs& aRFs,
+ const TDesC& aFileName,
+ const TXmlEngNode aRoot,
+ const TXmlEngSerializationOptions& aOptions )
+ {
+ return SerializeToFileL(aRFs, aFileName, aRoot, aOptions);
+ }
+
+// --------------------------------------------------------------------------------------
+// Serializes TXmlEngNode to file
+// --------------------------------------------------------------------------------------
+//
+TInt CXmlEngSerializerGZIP::SerializeL( const TDesC& aFileName,
+ const TXmlEngNode aRoot,
+ const TXmlEngSerializationOptions& aOptions )
+ {
+ RFs rfs;
+ User::LeaveIfError(rfs.Connect());
+ CleanupClosePushL(rfs);
+ TInt outSize = SerializeToFileL(rfs, aFileName, aRoot, aOptions);
+ CleanupStack::PopAndDestroy(&rfs);
+ return outSize;
+ }
+
+// --------------------------------------------------------------------------------------
+// Serializes TXmlEngNode to buffer
+// --------------------------------------------------------------------------------------
+//
+TInt CXmlEngSerializerGZIP::SerializeL( RBuf8& aBuffer,
+ const TXmlEngNode aRoot,
+ const TXmlEngSerializationOptions& aOptions)
+ {
+ return SerializeToBufferL(aBuffer,aRoot,aOptions);
+ }
+
+// --------------------------------------------------------------------------------------
+// Constructor
+// --------------------------------------------------------------------------------------
+//
+CXmlEngSerializerGZIP::CXmlEngSerializerGZIP()
+ {
+ }
+
+// --------------------------------------------------------------------------------------
+// Destructor
+// --------------------------------------------------------------------------------------
+//
+CXmlEngSerializerGZIP::~CXmlEngSerializerGZIP()
+ {
+ }
+
+