--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/simpleengine/engine/inc/simplepublisher.h Tue Feb 02 01:05:17 2010 +0200
@@ -0,0 +1,267 @@
+/*
+* Copyright (c) 2006 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: SIMPLE Engine publisher
+*
+*/
+
+
+
+
+#ifndef simplepublisher_H
+#define simplepublisher_H
+
+#include <e32std.h>
+#include "simplecommon.h"
+#include "simpleclient.h"
+#include "msimpleconnection.h"
+#include "msimplepublisher.h"
+#include "msimpleowncallback.h"
+#include "msimpleenginerequest.h"
+
+// FORWARD DECLARATION
+class CSimpleEngineRequest;
+class MSimplePublishObserver;
+class MSimpleConnectionObserver;
+class MSimpleETagObserver;
+
+/**
+ * CSimplePublisher
+ *
+ * SIMPLE Engine core.
+ *
+ * @lib simpleengine
+ * @since S60 3.2
+ */
+
+class CSimplePublisher : public CSimpleClient, public MSimplePublisher
+ {
+
+public:
+
+ /**
+ * Two-phased constructor.
+ * @since S60 3.2
+ * @param aConn connection
+ * @param aObserver callback observer
+ * @return CSimplePublisher
+ */
+ static CSimplePublisher* NewL(
+ MSimpleConnection& aConn,
+ MSimplePublishObserver& aObserver );
+
+ /**
+ * Destructor.
+ */
+ virtual ~CSimplePublisher();
+
+ /**
+ * Destroy this entity
+ *
+ * @since S60 3.2
+ */
+ void Close();
+
+// from base class MSimplePublisher
+
+ /**
+ * Getter for the SIMPLE engine connection.
+ * @since S60 3.2
+ * @return the attribute name.
+ */
+ const MSimpleConnection& Connection();
+
+ /**
+ * Start to publish data.
+ * Expiry time is set based on SIMPLE settings.
+ * Refreshing is made by SIMPLE engine.
+ * @since S60 3.2
+ * @param aDocument data to be published
+ * @param aRefresh where refresh is made automatically
+ * @return operation id
+ */
+ TInt StartPublishL( MSimpleDocument& aDocument,
+ TBool aRefresh);
+
+ /**
+ * Continue data publication
+ * Leaves with KErrInUse if there is already active publication
+ * in this MSimplePublisher entity.
+ * Expiry time is set based on SIMPLE settings.
+ * Refreshing is made by SIMPLE Engine.
+ *
+ * @since S60 3.2
+ * @param aDocument data to be published
+ * @param aRefresh whether refresh is made automatically
+ * @param aETag SIP ETag header value to be used in SIP-If-Match header.
+ * @return operation id
+ */
+ TInt ContinuePublishL( MSimpleDocument& aDocument,
+ TBool aRefresh, const TDesC8& aETag );
+
+ /**
+ * Update published data.
+ * @since S60 3.2
+ * @param aDocument data to be published
+ * @return operation id
+ */
+ TInt ModifyPublishL( MSimpleDocument& aDocument );
+
+ /**
+ * Stop publishing data.
+ * @since S60 3.2
+ * @return operation id
+ */
+ TInt StopPublishL();
+
+ /**
+ * Stop publication.
+ *
+ * @since S60 3.2
+ * @param aETag SIP ETag header value to be used in SIP-If-Match header.
+ * @return operation id
+ */
+ TInt StopPublishL( const TDesC8& aETag );
+
+ /**
+ * SIP Status accessor
+ * Get the status of the last completed request.
+ * @since S60 3.2
+ * @return SIP status, 0 if not available
+ */
+ TUint SIPStatus( );
+
+ /**
+ * SIP Retry-after accessor
+ * Get the header of the last completed request.
+ * @since S60 3.2
+ * @return retry-after value in seconds, 0 if not available
+ */
+ TUint SIPRetryAfter( );
+
+ /**
+ * SIP ETag header value accessor.
+ * Notice that this value changes after each modification or automatic refresh
+ * of publication.
+ * Refer to RFC3903.
+ *
+ * @since S60 3.2
+ * @return ETag header value received from a network server..
+ * Zero length if not available.
+ */
+ TPtrC8 SIPETag();
+
+ /**
+ * SIP ETag header value change observer setter.
+ * Notice that this value changes after each modification or automatic refresh
+ * of publication. Observer is called when the ETag value changes next time.
+ * Refer to RFC3903.
+ *
+ * @since S60 3.2
+ * @param aObs ETag value observer. Can be NULL to stop notification.
+ */
+ void SetSIPETagObserver( MSimpleETagObserver* aObs );
+
+
+// from base class MSimpleOwnCallback
+
+ /**
+ * Complete the open client request
+ * @since S60 3.2
+ * @param aOpId operation id
+ * @param aStatus result status
+ * @param aReq request
+ */
+ void Complete( TInt aOpId, TInt aStatus, MSimpleEngineRequest& aReq );
+
+private:
+
+ /**
+ * Two-phase constructor
+ */
+ void ConstructL( );
+
+ /**
+ * constructor
+ * @param aConn connection
+ * @param aObserver callback observer
+ */
+ CSimplePublisher(
+ MSimpleConnection& aConn,
+ MSimplePublishObserver& aObserver );
+
+ /**
+ * Stream document into request
+ *
+ * @since S60 3.2
+ * @param aReq request
+ * @param aDocument document
+ */
+ void StreamDocumentL(
+ CSimpleEngineRequest& aReq,
+ MSimpleDocument& aDocument );
+
+
+ /**
+ * Publish data.
+ * Leaves with KErrInUse if there is already active publication
+ * in this MSimplePublisher entity.
+ * Expiry time is set based on SIMPLE settings.
+ * Refreshing is made by SIMPLE Engine.
+ *
+ * @since S60 3.2
+ * @param aDocument data to be published
+ * @param aRefresh whether refresh is made automatically
+ * @param aETag SIP ETag header value to be used in SIP-If-Match header.
+ * Zero length is ignored.
+ * @return operation id
+ */
+ TInt CSimplePublisher::DoStartPublishL( MSimpleDocument& aDocument,
+ TBool aRefresh, const TDesC8& aETag );
+
+
+private: // data
+
+ /**
+ * Publish state
+ */
+ TBool iPublished;
+
+ /**
+ * Client API observer for events
+ */
+ MSimplePublishObserver& iObserver;
+
+ /**
+ * Data buffer for transmission
+ * OWN.
+ */
+ CBufFlat* iBuffer;
+
+ /**
+ * current SIP ETag.
+ * Own.
+ */
+ HBufC8* iETag;
+
+ /**
+ * ETag change callback observer
+ * Not own.
+ **/
+ MSimpleETagObserver* iETagObserver;
+
+ };
+
+#endif // simplepublisher_H
+
+// End of File