summaryrefslogtreecommitdiff
path: root/ping_protocol/common.h
blob: 0cf5f6029cf7aae270835f5eddae78f8ac4bdbd1 (plain)
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
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
#ifndef _COMMON_H
#define _COMMON_H

#define MAX_HISTORY		(1440)		// 12 hrs at 30 sec intervals

#define PROTO	"PING"

#define DEFAULT_PING_PERIOD				30
#define DEFAULT_PING_TIMEOUT			2
#define DEFAULT_SHOW_POPUP				false
#define DEFAULT_SHOW_POPUP2				false
#define DEFAULT_BLOCK_REPS				true
#define DEFAULT_LOGGING_ENABLED			false
#define DEFAULT_LOG_FILENAME			"ping_log.txt"
#define DEFAULT_NO_TEST_STATUS			true
#define DEFAULT_HIDE_PROTOCOL			false
#define DEFAULT_USE_STATUS_MESSAGE		false


#define MAX_PINGADDRESS_STRING_LENGTH	256

#include <stdio.h>

#include "../../include/newpluginapi.h"
#include "../../include/statusmodes.h"
#include "../../include/m_options.h"
#include "../../include/m_langpack.h"
#include "../../include/m_popup.h"
#include "../../include/m_system.h"
#include "../../include/m_skin.h"
#include "../../include/m_netlib.h"
#include "../../include/m_database.h"
#include "../../include/m_protocols.h"
#include "../../include/m_protomod.h"
#include "../../include/m_protosvc.h"
#include "../../include/m_ignore.h"
#include "../../include/m_clist.h"
#include "../../include/m_clui.h"
#include "../../include/m_utils.h"

#include "../updater/m_updater.h"

typedef struct {
	int ping_period, ping_timeout;
	bool show_popup, show_popup2, block_reps, logging;
	char log_filename[MAX_PATH];
	WORD rstatus, nrstatus, tstatus, off_status;
	bool no_test_status;
	bool hide_proto;
	int retries;
	bool use_status_msg;
} PingOptions;

#include <vector>
// deque of pairs - round trip time and timestamp
typedef std::vector<std::pair<short, DWORD> > HistoryList;

typedef struct PINGADDRESS_tag {
	
	/*
	PINGADDRESS_tag() {
		pszName[0] = 0;
		pszLabel[0] = 0;
		pszProto[0] = 0;
		pszCommand[0] = 0;
		pszParams[0] = 0;
	}

	PINGADDRESS_tag(const PINGADDRESS_tag &src) {
	}
	*/
	const PINGADDRESS_tag operator=(const PINGADDRESS_tag &src) {
		cbSize = src.cbSize;
		hContact = src.hContact;
		strcpy(pszName, src.pszName);
		strcpy(pszLabel, src.pszLabel);
		responding = src.responding;
		status = src.status;
		round_trip_time = src.round_trip_time;
		miss_count = src.miss_count;
		port = src.port;
		strcpy(pszProto, src.pszProto);
		strcpy(pszCommand, src.pszCommand);
		strcpy(pszParams, src.pszParams);
		get_status = src.get_status;
		set_status = src.set_status;
		if(src.history.size())
			history = src.history;
		else
			history.clear();
		index = src.index;
		strcpy(pszCListGroup, src.pszCListGroup);

		return *this;
	}

	int cbSize;											//size in bytes of this structure
	HANDLE hContact;
	char pszName[MAX_PINGADDRESS_STRING_LENGTH];		//IP address or domain name
	char pszLabel[MAX_PINGADDRESS_STRING_LENGTH];
	bool responding;
	int status;
	short round_trip_time;
	int miss_count;
	int port; // -1 for ICMP, non-zero for TCP
	char pszProto[MAX_PINGADDRESS_STRING_LENGTH];
	char pszCommand[MAX_PATH];
	char pszParams[MAX_PATH];
	unsigned int get_status;		// on success, if status equals this
	unsigned int set_status;	// set it to this
	HistoryList history;
	int index;
	char pszCListGroup[MAX_PINGADDRESS_STRING_LENGTH];
} PINGADDRESS;

extern HANDLE hNetlibUser;
extern HINSTANCE hInst;

extern int previousMode;
extern int mcStatus;

#endif