smf/smfcredentialmgr/smfcredmgrclient/smfcredmgrclientsession.cpp
changeset 14 a469c0e6e7fb
child 26 83d6a149c755
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/smf/smfcredentialmgr/smfcredmgrclient/smfcredmgrclientsession.cpp	Wed Jun 23 19:51:49 2010 +0530
@@ -0,0 +1,110 @@
+/**
+ * Copyright (c) 2010 Sasken Communication Technologies Ltd.
+ * All rights reserved.
+ * This component and the accompanying materials are made available
+ * under the terms of the "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:
+ * Pritam Roy Biswas, Sasken Communication Technologies Ltd - Initial contribution
+ *
+ * Description:
+ *  Client-side handle to a session with a server. Derives from RSessionBase to 
+ *   create a communicating channel with the server.
+ *
+ */
+
+#include "smfcredmgrclientsession.h"
+
+// The number of connection attempts.
+const TInt KConnectAttempts = 2;
+
+//  Global Functions
+static TInt StartServer()
+	{
+
+	RProcess server;
+	TInt r = server.Create(KCredMgrServerName, KNullDesC);
+	if (r != KErrNone)
+		{
+		return r;
+		}
+	TRequestStatus stat = KRequestPending;
+	server.Rendezvous(stat);
+	if (stat != KRequestPending)
+		server.Kill(0);
+	else
+		server.Resume();
+	
+	User::WaitForRequest(stat);
+	TExitType et = server.ExitType();
+	TInt code = stat.Int();
+	r = (et == EExitPanic) ? KErrGeneral : code;
+	server.Close();
+
+	return KErrNone;
+	}
+
+RSmfCredMgrClientSession::RSmfCredMgrClientSession()
+	{
+
+	}
+
+TInt RSmfCredMgrClientSession::connectToServer()
+	{
+	TInt retry = KConnectAttempts;
+	TInt r = 0;
+	for (;;)
+		{
+		r = CreateSession(KCredMgrServerName, Version(), 1);
+		if (r == KErrNone)
+			{
+			break;
+			}
+		else if (r != KErrNotFound && r != KErrServerTerminated)
+			{
+			return r;
+			}
+
+		if (--retry == 0)
+			{
+			return r;
+			}
+
+		r = StartServer();
+		if (r != KErrNone && r != KErrAlreadyExists)
+			{
+			return r;
+			//error 
+			}
+		}
+
+	return r;
+
+	}
+
+TVersion RSmfCredMgrClientSession::Version() const
+	{
+	return (TVersion(KSecureServMajorVersionNumber,
+			KSecureServMinorVersionNumber, KSecureServBuildVersionNumber));
+	}
+
+void RSmfCredMgrClientSession::Close()
+	{
+	RSessionBase::Close();
+	}
+
+void RSmfCredMgrClientSession::RequestAsyncService(
+		TCredentialServerRequestID aRequestType, TRequestStatus& aStatus)
+	{
+	SendReceive(aRequestType, aStatus);
+	}
+
+void RSmfCredMgrClientSession::RequestService(
+		TCredentialServerRequestID aRequestType, const TIpcArgs &aArgs)
+	{
+	TInt err = SendReceive(aRequestType, aArgs);
+
+	}
+