MSocketNotify Class Reference

class MSocketNotify

Abstract base class used by a CServProviderBase-derived object, through its iSocket member, to notify the socket server that various events have occurred.

The class provides several up-call member functions.

All up-calls on an MSocketNotify should be made in the context of the socket server's thread - i.e. the thread which called NewSAPL() on the protocol.

Since v5.0

Public Member Functions
voidBearer(const TDesC8 &)
voidCanClose(TDelete)
voidCanClose(const TDesC8 &, TDelete)
voidCanSend()
voidConnectComplete()
voidConnectComplete(const TDesC8 &)
voidConnectComplete(CServProviderBase &)
voidConnectComplete(CServProviderBase &, const TDesC8 &)
voidDisconnect(void)
voidDisconnect(TDesC8 &)
voidError(TInt, TUint)
voidIoctlComplete(TDesC8 *)
voidJoinedSubConnection()
voidLeftSubConnection()
voidNewData(TUint)
voidNoBearer(const TDesC8 &)
voidSubConnectionJoinFailed(TInt)
Public Member Enumerations
enumTDelete { EDelete, EDetach }
enumTOperationBitmasks {
EErrorSend = 0x0000001, EErrorRecv = 0x0000002, EErrorConnect = 0x0000004, EErrorClose = 0x00000008, EErrorIoctl = 0x00000010, EErrorFatal = 0x10000000, EErrorAllOperations = 0x7fffffff
}

Member Functions Documentation

Bearer(const TDesC8 &)

voidBearer(const TDesC8 &aConnectionInfo)[pure virtual]

Indicates the bearer available.

Parameters

const TDesC8 & aConnectionInfo

CanClose(TDelete)

voidCanClose(TDeleteaDelete = EDelete)[pure virtual]

Indicates that the SAP has finished closing down.

This up-call is the response to a Shutdown(). A connection-oriented protocol should call CanClose() when it has terminated communications with the remote host. Protocols can call CanClose() from within their Shutdown() code. After CanClose() has been called, an SAP may be deleted by the socket server.

Note:

The protocol must not access the CServProviderBase object after calling CanClose().

Parameters

TDelete aDelete = EDeleteDelete SAP.

CanClose(const TDesC8 &, TDelete)

voidCanClose(const TDesC8 &aDisconnectData,
TDeleteaDelete = EDelete
)[pure virtual]

Indicates that the SAP has finished closing down.

This up-call is the response to a Shutdown(). A connection-oriented protocol should call CanClose() when it has terminated communications with the remote host. Protocols can call CanClose() from within their Shutdown() code. After CanClose() has been called, an SAP may be deleted by the socket server.

Note:

The protocol must not access the CServProviderBase object after calling CanClose().

Parameters

const TDesC8 & aDisconnectDataAny user data carried on the disconnect frame.
TDelete aDelete = EDeleteDelete SAP.

CanSend()

voidCanSend()[pure virtual]

Indicates that new buffer space is available on a service.

ConnectComplete()

voidConnectComplete()[pure virtual]

Indicates that a connection attempt has completed successfully (for active opens).

There are four versions of this up-call: two are for active opens and two are for passive opens. Both active and passive versions support a variant carrying user connection data for protocols which support it.

Note:

A connection-less protocol should never call the ConnectComplete() up-calls.

A protocol should keep a count of sockets which have called ConnectComplete() but have not had Start() called. Sockets in this state have their Error() and NewData() calls deferred until Start() is called.

ConnectComplete(const TDesC8 &)

voidConnectComplete(const TDesC8 &aConnectData)[pure virtual]

Indicates that a connection attempt has completed successfully (for active opens).

There are four versions of this up-call: two are for active opens and two are for passive opens. Both active and passive versions support a variant carrying user connection data for protocols which support it.

Note:

A connection-less protocol should never call the ConnectComplete() up-calls.

A protocol should keep a count of sockets which have called ConnectComplete() but have not had Start() called. Sockets in this state have their Error() and NewData() calls deferred until Start() is called.

Parameters

const TDesC8 & aConnectDataConnect data (if supported).

ConnectComplete(CServProviderBase &)

voidConnectComplete(CServProviderBase &aSSP)[pure virtual]

Indicates that a connection attempt has completed successfully (for passive opens).

There are four versions of this up-call: two are for active opens and two are for passive opens. Both active and passive versions support a variant carrying user connection data for protocols which support it.

The versions of ConnectComplete() for passive opens carry a new SSP (socket service provider, or SAP) for the newly created socket. A new socket will then be linked up to the SSP and data transfer can take place. The original socket stays listening.

Note:

A connection-less protocol should never call the ConnectComplete() up-calls.

A protocol should keep a count of sockets which have called ConnectComplete() but have not had Start() called. Sockets in this state have their Error() and NewData() calls deferred until Start() is called.

