summaryrefslogtreecommitdiff
path: root/TAO/orbsvcs/orbsvcs/sfp.idl
blob: 13164e1a25b2c89372efc8281ac790768fb0c647 (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
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
/* -*- C++ -*- */
// $Id$

#ifndef TAO_SFP_IDL
#define TAO_SFP_IDL

module flowProtocol
{
  typedef sequence<char> my_seq_char;
  typedef sequence <unsigned long> my_seq_ulong;
  enum MsgType
  {
    //  The MsgTypes Start and struct Start,StartReply and struct
    // StartReply conflicts. Until the OMG fixes this we have a hack.
    // Messages in the forward direction 
    //    Start,
    start,
    EndofStream,
    SimpleFrame,
    SequencedFrame,
    Frame,
    SpecialFrame,
    // Messages in the reverse direction
    //    StartReply,
    startReply,
    Credit,
    // Addition of type for a fragment.
    Fragment
  }; 
  
  struct frameHeader
  { 
    char magic_number[4];
    //    my_seq_char magic_number;
    // '=', 'S', 'F', 'P' 
    octet flags;   
    // bit 0 = byte order, 
    // 1 = fragments, 2-7 always 0 
    octet message_type; 
    unsigned long message_size; 
    // Size following this header 
  }; 
  
  struct fragment
  { 
    //    my_seq_char magic_number; 
    char magic_number[4];
    // 'F', 'R', 'A', 'G' 
    octet flags; 
    // bit 1 = more fragments 
    unsigned long frag_number; 
    // 0,..,n 
    unsigned long sequence_num;
    unsigned long frag_sz; 
    unsigned long source_id; 
    // Required for UDP multicast with multiple sources 
  };                    
  
  struct Start
  { 
    char magic_number[4];
    //    my_seq_char magic_number;
    // '=', 'S', 'T', 'A' 
    octet major_version; 
    octet minor_version; 
    octet flags; 
    // bit 0 = byte order 
  }; 
  
  // Acknowledge successful processing of 
  // Start 
  
  struct StartReply
  { 
    //    my_seq_char magic_number;
    char magic_number[4];
    // "=",'S','T','R'
    octet flags; 
    // bit 0 = byte order, 1 = exception 
  }; 
  
  // If the message_type in frameHeader is sequencedFrame 
  // the the frameHeader will be followed by this 
  // (See also RTP note) 
  
  struct sequencedFrame
  { 
    unsigned long sequence_num; 
  }; 
  // If the message_type is Frame then 
  // the frameHeader is followed by this 
  // See also RTP note 
  
  struct frame
  { 
    unsigned long timestamp; 
    unsigned long synchSource;
    my_seq_ulong source_ids;
    unsigned long sequence_num;
  };

  // XXX:The spec hasn't defined frameID.
  typedef unsigned long frameID;
  struct specialFrame
  {
    frameID context_id;
    sequence<octet> context_data;
  };
  
  struct credit
  {
    //    my_seq_char magic_number;
    char magic_number[4];
    // "=",'C','R','E'
    unsigned long cred_num;
  };
  
};

#endif /* TAO_SFP_IDL */