btobexprofiles/obexserviceman/obexservicemanclient/src/ObexSMPlugin.cpp
author hgs
Fri, 28 May 2010 17:03:06 +0300
changeset 32 19bd632b5100
permissions -rw-r--r--
201021
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
32
hgs
parents:
diff changeset
     1
/*
hgs
parents:
diff changeset
     2
* Copyright (c) 2006 Nokia Corporation and/or its subsidiary(-ies).
hgs
parents:
diff changeset
     3
* All rights reserved.
hgs
parents:
diff changeset
     4
* This component and the accompanying materials are made available
hgs
parents:
diff changeset
     5
* under the terms of "Eclipse Public License v1.0"
hgs
parents:
diff changeset
     6
* which accompanies this distribution, and is available
hgs
parents:
diff changeset
     7
* at the URL "http://www.eclipse.org/legal/epl-v10.html".
hgs
parents:
diff changeset
     8
*
hgs
parents:
diff changeset
     9
* Initial Contributors:
hgs
parents:
diff changeset
    10
* Nokia Corporation - initial contribution.
hgs
parents:
diff changeset
    11
*
hgs
parents:
diff changeset
    12
* Contributors:
hgs
parents:
diff changeset
    13
*
hgs
parents:
diff changeset
    14
* Description:  This is the ObexServiceManager ecom plugin class implementation.
hgs
parents:
diff changeset
    15
*
hgs
parents:
diff changeset
    16
*/
hgs
parents:
diff changeset
    17
hgs
parents:
diff changeset
    18
hgs
parents:
diff changeset
    19
#include "ObexSMPlugin.h"
hgs
parents:
diff changeset
    20
#include "ObexSMRequester.h"
hgs
parents:
diff changeset
    21
#include "debug.h"
hgs
parents:
diff changeset
    22
hgs
parents:
diff changeset
    23
// ---------------------------------------------------------------------------
hgs
parents:
diff changeset
    24
// NewL
hgs
parents:
diff changeset
    25
// ---------------------------------------------------------------------------
hgs
parents:
diff changeset
    26
CObexSMPlugin* CObexSMPlugin::NewL(TLocodServicePluginParams& aParams)
hgs
parents:
diff changeset
    27
    {
hgs
parents:
diff changeset
    28
    TRACE_FUNC
hgs
parents:
diff changeset
    29
    CObexSMPlugin* self = new (ELeave) CObexSMPlugin(aParams);
hgs
parents:
diff changeset
    30
    CleanupStack::PushL(self);
hgs
parents:
diff changeset
    31
    self->ConstructL();
hgs
parents:
diff changeset
    32
    CleanupStack::Pop();
hgs
parents:
diff changeset
    33
    return self;
hgs
parents:
diff changeset
    34
    }
hgs
parents:
diff changeset
    35
hgs
parents:
diff changeset
    36
// ---------------------------------------------------------------------------
hgs
parents:
diff changeset
    37
// Destructor
hgs
parents:
diff changeset
    38
// ---------------------------------------------------------------------------
hgs
parents:
diff changeset
    39
CObexSMPlugin::~CObexSMPlugin()
hgs
parents:
diff changeset
    40
    {
hgs
parents:
diff changeset
    41
    TRACE_FUNC_ENTRY      
hgs
parents:
diff changeset
    42
    iRequests.ResetAndDestroy();
hgs
parents:
diff changeset
    43
    iRequests.Close();    
hgs
parents:
diff changeset
    44
    if(iObexSMServer.Handle())
hgs
parents:
diff changeset
    45
        {              
hgs
parents:
diff changeset
    46
        iObexSMServer.Close();       
hgs
parents:
diff changeset
    47
        }    
hgs
parents:
diff changeset
    48
    TRACE_FUNC_EXIT
hgs
parents:
diff changeset
    49
    }
hgs
parents:
diff changeset
    50
hgs
parents:
diff changeset
    51
// ---------------------------------------------------------------------------
hgs
parents:
diff changeset
    52
// ManageService
hgs
parents:
diff changeset
    53
// ---------------------------------------------------------------------------
hgs
parents:
diff changeset
    54
//
hgs
parents:
diff changeset
    55
