|
1 // Copyright (c) 2004-2009 Nokia Corporation and/or its subsidiary(-ies). |
|
2 // All rights reserved. |
|
3 // This component and the accompanying materials are made available |
|
4 // under the terms of "Eclipse Public License v1.0" |
|
5 // which accompanies this distribution, and is available |
|
6 // at the URL "http://www.eclipse.org/legal/epl-v10.html". |
|
7 // |
|
8 // Initial Contributors: |
|
9 // Nokia Corporation - initial contribution. |
|
10 // |
|
11 // Contributors: |
|
12 // |
|
13 // Description: |
|
14 // |
|
15 |
|
16 /** |
|
17 @file |
|
18 @publishedPartner |
|
19 @released |
|
20 */ |
|
21 |
|
22 #ifndef CLIENTINFO_H |
|
23 #define CLIENTINFO_H |
|
24 |
|
25 #include <e32base.h> |
|
26 |
|
27 /** |
|
28 Contains information (of interest to the TSP) about a client of RemCon. |
|
29 Includes the client's process ID and the client's current send message |
|
30 (RMessage2) which is triggering a request (AddressOutgoingCommand or |
|
31 PermitOutgoingCommand) on the TSP. Via the RMessage2, the TSP can access the |
|
32 client's secure ID and also do capability checks on the client. |
|
33 The process ID is also used by the server to police creation of target |
|
34 sessions (only 1 is allowed per client process). |
|
35 */ |
|
36 class TClientInfo |
|
37 { |
|
38 public: |
|
39 /** Link between elements of this type in a TSglQue. If this member |
|
40 changes offset, remconserver must be rebuilt. */ |
|
41 TSglQueLink iLink; |
|
42 TSglQueLink iLink2; |
|
43 |
|
44 public: |
|
45 /** Constructor. */ |
|
46 IMPORT_C TClientInfo(); |
|
47 |
|
48 /** Destructor. */ |
|
49 IMPORT_C ~TClientInfo(); |
|
50 |
|
51 public: |
|
52 /** |
|
53 Accessor for process ID. |
|
54 @return The process ID. |
|
55 */ |
|
56 IMPORT_C TProcessId& ProcessId(); |
|
57 |
|
58 /** |
|
59 Accessor for process ID. |
|
60 @return The process ID. |
|
61 */ |
|
62 IMPORT_C TProcessId ProcessId() const; |
|
63 |
|
64 /** |
|
65 Accessor for message. |
|
66 @return The message. |
|
67 */ |
|
68 IMPORT_C RMessage2& Message(); |
|
69 |
|
70 /** |
|
71 Accessor for the client's current Send message. |
|
72 This is provided for the TSP to access the client's current Send message |
|
73 for capability checks only. The TSP must not Complete this message. Note |
|
74 that this message is only valid if AddressOutgoingCommand or |
|
75 PermitOutgoingCommand are being used (i.e. the client currently has a Send |
|
76 outstanding). |
|
77 For AddressIncomingCommand, the message returned will be invalid and must |
|
78 not be used by the TSP. |
|
79 @return The message. |
|
80 */ |
|
81 IMPORT_C const RMessage2& Message() const; |
|
82 |
|
83 /** |
|
84 Accessor for the secure ID. |
|
85 @return The secure ID. |
|
86 */ |
|
87 IMPORT_C TSecureId SecureId() const; |
|
88 |
|
89 /** |
|
90 Accessor for the secure ID. |
|
91 @return The secure ID. |
|
92 */ |
|
93 IMPORT_C TSecureId& SecureId(); |
|
94 |
|
95 private: |
|
96 /** The process ID. */ |
|
97 TProcessId iProcessId; |
|
98 |
|
99 /** The client's current send message. */ |
|
100 RMessage2 iMessage; |
|
101 |
|
102 /** The secure ID. */ |
|
103 TSecureId iSecureId; |
|
104 |
|
105 // The previous BC pad has been used for iLink2. Further extensions will need to be implemented by moving data out |
|
106 // into an extension class |
|
107 |
|
108 }; |
|
109 |
|
110 class TClientInfoConstIter: TSglQueIter<TClientInfo> |
|
111 { |
|
112 public: |
|
113 inline TClientInfoConstIter(TSglQue<TClientInfo>& aQue); |
|
114 inline void SetToFirst(); |
|
115 inline void Set(TClientInfo& aLink); |
|
116 inline operator const TClientInfo*(); |
|
117 inline const TClientInfo* operator++(TInt); |
|
118 }; |
|
119 |
|
120 inline TClientInfoConstIter::TClientInfoConstIter(TSglQue<TClientInfo>& aQue): TSglQueIter<TClientInfo>(aQue) |
|
121 { } |
|
122 |
|
123 inline void TClientInfoConstIter::SetToFirst() |
|
124 { |
|
125 TSglQueIter<TClientInfo>::SetToFirst(); |
|
126 } |
|
127 |
|
128 inline void TClientInfoConstIter::Set(TClientInfo& aLink) |
|
129 { DoSet(&aLink); } |
|
130 |
|
131 inline TClientInfoConstIter::operator const TClientInfo*() |
|
132 { return((const TClientInfo*)DoCurrent()); } |
|
133 |
|
134 inline const TClientInfo* TClientInfoConstIter::operator ++(TInt) |
|
135 { return((const TClientInfo *)DoPostInc()); } |
|
136 |
|
137 #endif // CLIENTINFO_H |