summaryrefslogtreecommitdiff
path: root/storage/ndb/src/old_files/rep/RepApiInterpreter.cpp
blob: 6e6f150713a3835628064db2c52f2daefb004c4e (plain)
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
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
/* Copyright (C) 2003 MySQL AB

   This program is free software; you can redistribute it and/or modify
   it under the terms of the GNU General Public License as published by
   the Free Software Foundation; either version 2 of the License, or
   (at your option) any later version.

   This program is distributed in the hope that it will be useful,
   but WITHOUT ANY WARRANTY; without even the implied warranty of
   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
   GNU General Public License for more details.

   You should have received a copy of the GNU General Public License
   along with this program; if not, write to the Free Software
   Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA */

#include "RepApiInterpreter.hpp"
#include <signaldata/GrepImpl.hpp>

RepApiInterpreter::RepApiInterpreter(RepComponents * comps, int port)
{
  m_repComponents = comps;
  m_repState = comps->getRepState();
  m_port = port;
  ss = new SocketServer();
  serv = new RepApiService(*this);
}


RepApiInterpreter::~RepApiInterpreter()
{
}

void
RepApiInterpreter::startInterpreter() 
{
  if(!ss->setup(serv, m_port)){
    sleep(1);
    delete ss;
    delete serv;
  }
  ss->startServer();
}


void
RepApiInterpreter::stopInterpreter() 
{
  delete ss;
}


Properties *
RepApiInterpreter::execCommand(const Properties & props)
{
  Properties * result = new Properties();
  Uint32 req = 0;
  Uint32 epoch = 0;
  props.get("request", &req);
  props.get("epoch", &epoch);
  GrepError::Code err = m_repState->protectedRequest((GrepReq::Request)req, 
						     epoch);
  result->put("err", err);
  return result;
}

Properties *
RepApiInterpreter::getStatus()
{

  return m_repState->getStatus();
}


Properties * 
RepApiInterpreter::query(Uint32 counter, Uint32 replicationId)
{
  return m_repState->query((QueryCounter)counter, replicationId);
}