#ifndef __ASYNCHOSTRESOLVER_H__
#define __ASYNCHOSTRESOLVER_H__

class fzAsyncHostResolveEvent : public wxEvent
{
public:
	fzAsyncHostResolveEvent(int id = wxID_ANY);
	virtual wxEvent *Clone() const;
};

typedef void (wxEvtHandler::*fzAsyncHostResolveEventFunction)(fzAsyncHostResolveEvent&);

extern const wxEventType fzEVT_ASYNCHOSTRESOLVE;
#define EVT_FZ_ASYNCHOSTRESOLVE(id, fn) \
    DECLARE_EVENT_TABLE_ENTRY( \
        fzEVT_ASYNCHOSTRESOLVE, id, -1, \
        (wxObjectEventFunction)(wxEventFunction) wxStaticCastEvent( fzAsyncHostResolveEventFunction, &fn ), \
        (wxObject *) NULL \
    ),

class CControlSocket;
class CAsyncHostResolver : public wxThreadEx
{
public:
	CAsyncHostResolver(wxEvtHandler *pOwner, wxString hostname);
	virtual ~CAsyncHostResolver();

	wxIPV4address m_Address;
	
	wxEvtHandler *m_pOwner;

	void SetObsolete();

	bool Done() const;
	bool Obsolete() const;
	bool Successful() const;

protected:
	bool m_bDone;
	bool m_bObsolete;
	bool m_bSuccessful;
	void SendReply();
	virtual ExitCode Entry();

	wxString m_Hostname;
};

#endif


syntax highlighted by Code2HTML, v. 0.9.1