Symbian
Symbian Developer Library

SYMBIAN OS V9.4

Feedback

[Index] [Previous] [Next]

#include <e32std.h>
Link against: euser.lib

Class RSubSessionBase

class RSubSessionBase;

Description

Client-side handle to a sub-session.

It represents a client-side sub-session, and has a corresponding sub-session object on the server-side.

Clients normally define and implement a derived class to provide a richer interface. In particular, a derived class should:

1. provide a function to create a new sub-session with the server; this should call RSubSessionBase::CreateSubSession(const RSessionBase &,TInt,const TIpcArgs &).

2. provide a function to close the current sub-session; this should call RSubSessionBase::CloseSubSession(TInt).

A session must already exist with a server before a client can establish any sub-sessions.

Members

Defined in RSubSessionBase:


Construction and destruction


RSubSessionBase()

protected: inline RSubSessionBase();

Description

Default constructor

[Top]


Member functions


SubSessionHandle()const

inline TInt SubSessionHandle() const;

Description

Gets the sub-session handle number.

This number is automatically passed to the server when making requests and is used to identify the appropriate server-side sub-session.

Return value

TInt

The sub-session handle number.


Session()const

protected: IMPORT_C const RSessionBase Session() const;

Description

Returns a copy of the session associated with this sub-session.

Return value

const RSessionBase

a copy of the session


CreateSubSession(const RSessionBase &,TInt,const TIpcArgs &)

protected: inline TInt CreateSubSession(const RSessionBase &aSession, TInt aFunction, const TIpcArgs &aArgs);

Description

Creates a new sub-session within an existing session.

Parameters

const RSessionBase &aSession

The session to which this sub-session will belong.

TInt aFunction

The opcode specifying the requested service; the server should interpret this as a request to create a sub-session.

const TIpcArgs &aArgs

The message arguments.

Return value

TInt

KErrNone if successful, otherwise one of the system-wide error codes.


CreateSubSession(const RSessionBase &,TInt)

protected: inline TInt CreateSubSession(const RSessionBase &aSession, TInt aFunction);

Description

Creates a new sub-session within an existing session.

This variant sends no message arguments to the server.

Parameters

const RSessionBase &aSession

The session to which this sub-session will belong.

TInt aFunction

The opcode specifying the requested service; the server should interpret this as a request to create a sub-session.

Return value

TInt

KErrNone if successful, otherwise one of the system-wide error codes.


CreateAutoCloseSubSession(RSessionBase &,TInt,const TIpcArgs &)

protected: IMPORT_C TInt CreateAutoCloseSubSession(RSessionBase &aSession, TInt aFunction, const TIpcArgs &aArgs);

Description

Creates a new sub-session within an existing session. The new sub-session takes ownership of the session so that when the sub-session is closed, the session is closed too. If the creation of the sub-session fails, the session is closed immediately. In other words, this method will always take ownership of the session, whether it succeeds or not and the caller should never need to close it.

Parameters

RSessionBase &aSession

The session to which this sub-session will belong.

TInt aFunction

The opcode specifying the requested service; the server should interpret this as a request to create a sub-session.

const TIpcArgs &aArgs

The arguments to be sent to the server as part of the sub-session create request. The fourth argument is not sent to the server, instead it is replaced with a descriptor reference to the 32bit value where the server should store the handle of the created sub-session.

Return value

TInt

KErrNone if successful, otherwise one of the other system-wide error codes.


CloseSubSession(TInt)

protected: IMPORT_C void CloseSubSession(TInt aFunction);

Description

Closes the sub-session.

Parameters

TInt aFunction

The opcode specifying the requested service; the server should interpret this as a request to close the sub-session.


Send(TInt,const TIpcArgs &)const

protected: inline TInt Send(TInt aFunction, const TIpcArgs &aArgs) const;

Description

Sends a blind message to the server - no reply is expected.

A set of message arguments is passed that can be used to specify client addresses, which the server can use to read from and write to the client address space.

Note that this function can fail if there are no available message-slots, either in the system wide pool (if this is being used), or in the session reserved pool (if this is being used). If the client request is synchronous, then always use the synchronous variant of RSubSessionBase::SendReceive(TInt,const TIpcArgs &,TRequestStatus &)const; this is guaranteed to reach the server.

Parameters

TInt aFunction

The opcode specifying the requested service.

const TIpcArgs &aArgs

The message arguments.

Return value

TInt

KErrNone if successful, otherwise one of the system-wide error codes.


SendReceive(TInt,const TIpcArgs &,TRequestStatus &)const

protected: inline void SendReceive(TInt aFunction, const TIpcArgs &aArgs, TRequestStatus &aStatus) const;

Description

Sends a message to the server and waits asynchronously for the reply.

An opcode specifies the service required. A set of message arguments is passed that can be used to specify client addresses, which the server can use to read from and write to the client address space.

Note that this function can fail if there are no available message-slots, either in the system wide pool (if this is being used), or in the session reserved pool (if this is being used). If the client request is synchronous, then always use the synchronous variant of RSubSessionBase::SendReceive(TInt,const TIpcArgs &,TRequestStatus &)const; this is guaranteed to reach the server.

Parameters

TInt aFunction

The opcode specifying the requested service.

const TIpcArgs &aArgs

The message arguments.

TRequestStatus &aStatus

A request status which indicates the completion status of the asynchronous request.


SendReceive(TInt,const TIpcArgs &)const

protected: inline TInt SendReceive(TInt aFunction, const TIpcArgs &aArgs) const;

Description

Sends a message to the server and waits synchronously for a reply.

An opcode specifies the service required. A set of message arguments is passed that can be used to specify client addresses, which the server can use to read from and write to the client address space.

Note that this function will only fail if the server itself fails or environmental errors occur in the server. All requests made using this function are guaranteed to reach the server. This means that all synchronous client requests (typically those that return void) should be routed through this synchronous variant of RSubSessionBase::SendReceive(TInt,const TIpcArgs &,TRequestStatus &)const.

Parameters

TInt aFunction

The opcode specifying the requested service.

const TIpcArgs &aArgs

The message arguments.

Return value

TInt

KErrNone if successful, otherwise one of the system-wide error codes.


Send(TInt)const

protected: inline TInt Send(TInt aFunction) const;

Description

Sends a blind message to the server - no reply is expected.

This variant sends no message arguments to the server.

Parameters

TInt aFunction

The opcode specifying the requested service.

Return value

TInt

KErrNone if successful, otherwise one of the system-wide error codes.


SendReceive(TInt,TRequestStatus &)const

protected: inline void SendReceive(TInt aFunction, TRequestStatus &aStatus) const;

Description

Sends a message to the server and waits asynchronously for the reply.

An opcode specifies the service required. This variant sends no message arguments to the server.

Parameters

TInt aFunction

The opcode specifying the requested service.

TRequestStatus &aStatus

A request status which indicates the completion status of the asynchronous request.


SendReceive(TInt)const

protected: inline TInt SendReceive(TInt aFunction) const;

Description

Sends a message to the server and waits synchronously for a reply.

An opcode specifies the service required. This variant sends no message arguments to the server.

Parameters

TInt aFunction

The opcode specifying the requested service.

Return value

TInt

KErrNone if successful, otherwise one of the system-wide error codes.