remotecontrol/remotecontrolfw/server/inc/connections.h
author hgs
Wed, 13 Oct 2010 16:20:29 +0300
changeset 51 20ac952a623c
permissions -rw-r--r--
201040_02
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
51
20ac952a623c 201040_02
hgs
parents:
diff changeset
     1
// Copyright (c) 2004-2009 Nokia Corporation and/or its subsidiary(-ies).
20ac952a623c 201040_02
hgs
parents:
diff changeset
     2
// All rights reserved.
20ac952a623c 201040_02
hgs
parents:
diff changeset
     3
// This component and the accompanying materials are made available
20ac952a623c 201040_02
hgs
parents:
diff changeset
     4
// under the terms of "Eclipse Public License v1.0"
20ac952a623c 201040_02
hgs
parents:
diff changeset
     5
// which accompanies this distribution, and is available
20ac952a623c 201040_02
hgs
parents:
diff changeset
     6
// at the URL "http://www.eclipse.org/legal/epl-v10.html".
20ac952a623c 201040_02
hgs
parents:
diff changeset
     7
//
20ac952a623c 201040_02
hgs
parents:
diff changeset
     8
// Initial Contributors:
20ac952a623c 201040_02
hgs
parents:
diff changeset
     9
// Nokia Corporation - initial contribution.
20ac952a623c 201040_02
hgs
parents:
diff changeset
    10
//
20ac952a623c 201040_02
hgs
parents:
diff changeset
    11
// Contributors:
20ac952a623c 201040_02
hgs
parents:
diff changeset
    12
//
20ac952a623c 201040_02
hgs
parents:
diff changeset
    13
// Description:
20ac952a623c 201040_02
hgs
parents:
diff changeset
    14
//
20ac952a623c 201040_02
hgs
parents:
diff changeset
    15
20ac952a623c 201040_02
hgs
parents:
diff changeset
    16
/**
20ac952a623c 201040_02
hgs
parents:
diff changeset
    17
 @file
20ac952a623c 201040_02
hgs
parents:
diff changeset
    18
 @internalComponent
20ac952a623c 201040_02
hgs
parents:
diff changeset
    19
*/
20ac952a623c 201040_02
hgs
parents:
diff changeset
    20
20ac952a623c 201040_02
hgs
parents:
diff changeset
    21
#ifndef CONNECTIONS_H
20ac952a623c 201040_02
hgs
parents:
diff changeset
    22
#define CONNECTIONS_H
20ac952a623c 201040_02
hgs
parents:
diff changeset
    23
20ac952a623c 201040_02
hgs
parents:
diff changeset
    24
#include <e32base.h>
20ac952a623c 201040_02
hgs
parents:
diff changeset
    25
#include <remconaddress.h>
20ac952a623c 201040_02
hgs
parents:
diff changeset
    26
20ac952a623c 201040_02
hgs
parents:
diff changeset
    27
/**
20ac952a623c 201040_02
hgs
parents:
diff changeset
    28
Encapsulates a snapshot of all the connections (remotes) in RemCon at one 
20ac952a623c 201040_02
hgs
parents:
diff changeset
    29
point in time.
20ac952a623c 201040_02
hgs
parents:
diff changeset
    30
*/
20ac952a623c 201040_02
hgs
parents:
diff changeset
    31
