/*++

Copyright (c) 1995  Microsoft Corporation

Module Name:

	net\routing\ipx\sap\asresmgr.h

Abstract:

	Header file asyncronous result reporting 

Author:

	Vadim Eydelman  05-15-1995

Revision History:

--*/
#ifndef _SAP_ASRESMGR_
#define _SAP_ASRESMGR_

	// Param block used to enqueue asyncronous result message
typedef struct _AR_PARAM_BLOCK {
		LIST_ENTRY					link;	// Link in message queue
		ROUTING_PROTOCOL_EVENTS		event;	// What event is this report for
		MESSAGE						message;// Content of message
		VOID						(* freeRsltCB)(
										struct _AR_PARAM_BLOCK *);
											// Call back routine to be
											// invoked when message is retreived
		} AR_PARAM_BLOCK, *PAR_PARAM_BLOCK;


/*++
*******************************************************************
		C r e a t e R e s u l t Q u e u e

Routine Description:
	Allocates resources for result queue

Arguments:
	NotificationEvent - event to be signalled when queue is not empty

Return Value:
	NO_ERROR - resources were allocated successfully
	other - reason of failure (windows error code)

*******************************************************************
--*/
DWORD
CreateResultQueue (
	IN HANDLE		NotificationEvent
	);

/*++
*******************************************************************
		D e l e t e R e s u l t Q u e u e

Routine Description:
	Dispose of resources allocated for result queue

Arguments:
	None
Return Value:
	None

*******************************************************************
--*/
VOID
DeleteResultQueue (
	void
	);

/*++
*******************************************************************
		E n q u e u e R e s u l t
Routine Description:
	Enqueues message in result queue
Arguments:
	rslt - result param block with enqueued message
Return Value:
	None

*******************************************************************
--*/
VOID
EnqueueResult (
	PAR_PARAM_BLOCK		rslt
	);

/*++
*******************************************************************
		S a p G e t E v e n t R e s u l t
Routine Description:
	Gets first message form result queue
Arguments:
	Event - buffer to store event for which this message is intended
	Message - buffer to store message itself
Return Value:
	NO_ERROR - message was dequeued
	ERROR_NO_MORE_ITEMS - no more messages in the queue
*******************************************************************
--*/
DWORD
SapGetEventResult (
	OUT ROUTING_PROTOCOL_EVENTS		*Event,
	OUT	MESSAGE	 					*Message OPTIONAL
	);
#endif