bin.cc

00001 /*
00002  * Copyright (c) 2006 Regents of the SIGNET lab, University of Padova.
00003  * All rights reserved.
00004  *
00005  * Redistribution and use in source and binary forms, with or without
00006  * modification, are permitted provided that the following conditions
00007  * are met:
00008  * 1. Redistributions of source code must retain the above copyright
00009  *    notice, this list of conditions and the following disclaimer.
00010  * 2. Redistributions in binary form must reproduce the above copyright
00011  *    notice, this list of conditions and the following disclaimer in the
00012  *    documentation and/or other materials provided with the distribution.
00013  * 3. Neither the name of the University of Padova (SIGNET lab) nor the 
00014  *    names of its contributors may be used to endorse or promote products 
00015  *    derived from this software without specific prior written permission.
00016  *
00017  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 
00018  * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED 
00019  * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR 
00020  * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR 
00021  * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, 
00022  * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, 
00023  * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; 
00024  * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, 
00025  * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR 
00026  * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF 
00027  * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
00028  */
00029 
00030 #include "bin.h"
00031 /* ======================================================================
00032    TCL Hooks for the simulator
00033    ====================================================================== */
00034 static class BinClass : public TclClass {
00035 public:
00036         BinClass() : TclClass("ConnectorTrace/Bin") {}
00037         TclObject* create(int, const char*const*) {
00038                 return (new Bin());
00039         }
00040 } class_bin;
00041 
00042 
00043 /*
00044 Non static methods for Bin
00045 */
00046 
00047 Bin::Bin() : SAP(), ClSAP()
00048 {
00049         preamble_[0] = 0;
00050         bind("depth", &depth_);
00051 }
00052 
00053 Bin::~Bin()
00054 {
00055 }
00056 
00057 // TCL command interpreter
00058 int Bin::command(int argc, const char*const* argv)
00059 {
00060         if (strcmp(argv[1], "preamble") == 0)
00061                 {
00062                         sprintf(preamble_, "%s", argv[2]);
00063                         return (TCL_OK);
00064                 }
00065         return ConnectorTrace::command(argc, argv);
00066 }
00067 
00068 // write down the trace for a dropping of a packet event
00069 void Bin::drop(Packet*p, int depth,const char *reason)
00070 {
00071         if(debug_)
00072                 printf("Bin::drop(%p,%i,%s) --- preamble_='%s'\n", p, depth, reason, preamble_);
00073         if(depth <= depth_)
00074         {
00075                 writeTrace("D %.9f %s %s", Scheduler::instance().clock(), preamble_, reason);
00076                 if(pktTr_)
00077                         pktTr_->trace(p,this);
00078                 dump();
00079         }
00080         Packet::free(p);
00081 }
00082 
00083 // write down the trace for a dropping of a message event
00084 void Bin::drop(ClMessage* m, const char* reason)
00085 {
00086         writeTrace("D %.9f %s %s", Scheduler::instance().clock(), preamble_, reason);
00087         if(clTr_)
00088                 clTr_->trace(m,this);
00089         dump();
00090         delete m;
00091 }
00092 
00093 void Bin::handle(Event *e)
00094 {
00095 }
00096 

Generated on Wed Nov 26 15:47:28 2008 for NS-MIRACLE library by  doxygen 1.5.2