1
2
3
4
5
6
7
8 #pragma prefix "r4"
9
10 module Auktion {
11 component Bieter;
12 component Verkaeufer;
13
14 interface Versteigerung {
15 readonly attribute string name;
16 readonly attribute long aktuelles_gebot;
17
18 void biete(in long gebot, in Bieter potentieller_kaeufer);
19 };
20
21 interface VersteigerungsFabrik {
22 Versteigerung neue_auktion(in string name,
23 in long minimalgebot,
24 in Verkaeufer besitzer);
25 };
26
27 eventtype Gebot {
28 public Versteigerung gegenstand;
29 public long angebot;
30 };
31
32 component Auktionshaus {
33 provides VersteigerungsFabrik auktionen;
34 publishes Gebot gebote;
35 };
36
37 home Welt manages Auktionshaus {};
38
39 component ProduktFilter {
40 attribute string interessanter_gegenstand;
41
42 consumes Gebot eingehende_gebote;
43 publishes Gebot interessante_gebote;
44 };
45
46 home FilterHome manages ProduktFilter {
47 factory new_filter(in string gegenstand);
48 };
49
50 interface Kaeufer {
51 void zuschlag(in Versteigerung gegenstand, in Verkaeufer v);
52 };
53
54 component Bieter supports Kaeufer {
55 consumes Gebot gebote;
56 uses multiple Versteigerung versteigerungen;
57 };
58
59 home BieterHome manages Bieter {};
60
61 eventtype Kauf: Gebot {
62 public Auktion::Kaeufer kaeufer;
63 };
64
65 component Verkaeufer {
66 uses VersteigerungsFabrik handelsplatz;
67 consumes Kauf zuschlag;
68 };
69
70 home VerkaeuferHome manages Verkaeufer {};
71
72 };
73
74