blob: 0d5750d8a6e3026a0b22b6c6241f83da8c9ba726 [file] [log] [blame]
/*
* DO NOT EDIT. THIS FILE IS GENERATED FROM e:/builds/tinderbox/XR-Trunk/WINNT_5.2_Depend/mozilla/xpcom/threads/nsIThreadInternal.idl
*/
#ifndef __gen_nsIThreadInternal_h__
#define __gen_nsIThreadInternal_h__
#ifndef __gen_nsIThread_h__
#include "nsIThread.h"
#endif
/* For IDL files that don't want to include root IDL files. */
#ifndef NS_NO_VTABLE
#define NS_NO_VTABLE
#endif
class nsIThreadObserver; /* forward declaration */
class nsIThreadEventFilter; /* forward declaration */
/* starting interface: nsIThreadInternal */
#define NS_ITHREADINTERNAL_IID_STR "f89b5063-b06d-42f8-bf23-4dfcf2d80d6a"
#define NS_ITHREADINTERNAL_IID \
{0xf89b5063, 0xb06d, 0x42f8, \
{ 0xbf, 0x23, 0x4d, 0xfc, 0xf2, 0xd8, 0x0d, 0x6a }}
/**
* The XPCOM thread object implements this interface, which allows a consumer
* to observe dispatch activity on the thread.
*/
class NS_NO_VTABLE NS_SCRIPTABLE nsIThreadInternal : public nsIThread {
public:
NS_DECLARE_STATIC_IID_ACCESSOR(NS_ITHREADINTERNAL_IID)
/**
* Get/set the current thread observer (may be null). This attribute may be
* read from any thread, but must only be set on the thread corresponding to
* this thread object.
*/
/* attribute nsIThreadObserver observer; */
NS_SCRIPTABLE NS_IMETHOD GetObserver(nsIThreadObserver * *aObserver) = 0;
NS_SCRIPTABLE NS_IMETHOD SetObserver(nsIThreadObserver * aObserver) = 0;
/**
* This method causes any events currently enqueued on the thread to be
* suppressed until PopEventQueue is called. Additionally, any new events
* dispatched to the thread will only be processed if they are accepted by
* the given filter. If the filter is null, then new events are accepted.
* Calls to PushEventQueue may be nested and must each be paired with a call
* to PopEventQueue in order to restore the original state of the thread.
*
* @param filter
* The thread event filter to apply to dispatched events, or null to accept
* all dispatched events.
*/
/* void pushEventQueue (in nsIThreadEventFilter filter); */
NS_SCRIPTABLE NS_IMETHOD PushEventQueue(nsIThreadEventFilter *filter) = 0;
/**
* Revert a call to PushEventQueue. When an event queue is popped, any
* events remaining in the queue are appended to the elder queue.
*/
/* void popEventQueue (); */
NS_SCRIPTABLE NS_IMETHOD PopEventQueue(void) = 0;
};
NS_DEFINE_STATIC_IID_ACCESSOR(nsIThreadInternal, NS_ITHREADINTERNAL_IID)
/* Use this macro when declaring classes that implement this interface. */
#define NS_DECL_NSITHREADINTERNAL \
NS_SCRIPTABLE NS_IMETHOD GetObserver(nsIThreadObserver * *aObserver); \
NS_SCRIPTABLE NS_IMETHOD SetObserver(nsIThreadObserver * aObserver); \
NS_SCRIPTABLE NS_IMETHOD PushEventQueue(nsIThreadEventFilter *filter); \
NS_SCRIPTABLE NS_IMETHOD PopEventQueue(void);
/* Use this macro to declare functions that forward the behavior of this interface to another object. */
#define NS_FORWARD_NSITHREADINTERNAL(_to) \
NS_SCRIPTABLE NS_IMETHOD GetObserver(nsIThreadObserver * *aObserver) { return _to GetObserver(aObserver); } \
NS_SCRIPTABLE NS_IMETHOD SetObserver(nsIThreadObserver * aObserver) { return _to SetObserver(aObserver); } \
NS_SCRIPTABLE NS_IMETHOD PushEventQueue(nsIThreadEventFilter *filter) { return _to PushEventQueue(filter); } \
NS_SCRIPTABLE NS_IMETHOD PopEventQueue(void) { return _to PopEventQueue(); }
/* Use this macro to declare functions that forward the behavior of this interface to another object in a safe way. */
#define NS_FORWARD_SAFE_NSITHREADINTERNAL(_to) \
NS_SCRIPTABLE NS_IMETHOD GetObserver(nsIThreadObserver * *aObserver) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetObserver(aObserver); } \
NS_SCRIPTABLE NS_IMETHOD SetObserver(nsIThreadObserver * aObserver) { return !_to ? NS_ERROR_NULL_POINTER : _to->SetObserver(aObserver); } \
NS_SCRIPTABLE NS_IMETHOD PushEventQueue(nsIThreadEventFilter *filter) { return !_to ? NS_ERROR_NULL_POINTER : _to->PushEventQueue(filter); } \
NS_SCRIPTABLE NS_IMETHOD PopEventQueue(void) { return !_to ? NS_ERROR_NULL_POINTER : _to->PopEventQueue(); }
#if 0
/* Use the code below as a template for the implementation class for this interface. */
/* Header file */
class nsThreadInternal : public nsIThreadInternal
{
public:
NS_DECL_ISUPPORTS
NS_DECL_NSITHREADINTERNAL
nsThreadInternal();
private:
~nsThreadInternal();
protected:
/* additional members */
};
/* Implementation file */
NS_IMPL_ISUPPORTS1(nsThreadInternal, nsIThreadInternal)
nsThreadInternal::nsThreadInternal()
{
/* member initializers and constructor code */
}
nsThreadInternal::~nsThreadInternal()
{
/* destructor code */
}
/* attribute nsIThreadObserver observer; */
NS_IMETHODIMP nsThreadInternal::GetObserver(nsIThreadObserver * *aObserver)
{
return NS_ERROR_NOT_IMPLEMENTED;
}
NS_IMETHODIMP nsThreadInternal::SetObserver(nsIThreadObserver * aObserver)
{
return NS_ERROR_NOT_IMPLEMENTED;
}
/* void pushEventQueue (in nsIThreadEventFilter filter); */
NS_IMETHODIMP nsThreadInternal::PushEventQueue(nsIThreadEventFilter *filter)
{
return NS_ERROR_NOT_IMPLEMENTED;
}
/* void popEventQueue (); */
NS_IMETHODIMP nsThreadInternal::PopEventQueue()
{
return NS_ERROR_NOT_IMPLEMENTED;
}
/* End of implementation class template. */
#endif
/* starting interface: nsIThreadObserver */
#define NS_ITHREADOBSERVER_IID_STR "81d0b509-f198-4417-8020-08eb4271491f"
#define NS_ITHREADOBSERVER_IID \
{0x81d0b509, 0xf198, 0x4417, \
{ 0x80, 0x20, 0x08, 0xeb, 0x42, 0x71, 0x49, 0x1f }}
class NS_NO_VTABLE NS_SCRIPTABLE nsIThreadObserver : public nsISupports {
public:
NS_DECLARE_STATIC_IID_ACCESSOR(NS_ITHREADOBSERVER_IID)
/**
* This interface provides the observer with hooks to implement a layered
* event queue. For example, it is possible to overlay processing events
* for a GUI toolkit on top of the events for a thread:
*
* var NativeQueue;
* Observer = {
* onDispatchedEvent(thread) {
* NativeQueue.signal();
* }
* onProcessNextEvent(thread, mayWait, recursionDepth) {
* if (NativeQueue.hasNextEvent())
* NativeQueue.processNextEvent();
* while (mayWait && !thread.hasPendingEvent()) {
* NativeQueue.wait();
* NativeQueue.processNextEvent();
* }
* }
* };
*
* NOTE: The implementation of this interface must be threadsafe.
*
* NOTE: It is valid to change the thread's observer during a call to an
* observer method.
*/
/**
* This method is called after an event has been dispatched to the thread.
* This method may be called from any thread.
*
* @param thread
* The thread where the event is being dispatched.
*/
/* void onDispatchedEvent (in nsIThreadInternal thread); */
NS_SCRIPTABLE NS_IMETHOD OnDispatchedEvent(nsIThreadInternal *thread) = 0;
/**
* This method is called (from nsIThread::ProcessNextEvent) before an event
* is processed. This method is only called on the target thread.
*
* @param thread
* The thread being asked to process another event.
* @param mayWait
* Indicates whether or not the method is allowed to block the calling
* thread. For example, this parameter is false during thread shutdown.
* @param recursionDepth
* Indicates the number of calls to ProcessNextEvent on the call stack in
* addition to the current call.
*/
/* void onProcessNextEvent (in nsIThreadInternal thread, in boolean mayWait, in unsigned long recursionDepth); */
NS_SCRIPTABLE NS_IMETHOD OnProcessNextEvent(nsIThreadInternal *thread, PRBool mayWait, PRUint32 recursionDepth) = 0;
/**
* This method is called (from nsIThread::ProcessNextEvent) after an event
* is processed. This method is only called on the target thread.
*
* @param thread
* The thread that processed another event.
* @param recursionDepth
* Indicates the number of calls to ProcessNextEvent on the call stack in
* addition to the current call.
*/
/* void afterProcessNextEvent (in nsIThreadInternal thread, in unsigned long recursionDepth); */
NS_SCRIPTABLE NS_IMETHOD AfterProcessNextEvent(nsIThreadInternal *thread, PRUint32 recursionDepth) = 0;
};
NS_DEFINE_STATIC_IID_ACCESSOR(nsIThreadObserver, NS_ITHREADOBSERVER_IID)
/* Use this macro when declaring classes that implement this interface. */
#define NS_DECL_NSITHREADOBSERVER \
NS_SCRIPTABLE NS_IMETHOD OnDispatchedEvent(nsIThreadInternal *thread); \
NS_SCRIPTABLE NS_IMETHOD OnProcessNextEvent(nsIThreadInternal *thread, PRBool mayWait, PRUint32 recursionDepth); \
NS_SCRIPTABLE NS_IMETHOD AfterProcessNextEvent(nsIThreadInternal *thread, PRUint32 recursionDepth);
/* Use this macro to declare functions that forward the behavior of this interface to another object. */
#define NS_FORWARD_NSITHREADOBSERVER(_to) \
NS_SCRIPTABLE NS_IMETHOD OnDispatchedEvent(nsIThreadInternal *thread) { return _to OnDispatchedEvent(thread); } \
NS_SCRIPTABLE NS_IMETHOD OnProcessNextEvent(nsIThreadInternal *thread, PRBool mayWait, PRUint32 recursionDepth) { return _to OnProcessNextEvent(thread, mayWait, recursionDepth); } \
NS_SCRIPTABLE NS_IMETHOD AfterProcessNextEvent(nsIThreadInternal *thread, PRUint32 recursionDepth) { return _to AfterProcessNextEvent(thread, recursionDepth); }
/* Use this macro to declare functions that forward the behavior of this interface to another object in a safe way. */
#define NS_FORWARD_SAFE_NSITHREADOBSERVER(_to) \
NS_SCRIPTABLE NS_IMETHOD OnDispatchedEvent(nsIThreadInternal *thread) { return !_to ? NS_ERROR_NULL_POINTER : _to->OnDispatchedEvent(thread); } \
NS_SCRIPTABLE NS_IMETHOD OnProcessNextEvent(nsIThreadInternal *thread, PRBool mayWait, PRUint32 recursionDepth) { return !_to ? NS_ERROR_NULL_POINTER : _to->OnProcessNextEvent(thread, mayWait, recursionDepth); } \
NS_SCRIPTABLE NS_IMETHOD AfterProcessNextEvent(nsIThreadInternal *thread, PRUint32 recursionDepth) { return !_to ? NS_ERROR_NULL_POINTER : _to->AfterProcessNextEvent(thread, recursionDepth); }
#if 0
/* Use the code below as a template for the implementation class for this interface. */
/* Header file */
class nsThreadObserver : public nsIThreadObserver
{
public:
NS_DECL_ISUPPORTS
NS_DECL_NSITHREADOBSERVER
nsThreadObserver();
private:
~nsThreadObserver();
protected:
/* additional members */
};
/* Implementation file */
NS_IMPL_ISUPPORTS1(nsThreadObserver, nsIThreadObserver)
nsThreadObserver::nsThreadObserver()
{
/* member initializers and constructor code */
}
nsThreadObserver::~nsThreadObserver()
{
/* destructor code */
}
/* void onDispatchedEvent (in nsIThreadInternal thread); */
NS_IMETHODIMP nsThreadObserver::OnDispatchedEvent(nsIThreadInternal *thread)
{
return NS_ERROR_NOT_IMPLEMENTED;
}
/* void onProcessNextEvent (in nsIThreadInternal thread, in boolean mayWait, in unsigned long recursionDepth); */
NS_IMETHODIMP nsThreadObserver::OnProcessNextEvent(nsIThreadInternal *thread, PRBool mayWait, PRUint32 recursionDepth)
{
return NS_ERROR_NOT_IMPLEMENTED;
}
/* void afterProcessNextEvent (in nsIThreadInternal thread, in unsigned long recursionDepth); */
NS_IMETHODIMP nsThreadObserver::AfterProcessNextEvent(nsIThreadInternal *thread, PRUint32 recursionDepth)
{
return NS_ERROR_NOT_IMPLEMENTED;
}
/* End of implementation class template. */
#endif
/* starting interface: nsIThreadEventFilter */
#define NS_ITHREADEVENTFILTER_IID_STR "a0605c0b-17f5-4681-b8cd-a1cd75d42559"
#define NS_ITHREADEVENTFILTER_IID \
{0xa0605c0b, 0x17f5, 0x4681, \
{ 0xb8, 0xcd, 0xa1, 0xcd, 0x75, 0xd4, 0x25, 0x59 }}
class NS_NO_VTABLE NS_SCRIPTABLE nsIThreadEventFilter : public nsISupports {
public:
NS_DECLARE_STATIC_IID_ACCESSOR(NS_ITHREADEVENTFILTER_IID)
/**
* Interface passed to the nsIThreadInternal::PushEventQueue method.
*/
/**
* This method is called to determine whether or not an event may be accepted
* by a "nested" event queue (see nsIThreadInternal::PushEventQueue).
*
* @param event
* The event being dispatched.
*
* WARNING: This method must not make any calls on the thread object.
*/
/* [notxpcom] boolean acceptEvent (in nsIRunnable event); */
NS_IMETHOD_(PRBool) AcceptEvent(nsIRunnable *event) = 0;
};
NS_DEFINE_STATIC_IID_ACCESSOR(nsIThreadEventFilter, NS_ITHREADEVENTFILTER_IID)
/* Use this macro when declaring classes that implement this interface. */
#define NS_DECL_NSITHREADEVENTFILTER \
NS_IMETHOD_(PRBool) AcceptEvent(nsIRunnable *event);
/* Use this macro to declare functions that forward the behavior of this interface to another object. */
#define NS_FORWARD_NSITHREADEVENTFILTER(_to) \
NS_IMETHOD_(PRBool) AcceptEvent(nsIRunnable *event) { return _to AcceptEvent(event); }
/* Use this macro to declare functions that forward the behavior of this interface to another object in a safe way. */
#define NS_FORWARD_SAFE_NSITHREADEVENTFILTER(_to) \
NS_IMETHOD_(PRBool) AcceptEvent(nsIRunnable *event) { return !_to ? NS_ERROR_NULL_POINTER : _to->AcceptEvent(event); }
#if 0
/* Use the code below as a template for the implementation class for this interface. */
/* Header file */
class nsThreadEventFilter : public nsIThreadEventFilter
{
public:
NS_DECL_ISUPPORTS
NS_DECL_NSITHREADEVENTFILTER
nsThreadEventFilter();
private:
~nsThreadEventFilter();
protected:
/* additional members */
};
/* Implementation file */
NS_IMPL_ISUPPORTS1(nsThreadEventFilter, nsIThreadEventFilter)
nsThreadEventFilter::nsThreadEventFilter()
{
/* member initializers and constructor code */
}
nsThreadEventFilter::~nsThreadEventFilter()
{
/* destructor code */
}
/* [notxpcom] boolean acceptEvent (in nsIRunnable event); */
NS_IMETHODIMP_(PRBool) nsThreadEventFilter::AcceptEvent(nsIRunnable *event)
{
return NS_ERROR_NOT_IMPLEMENTED;
}
/* End of implementation class template. */
#endif
#endif /* __gen_nsIThreadInternal_h__ */