aboutsummaryrefslogtreecommitdiffstats
path: root/messagebus/src/vespa/messagebus/testlib/receptor.h
blob: 52e58adb661285cd84a8080a7bf41b1cdcb12f57 (plain) (blame)
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
// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.

#pragma once

#include <vespa/messagebus/imessagehandler.h>
#include <vespa/messagebus/ireplyhandler.h>
#include <vespa/messagebus/message.h>
#include <vespa/messagebus/reply.h>
#include <condition_variable>

namespace mbus {

class Receptor : public IMessageHandler,
                 public IReplyHandler
{
private:
    std::mutex              _mon;
    std::condition_variable _cond;
    Message::UP             _msg;
    Reply::UP               _reply;
public:
    Receptor();
    ~Receptor() override;
    void handleMessage(Message::UP msg) override;
    void handleReply(Reply::UP reply) override;
    Message::UP getMessage(duration maxWait = 120s);
    Reply::UP getReply(duration maxWait = 120s);
    Message::UP getMessageNow() { return getMessage(duration::zero()); }
    Reply::UP getReplyNow() { return getReply(duration::zero()); }
};

} // namespace mbus