// UDPServDoc.h : interface of the CUDPDoc class
//
/////////////////////////////////////////////////////////////////////////////
#define NUM_MATCHES 5	//gordon

#ifndef UDPSERVDOC_H
#define UDPSERVDOC_H

#include "UDPRecSet.h"
#include "CurrLoc.h"
#include "STFile.h"				// Added by ClassView
#include "LocationSet.h"		// DB Location

//gordon
typedef struct 
  {
  long lon;
  long lat;
  long address;
  char name[30];
  } street_type;

//LPCSTR LOOPBACK_IP="127.0.0.1";

// class CCurrLoc;		// Forward Declaration
class CServSock;    // Forward Declaration
//class CUDPRecSet;	// Forward Declaration

class CUDPDoc : public CDocument
{
protected: // create from serialization only
	BOOL m_bBackupEnabled;
	UINT m_nDocLatLongDev;
	int m_nDocLongMean;
	int m_nDocLatMean;
	BOOL SendTCPDatatoMap(CString vehid,CString date,CString time,CString longitude,CString latitude,CString status,CString velocity);
	int m_nDocLongCorr;
	int m_nDocLatCorr;

	int m_nGMTTime;			// Time difference from GMT

	BOOL m_bServerStarted;
	BOOL SendDataToClient(char* lpdata);
	BOOL StartClient();
	CTime m_tDocTime;
	time_t tDatevar;
	UINT m_nPortNum;		// Server Port number
	CUDPDoc();
	DECLARE_DYNCREATE(CUDPDoc)

// Attributes
	CServSock* m_pClientSock;  // Socket for re-sending Data to sub server
	CServSock* m_pTCPSock;	   // Socket for sending data to map program
	BOOL m_bRemoteIP;		// Using Remote IP?
	BOOL m_bRemoteMap;	// Is data redirection to a remote map enabled?
	UINT m_nRemotePort; // Port number for remote map
	CString m_sRemoteIP; // IP address for remote map.
public:
	BOOL m_bTCPMapUp;
	UINT m_nTCPMapPort;
	time_t GetTime() {return tDatevar;} // Inline Function, return time
	void SetTime() {time(&tDatevar);}    // Inline function, set time
//	BOOL m_bDocState;
	int m_nDocState;
	CString m_sDocTime;
	double m_dDocLat;
	double m_dDocLong;
	int m_nVel;
	CString m_stmpVehID;
	CCurrLoc m_pdbCurrData;  // Pointer to Current Location Table
	CUDPRecSet* m_pdbRecSet; // Pointer to Storage Database.
	CString m_sRmtStatus;
	CLocationSet m_DBLocation;	// DB Location

	BOOL UpdateDBCurrent();  // long nPos
	BOOL ParseDataIn(const char* lpData);
	void DBOpen();
	void DataToDB(char* lpDBData);
	CString* m_pszInData;
	void RxDataIn(int nError);
	CServSock* m_pSocket;
	void MessageOut(LPCTSTR lpszMessage);
	UINT GetPort();
	void SetPort(UINT port) {m_nPortNum=port;}  // Inline function
	void StartServ();

// Operations
public:

// Overrides
	// ClassWizard generated virtual function overrides
	//{{AFX_VIRTUAL(CUDPDoc)
	public:
	virtual BOOL OnNewDocument();
	virtual void Serialize(CArchive& ar);
	//}}AFX_VIRTUAL

// Implementation
public:
	virtual ~CUDPDoc();
#ifdef _DEBUG
	virtual void AssertValid() const;
	virtual void Dump(CDumpContext& dc) const;
#endif

protected:

// Generated message map functions
protected:
	BOOL m_bSaveReport;
	CString GpsToStreet(char* truck);
	char* strip_space(char *s);
	void SaveDataToFile(char * pData);
	CString m_strTokenClose;
	CString m_strTokenOpen;
	CString m_strGpsPath;
	BOOL m_bStreet;
	void SendToStreets(CString strVehicle, CString strLat, CString strLong, CString strLable, CString strTailgate);
	CSTFile m_cStFile;
	//{{AFX_MSG(CUDPDoc)
	afx_msg void OnFileStartUdp();
	afx_msg void OnViewSetup();
	afx_msg void OnUpdateViewSetup(CCmdUI* pCmdUI);
	afx_msg void OnUpdateFileStartUdp(CCmdUI* pCmdUI);
	afx_msg void OnViewStreetsetup();
	afx_msg void OnActionUpdaterequest();
	afx_msg void OnUpdateActionUpdaterequest(CCmdUI* pCmdUI);
	//}}AFX_MSG
	DECLARE_MESSAGE_MAP()
};

/////////////////////////////////////////////////////////////////////////////
#endif
