Class Source/sendmail -superclass Source
 
Source/sendmail instproc sendpak { size } {
    $self instvar agent_

    $agent_ set packetSize_ $size
    puts "Output a packet of $size"
    $agent_ advanceby 1
}

Source/sendmail instproc openconn_1 {} {
    $self sendpak [string length "EHLO all-purpose-gunk.near.net."]
}
Source/sendmail instproc closeconn_1 {} {
    $self sendpak [string length "QUIT"]
}
Source/sendmail instproc sendmsg_1 {} {
    $self sendpak [string length "MAIL FROM: <hartmans@mit.edu>"]
}
Source/sendmail instproc sendmsg_2 {} {
    $self sendpak [string length "RCPT TO: <jhawk@mit.edu>"]
}

Source/sendmail instproc openconn {} {
  $self instvar ns_
  $ns_ at [expr [$ns_ now] + 0.1] "$self openconn_1"
  $ns_ at [expr [$ns_ now] + 0.2] "$self sendmsg"
}
Source/sendmail instproc sendmsg {} {
  $self instvar ns_
  $ns_ at [expr [$ns_ now] + 0.1] "$self sendmsg_1"
  $ns_ at [expr [$ns_ now] + 0.2] "$self sendmsg_2"
  $ns_ at [expr [$ns_ now] + 0.3] "$self sendpak 1400"
  $ns_ at [expr [$ns_ now] + 0.4] "$self closeconn"
}
Source/sendmail instproc closeconn {} {
  $self instvar ns_
  $ns_ at [expr [$ns_ now] + 0.1] "$self closeconn_1"
}

Source/sendmail instproc start {} {
        $self instvar agent_ pz
    trace_annotate "jhawk sendmail foo"
        $self openconn
}
 
Source/sendmail instproc stop {} {
        $self instvar agent_
        $agent_ advance 0
}
 
Source/sendmail instproc produce { pktcnt } {
        $self instvar agent_ 
        $agent_ advance $pktcnt
}
 
Source/sendmail instproc producemore { pktcnt } {
        $self instvar agent_ 
        $agent_ advanceby $pktcnt
}
 
Source/sendmail instproc attach { o n } {
        $self instvar agent_ ns_
        set agent_ $o
        set ns_ $n
}
