summaryrefslogtreecommitdiff
path: root/CIAO/connectors/dds4ccm/tests/LateBinding/ReadGet/Receiver/RG_LateBinding_Receiver_impl.h
blob: 43d1198c2871fb920e03c2fdcf6106f983fe895f (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
// $Id$

#ifndef RG_LATEBINDING_RECEIVER_IMPL_H_
#define RG_LATEBINDING_RECEIVER_IMPL_H_

#include "RG_LateBinding_ReceiverEC.h"

namespace CIAO_RG_LateBinding_Receiver_Impl
{
  class RG_LateBinding_Receiver_impl;

  /**
   * LastSampleChecker
   */
  class LastSampleChecker
    : public ACE_Event_Handler
  {
  public:
    LastSampleChecker (RG_LateBinding_Receiver_impl &callback,
                       const ::CORBA::UShort &iterations);

    virtual ~LastSampleChecker (void);

    virtual int handle_timeout (const ACE_Time_Value &tv,
                                const void *arg);
  private:
    RG_LateBinding_Receiver_impl &callback_;
    const ::CORBA::UShort iterations_;

  };

  /**
   * RG_LateBinding_Receiver_impl
   */
  class RG_LateBinding_Receiver_impl
  {
  public:
    RG_LateBinding_Receiver_impl (
      ::RG_LateBinding::CCM_Receiver_Context_ptr ctx,
      const ::CORBA::UShort & iterations,
      const ::CORBA::UShort & keys);
    ~RG_LateBinding_Receiver_impl (void);

    void start (void);
    bool check_last (void);
    void start_read (void);

  private:
    ::RG_LateBinding::CCM_Receiver_Context_var ciao_context_;
    ::CORBA::UShort iterations_;
    ::CORBA::UShort keys_;

    LastSampleChecker * checker_;

    void set_topic_name_reader ();
    void set_topic_name_getter ();

    void start_reading (void);
    void start_getting (void);
    void test_exception (void);

    void check_samples (
      const char * test,
      const RG_LateBindingTestSeq& samples,
      const ::CORBA::UShort& expected=0);

    ACE_Reactor* reactor (void);
  };
};

#endif /* RG_LATEBINDING_RECEIVER_IMPL_H_ */