Leosac  0.7.0
OpenSourceAccessControl
FakeWiegandReader.cpp
Go to the documentation of this file.
1 /*
2  Copyright (C) 2014-2016 Leosac
3 
4  This file is part of Leosac.
5 
6  Leosac is free software: you can redistribute it and/or modify
7  it under the terms of the GNU Affero General Public License as published by
8  the Free Software Foundation, either version 3 of the License, or
9  (at your option) any later version.
10 
11  Leosac is distributed in the hope that it will be useful,
12  but WITHOUT ANY WARRANTY; without even the implied warranty of
13  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14  GNU Affero General Public License for more details.
15 
16  You should have received a copy of the GNU Affero General Public License
17  along with this program. If not, see <http://www.gnu.org/licenses/>.
18 */
19 
20 #include "FakeWiegandReader.hpp"
21 
22 using namespace Leosac::Test::Helper;
23 
24 FakeWiegandReader::FakeWiegandReader(zmqpp::context &ctx, const std::string &name)
25  : rep_(ctx, zmqpp::socket_type::rep)
26 {
27  rep_.bind("inproc://" + name);
28 }
29 
30 bool FakeWiegandReader::run(zmqpp::socket *pipe)
31 {
32  zmqpp::poller poller;
33 
34  poller.add(*pipe);
35  poller.add(rep_);
36 
37  pipe->send(zmqpp::signal::ok);
38 
39  while (true)
40  {
41  poller.poll(-1);
42 
43  if (poller.has_input(*pipe))
44  break;
45 
46  if (poller.has_input(rep_))
47  {
48  zmqpp::message msg;
49  rep_.receive(msg);
50  rep_.send("OK");
51  }
52  }
53  return true;
54 }
Unit testing utility class that helps writing test.
Definition: FakeGPIO.hpp:28
FakeWiegandReader(zmqpp::context &ctx, const std::string &name)
bool run(zmqpp::socket *pipe)
Runs the dummy ready in a thread.
zmqpp::socket rep_
Receive command here.