sfp.idl

Go to the documentation of this file.
00001 /* -*- C++ -*- */
00002 // $Id: sfp.idl 72210 2006-04-20 11:50:26Z jwillemsen $
00003 
00004 #ifndef TAO_SFP_IDL
00005 #define TAO_SFP_IDL
00006 
00007 #include <ULongSeq.pidl>
00008 #include <OctetSeq.pidl>
00009 
00010 module flowProtocol
00011 {
00012   typedef CORBA::ULongSeq my_seq_ulong;
00013   enum MsgType
00014   {
00015     // The MsgTypes Start and struct Start,StartReply and struct
00016     // StartReply conflicts.
00017     // Also there are case-only differences for enumerator Credit and struct credit.
00018     // We suffix _Msg to all enumerators until the AVStreams RTF fixes these.
00019     // Messages in the forward direction
00020     //    Start,
00021     Start_Msg,
00022     EndofStream_Msg,
00023     SimpleFrame_Msg,
00024     SequencedFrame_Msg,
00025     Frame_Msg,
00026     SpecialFrame_Msg,
00027     // Messages in the reverse direction
00028     //    StartReply,
00029     StartReply_Msg,
00030     Credit_Msg,
00031     // Addition of type for a fragment.
00032     Fragment_Msg
00033   };
00034 
00035   struct frameHeader
00036   {
00037     char magic_number[4];
00038     //    my_seq_char magic_number;
00039     // '=', 'S', 'F', 'P'
00040     octet flags;
00041     // bit 0 = byte order,
00042     // 1 = fragments, 2-7 always 0
00043     octet message_type;
00044     unsigned long message_size;
00045     // Size following this header
00046   };
00047 
00048   struct fragment
00049   {
00050     //    my_seq_char magic_number;
00051     char magic_number[4];
00052     // 'F', 'R', 'A', 'G'
00053     octet flags;
00054     // bit 1 = more fragments, %%bit 0 = byteorder
00055     unsigned long frag_number;
00056     // 1,..,n
00057     unsigned long sequence_num;
00058     unsigned long frag_sz;
00059     unsigned long source_id;
00060     // Required for UDP multicast with multiple sources
00061   };
00062 
00063   struct Start
00064   {
00065     char magic_number[4];
00066     //    my_seq_char magic_number;
00067     // '=', 'S', 'T', 'A'
00068     octet major_version;
00069     octet minor_version;
00070     octet flags;
00071     // bit 0 = byte order
00072   };
00073 
00074   // Acknowledge successful processing of
00075   // Start
00076 
00077   struct StartReply
00078   {
00079     //    my_seq_char magic_number;
00080     char magic_number[4];
00081     // "=",'S','T','R'
00082     octet flags;
00083     // bit 0 = byte order, 1 = exception
00084   };
00085 
00086   // If the message_type in frameHeader is sequencedFrame
00087   // the the frameHeader will be followed by this
00088   // (See also RTP note)
00089 
00090   struct sequencedFrame
00091   {
00092     unsigned long sequence_num;
00093   };
00094   // If the message_type is Frame then
00095   // the frameHeader is followed by this
00096   // See also RTP note
00097 
00098   struct frame
00099   {
00100     unsigned long timestamp;
00101     unsigned long synchSource;
00102     my_seq_ulong source_ids;
00103     unsigned long sequence_num;
00104   };
00105 
00106   // XXX:The spec hasn't defined frameID.
00107   typedef unsigned long frameID;
00108   struct specialFrame
00109   {
00110     frameID context_id;
00111     CORBA::OctetSeq context_data;
00112   };
00113 
00114   struct credit
00115   {
00116     //    my_seq_char magic_number;
00117     char magic_number[4];
00118     // "=",'C','R','E'
00119     unsigned long cred_num;
00120   };
00121 
00122 };
00123 
00124 #endif /* TAO_SFP_IDL */

Generated on Tue Feb 2 17:47:49 2010 for TAO_AV by  doxygen 1.4.7