Parameters

CServProviderBase & aSSPThe new SSP for passive opens.

ConnectComplete(CServProviderBase &, const TDesC8 &)

voidConnectComplete(CServProviderBase &aSSP,
const TDesC8 &aConnectData
)[pure virtual]

Indicates that a connection attempt has completed successfully (for passive opens).

There are four versions of this up-call: two are for active opens and two are for passive opens. Both active and passive versions support a variant carrying user connection data for protocols which support it.

The versions of ConnectComplete() for passive opens carry a new SSP (socket service provider, or SAP) for the newly created socket. A new socket will then be linked up to the SSP and data transfer can take place. The original socket stays listening.

Note:

A connection-less protocol should never call the ConnectComplete() up-calls.

A protocol should keep a count of sockets which have called ConnectComplete() but have not had Start() called. Sockets in this state have their Error() and NewData() calls deferred until Start() is called.

Parameters

CServProviderBase & aSSPThe new SSP for passive opens.
const TDesC8 & aConnectDataConnect data (if supported).

Disconnect(void)

voidDisconnect(void)[pure virtual]

Indicates that the other end of a connection has disconnected.

This is analogous to CanClose(), but in this case the other end initiated it.

Once the client has called Shutdown() it is illegal to call Disconnect(). Instead, CanClose() or Error(KErrDisconnected) should be called.

Parameters

void

Disconnect(TDesC8 &)

voidDisconnect(TDesC8 &aDisconnectData)[pure virtual]

Indicates that the other end of a connection has disconnected.

This is analogous to CanClose(), but in this case the other end initiated it.

Once the client has called Shutdown() it is illegal to call Disconnect(). Instead, CanClose() or Error(KErrDisconnected) should be called.

Parameters

TDesC8 & aDisconnectData

Error(TInt, TUint)

voidError(TIntanError,
TUintanOperationMask = EErrorAllOperations
)[pure virtual]

Tells the socket server that an error state has arisen within the protocol.

It should not be used to report programmatic errors, either in the protocol itself or the socket server (a panic should be used in these cases). When Error() is called on a connection-oriented socket, the socket is moved into a dead state which denies user access to it.

Parameters

TInt anErrorKErrNone or another of the system-wide error codes.
TUint anOperationMask = EErrorAllOperationsA bitmask of TOperationBitmasks values specifying which pending operations are affected by the Error up-call.

IoctlComplete(TDesC8 *)

voidIoctlComplete(TDesC8 *aBuf)[pure virtual]

Indicates that the currently pending Ioctl has completed.

The parameter aBuf is protocol defined - in fact it is defined by the specific Ioctl.

Parameters

TDesC8 * aBufAny data requested by the Ioctl operation.

JoinedSubConnection()

voidJoinedSubConnection()[inline, virtual]

Indicates that this socket is now completed an asynchronous join with a sub-connection. It now can use the properties of the sub-connection

LeftSubConnection()

voidLeftSubConnection()[inline, virtual]

Indicates that this socket has now completed an asynchronous leave from a sub-connection. The socket is now connected to the sub-connection anymore.

NewData(TUint)

voidNewData(TUintaCount)[pure virtual]

Indicates that new data is available on a service access point

For a stream-oriented protocol aCount should be a byte count; for datagram-oriented sockets aCount should be a datagram count.

Note:

aCount is the amount of new data, not the total amount of data waiting to be read.

Parameters

TUint aCountThe amount of new data. A value of KNewDataEndofData indicates that the socket is in a half-closed state and will receive no more data. Any subsequent reads will complete with KErrEof and a length of 0.

NoBearer(const TDesC8 &)

voidNoBearer(const TDesC8 &aConnectionParams)[pure virtual]

Indicates that there are no bearer available

Parameters

const TDesC8 & aConnectionParams

SubConnectionJoinFailed(TInt)

voidSubConnectionJoinFailed(TInt)[inline, virtual]

Indicates that this socket was not able to complete an asynchronous join with a sub-connection. The socket is still joined, but cannot use the properties of the sub-connection

Parameters

TInt

Member Enumerations Documentation

Enum TDelete

Delete and detach flags.

Enumerators

EDelete

Delete SAP

EDetach

Don't delete SAP

Enum TOperationBitmasks

Error codes.

Enumerators

EErrorSend = 0x0000001

An error has occurred which affects Send() operations

EErrorRecv = 0x0000002

An error has occurred which affects Receive() operations.

EErrorConnect = 0x0000004

An error has occurred which affects Connect() operations

EErrorClose = 0x00000008

An error has occurred which affects Close() operations

EErrorIoctl = 0x00000010

An error has occurred which affects Ioctl() operations

EErrorFatal = 0x10000000

A fatal error has occurred

EErrorAllOperations = 0x7fffffff

An error has occurred which affects all operations