diff options
Diffstat (limited to 'mDNSResponder/mDNSMacOSX/BonjourTop/source/CollectBy.h')
-rw-r--r-- | mDNSResponder/mDNSMacOSX/BonjourTop/source/CollectBy.h | 155 |
1 files changed, 155 insertions, 0 deletions
diff --git a/mDNSResponder/mDNSMacOSX/BonjourTop/source/CollectBy.h b/mDNSResponder/mDNSMacOSX/BonjourTop/source/CollectBy.h new file mode 100644 index 00000000..80ff0d58 --- /dev/null +++ b/mDNSResponder/mDNSMacOSX/BonjourTop/source/CollectBy.h @@ -0,0 +1,155 @@ +// +// CollectBy.h +// TestTB +// +// Created by Terrin Eager on 3/17/13. +// +// + +#ifndef __TestTB__CollectBy__ +#define __TestTB__CollectBy__ + +#include <iostream> +#include "bjtypes.h" +#include "DNSFrame.h" +#include "bjstring.h" +#include "LLRBTree.h" + + +// Service request/Respond v4/v6 sameSubnet/DifferentSubnet + +enum BJ_COLLECTBY_TYPE +{ + CBT_NOT_SET, + CBT_SERVICE, + CBT_REQUEST_RESPONDS, + CBT_SAME_DIFF_SUBNET, + CBT_IP_ADDRESS_TYPE, + CBT_PACKET +}; + +class CollectByAbstract; +class Collection +{ +public: + Collection() {m_pHeaderCollectBy = NULL;m_pFirstCollectBy = NULL;}; + + void Init(BJ_COLLECTBY_TYPE collectByList[]); + void ProcessFrame(CDNSFrame* pFrame); + + void ExportCollection(BJString sFileName); + bool IsValid() { return (m_pFirstCollectBy != NULL);}; +private: + CollectByAbstract* Factory(BJ_COLLECTBY_TYPE type); + + BJ_COLLECTBY_TYPE m_CollectByList[20]; + CollectByAbstract* m_pHeaderCollectBy; + CollectByAbstract* m_pFirstCollectBy; + +}; + +class CollectByAbstract +{ +public: + CollectByAbstract() + { + pNext = NULL; + } + + virtual void Collect(CDNSFrame* pFrame,CollectByAbstract* nextCollectBy)=0; + virtual const char* GetTitle()=0; + virtual CollectByAbstract* Factory()=0; + virtual void Export(FILE* hFile,BJString sPrevColumns)=0; + + CollectByAbstract* pNext; +}; +///////////// +// Service +class CServiceNode : public CRBNode<BJString> +{ +public: + CServiceNode() {pNext = NULL;}; + CServiceNode(BJString* pKey){ m_Key = *pKey;}; + ~CServiceNode(){}; + inline virtual BJ_COMPARE Compare(BJString* pKey) { return m_Key.Compare(*pKey);}; + inline virtual void CopyNode(CRBNode* pSource) {pNext = dynamic_cast<CServiceNode*>(pSource)->pNext;} ; + inline virtual void Init(){}; + inline virtual void Clear() {}; + void Export(FILE* hFile,BJString sPrevColumns); + CollectByAbstract* pNext; + +}; + +class CServiceToCollectByMap : public CLLRBTree<BJString, CServiceNode> +{ +public: + + +}; + +class CollectByService:public CollectByAbstract +{ +public: + virtual void Collect(CDNSFrame* pFrame,CollectByAbstract* nextCollectBy); + virtual const char* GetTitle() {return "Service";}; + virtual CollectByAbstract* Factory(){ return new CollectByService();}; + virtual void Export(FILE* hFile,BJString sPrevColumns); +private: + CServiceToCollectByMap m_Cache; +}; + +class CollectByRequestResponds:public CollectByAbstract +{ +public: + virtual void Collect(CDNSFrame* pFrame,CollectByAbstract* nextCollectBy); + virtual const char* GetTitle() {return "Request/Responds";}; + virtual CollectByAbstract* Factory(){ return new CollectByRequestResponds();}; + virtual void Export(FILE* hFile,BJString sPrevColumns); + +private: + CollectByAbstract* pRequestNext; + CollectByAbstract* pRespondsNext; +}; + +class CollectByIPAddressType:public CollectByAbstract +{ +public: + virtual void Collect(CDNSFrame* pFrame,CollectByAbstract* nextCollectBy); + virtual const char* GetTitle() {return "V4/V6";}; + virtual CollectByAbstract* Factory(){ return new CollectByIPAddressType();}; + virtual void Export(FILE* hFile,BJString sPrevColumns); +private: + CollectByAbstract* pIPv4Next; + CollectByAbstract* pIPv6Next; +}; + +class CollectBySameSubnetDiffSubnet:public CollectByAbstract +{ +public: + virtual void Collect(CDNSFrame* pFrame,CollectByAbstract* nextCollectBy); + virtual const char* GetTitle() {return "SameSubnet/DiffSubnet";}; + virtual CollectByAbstract* Factory(){ return new CollectBySameSubnetDiffSubnet();}; + virtual void Export(FILE* hFile,BJString sPrevColumns); + + static bool bSameSubnet; +private: + CollectByAbstract* pSameSubnetNext; + CollectByAbstract* pDiffSubnetNext; +}; + +class CollectByPacketCount:public CollectByAbstract +{ + +public: + virtual void Collect(CDNSFrame* pFrame,CollectByAbstract* nextCollectBy); + virtual const char* GetTitle() {return "Packets";}; + virtual CollectByAbstract* Factory(){ return new CollectByPacketCount();}; + virtual void Export(FILE* hFile,BJString sPrevColumns); + + BJ_INT64 nFrameCount; + BJ_INT64 nLastFrameIndex; + static BJ_INT64 nFrameIndex; +}; + + +#endif /* defined(__TestTB__CollectBy__) */ |