//+-----------------------------------------------
//
//	Microsoft Site Server v3.00
//  Copyright (C) 1997-1998 Microsoft Corporation.  All rights reserved.
//
//	File:	gthradminsdk.idl
//
//	Contents:	Defines Site Server Gatherer admin interfaces
//
//	Interfaces:
//		IServers
//		IServer
//		ISiteRestrictions
//		ISiteRestriction
//		ISitePaths
//		ISitePath
//		IExtensions
//		IExtension
//		IStartPages
//		IStartPage
//		IMappings
//		IMapping
//		IProtocols
//		IProtocol
//		IGatherLogs
//		IGatherLog
//
//+-----------------------------------------------

[
    object,
    uuid(0b63e31f-9ccc-11d0-bcdb-00805fccce04),
    dual,
    helpstring("Servers Timings collection"),
    public,
    pointer_default(unique)
]
interface IServers: IDispatch
{
    import "oaidl.idl";

    [propget] 
        HRESULT Count([out, retval] long* pCount);

    [propget, id(DISPID_VALUE)]
        HRESULT Item([in] BSTR bstrSite, 
                    [out, retval] VARIANT* pServerVar);

    [propget, restricted, id(DISPID_NEWENUM)]
        HRESULT _NewEnum([out, retval] IUnknown** pNewEnum);

    HRESULT Add([in] BSTR bstrSite, 
                    [out, retval] VARIANT *pServerVar);
    HRESULT Remove([in] BSTR bstrSite);

    HRESULT ChangeOrder([in] BSTR bstrSite, [in] VARIANT_BOOL fUp);
};

[
    object,
    uuid(0b63e320-9ccc-11d0-bcdb-00805fccce04),
    dual,
    public,
    helpstring("Server Timing interface"),
    pointer_default(unique)
]
interface IServer: IDispatch
{
    import "oaidl.idl";

    [propget] HRESULT Name([out, retval] BSTR *pbstrName);

    [propget] HRESULT HitInterval([out, retval] LONG *plInterval);

    [propput] HRESULT HitInterval([in] LONG lInterval);
};

[
	object,
	public,
	uuid(0b63e326-9ccc-11d0-bcdb-00805fccce04),
	dual,
	helpstring("Site Restricions Interface"),
	pointer_default(unique)
]
interface ISiteRestrictions: IDispatch
{
	import "oaidl.idl";

	[propget] 
		HRESULT Count([out, retval] long* pCount);

	[propget, restricted, id(DISPID_NEWENUM)]
		HRESULT _NewEnum([out, retval] IUnknown** pNewEnum);

	HRESULT Add([in] BSTR bstrName, [in] VARIANT_BOOL fIncluded, 
				[out, retval] VARIANT *pVarSiteRestriction);

	HRESULT Remove([in] BSTR bstrName);

	HRESULT ChangeOrder([in] BSTR bstrSite, [in] VARIANT_BOOL fUp);

    [propget, id(DISPID_VALUE)]
        HRESULT Item([in] BSTR bstrName, [out, retval] VARIANT* pSiteRestrictionVar);
};

[
	object,
	public,
	uuid(0b63e327-9ccc-11d0-bcdb-00805fccce04),
	dual,
	helpstring("Site Restriction Interface"),
	pointer_default(unique)
]
interface ISiteRestriction: IDispatch
{
	import "oaidl.idl";

	[propget] HRESULT Name([out, retval] BSTR *pbstrName);

	[propget] HRESULT Included([out, retval] VARIANT_BOOL *pfIncluded);
	[propput] HRESULT Included([in] VARIANT_BOOL fIncluded);

	/* AuthenticationType is on of AuthenticationTypes enumerator constants defined in gather.idl */

	[propget] HRESULT AccountName([out, retval] BSTR *pbstrAccountName);
	[propget] HRESULT AuthenticationType([out, retval] LONG *plAuthenticationType);
	HRESULT SetAccount([in] BSTR bstrAccount, [in] BSTR bstrPassword, [in] LONG lAuthenticationType);

	/* returns ISitePaths interface */
	[propget] HRESULT Paths([out, retval] VARIANT *pPathsVar);
};

[
	object,
	public,
	uuid(0b63e328-9ccc-11d0-bcdb-00805fccce04),
	dual,
	helpstring("Site Paths collection interface"),
	pointer_default(unique)
]
interface ISitePaths : IDispatch
{
	import "oaidl.idl";

