contentstorage/caclient/s60/inc/caclientsession.h
author hgs
Wed, 24 Mar 2010 03:15:43 +0200
changeset 89 1e87eb3b400f
parent 85 7feec50967db
permissions -rw-r--r--
201011

/*
 * Copyright (c) 2007 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 : Content Arsenal client session
 *
 */

#ifndef CACLIENTSESSION_H
#define CACLIENTSESSION_H

// INCLUDES
#include <e32base.h>

#include "caoperationparams.h"
#include "casrvdef.h"

//FORWARD DECLARATIONS
class CCaInnerEntry;
class CCaInnerQuery;
class RCaEntriesArray;
class RCaIdsArray;

// CLASS DECLARATION
/**
 * Client-side interface to Content Arsenal Server
 *
 * This class provides the client-side interface to the content arsenal server
 * session, it just passes requests to the server.
 *
 */
class RCaClientSession: public RSessionBase
    {
public:

    /**
     * Construct the object.
     */
    RCaClientSession();

    /**
     * Connects to the server and create a session.
     * @return error code
     */
    TInt Connect();

    /**
     * Starts the server if it is not running.
     * @return error code
     */
    TInt StartServer();

    /**
     * Create subsession.
     * @return error code
     */
    TInt Create( TInt aFunction, const TIpcArgs& aArgs );

    /**
     * Closes session
     *
     * @since S60 v 5.0
     */
    void Close();

    /**
     * Return version information
     */
    TVersion Version() const;

    /*
     * Gets entries list
     * @param aQuery query
     * @param aResult contains operation result
     */
    void GetListL( const CCaInnerQuery& aQuery, RCaEntriesArray& aResult );

    /*
     * Gets entries ids list
     * @param aQuery query
     * @param aResult contains operation result
     */
    void GetEntryIdsL( const CCaInnerQuery& aQuery, RCaIdsArray& aResult );

    /*
     * Adds entry to a storage
     * @param aEntry input entry
     * @param aResult output entry
     */
    void AddL( CCaInnerEntry& aEntry );

    /*
     * Removes entry from a storage
     * @param aEntries array containing entries ids
     */
    void RemoveL( const RCaIdsArray& aEntries );

    /*
     * Organizes entries in a storage
     * @param aEntries array containing entires to organize
     * @param aParams operation parameters
     */
    void OrganizeL( const RCaIdsArray& aEntries,
            TCaOperationParams aParams );

    /*
     * Touch operation for entry in storage
     * @param aEntry entry to be touched
     */
    void TouchL( const CCaInnerEntry& aEntry );
    
    /*
     * Custom sort in a storage.
     * @param aEntries array containing entries ids.
     * @param aGroupId The group Id to custom sort.
     */
    void CustomSortL( const RCaIdsArray& aEntries, const TInt aGroupId );

private:

    /*
     * Gets operation result
     * @param aSize size of descriptor
     * @param aRequest server request
     * @param aObject object to store result
     */
    template<typename SerializableObject>
    TInt GetResultL( TInt aSize, TCaServerRequests aRequest,
            SerializableObject& aObject );

    /*
     * GetSizeL method
     * Return error
     * @param aQuery query
     * @param aServerRequest
     * @param aResultSize
     */
    TInt GetSizeL( const CCaInnerQuery& aQuery,
            const TCaServerRequests aServerRequest, TInt& aResultSize );
    };

#endif // CACLIENTSESSION_H
// End of File