summaryrefslogtreecommitdiffstats
path: root/src/Bindings/LuaNameLookup.h
blob: e4cdb9f53c093287a3720308e918e9f9d0fb09e4 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46

// LuaNameLookup.h

// Declares the cLuaNameLookup class used as the cNetwork API callbacks for name and IP lookups from Lua





#pragma once

#include "../OSSupport/Network.h"
#include "PluginLua.h"





class cLuaNameLookup:
	public cNetwork::cResolveNameCallbacks
{
public:
	/** Creates a new instance of the lookup callbacks for the specified query,
	attached to the specified lua plugin and wrapping the callbacks that are in a table at the specified stack pos. */
	cLuaNameLookup(const AString & a_Query, cPluginLua & a_Plugin, int a_CallbacksTableStackPos);

protected:
	/** The plugin for which the query is created. */
	cPluginLua & m_Plugin;

	/** The Lua table that holds the callbacks to be invoked. */
	cLuaState::cRef m_Callbacks;

	/** The query used to start the lookup (either hostname or IP). */
	AString m_Query;


	// cNetwork::cResolveNameCallbacks overrides:
	virtual void OnNameResolved(const AString & a_Name, const AString & a_IP) override;
	virtual void OnError(int a_ErrorCode, const AString & a_ErrorMsg) override;
	virtual void OnFinished(void) override;
};