Advise

 (Available in 01 TS COM - TS_COM_ISink)

Purpose

Activate the sink.

Syntax

hResult:=oSomeISink:Advise( )

Description

Activate the sink. After calling this method with success events from the 'source'-interface are passed to the 'ISink' interface.

Returns

hResult

Example

SELF:_ISink:=TS_CreateInstanceStatic( #TS_ISink, NULL_OBJECT,  ; ...
...oAIUnknown, SELF:_InvokeHandler, SELF:IID ; ...
..., NIL )
TSTrace SetCreatedAt( SELF:_ISink )
DO CASE
CASE SELF:_ISink==NULL_OBJECT
   TSTrace Warning "SELF:_ISink:=TS_CreateInstanceStatic(#TS_ISink,NULL_OBJECT,oAIUnknown" ; ...
  ... +",SELF:_InvokeHandler,SELF:IID,NIL)==NULL_OBJECT"
   SELF:InvalidateObject( )
CASE SELF:_ISink:Advise( )
   Send( oOwner, #_RegisterDelegateISink, SELF )
   SELF:RegisterAxit( )
OTHERWISE
   TSTrace Warning "!SELF:_ISink:Advise()"
   SELF:_ISink:UnAdvise( )
   SELF:_ISink:Release( )
   SELF:_ISink:=NULL_OBJECT
   SELF:InvalidateObject( )
END

Source

METHOD Advise( ) AS LOGIC PASCAL CLASS TS_ISink
LOCAL oCOMGlobalData AS _TS_COMGlobalData
LOCAL dwCookie AS DWORD
LOCAL lRetVal AS LOGIC
   TSTrace Enter
   oCOMGlobalData:=_TS_ModuleGetCOMGlobalData( )
   #IFDEF TS_COMGLOBALDATA_CRITICALSECTION
      EnterCriticalSection( oCOMGlobalData:_COMGGeneralPurposeSection )
   #ENDIF
   IF SELF:IsValidObject
      DO CASE
      CASE LOGIC( _CAST, SELF:_Cookie )
         TSTrace Warning "LOGIC(_CAST,SELF:_Cookie)"
         lRetVal:=TRUE
      CASE SELF:_AISource==NULL_OBJECT
         TSTrace Warning "SELF:_AISource==NULL_OBJECT"
         lRetVal:=FALSE
      CASE SELF:_IID==NULL_PTR
         TSTrace Warning "SELF:_IID==NULL_PTR"
         lRetVal:=FALSE
      CASE _TS_SetInterfaceAdviseSink( SELF:_AISource, SELF:_IID ; ...
     ... , @dwCookie, SELF )
         IF LOGIC( _CAST, dwCookie )
            SELF:_Cookie:=dwCookie
            lRetVal:=TRUE
         ELSE
            TSTrace Warning "!LOGIC(_CAST,dwCookie)"
            lRetVal:=FALSE
         END
      OTHERWISE
         TSTrace Warning "!_TS_SetInterfaceAdviseSink(SELF:_AISource,SELF:_IID,@dwCookie" ; ...
        ... +",SELF)"
         lRetVal:=FALSE
      END
   ELSE
      TSTrace Warning "!SELF:IsValidObject"
      lRetVal:=FALSE
   END
   #IFDEF TS_COMGLOBALDATA_CRITICALSECTION
      LeaveCriticalSection( oCOMGlobalData:_COMGGeneralPurposeSection )
   #ENDIF
   TSTrace Leave
RETURN lRetVal