lan.h
上传用户:rrhhcc
上传日期:2015-12-11
资源大小:54129k
文件大小:4k
源码类别:

通讯编程

开发平台:

Visual C++

  1. /*
  2.  * Copyright (c) 1997 University of Southern California.
  3.  * All rights reserved.
  4.  *
  5.  * Redistribution and use in source and binary forms, with or without
  6.  * modification, are permitted provided that the following conditions
  7.  * are met:
  8.  * 1. Redistributions of source code must retain the above copyright
  9.  *    notice, this list of conditions and the following disclaimer.
  10.  * 2. Redistributions in binary form must reproduce the above copyright
  11.  *    notice, this list of conditions and the following disclaimer in the
  12.  *    documentation and/or other materials provided with the distribution.
  13.  * 3. All advertising materials mentioning features or use of this software
  14.  *    must display the following acknowledgement:
  15.  *      This product includes software developed by the Information Sciences
  16.  *      Institute of the University of Southern California.
  17.  * 4. Neither the name of the University nor of the Institute may be used
  18.  *    to endorse or promote products derived from this software without
  19.  *    specific prior written permission.
  20.  *
  21.  * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
  22.  * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
  23.  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
  24.  * ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
  25.  * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
  26.  * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
  27.  * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
  28.  * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
  29.  * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
  30.  * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
  31.  * SUCH DAMAGE.
  32.  *
  33.  * @(#) $Header: /usr/src/mash/repository/vint/nam-1/edge.h,v 1.5 1997/10/04 19
  34. :54:47 mjh Exp $ (LBL)
  35. */
  36. #ifndef nam_lan_h
  37. #define nam_lan_h
  38. #include <math.h>
  39. #include "animation.h"
  40. #include "transform.h"
  41. #include "edge.h"
  42. #include "node.h"
  43. #include "netmodel.h"
  44. class View;
  45. class Transform;
  46. class Packet;
  47. class Monitor;
  48. class NetModel;
  49. class LanLink {
  50.     public:
  51.         LanLink(Edge *e);
  52. LanLink *next() const {return next_;}
  53. Edge *edge() const {return edge_;}
  54. Edge *pair() const {return pair_;}
  55. void next(LanLink *link) {next_=link;}
  56. int placed();
  57.     private:
  58.         LanLink *next_;
  59.         Edge *edge_, *pair_;
  60. };
  61. class Lan : public Animation{
  62. public:
  63.   Lan(const char *name, NetModel *nm, double ps, double bw, 
  64.       double delay, double angle);
  65. ~Lan();
  66. virtual float distance(float x, float y) const;
  67. void add_link(Edge *e);
  68. int no_of_nodes() const { return (no_of_nodes_); }
  69. int num() const { return ln_; }
  70. void draw(class View *nv, double time);
  71.   // void draw(class PSView *nv, double time) const;
  72. void update_bb();
  73. void size(double size);
  74. virtual void place(double x, double y);
  75. Lan *next_;
  76. Node *virtual_node() {return virtual_node_;}
  77. inline int marked() const { return (marked_); }
  78. inline void mark() { marked_ = 1; }
  79.         inline void unmark() { marked_ = 0; }
  80. double bw() const {return bw_;}
  81. double delay() const {return delay_;}
  82. void arrive_packet(Packet *p, Edge *e, double atime);
  83. void delete_packet(Packet *p);
  84. double x(Edge *e) const;
  85. double y(Edge *e) const;
  86. virtual int classid() const { return ClassLanID; }
  87. Tcl_HashTable *dropHash_;
  88. void register_drop(const TraceEvent &);
  89. void remove_drop(const TraceEvent &);
  90.     private:
  91. NetModel *nm_;
  92. VirtualNode *virtual_node_;
  93. LanLink *links_;
  94. int no_of_nodes_;
  95. double x_, y_, size_;
  96. double ps_, bw_, delay_, angle_; // packet size, bandwidth, delay, angle
  97. char *name_;
  98. int ln_;
  99. int marked_;
  100. int max_;
  101. };
  102. #endif