route.h
上传用户:rrhhcc
上传日期:2015-12-11
资源大小:54129k
文件大小:4k
- /*
- * Copyright (c) 1997 University of Southern California.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- * 3. All advertising materials mentioning features or use of this software
- * must display the following acknowledgement:
- * This product includes software developed by the Information Sciences
- * Institute of the University of Southern California.
- * 4. Neither the name of the University nor of the Institute may be used
- * to endorse or promote products derived from this software without
- * specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- *
- *
- * @(#) $Header: /cvsroot/nsnam/nam-1/route.h,v 1.8 2001/04/18 00:14:16 mehringe Exp $ (LBL)
- */
- #ifndef nam_route_h
- #define nam_route_h
- class Queue;
- class Edge;
- class Agent;
- class View;
- class MonState;
- class Monitor;
- #include "animation.h"
- /*conceivably there are other options than NEGATIVE/POSITIVE caches,
- or IIF/OIF*/
- #define NEG_CACHE 1
- #define POS_CACHE 2
- #define IIF 4
- #define OIF 8
- class Route : public Animation {
- public:
- Route(Node *, Edge *, int group, int pktsrc,
- int negcache, int iif, double timer, double now);
- ~Route();
- virtual void place(double x, double y);
- virtual void place(double x, double y, int ctr);
- //virtual int inside(double, float, float) const;
- inline int marked() const { return (mark_); }
- inline void mark(int v) { mark_ = v; }
- inline Route *next() const { return next_; }
- inline Edge *edge() const { return edge_; }
- inline Node *node() const { return node_; }
- inline double angle() const {return angle_;}
- inline void next(Route *r) { next_=r; };
- int matching_route(Edge *e, int group, int pktsrc, int oif) const;
- const char* info() const;
- const char* getname() const;
- void monitor(Monitor *m, double now, char *result, int len);
- MonState *monitor_state();
- virtual void draw(View* nv, double now);
- //virtual void draw(PSView*, double now) const;
- virtual void reset(double now);
- virtual void update(double now);
- Route* next_;
- protected:
- void update_bb();
- Edge *edge_; /*the edge corresponding to the interface*/
- Node *node_;
- int group_; /*the multicast group, or -1 for unicast*/
- int pktsrc_; /*the src for which this is a route*/
- int mode_; /*OR(POS_CACHE,NEG_CACHE,IIF,OIF, etc)*/
- double timeout_; /*the timer value til timeout*/
- double curtimeout_; /*current time remaining in timeout*/
- double timeset_; /*when the timer was set*/
- int anchor_;
- int mark_;
- float x_[4], y_[4];
- int npts_;
- double angle_;
- Transform matrix_;
- };
- #endif