NONSHARABLE_CLASS(CConnections) : public CBase
20ac952a623c 201040_02
hgs
parents:
diff changeset
    32
	{
20ac952a623c 201040_02
hgs
parents:
diff changeset
    33
public:
20ac952a623c 201040_02
hgs
parents:
diff changeset
    34
	/** Link between elements of this type in a TSglQue. */
20ac952a623c 201040_02
hgs
parents:
diff changeset
    35
	TSglQueLink iLink;
20ac952a623c 201040_02
hgs
parents:
diff changeset
    36
20ac952a623c 201040_02
hgs
parents:
diff changeset
    37
public:
20ac952a623c 201040_02
hgs
parents:
diff changeset
    38
	/**
20ac952a623c 201040_02
hgs
parents:
diff changeset
    39
	@return Ownership of a new CConnections object.
20ac952a623c 201040_02
hgs
parents:
diff changeset
    40
	*/
20ac952a623c 201040_02
hgs
parents:
diff changeset
    41
	static CConnections* NewL();
20ac952a623c 201040_02
hgs
parents:
diff changeset
    42
	
20ac952a623c 201040_02
hgs
parents:
diff changeset
    43
	/**
20ac952a623c 201040_02
hgs
parents:
diff changeset
    44
	@return Ownership of a new CConnections object, with its own (owned) 
20ac952a623c 201040_02
hgs
parents:
diff changeset
    45
	copies of the data in aItem.
20ac952a623c 201040_02
hgs
parents:
diff changeset
    46
	*/
20ac952a623c 201040_02
hgs
parents:
diff changeset
    47
	static CConnections* CopyL(CConnections& aItem);
20ac952a623c 201040_02
hgs
parents:
diff changeset
    48
	
20ac952a623c 201040_02
hgs
parents:
diff changeset
    49
	/**
20ac952a623c 201040_02
hgs
parents:
diff changeset
    50
	Destructor.
20ac952a623c 201040_02
hgs
parents:
diff changeset
    51
	*/
20ac952a623c 201040_02
hgs
parents:
diff changeset
    52
	~CConnections();
20ac952a623c 201040_02
hgs
parents:
diff changeset
    53
20ac952a623c 201040_02
hgs
parents:
diff changeset
    54
public:
20ac952a623c 201040_02
hgs
parents:
diff changeset
    55
	/**
20ac952a623c 201040_02
hgs
parents:
diff changeset
    56
	Accessor for a member iterator over the queue. The iterator is provided 
20ac952a623c 201040_02
hgs
parents:
diff changeset
    57
	set to the first item in the queue. The iterator is 'safe' (will not be 
20ac952a623c 201040_02
hgs
parents:
diff changeset
    58
	otherwise interfered with) until SetToFirst or the destructor is called. 
20ac952a623c 201040_02
hgs
parents:
diff changeset
    59
	@return Iterator.
20ac952a623c 201040_02
hgs
parents:
diff changeset
    60
	*/
20ac952a623c 201040_02
hgs
parents:
diff changeset
    61
	TSglQueIter<TRemConAddress>& SetToFirst() const;
20ac952a623c 201040_02
hgs
parents:
diff changeset
    62
20ac952a623c 201040_02
hgs
parents:
diff changeset
    63
	/**
20ac952a623c 201040_02
hgs
parents:
diff changeset
    64
	@return The number of remote connections.
20ac952a623c 201040_02
hgs
parents:
diff changeset
    65
	*/
20ac952a623c 201040_02
hgs
parents:
diff changeset
    66
	inline TUint Count() const;
20ac952a623c 201040_02
hgs
parents:
diff changeset
    67
20ac952a623c 201040_02
hgs
parents:
diff changeset
    68
	/**
20ac952a623c 201040_02
hgs
parents:
diff changeset
    69
	Adds a remote connection to the current set. Panics if a duplicate is 
20ac952a623c 201040_02
hgs
parents:
diff changeset
    70
	already present.
20ac952a623c 201040_02
hgs
parents:
diff changeset
    71
	@param aAddr The new connection.
20ac952a623c 201040_02
hgs
parents:
diff changeset
    72
	*/
20ac952a623c 201040_02
hgs
parents:
diff changeset
    73
	void Append(TRemConAddress& aAddr);
20ac952a623c 201040_02
hgs
parents:
diff changeset
    74
20ac952a623c 201040_02
hgs
parents:
diff changeset
    75
	/**
20ac952a623c 201040_02
hgs
parents:
diff changeset
    76
	Removes a remote connection to the current set. Panics if the connection 
20ac952a623c 201040_02
hgs
parents:
diff changeset
    77
	is not already present.
20ac952a623c 201040_02
hgs
parents:
diff changeset
    78
	Does not delete the address. This is a very special utility function- the 
20ac952a623c 201040_02
hgs
parents:
diff changeset
    79
	client is expected to be assuming ownership of the address. This function 
20ac952a623c 201040_02
hgs
parents:
diff changeset
    80
	effectively removes ownership of the address from this CConnections.
20ac952a623c 201040_02
hgs
parents:
diff changeset
    81
	@param aAddr The connection to remove.
20ac952a623c 201040_02
hgs
parents:
diff changeset
    82
	*/
20ac952a623c 201040_02
hgs
parents:
diff changeset
    83
	void Remove(TRemConAddress& aAddr);
20ac952a623c 201040_02
hgs
parents:
diff changeset
    84
20ac952a623c 201040_02
hgs
parents:
diff changeset
    85
	/**
20ac952a623c 201040_02
hgs
parents:
diff changeset
    86
	@return ETrue if the given address is present in this set of connections, 
20ac952a623c 201040_02
hgs
parents:
diff changeset
    87
	EFalse otherwise.
20ac952a623c 201040_02
hgs
parents:
diff changeset
    88
	*/
20ac952a623c 201040_02
hgs
parents:
diff changeset
    89
	TBool Find(const TRemConAddress& aAddr) const;
20ac952a623c 201040_02
hgs
parents:
diff changeset
    90
20ac952a623c 201040_02
hgs
parents:
diff changeset
    91
	/** Logs the connections. */
20ac952a623c 201040_02
hgs
parents:
diff changeset
    92
	void LogConnections() const;
20ac952a623c 201040_02
hgs
parents:
diff changeset
    93
20ac952a623c 201040_02
hgs
parents:
diff changeset
    94
private:
20ac952a623c 201040_02
hgs
parents:
diff changeset
    95
	/** Constructor. */
20ac952a623c 201040_02
hgs
parents:
diff changeset
    96
	CConnections();
20ac952a623c 201040_02
hgs
parents:
diff changeset
    97
		
20ac952a623c 201040_02
hgs
parents:
diff changeset
    98
private: // owned
20ac952a623c 201040_02
hgs
parents:
diff changeset
    99
	TSglQue<TRemConAddress> iConnections;
20ac952a623c 201040_02
hgs
parents:
diff changeset
   100
	TSglQueIter<TRemConAddress> iIter;
20ac952a623c 201040_02
hgs
parents:
diff changeset
   101
	};
