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

通讯编程

开发平台:

Visual C++

  1. # Copyright 2002, Statistics Research, Bell Labs, Lucent Technologies and
  2. # The University of North Carolina at Chapel Hill
  3. # Redistribution and use in source and binary forms, with or without 
  4. # modification, are permitted provided that the following conditions are met:
  5. #    1. Redistributions of source code must retain the above copyright 
  6. # notice, this list of conditions and the following disclaimer.
  7. #    2. Redistributions in binary form must reproduce the above copyright 
  8. # notice, this list of conditions and the following disclaimer in the 
  9. # documentation and/or other materials provided with the distribution.
  10. #    3. The name of the author may not be used to endorse or promote 
  11. # products derived from this software without specific prior written 
  12. # permission.
  13. # THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR 
  14. # IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED 
  15. # WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE 
  16. # DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, 
  17. # INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES 
  18. # (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR 
  19. # SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 
  20. # CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, 
  21. # STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN 
  22. # ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 
  23. # POSSIBILITY OF SUCH DAMAGE.
  24. # Reference
  25. #     Stochastic Models for Generating Synthetic HTTP Source Traffic 
  26. #     J. Cao, W.S. Cleveland, Y. Gao, K. Jeffay, F.D. Smith, and M.C. Weigle 
  27. #     IEEE INFOCOM 2004.
  28. #
  29. # Documentation available at http://dirt.cs.unc.edu/packmime/
  30. # Contacts: Michele Weigle (mcweigle@cs.unc.edu),
  31. #           Kevin Jeffay (jeffay@cs.unc.edu)
  32. PackMimeHTTP instproc alloc-tcp {tcptype} {
  33.     if {$tcptype != "Reno"} {
  34. set tcp [new Agent/TCP/FullTcp/$tcptype]
  35.     } else {
  36. set tcp [new Agent/TCP/FullTcp]
  37.     }
  38.     return $tcp
  39. }
  40. PackMimeHTTP instproc setup-tcp {tcp fid} {
  41.     # set flow ID
  42.     $tcp set fid_ $fid
  43.     # register done procedure for when connection is closed
  44.     $tcp proc done {} "$self done $tcp"
  45. }
  46. # These need to be here so that we can attach the
  47. # apps to a node (done in Tcl code)
  48. PackMimeHTTP instproc alloc-client-app {} {
  49.     return [new Application/PackMimeHTTP/Client]
  50. }
  51. PackMimeHTTP instproc alloc-server-app {} {
  52.     return [new Application/PackMimeHTTP/Server]
  53. }
  54. PackMimeHTTP instproc done {tcp} {
  55.     # the connection is done, so recycle the agent
  56.     $self recycle $tcp
  57. }
  58. PackMimeHTTP instproc now {} {
  59.     set ns [Simulator instance]
  60.     return [format "%.6f" [$ns now]]
  61. }