	[propget] 
		HRESULT Count([out, retval] long* pCount);

	[propget, restricted, id(DISPID_NEWENUM)]
		HRESULT _NewEnum([out, retval] IUnknown** pNewEnum);

	HRESULT Add([in] BSTR bstrPath, [in] VARIANT_BOOL fIncluded,
				[out, retval] VARIANT *pVarSitePath);
	HRESULT Remove([in] BSTR bstrPath);

	HRESULT ChangeOrder([in] BSTR bstrPath, [in] VARIANT_BOOL fUp);

    [propget, id(DISPID_VALUE)]
        HRESULT Item([in] BSTR bstrName, [out, retval] VARIANT* pSitePathVar);
};

[
	object,
	public,
	uuid(0b63e329-9ccc-11d0-bcdb-00805fccce04),
	dual,
	helpstring("Site Path interface"),
	pointer_default(unique)
]
interface ISitePath: IDispatch
{
	import "oaidl.idl";

	[propget] HRESULT Path([out, retval] BSTR *pbstrPath);

	[propget] HRESULT Included([out, retval] VARIANT_BOOL *pfIncluded);
	[propput] HRESULT Included([in] VARIANT_BOOL fIncluded);

	[propget] HRESULT IncludeSubdirs([out, retval] VARIANT_BOOL *pfIncludeSubdirs);
	[propput] HRESULT IncludeSubdirs([in] VARIANT_BOOL fIncludeSubdirs);
};
	
[
	object,
	public,
	uuid(0b63e32a-9ccc-11d0-bcdb-00805fccce04),
	dual,
	helpstring("Extensions Interface"),
	pointer_default(unique)
]
interface IExtensions: IDispatch
{
	import "oaidl.idl";

	[propget] 
		HRESULT Count([out, retval] long* pCount);

	[propget, restricted, id(DISPID_NEWENUM)]
		HRESULT _NewEnum([out, retval] IUnknown** pNewEnum);

	HRESULT Add([in] BSTR bstrExtension, [out, retval] VARIANT *pVarExtension);
	HRESULT Remove([in] BSTR bstrExtension);

    [propget, id(DISPID_VALUE)]
        HRESULT Item([in] BSTR bstrExtension, [out, retval] VARIANT* pSitePathVar);

	[propget] HRESULT IncludedExtensions([out, retval] VARIANT_BOOL *pfIncludedExtensions);
	[propput] HRESULT IncludedExtensions([in] VARIANT_BOOL fIncludedExtensions);
};


[
	object,
	public,
	uuid(0b63e32b-9ccc-11d0-bcdb-00805fccce04),
	dual,
	helpstring("Extension Interface"),
	pointer_default(unique)
]
interface IExtension: IDispatch
{
	import "oaidl.idl";

	[propget] HRESULT Extension([out, retval] BSTR *pbstrExtension);
};

[
	object,
	public,
	uuid(0b63e32c-9ccc-11d0-bcdb-00805fccce04),
	dual,
	helpstring("Crawl Seeds Interface"),
	pointer_default(unique)
]
interface IStartPages: IDispatch
{
	import "oaidl.idl";

	[propget] 
		HRESULT Count([out, retval] long* pCount);

	[propget, id(DISPID_VALUE)]
		HRESULT Item([in] BSTR bstrURL, [out, retval] VARIANT* pStartPageVar);

	[propget, restricted, id(DISPID_NEWENUM)]
		HRESULT _NewEnum([out, retval] IUnknown** pNewEnum);

	HRESULT Add([in] BSTR bstrURL,
					[out, retval] VARIANT *pStartPageVar);
	HRESULT Remove([in] BSTR bstrURL);
};

[
	object,
	public,
	uuid(0b63e32d-9ccc-11d0-bcdb-00805fccce04),
	dual,
	helpstring("Crawl Seed Interface"),
	pointer_default(unique)
]
interface IStartPage: IDispatch
{
	import "oaidl.idl";

	[propget] HRESULT URL([out, retval] BSTR *pbstrURL);

	[propget] HRESULT HostDepth([out, retval] LONG *plHostDepth);
	[propput] HRESULT HostDepth([in] LONG lHostDepth);

	[propget] HRESULT EnumerationDepth([out, retval] LONG *plEnumerationDepth);
	[propput] HRESULT EnumerationDepth([in] LONG lEnumerationDepth);

