source: trunk/ETSI-Testsuites/ETSI_auto_IOT/adapter/src/LowerTestAdapter/LowerTestAdapter.h @ 27

Last change on this file since 27 was 22, checked in by rings, 14 years ago
  • Property svn:executable set to *
File size: 4.4 KB
Line 
1#ifndef LowerTestAdapter_h
2#define LowerTestAdapter_h
3
4#include <boost/algorithm/string.hpp>
5#include <boost/shared_ptr.hpp>
6
7#include "Helper/Singleton.h"
8#include "Helper/Socket.h"
9#include "Helper/GeneralConfigurationParams.h"
10#include "Helper/Exceptions.h"
11#include "Ports/AdapterConfigPort.h"
12#include "Ports/DataPort.h"
13#include "Messages/TrafficCaptureMessage.h"
14#include "Dispatcher/Filter.h"
15
16using namespace t3devlib;
17
18class LowerTestAdapter : public Singleton<LowerTestAdapter>
19{
20 private:
21  //! Singleton pattern implementation.
22  friend class Singleton<LowerTestAdapter>;
23 
24  //! LowerTestAdapter.
25  /*! Default ctor. Shall be declared in private part due to Singleton pattern implementation.
26   */
27  LowerTestAdapter();
28  void SendMessage(TrafficCaptureMessage * pMsg);
29
30 public:
31  ~LowerTestAdapter();
32  /** Register Data port to Lower Test Adapter
33   * @param pPort: Pointer to Monitor port
34   */
35  void RegisterDataPort(DataPort *pPort);
36
37  /** Register AdapterConfigPort port to Lower Test Adapter
38   * @param pPort: Pointer to Adapter port
39   */
40  void RegisterAdapterConfigPort(AdapterConfigPort *pPort);
41
42  /** Register a filter for a component
43   * @param pComponent: Pointer to a ComponentId for which the filter is defined
44   * @param filter: Filter details
45   */
46  void RegisterFilter(const ComponentId *pComponent, const FilterSet & filter);
47
48  //! ConnectToCaptureServer
49  /*! Configure and connect to the TrafficCapture process
50   * @param sServerAddress: IP address to the TrafficCapture process (it acts as a sever)
51   * @param iServerPort: Port number
52   * @param filter: Global traffic capture filtering
53   * @param ifaces: Netwotrk interfaces to monitor
54   * @param mode: Traffic capture mode: on-line / off-line
55   * @param record: Indicate if the TrafficCapture process should record the traffic
56   * @param fileToPlay: In offline mode, this is the Pcap file name to play. It should be set to an empty string in real-line mode.
57   */
58  void ConnectToCaptureServer(boost::shared_ptr<GeneralConfigurationParams> configParams) throw (LowerTestAdapterException);
59  //void ConnectToCaptureServer(const string& sServerAddress, const int iServerPort, const string& filter, const string& ifaces, unsigned char mode, unsigned char record, const string fileToPlay);
60
61  //! ! StartCapture
62  /*! Start the traffic capture
63    */
64  void StartCapture();
65
66  //! StopCapture
67  /*! Stop the traffic capture
68    */
69  void StopCapture();
70 
71  //! EnqueueMessage
72  /*! Enqueues captured data to the component data port
73   * @param pComp: pointer to the target component
74   * @param pData: pointer to a buffer containing captured data
75   * @param nDataLen: length of captured data (in bytes)
76   */
77  void EnqueueMessage(const ComponentId * pComp, const unsigned char * pData, int nDataLen);
78
79 private:
80  //! ! ProcessResponse
81  /*! Process the TrafficCapture response message result to send it to TTCN-3 script.
82   * @param result: result code
83   */
84  void ProcessResponse(const std::string& message, bool result);
85  /* Main function for thread in charge of communication with
86   * TrafficCapture
87   */
88  static void Run();
89
90  //! InitializeCapture
91  /*! Configure and connect to the TrafficCapture process
92   * @param filter: Global traffic capture filtering
93   * @param ifaces: Netwotrk interfaces to monitor
94   * @param mode: Traffic capture mode: on-line / off-line
95   * @param record: Indicate if the TrafficCapture process should record the traffic
96   * @param fileToPlay: In offline mode, this is the Pcap file name to play. It should be set to an empty string in real-line mode.
97   */
98  void InitializeCapture(boost::shared_ptr<GeneralConfigurationParams> configParams) throw (LowerTestAdapterException);
99  //void InitializeCapture(const string& filter, const string& ifaces, unsigned char mode, unsigned char record, const string fileToPlay);
100
101  /** This method is called whenever a captured packet is received
102   * from TrafficCapture. It dispatches the packet to Monitor port
103   * if associated filter matches.
104   * @param pCapturedData: Pointer to a buffer containing captured data
105   * @param nDataLen: Number of bytes in the buffer containing captured data
106   */
107  void ProcessCapturedData(const unsigned char * pCaptureData, unsigned int nDataLen);
108
109  Socket * m_captureSocket;
110  boost::thread * m_captureThread;
111  DataPort * m_dataPort; // created and deleted by t3dk
112  AdapterConfigPort * m_adapterConfigPort; // created and deleted by t3dk
113  ComponentFilter m_filter;
114};
115
116
117#endif
Note: See TracBrowser for help on using the repository browser.