20ac952a623c 201040_02
hgs
parents:
diff changeset
   102
20ac952a623c 201040_02
hgs
parents:
diff changeset
   103
// Inlines
20ac952a623c 201040_02
hgs
parents:
diff changeset
   104
20ac952a623c 201040_02
hgs
parents:
diff changeset
   105
TUint CConnections::Count() const
20ac952a623c 201040_02
hgs
parents:
diff changeset
   106
	{
20ac952a623c 201040_02
hgs
parents:
diff changeset
   107
	TUint count = 0;
20ac952a623c 201040_02
hgs
parents:
diff changeset
   108
20ac952a623c 201040_02
hgs
parents:
diff changeset
   109
	TSglQueIter<TRemConAddress> iter(const_cast<CConnections*>(this)->iConnections);
20ac952a623c 201040_02
hgs
parents:
diff changeset
   110
	while ( iter++ )
20ac952a623c 201040_02
hgs
parents:
diff changeset
   111
		{
20ac952a623c 201040_02
hgs
parents:
diff changeset
   112
		++count;
20ac952a623c 201040_02
hgs
parents:
diff changeset
   113
		}
20ac952a623c 201040_02
hgs
parents:
diff changeset
   114
20ac952a623c 201040_02
hgs
parents:
diff changeset
   115
	return count;
20ac952a623c 201040_02
hgs
parents:
diff changeset
   116
	}
20ac952a623c 201040_02
hgs
parents:
diff changeset
   117
20ac952a623c 201040_02
hgs
parents:
diff changeset
   118
#endif // CONNECTIONS_H