void CObexSMPlugin::ManageService(TLocodBearer aBearer, TBool aStatus)
hgs
parents:
diff changeset
    56
    {
hgs
parents:
diff changeset
    57
    TRACE_FUNC_ENTRY    
hgs
parents:
diff changeset
    58
    TInt err = KErrNone; 
hgs
parents:
diff changeset
    59
    CObexSMRequester* request=NULL;
hgs
parents:
diff changeset
    60
    
hgs
parents:
diff changeset
    61
    if(!iObexSMServer.Handle())
hgs
parents:
diff changeset
    62
    	{
hgs
parents:
diff changeset
    63
       	err = iObexSMServer.Connect();              	
hgs
parents:
diff changeset
    64
    	}    
hgs
parents:
diff changeset
    65
    if(err == KErrNone &&  aBearer != ELocodBearerUSB)
hgs
parents:
diff changeset
    66
    	{    	
hgs
parents:
diff changeset
    67
    	TRAP(err, request = CObexSMRequester::NewL(this, aBearer, aStatus)); 
hgs
parents:
diff changeset
    68
    	if(err==KErrNone)
hgs
parents:
diff changeset
    69
    	    {
hgs
parents:
diff changeset
    70
            err=iRequests.Append( request );     
hgs
parents:
diff changeset
    71
            if(err==KErrNone)
hgs
parents:
diff changeset
    72
                {
hgs
parents:
diff changeset
    73
                request->ActivateRequest();               
hgs
parents:
diff changeset
    74
                }
hgs
parents:
diff changeset
    75
            }        
hgs
parents:
diff changeset
    76
    	}    
hgs
parents:
diff changeset
    77
    else if(err == KErrNone &&  aBearer == ELocodBearerUSB) 	
hgs
parents:
diff changeset
    78
        {
hgs
parents:
diff changeset
    79
        Observer().ManageServiceCompleted(aBearer,aStatus,ImplementationUid(), KErrNone); 	           
hgs
parents:
diff changeset
    80
        }
hgs
parents:
diff changeset
    81
        
hgs
parents:
diff changeset
    82
    if(err!=KErrNone)
hgs
parents:
diff changeset
    83
        {
hgs
parents:
diff changeset
    84
        Observer().ManageServiceCompleted(aBearer,aStatus,ImplementationUid(), err); 	       
hgs
parents:
diff changeset
    85
        }
hgs
parents:
diff changeset
    86
    TRACE_FUNC_EXIT    
hgs
parents:
diff changeset
    87
    }
hgs
parents:
diff changeset
    88
   
hgs
parents:
diff changeset
    89
// ---------------------------------------------------------------------------
hgs
parents:
diff changeset
    90
// Constructor
hgs
parents:
diff changeset
    91
// ---------------------------------------------------------------------------
hgs
parents:
diff changeset
    92
//
hgs
parents:
diff changeset
    93
hgs
parents:
diff changeset
    94
CObexSMPlugin::CObexSMPlugin(TLocodServicePluginParams& aParams)
hgs
parents:
diff changeset
    95
    : CLocodServicePlugin(aParams)
hgs
parents:
diff changeset
    96
    {	        
hgs
parents:
diff changeset
    97
	}
hgs
parents:
diff changeset
    98
hgs
parents:
diff changeset
    99
// ---------------------------------------------------------------------------
hgs
parents:
diff changeset
   100
// ConstructL
hgs
parents:
diff changeset
   101
// ---------------------------------------------------------------------------
hgs
parents:
diff changeset
   102
//
hgs
parents:
diff changeset
   103
void CObexSMPlugin::ConstructL()
hgs
parents:
diff changeset
   104
    {    
hgs
parents:
diff changeset
   105
    TRACE_FUNC    
hgs
parents:
diff changeset
   106
    }
hgs
parents:
diff changeset
   107
hgs
parents:
diff changeset
   108
// ---------------------------------------------------------------------------
hgs
parents:
diff changeset
   109
// RequestComplete
hgs
parents:
diff changeset
   110
// ---------------------------------------------------------------------------
hgs
parents:
diff changeset
   111
//
hgs
parents:
diff changeset
   112
void CObexSMPlugin::RequestComplete(CObexSMRequester* aRequest, TInt aError)
hgs
parents:
diff changeset
   113
    {   
hgs
parents:
diff changeset
   114
    TRACE_FUNC_ENTRY    
hgs
parents:
diff changeset
   115
    
hgs
parents:
diff changeset
   116
    TLocodBearer bearer= aRequest->GetBearer();
hgs
parents:
diff changeset
   117
    TBool status = aRequest->GetStatus();       
hgs
parents:
diff changeset
   118
    for(TInt index=0; index<iRequests.Count();index++)
hgs
parents:
diff changeset
   119
        {        
hgs
parents:
diff changeset
   120
        if(aRequest==iRequests[index])
hgs
parents:
diff changeset
   121
            {
hgs
parents:
diff changeset
   122
            delete iRequests[index];    
hgs
parents:
diff changeset
   123
            iRequests.Remove(index);
hgs
parents:
diff changeset
   124
            iRequests.Compress();
hgs
parents:
diff changeset
   125
            break;
hgs
parents:
diff changeset
   126
            }
hgs
parents:
diff changeset
   127
        }         
hgs
parents:
diff changeset
   128
    Observer().ManageServiceCompleted(bearer,status,ImplementationUid(), aError); 	   
hgs
parents:
diff changeset
   129
    
hgs
parents:
diff changeset
   130
    TRACE_FUNC_EXIT
hgs
parents:
diff changeset
   131
    }      
hgs
parents:
diff changeset
   132
hgs
parents:
diff changeset
   133
hgs
parents:
diff changeset
   134
// ---------------------------------------------------------------------------
hgs
parents:
diff changeset
   135
// GetServer
hgs
parents:
diff changeset
   136
// ---------------------------------------------------------------------------
hgs
parents:
diff changeset
   137
//
hgs
parents:
diff changeset
   138
RObexSMServer&  CObexSMPlugin::GetServer()
hgs
parents:
diff changeset
   139
    {
hgs
parents:
diff changeset
   140
    TRACE_FUNC    
hgs
parents:
diff changeset
   141
    return  iObexSMServer;
hgs
parents:
diff changeset
   142
    }
hgs
parents:
diff changeset
   143
    
hgs
parents:
diff changeset
   144
// End of file