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

通讯编程

开发平台:

Visual C++

  1. /* -*- Mode:C++; c-basic-offset:8; tab-width:8; indent-tabs-mode:t -*- */
  2. /* 
  3.  * Copyright 2002, Statistics Research, Bell Labs, Lucent Technologies and
  4.  * The University of North Carolina at Chapel Hill
  5.  * 
  6.  * Redistribution and use in source and binary forms, with or without 
  7.  * modification, are permitted provided that the following conditions are met:
  8.  * 
  9.  *    1. Redistributions of source code must retain the above copyright 
  10.  * notice, this list of conditions and the following disclaimer.
  11.  *    2. Redistributions in binary form must reproduce the above copyright 
  12.  * notice, this list of conditions and the following disclaimer in the 
  13.  * documentation and/or other materials provided with the distribution.
  14.  *    3. The name of the author may not be used to endorse or promote 
  15.  * products derived from this software without specific prior written 
  16.  * permission.
  17.  * 
  18.  * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR 
  19.  * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED 
  20.  * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE 
  21.  * DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, 
  22.  * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES 
  23.  * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR 
  24.  * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 
  25.  * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, 
  26.  * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN 
  27.  * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 
  28.  * POSSIBILITY OF SUCH DAMAGE.
  29.  */
  30. /*
  31.  * Reference
  32.  *     Stochastic Models for Generating Synthetic HTTP Source Traffic 
  33.  *     J. Cao, W.S. Cleveland, Y. Gao, K. Jeffay, F.D. Smith, and M.C. Weigle 
  34.  *     IEEE INFOCOM 2004.
  35.  *
  36.  * Documentation available at http://dirt.cs.unc.edu/packmime/
  37.  * 
  38.  * Contacts: Michele Weigle (mcweigle@cs.unc.edu),
  39.  *           Kevin Jeffay (jeffay@cs.unc.edu)
  40.  */
  41. #include "packmime_ranvar.h" 
  42. #ifndef OL_RANVAR_H
  43. #define OL_RANVAR_H
  44. #define LOG2 0.6931471806
  45. struct OL_arima_params {
  46. double d;
  47. int    N;
  48. int    pAR, qMA;
  49. double varRatioParam0, varRatioParam1, varRatioParam2; 
  50. // 1-2^(p0-p1*log2(rate)^p2)
  51. };
  52. struct OL_weibull_params {
  53. double shapeParam0, shapeParam1, shapeParam2; 
  54. // 1-2^(p0-p1*log2(rate)^p2)
  55. };
  56. /*:::::::::::::::::::: PackMimeOL Packet Size RanVar :::::::::::::::::::::::*/
  57. class PackMimeOLPacketSizeRandomVariable : public RandomVariable {
  58.   private:
  59. double varRatio, sigmaNoise, sigmaEpsilon;
  60. int n_size_dist, *size_dist_left, *size_dist_right;
  61. double connum, bitrate, conbps, conpacrate;
  62. double *size_prob;
  63. double *cumsum_size_prob;
  64. char *pac_size_dist_file;
  65. FARIMA *fARIMA;
  66. RNG* myrng;
  67. virtual double value();
  68. virtual double avg();
  69. int transform(double p);  
  70. void initialize();
  71. void init_dist();
  72. void read_dist();
  73. void bind_vars();
  74. static int def_size_dist_left[];
  75. static int def_size_dist_right[];
  76. static double def_size_prob[];
  77.   public:
  78. PackMimeOLPacketSizeRandomVariable();
  79. PackMimeOLPacketSizeRandomVariable(double bitrate); 
  80. PackMimeOLPacketSizeRandomVariable(double bitrate, RNG* rng);
  81. PackMimeOLPacketSizeRandomVariable(double bitrate, RNG* rng, 
  82.    const char *pac_size_dist_file);
  83. ~PackMimeOLPacketSizeRandomVariable();
  84. };
  85. /*::::::::::::: PackMimeOL Packet Interarrival RanVar :::::::::::::::::::::*/
  86. class PackMimeOLPacketIARandomVariable : public RandomVariable {
  87.   private:
  88. double varRatio, sigmaNoise, sigmaEpsilon;
  89. double shape, scale;
  90. double connum, bitrate, pacrate, conbps, conpacrate;
  91. FARIMA *fARIMA;
  92. RNG* myrng;
  93. RandomVariable *sizerng;
  94. virtual double value();
  95. virtual double avg();
  96. double transform(double p);  
  97. void initialize();
  98. void bind_vars();
  99.   public:
  100. PackMimeOLPacketIARandomVariable();
  101. PackMimeOLPacketIARandomVariable(double bitrate_);  
  102. PackMimeOLPacketIARandomVariable(double bitrate_, RNG* rng_);  
  103. void setPktSizeRng(RandomVariable *sizerng_) {sizerng = sizerng_;};
  104. ~PackMimeOLPacketIARandomVariable();
  105. };
  106. #endif /* OL_RANVAR_H */