File: parser.h

package info (click to toggle)
sinfo 0.0.48-2.1
  • links: PTS, VCS
  • area: main
  • in suites: bookworm, bullseye, forky, sid, trixie
  • size: 3,332 kB
  • sloc: sh: 11,213; cpp: 6,722; makefile: 271; xml: 151; perl: 149
file content (45 lines) | stat: -rw-r--r-- 812 bytes parent folder | download | duplicates (3)
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
#ifndef _parser_h
#define _parser_h


#include "message.h"
#include <map>
#include <boost/shared_ptr.hpp>


// http://en.wikipedia.org/wiki/Composite_pattern
class Parser
{
public:
  typedef boost::shared_ptr<Parser> SPtr;

  virtual void parse(Message & returnMessage, Message & message) = 0;
  virtual ~Parser() {}
};


class CompositeParser: public Parser
{
private:
  struct ParsingEntry
  {
    int requestID;
    int replyID;
    Parser::SPtr sPtr;

    ParsingEntry(int requestID, int replyID, Parser::SPtr sPtr): requestID(requestID), replyID(replyID), sPtr(sPtr)
    {
    }
  };

  typedef std::map<int, ParsingEntry> mapType;
  mapType myMap;

public:
  void addParser(int requestID, int replyID, Parser::SPtr sPtr);

  void parse(Message & returnMessage, Message & message);
};


#endif // _parser_h