syncmlfw/common/sosserver_clientapi/src/NSmlClientAPI.cpp
changeset 73 ae69c2e8bc34
parent 0 b497e44ab2fc
equal deleted inserted replaced
71:d2517372cc44 73:ae69c2e8bc34
   109 	res = CreateSession( KSOSServerName, KServerVersion, KDefaultMessageSlots );
   109 	res = CreateSession( KSOSServerName, KServerVersion, KDefaultMessageSlots );
   110 	
   110 	
   111 	if ( res != KErrNone )
   111 	if ( res != KErrNone )
   112 		{
   112 		{
   113 		res = LaunchServerL();
   113 		res = LaunchServerL();
   114 		User::LeaveIfError( res );
   114 		if ( res == KErrNone )
   115 		res = CreateSession( KSOSServerName, KServerVersion, KDefaultMessageSlots );
   115 		{
   116 		}
   116 			res = CreateSession( KSOSServerName, KServerVersion, KDefaultMessageSlots );
       
   117 		}
       
   118 		else if ( res == KErrAlreadyExists )
       
   119 		{
       
   120 			TInt retryCount = 3;
       
   121 				
       
   122 			while ( res != KErrNone && retryCount )
       
   123 			{
       
   124 				res = CreateSession( KSOSServerName, KServerVersion, KDefaultMessageSlots );
       
   125 				if( res != KErrNone )
       
   126 				{
       
   127 				 // wait 1.5 seconds to give the server a chance to reach its serviceable state
       
   128 				 User::After( 1500000 );
       
   129 				 --retryCount;
       
   130 				}
       
   131 			}
       
   132 		}
       
   133 		}	
   117 
   134 
   118 	User::LeaveIfError( res );
   135 	User::LeaveIfError( res );
   119 	
   136 	
   120 	CleanupClosePushL( *this ); // if leave occures, Close is called by cleanup
   137 	CleanupClosePushL( *this ); // if leave occures, Close is called by cleanup
   121 	
   138 	
   137 	_DBG_FILE("RSyncMLSession::RequestEventL(): begin");
   154 	_DBG_FILE("RSyncMLSession::RequestEventL(): begin");
   138 	
   155 	
   139 	if ( !iEventCallback )
   156 	if ( !iEventCallback )
   140 		{
   157 		{
   141 		// callback not yet created, create
   158 		// callback not yet created, create
   142 		iEventCallback = new (ELeave) CSmlActiveCallback( *this );
   159 		iEventCallback = new (ELeave) CSmlActiveCallback( *this );		
   143 		}
   160 		}
   144 	
   161 	
   145 	iEventCallback->SetEventObserverL( aEventObserver );
   162 	iEventCallback->SetEventObserverL( aEventObserver );	
   146 	
   163 	
   147 	_DBG_FILE("RSyncMLSession::RequestEventL(): end");
   164 	_DBG_FILE("RSyncMLSession::RequestEventL(): end");
   148 	}
   165 	}
   149 	
   166 	
   150 // -----------------------------------------------------------------------------
   167 // -----------------------------------------------------------------------------
   176 	if ( !iEventCallback )
   193 	if ( !iEventCallback )
   177 		{
   194 		{
   178 		// callback not yet created, create
   195 		// callback not yet created, create
   179 		iEventCallback = new (ELeave) CSmlActiveCallback( *this );
   196 		iEventCallback = new (ELeave) CSmlActiveCallback( *this );
   180 		}
   197 		}
   181 
   198 	
   182 	iEventCallback->SetProgressObserverL( aProgressObserver );
   199 	iEventCallback->SetProgressObserverL( aProgressObserver );
   183 	
   200 	  
       
   201 		
   184 	_DBG_FILE("RSyncMLSession::RequestProgressL(): end");
   202 	_DBG_FILE("RSyncMLSession::RequestProgressL(): end");
   185 	}
   203 	}
   186 	
   204 	
   187 // -----------------------------------------------------------------------------
   205 // -----------------------------------------------------------------------------
   188 // RSyncMLSession::CancelProgress()
   206 // RSyncMLSession::CancelProgress()