switch to new MPL based Fraunhofer FOKUS Public License
[senf.git] / senf / Packets / MPEGDVBBundle / DTCPPacket.cc
1 // $Id:TransportPacket.hh 560 2007-12-13 14:39:37Z tho $
2 //
3 // Copyright (C) 2007
4 // Fraunhofer Institute for Open Communication Systems (FOKUS)
5 //
6 // The contents of this file are subject to the Fraunhofer FOKUS Public License
7 // Version 1.0 (the "License"); you may not use this file except in compliance
8 // with the License. You may obtain a copy of the License at 
9 // http://senf.berlios.de/license.html
10 //
11 // The Fraunhofer FOKUS Public License Version 1.0 is based on, 
12 // but modifies the Mozilla Public License Version 1.1.
13 // See the full license text for the amendments.
14 //
15 // Software distributed under the License is distributed on an "AS IS" basis, 
16 // WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License 
17 // for the specific language governing rights and limitations under the License.
18 //
19 // The Original Code is Fraunhofer FOKUS code.
20 //
21 // The Initial Developer of the Original Code is Fraunhofer-Gesellschaft e.V. 
22 // (registered association), Hansastraße 27 c, 80686 Munich, Germany.
23 // All Rights Reserved.
24 //
25 // Contributor(s):
26 //   David Wagner <dw6@berlios.de>
27 /** \file
28     \brief DTCPPacket non-inline non-template implementation */
29
30 #include "DTCPPacket.hh"
31 //#include "DTCPPacket.ih"
32
33 // Custom includes
34 #include <boost/io/ios_state.hpp>
35 #include <iomanip>
36
37 #define prefix_
38 //-/////////////////////////////////////////////////////////////////////////////////////////////////
39
40 prefix_ void senf::DTCPHelloPacketType::dump(packet p, std::ostream & os)
41 {
42     static char const * COMMANDS[] = { "0", "JOIN", "LEAVE", "3", "4", "5", "6", "7",
43                                        "8", "9", "10", "11", "12", "13", "14", "15" };
44     boost::io::ios_all_saver ias(os);
45     os << "DTCP HELLO Packet:" << std::endl
46        << senf::fieldName("version")                   << p->versionNumber()                       << "\n"
47        << senf::fieldName("command")                   << COMMANDS[p->command()]                   << "\n"
48        << senf::fieldName("interval")                  << unsigned(p->interval())                  << "\n"
49        << senf::fieldName("sequence number")           << p->sequenceNumber()                      << "\n"
50        << senf::fieldName("receive capable feed")      << (p->receiveCapableFeed() ? "yes" : "no") << "\n"
51        << senf::fieldName("ip version")                << p->ipVersion()                           << "\n"
52        << senf::fieldName("tunnel protocol")           << unsigned(p->tunnelProtocol())            << "\n"
53        << senf::fieldName("number of BDL ips")         << unsigned(p->fbipCount())                 << "\n"
54        << "  feed BDL ips:\n";
55
56     switch (p->ipVersion()) {
57     case 4 : {
58         typedef DTCPHelloPacket::Parser::v4fbipList_t FBIPList;
59         FBIPList::container fbips (p->v4fbipList());
60         FBIPList::container::iterator i (fbips.begin());
61         FBIPList::container::iterator const i_end (fbips.end());
62         for (; i != i_end; ++i)
63             os << "    " << *i << "\n";
64         break;
65     }
66     case 6 : {
67         typedef DTCPHelloPacket::Parser::v6fbipList_t FBIPList;
68         FBIPList::container fbips (p->v6fbipList());
69         FBIPList::container::iterator i (fbips.begin());
70         FBIPList::container::iterator const i_end (fbips.end());
71         for (; i != i_end; ++i)
72             os << "    " << *i << "\n";
73         break;
74     }
75     default:
76         os << "    unknown ip version\n";
77     }
78 }
79
80 #undef prefix_
81
82
83 //-/////////////////////////////////////////////////////////////////////////////////////////////////
84 #undef prefix_
85
86 \f
87 // Local Variables:
88 // mode: c++
89 // fill-column: 100
90 // comment-column: 40
91 // c-file-style: "senf"
92 // indent-tabs-mode: nil
93 // ispell-local-dictionary: "american"
94 // compile-command: "scons -u test"
95 // End: