//+---------------------------------------------------------------------------
//    Microsoft (R) Windows Search Engine
//
//    Copyright (C) Microsoft Corporation, 2005.
//    All Rights Reserved
//
//    File:
//        gthrinline.idl
//
//    Contents:
//        Gatherer's internal interface for inline notifications
//
//    History:
//        10/05     mabarbis    Created
//
//----------------------------------------------------------------------------

[
    object,
    uuid(2E5C2EC6-4FF9-44B7-9869-6AF9A8D3FD67),
    pointer_default(unique),
    helpstring("Gatherer's Internal Inline Notification interface")
]
interface IGatherNotifyInlineInternal : IUnknown
{
    HRESULT RegisterInlineNotificationClient(
        [in]    ISearchNotifyInlineSite*    pClientSite,
        [out]   GUID*                       pGUIDCatalogResetSignature,
        [out]   GUID*                       pGUIDCheckPointSignature,
        [out]   DWORD*                      pdwLastCheckPointNumber,
        [out]   DWORD*                      pdwClientID );

    HRESULT OnDataChangeInline(
        [in]                            DWORD                           dwClientID,
        [in]                            DWORD                           dwNumberEntries,
        [in,  size_is(dwNumberEntries)] INLINE_NOTIFY_DATA_CHANGE_ENTRY rgDataChangeEntries[],
        [out, size_is(dwNumberEntries)] DWORD                           rgdwDocIDs[],
        [out, size_is(dwNumberEntries)] HRESULT                         rghrCompletionCodes[] );

    HRESULT SendItemIndexedStatusChange(
        [in]    DWORD                   dwClientID,
        [in]    SEARCH_INDEXING_PHASE   sipStatus,
        [in]    DWORD                   dwNumEntries,
        [in, size_is(dwNumEntries)] SEARCH_ITEM_INDEXING_STATUS rgItemStatusEntries[] );

    HRESULT ReleaseInlineNotificationClient( [in] DWORD dwClientID );
};

[
    object,
    uuid(2137B63B-BBB0-4bee-94B3-4691CCEF389A),
    pointer_default(unique),
    helpstring("Indexer plug-in stauts update interface")
]
interface IGatherInlineStatus : IUnknown
{
    HRESULT SendInlineStatusChange(
        [in]    DWORD                   dwClientID,
        [in]    SEARCH_INDEXING_PHASE   sipStatus,
        [in]    DWORD                   dwNumEntries,
        [in, size_is(dwNumEntries)] SEARCH_ITEM_INDEXING_STATUS rgItemStatusEntries[] );
};
