networkingtestandutils/exampleinternetutilities/INC/TRENG.H
changeset 0 af10295192d8
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/networkingtestandutils/exampleinternetutilities/INC/TRENG.H	Tue Jan 26 15:23:49 2010 +0200
@@ -0,0 +1,154 @@
+// Copyright (c) 2001-2009 Nokia Corporation and/or its subsidiary(-ies).
+// All rights reserved.
+// This component and the accompanying materials are made available
+// under the terms of "Eclipse Public License v1.0"
+// which accompanies this distribution, and is available
+// at the URL "http://www.eclipse.org/legal/epl-v10.html".
+//
+// Initial Contributors:
+// Nokia Corporation - initial contribution.
+//
+// Contributors:
+//
+// Description:
+// Started by MWT, February 1998
+// 
+//
+
+#if !defined (__TraceRtENG_H__)
+#define __TraceRtENG_H__
+
+#if !defined(__IN_SOCK_H__)
+#include <in_sock.h>
+#endif
+
+
+class MTraceRtNotificationHandler
+	{
+public:
+	virtual void Starting(const TNameRecord& aTo, TInt aTtl, TInt aDataLen)=0;
+	virtual void Probe(TInt aTtl) = 0;
+	virtual void Reply(TInt aNo, TInt aDelta, TUint aId) = 0;
+	virtual void FromHost(const TNameRecord& aHost) = 0;
+	virtual void Finished(TInt aError) =0;
+	};
+
+class TTraceRtOptions
+	{
+public:
+	IMPORT_C TTraceRtOptions();
+	TUint iMaxTtl;
+	TBool iResolveAddress;
+	TTimeIntervalMicroSeconds32 iWait;
+	TUint iTos;
+	THostName iDestname;
+	TInt iNrProbes;
+	TBool iPrompt;
+	};
+
+
+class CTraceRtTimer;
+class CTraceRtSender;
+class CTraceRtReceiver;
+class HTraceRtHeader;
+
+
+class CTraceRtEng : public CBase
+	{
+friend class CTraceRtTimer;
+friend class CTraceRtSender;
+friend class CTraceRtReceiver;
+
+public:
+	IMPORT_C static CTraceRtEng* NewL(MTraceRtNotificationHandler& aUi);
+	IMPORT_C ~CTraceRtEng();
+
+	IMPORT_C void SetPriorities(TInt aTimerPriority, TInt aSenderPriority, TInt aReceiverPriority);
+	IMPORT_C void Start(const TTraceRtOptions& aOptions);
+	IMPORT_C void Cancel();
+	IMPORT_C void CancelAndFinished();
+
+protected:
+	IMPORT_C void ConstructL(MTraceRtNotificationHandler& aUi);
+	IMPORT_C CTraceRtEng();
+
+private:
+	void TimerComplete();
+	void SendComplete();
+	void SendDoCancel();
+	void RecvComplete();
+	void RecvDoCancel();
+	void NextSend();
+	void ResolveReply();
+	void DoError(TInt aError);
+
+
+	enum TState { EStopped, ELookingUpHost, ESending, ELookingUpReply };
+
+	TState iState;
+	MTraceRtNotificationHandler* iUi;
+	CTraceRtTimer *iTimer;
+	CTraceRtSender *iSender;
+	CTraceRtReceiver *iReceiver;
+	TTraceRtOptions iOptions;
+	RSocketServ iSocketServ;
+	RSocket iIcmpSocket;
+	RHostResolver iResolver;
+	TNameEntry iNameEntry;
+	TInetAddr iSrcAddr;
+	TInetAddr iDstAddr;
+
+	HTraceRtHeader *iRecvData;
+	HTraceRtHeader *iSendData;
+
+	TInt iProbeNr;
+	TUint iTtl;
+	TBool iGotThere;
+	TInt iUnreachCount;
+	TTime iSendTime;
+	TUint iLastCode;
+
+	RConnection iConnect;
+	TBool iResolv;
+
+	TInt iSeq;
+	TInt iIdent;
+	};
+
+enum TTraceRtDefaultPriorites 
+	{
+	ETraceRtTimerPriority=10,
+	ETraceRtSenderPriority=20,
+	ETraceRtReceiverPriority=30,
+	};
+	
+// ICMP Type and Code values
+const TUint KTraceRtTypeEchoReply				= 0;
+const TUint KTraceRtCodeEcho					= 0;
+const TUint KTraceRtTypeEchoRequest				= 8;
+const TUint KTraceRtTypeUnreachable				= 3;
+const TUint	KTraceRtCodeUnreachNet				= 0;
+const TUint	KTraceRtCodeUnreachHost				= 1;
+const TUint	KTraceRtCodeUnreachProtocol			= 2;
+const TUint	KTraceRtCodeUnreachPort				= 3;
+const TUint	KTraceRtCodeUnreachNeedFrag			= 4;
+const TUint	KTraceRtCodeUnreachSrcRouteFail		= 5;
+const TUint	KTraceRtCodeUnreachNetUnknown		= 6;
+const TUint	KTraceRtCodeUnreachHostUnknown		= 7;
+const TUint	KTraceRtCodeUnreachSrcHostIsolated	= 8;	
+const TUint	KTraceRtCodeUnreachNetProhibited	= 9;
+const TUint	KTraceRtCodeUnreachHostProhibited	= 10;
+const TUint	KTraceRtCodeUnreachNetTOS			= 11;
+const TUint	KTraceRtCodeUnreachHostTOS			= 12;
+const TUint	KTraceRtCodeUnreachProhibited		= 13;
+const TUint	KTraceRtCodeUnreachPrecVolation		= 14;
+const TUint	KTraceRtCodeUnreachPrecCutoff		= 15;
+const TUint KTraceRtTypeTimeExceeded			= 11;
+const TUint	KTraceRtCodeExceedInTransit			= 0;
+const TUint	KTraceRtCodeExceedInReasm			= 1;
+const TUint KTraceRtCodeTimeout					= KMaxTUint;
+const TUint KTraceRtCodeTimedOutInTransit		= KMaxTUint-1;
+const TUint KTraceRtCodeEchoReply				= KMaxTUint-2;
+
+#endif
+