aboutsummaryrefslogtreecommitdiffstats
path: root/lib/cosNotification/src/CosNotifyComm.idl
blob: f0386f09827e15f623652c4510b77d3305c2d601 (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
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
81
82
83
#ifndef _COS_NOTIFYCOMM_IDL_
#define _COS_NOTIFYCOMM_IDL_

#pragma prefix "omg.org"


#include<CosNotification.idl>

module CosNotifyComm {
  exception InvalidEventType { CosNotification::EventType type; };

  interface NotifyPublish {
    void offer_change (in CosNotification::EventTypeSeq added,
		       in CosNotification::EventTypeSeq removed)
      raises (InvalidEventType);
  }; // NotifyPublish

  interface NotifySubscribe {
    void subscription_change(in CosNotification::EventTypeSeq added,
			     in CosNotification::EventTypeSeq removed)
      raises (InvalidEventType);
  }; // NotifySubscribe

  interface PushConsumer : NotifyPublish, CosEventComm::PushConsumer { }; // PushConsumer
  
  interface PullConsumer : NotifyPublish, CosEventComm::PullConsumer { }; // PullConsumer
  
  interface PullSupplier : NotifySubscribe, CosEventComm::PullSupplier { }; // PullSupplier
  
  interface PushSupplier : NotifySubscribe, CosEventComm::PushSupplier { };

  interface StructuredPushConsumer : NotifyPublish {
    void push_structured_event(in CosNotification::StructuredEvent notification)
      raises(CosEventComm::Disconnected);

    void disconnect_structured_push_consumer();
  }; // StructuredPushConsumer

  interface StructuredPullConsumer : NotifyPublish {
    void disconnect_structured_pull_consumer();
  }; // StructuredPullConsumer

  interface StructuredPullSupplier : NotifySubscribe {
    CosNotification::StructuredEvent pull_structured_event()
      raises(CosEventComm::Disconnected);

    CosNotification::StructuredEvent try_pull_structured_event(out boolean has_event)
      raises(CosEventComm::Disconnected);

    void disconnect_structured_pull_supplier();
  }; // StructuredPullSupplier

  interface StructuredPushSupplier : NotifySubscribe {
    void disconnect_structured_push_supplier();
  }; // StructuredPushSupplier

  interface SequencePushConsumer : NotifyPublish {
    void push_structured_events(in CosNotification::EventBatch notifications)
      raises(CosEventComm::Disconnected);

    void disconnect_sequence_push_consumer();
  }; // SequencePushConsumer

  interface SequencePullConsumer : NotifyPublish {
    void disconnect_sequence_pull_consumer();
  }; // SequencePullConsumer

  interface SequencePullSupplier : NotifySubscribe {
    CosNotification::EventBatch pull_structured_events(in long max_number)
      raises(CosEventComm::Disconnected);
    CosNotification::EventBatch try_pull_structured_events(in long max_number, out boolean has_event)
      raises(CosEventComm::Disconnected);

    void disconnect_sequence_pull_supplier();
  }; // SequencePullSupplier

  interface SequencePushSupplier : NotifySubscribe {
    void disconnect_sequence_push_supplier();
  }; // SequencePushSupplier
}; // CosNotifyComm

#endif /* ifndef _COS_NOTIFYCOMM_IDL_ */