--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/calendarengines/caldav/src/caldavserversession.cpp Fri Feb 05 10:16:42 2010 +0100
@@ -0,0 +1,400 @@
+/*
+* Copyright (c) 2010 Sun Microsystems, Inc. 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 Contributor:
+* Maximilian Odendahl
+*
+* Contributors:
+*
+* Description: Caldav server session, follows Symbian
+* client/server architecture
+*/
+
+#include <e32cmn.h>
+
+#include "caldavserversession.h"
+#include "caldavserver.h"
+#include "caldavutils.h"
+
+#define MAXLENGTH 500
+
+CCalDavServerSession::CCalDavServerSession(CCalDavServer &aServer) :
+ rServer(aServer)
+ {
+ }
+
+/**
+ Services a client request.
+ */
+void CCalDavServerSession::ServiceL(const RMessage2& aMessage)
+ {
+ TRAP_IGNORE(DispatchMessageL(aMessage));
+ }
+
+/**
+ Called by ServiceL()
+
+ It tests the function code and then delegates to
+ the appropriate function.
+ */
+void CCalDavServerSession::DispatchMessageL(const RMessage2& aMessage)
+ {
+ switch (aMessage.Function())
+ {
+ case ECalDavEnable:
+ EnableL(aMessage);
+ return;
+ case ECalDavDisable:
+ DisableL(aMessage);
+ return;
+ case ECalDavSyncAll:
+ SyncAllL(aMessage);
+ return;
+ case ECalDavSync:
+ SyncL(aMessage);
+ return;
+ case ECalDavUrl:
+ UrlL(aMessage);
+ return;
+ case ECalDavSetUrl:
+ SetUrlL(aMessage);
+ return;
+ case ECalDavUsername:
+ UsernameL(aMessage);
+ return;
+ case ECalDavSetUsername:
+ SetUsernameL(aMessage);
+ return;
+ case ECalDavPassword:
+ PasswordL(aMessage);
+ return;
+ case ECalDavSetPassword:
+ SetPasswordL(aMessage);
+ return;
+ case ECalDavSyncInterval:
+ SyncIntervalL(aMessage);
+ return;
+ case ECalDavSetSyncInterval:
+ SetSyncIntervalL(aMessage);
+ return;
+ case ECalDavPastDays:
+ PastDaysL(aMessage);
+ return;
+ case ECalDavSetPastDays:
+ SetPastDaysL(aMessage);
+ return;
+ case ECalDavImmediateSync:
+ ImmediateSyncL(aMessage);
+ return;
+ case ECalDavSetImmediateSync:
+ SetImmediateSyncL(aMessage);
+ return;
+ case ECalDavKeepServer:
+ KeepServerEntryL(aMessage);
+ return;
+ case ECalDavSetKeepServer:
+ SetKeepServerEntryL(aMessage);
+ return;
+ case ECalDavEnabled:
+ EnabledSyncL(aMessage);
+ return;
+ case ECalDavUnsupportedRequest:
+ User::Leave(KErrNotSupported);
+ // Requests that we don't understand at all are a different matter.
+ // This is considered a client programming error, so we panic the
+ // client - this also completes the message.
+ default:
+ PanicClient(aMessage, EBadRequest);
+ return;
+ }
+ }
+
+/**
+ Panics the client
+ */
+void CCalDavServerSession::PanicClient(const RMessage2& aMessage, TInt aPanic) const
+ {
+ _LIT(KTxtServer,"CalDav server");
+ aMessage.Panic(KTxtServer, aPanic);
+ }
+
+void CCalDavServerSession::EnableL(const RMessage2& aMessage)
+ {
+ TUint length = aMessage.GetDesLength(0);
+ HBufC* calendar = HBufC::NewLC(length);
+ TPtr calendarPtr(calendar->Des());
+ aMessage.ReadL(0, calendarPtr);
+
+ TInt result = rServer.EnableL(*calendar);
+
+ CleanupStack::PopAndDestroy(calendar);
+ aMessage.Complete(result);
+ }
+
+void CCalDavServerSession::DisableL(const RMessage2& aMessage)
+ {
+ TUint length = aMessage.GetDesLength(0);
+ HBufC* calendar = HBufC::NewLC(length);
+ TPtr calendarPtr(calendar->Des());
+ aMessage.ReadL(0, calendarPtr);
+
+ TInt result = rServer.DisableL(*calendar);
+ CleanupStack::PopAndDestroy(calendar);
+ aMessage.Complete(result);
+ }
+
+void CCalDavServerSession::SyncL(const RMessage2& aMessage)
+ {
+ TUint length = aMessage.GetDesLength(0);
+ HBufC* calendar = HBufC::NewLC(length);
+ TPtr calendarPtr(calendar->Des());
+ aMessage.ReadL(0, calendarPtr);
+
+ TInt result = rServer.SyncL(*calendar);
+ CleanupStack::PopAndDestroy(calendar);
+ aMessage.Complete(result);
+ }
+
+void CCalDavServerSession::SyncAllL(const RMessage2& aMessage)
+ {
+ TInt result = rServer.SyncAllL();
+ aMessage.Complete(result);
+ }
+
+void CCalDavServerSession::UrlL(const RMessage2& aMessage)
+ {
+ TUint length = aMessage.GetDesLength(0);
+ HBufC* calendar = HBufC::NewLC(length);
+ TPtr calendarPtr(calendar->Des());
+ aMessage.ReadL(0, calendarPtr);
+
+ aMessage.WriteL(1, rServer.UrlL(*calendar));
+ CleanupStack::PopAndDestroy(calendar);
+ aMessage.Complete(KErrNone);
+ }
+
+void CCalDavServerSession::SetUrlL(const RMessage2& aMessage)
+ {
+ TUint length = aMessage.GetDesLength(0);
+ HBufC* calendar = HBufC::NewLC(length);
+ TPtr calendarPtr(calendar->Des());
+ aMessage.ReadL(0, calendarPtr);
+
+ length = aMessage.GetDesLength(1);
+ HBufC8* url = HBufC8::NewLC(length);
+ TPtr8 urlPtr(url->Des());
+ aMessage.ReadL(1, urlPtr);
+
+ rServer.SetUrlL(*calendar, *url);
+ CleanupStack::PopAndDestroy(url);
+ CleanupStack::PopAndDestroy(calendar);
+
+ aMessage.Complete(KErrNone);
+ }
+
+void CCalDavServerSession::UsernameL(const RMessage2& aMessage)
+ {
+ TUint length = aMessage.GetDesLength(0);
+ HBufC* calendar = HBufC::NewLC(length);
+ TPtr calendarPtr(calendar->Des());
+ aMessage.ReadL(0, calendarPtr);
+
+ aMessage.WriteL(1, rServer.UsernameL(*calendar));
+ CleanupStack::PopAndDestroy(calendar);
+ aMessage.Complete(KErrNone);
+ }
+
+void CCalDavServerSession::SetUsernameL(const RMessage2& aMessage)
+ {
+ TUint length = aMessage.GetDesLength(0);
+ HBufC* calendar = HBufC::NewLC(length);
+ TPtr calendarPtr(calendar->Des());
+ aMessage.ReadL(0, calendarPtr);
+
+ length = aMessage.GetDesLength(1);
+ HBufC8* username = HBufC8::NewLC(length);
+ TPtr8 usernamePtr(username->Des());
+ aMessage.ReadL(1, usernamePtr);
+
+ rServer.SetUsernameL(*calendar, *username);
+ CleanupStack::PopAndDestroy(username);
+ CleanupStack::PopAndDestroy(calendar);
+
+ aMessage.Complete(KErrNone);
+ }
+
+void CCalDavServerSession::PasswordL(const RMessage2& aMessage)
+ {
+ TUint length = aMessage.GetDesLength(0);
+ HBufC* calendar = HBufC::NewLC(length);
+ TPtr calendarPtr(calendar->Des());
+ aMessage.ReadL(0, calendarPtr);
+
+ aMessage.WriteL(1, rServer.PasswordL(*calendar));
+ CleanupStack::PopAndDestroy(calendar);
+ aMessage.Complete(KErrNone);
+ }
+
+void CCalDavServerSession::SetPasswordL(const RMessage2& aMessage)
+ {
+ TUint length = aMessage.GetDesLength(0);
+ HBufC* calendar = HBufC::NewLC(length);
+ TPtr calendarPtr(calendar->Des());
+ aMessage.ReadL(0, calendarPtr);
+
+ length = aMessage.GetDesLength(1);
+ HBufC8* password = HBufC8::NewLC(length);
+ TPtr8 passwordPtr(password->Des());
+ aMessage.ReadL(1, passwordPtr);
+
+ rServer.SetPasswordL(*calendar, *password);
+ CleanupStack::PopAndDestroy(password);
+ CleanupStack::PopAndDestroy(calendar);
+
+ aMessage.Complete(KErrNone);
+ }
+
+void CCalDavServerSession::SyncIntervalL(const RMessage2& aMessage)
+ {
+ TUint length = aMessage.GetDesLength(0);
+ HBufC* calendar = HBufC::NewLC(length);
+ TPtr calendarPtr(calendar->Des());
+ aMessage.ReadL(0, calendarPtr);
+
+ TTimeIntervalMinutes interval = rServer.SyncIntervalL(*calendar);
+ TPckg<TTimeIntervalMinutes> intervalDes(interval);
+ aMessage.WriteL(1, intervalDes);
+
+ CleanupStack::PopAndDestroy(calendar);
+ aMessage.Complete(KErrNone);
+ }
+
+void CCalDavServerSession::SetSyncIntervalL(const RMessage2& aMessage)
+ {
+ TUint length = aMessage.GetDesLength(0);
+ HBufC* calendar = HBufC::NewLC(length);
+ TPtr calendarPtr(calendar->Des());
+ aMessage.ReadL(0, calendarPtr);
+
+ TTimeIntervalMinutes interval;
+ ;
+ TPckg<TTimeIntervalMinutes> intervalDes(interval);
+ aMessage.ReadL(1, intervalDes);
+
+ rServer.SetSyncIntervalL(*calendar, interval);
+ CleanupStack::PopAndDestroy(calendar);
+ aMessage.Complete(KErrNone);
+ }
+
+void CCalDavServerSession::PastDaysL(const RMessage2& aMessage)
+ {
+ TUint length = aMessage.GetDesLength(0);
+ HBufC* calendar = HBufC::NewLC(length);
+ TPtr calendarPtr(calendar->Des());
+ aMessage.ReadL(0, calendarPtr);
+
+ TTimeIntervalDays days = rServer.PastDaysL(*calendar);
+ TPckg<TTimeIntervalDays> daysDes(days);
+ aMessage.WriteL(1, daysDes);
+
+ CleanupStack::PopAndDestroy(calendar);
+ aMessage.Complete(KErrNone);
+ }
+
+void CCalDavServerSession::SetPastDaysL(const RMessage2& aMessage)
+ {
+ TUint length = aMessage.GetDesLength(0);
+ HBufC* calendar = HBufC::NewLC(length);
+ TPtr calendarPtr(calendar->Des());
+ aMessage.ReadL(0, calendarPtr);
+
+ TTimeIntervalDays days;
+ TPckg<TTimeIntervalDays> daysDes(days);
+ aMessage.ReadL(1, daysDes);
+
+ rServer.SetPastDaysL(*calendar, days);
+ CleanupStack::PopAndDestroy(calendar);
+ aMessage.Complete(KErrNone);
+ }
+
+void CCalDavServerSession::ImmediateSyncL(const RMessage2& aMessage)
+ {
+ TUint length = aMessage.GetDesLength(0);
+ HBufC* calendar = HBufC::NewLC(length);
+ TPtr calendarPtr(calendar->Des());
+ aMessage.ReadL(0, calendarPtr);
+
+ TBool immediate = rServer.ImmediateSyncL(*calendar);
+ TPckg<TBool> immediateDes(immediate);
+ aMessage.WriteL(1, immediateDes);
+
+ CleanupStack::PopAndDestroy(calendar);
+ aMessage.Complete(KErrNone);
+ }
+
+void CCalDavServerSession::SetImmediateSyncL(const RMessage2& aMessage)
+ {
+ TUint length = aMessage.GetDesLength(0);
+ HBufC* calendar = HBufC::NewLC(length);
+ TPtr calendarPtr(calendar->Des());
+ aMessage.ReadL(0, calendarPtr);
+
+ TBool immediate;
+ TPckg<TBool> immediateDes(immediate);
+ aMessage.ReadL(1, immediateDes);
+ rServer.SetImmediateSyncL(*calendar, immediate);
+
+ CleanupStack::PopAndDestroy(calendar);
+ aMessage.Complete(KErrNone);
+ }
+
+void CCalDavServerSession::KeepServerEntryL(const RMessage2& aMessage)
+ {
+ TUint length = aMessage.GetDesLength(0);
+ HBufC* calendar = HBufC::NewLC(length);
+ TPtr calendarPtr(calendar->Des());
+ aMessage.ReadL(0, calendarPtr);
+
+ TBool keepserver = rServer.ImmediateSyncL(*calendar);
+ TPckg<TBool> keepserverDes(keepserver);
+ aMessage.WriteL(1, keepserverDes);
+
+ CleanupStack::PopAndDestroy(calendar);
+ aMessage.Complete(KErrNone);
+ }
+
+void CCalDavServerSession::EnabledSyncL(const RMessage2& aMessage)
+ {
+ TUint length = aMessage.GetDesLength(0);
+ HBufC* calendar = HBufC::NewLC(length);
+ TPtr calendarPtr(calendar->Des());
+ aMessage.ReadL(0, calendarPtr);
+
+ TBool enabledsync = rServer.EnabledSyncL(*calendar);
+ TPckg<TBool> enabledsyncDes(enabledsync);
+ aMessage.WriteL(1, enabledsyncDes);
+
+ CleanupStack::PopAndDestroy(calendar);
+ aMessage.Complete(KErrNone);
+ }
+
+void CCalDavServerSession::SetKeepServerEntryL(const RMessage2& aMessage)
+ {
+ TUint length = aMessage.GetDesLength(0);
+ HBufC* calendar = HBufC::NewLC(length);
+ TPtr calendarPtr(calendar->Des());
+ aMessage.ReadL(0, calendarPtr);
+
+ TBool keepserver;
+ TPckg<TBool> keepserverDes(keepserver);
+ aMessage.ReadL(1, keepserverDes);
+ rServer.SetImmediateSyncL(*calendar, keepserver);
+
+ CleanupStack::PopAndDestroy(calendar);
+ aMessage.Complete(KErrNone);
+ }