	[propget] HRESULT FollowDirectories([out, retval] VARIANT_BOOL *pfFollowDirectories);
	[propput] HRESULT FollowDirectories([in] VARIANT_BOOL fFollowDirectories);
};


[
	object,
	public,
	uuid(0b63e32e-9ccc-11d0-bcdb-00805fccce04),
	dual,
	helpstring("Mappings Interface"),
	pointer_default(unique)
]
interface IMappings: IDispatch
{
	import "oaidl.idl";

	[propget] 
		HRESULT Count([out, retval] long* pCount);

	[propget, id(DISPID_VALUE)]
		HRESULT Item([in] BSTR bstrName, [out, retval] VARIANT* pMapping);

	[propget, restricted, id(DISPID_NEWENUM)]
		HRESULT _NewEnum([out, retval] IUnknown** pNewEnum);

	HRESULT Add([in] BSTR bstrFrom, [in] BSTR bstrTo, 
					[out, retval] VARIANT *pMappingVar);
	HRESULT Remove([in] BSTR bstrFrom);
};

[
	object,
	public,
	uuid(0b63e32f-9ccc-11d0-bcdb-00805fccce04),
	dual,
	helpstring("Mapping Interface"),
	pointer_default(unique)
]
interface IMapping: IDispatch
{
	import "oaidl.idl";

	[propget] HRESULT From([out, retval] BSTR *pbstrFrom);

	[propget] HRESULT To([out, retval] BSTR *pbstrTo);
};


[
	object,
	public,
	uuid(0b63e330-9ccc-11d0-bcdb-00805fccce04),
	dual,
	helpstring("Protocols interface"),
	pointer_default(unique)
]
interface IProtocols: IDispatch
{
	import "oaidl.idl";

	[propget] 
		HRESULT Count([out, retval] long* pCount);

	[propget, id(DISPID_VALUE)]
		HRESULT Item([in] BSTR bstrUrlName, [out, retval] VARIANT* pProtocol);

	[propget, restricted, id(DISPID_NEWENUM)]
		HRESULT _NewEnum([out, retval] IUnknown** pNewEnum);
};

[
	object,
	public,
	uuid(0b63e331-9ccc-11d0-bcdb-00805fccce04),
	dual,
	helpstring("Protocol Interface"),
	pointer_default(unique)
]
interface IProtocol: IDispatch
{
	import "oaidl.idl";

	[propget] HRESULT UrlName([out, retval] BSTR *pbstrUrlName);

	[propget] HRESULT ProgIdHandler([out, retval] BSTR *pbstrProgIdHandler);

	[propput] HRESULT Included([in] VARIANT_BOOL fIncluded);
	[propget] HRESULT Included([out, retval] VARIANT_BOOL *pfIncluded);
};

[
	object,
	public,
	uuid(0b63e372-9ccc-11d0-bcdb-00805fccce04),
	dual,
	helpstring("Gather Log Interface"),
	pointer_default(unique)
]
interface IGatherLog: IDispatch
{
	import "oaidl.idl";

	[propget,id(DISPID_VALUE)] HRESULT Name([out, retval] BSTR *pbsLogFileName);
	[propget] HRESULT Created([out, retval] DATE *pdtCreated);
	[propget] HRESULT Size([out, retval] double *pdSize);
	[propget] HRESULT Path([out, retval] BSTR *pbsLogFilePath);
};

[
	object,
	public,
	uuid(0b63e371-9ccc-11d0-bcdb-00805fccce04),
	dual,
	helpstring("Gather Logs Interface"),
	pointer_default(unique)
]
interface IGatherLogs: IDispatch
{
	import "oaidl.idl";

	[propget] 
		HRESULT Count([out, retval] long* pCount);

	/* Enumerates IGatherLog objects */
	[propget, restricted, id(DISPID_NEWENUM)]
		HRESULT _NewEnum([out, retval] IUnknown** pNewEnum);

    [propget, id(DISPID_VALUE)]
        HRESULT Item([in] BSTR bstrName, [out, retval] VARIANT* pLogVar);

	[propget] HRESULT MaxLogs([out, retval] LONG *plMaxLogs);
	[propput] HRESULT MaxLogs([in] LONG lMaxLogs);

	[propget] HRESULT CurrentLog([out, retval] VARIANT *pCurrentLogVar);
};	
