Version 4 of i2p

Updated 2010-01-04 00:05:29 by Zarutian

I2P

Zarutian: An start of an SAMv2 library for Tcl

  package require Tcl 8.5
  package provide i2p/sam2 0.1

  namespace eval i2p {}
  namespace eval i2p::sam2 {
    variable defaults { bridge {host localhost port none} type stream stream {limit none}}
    variable session_counter 0
    variable sessions
    proc new_session {params} {
      variable session_counter
      set i session[incr session_counter]
      variable defaults
      if {![dict exists $params type]}        { dict set params type   [dict get $defaults type] }
      if {![dict exists $params bridge]}      { dict set params bridge [dict get $defaults bridge] }
      if {![dict exists $params bridge host]} { dict set params bridge host [dict get $defaults bridge host] }
      if {![dict exists $params bridge port]} { dict set params bridge port [dict get $defaults bridge port] }
      if {![dict exists $params stream]}      { dict set params stream [dict get $defaults stream] }
      variable sessions
      dict set sessions $i sock [set sock [socket -async [dict get $params bridge host] [dict get $params bridge port]]]
      fconfigure $sock -buffering none -translation binary -encoding binary -blocking no
      fileevent $sock readable [list i2p::sam2::raw_recive_stage1 $i]
      puts $sock "HELLO VERSION MIN=2.0 MAX=2.0\n"
      flush $sock
      return $i
    }
    proc raw_recive_stage1 {session_id} {

    }
  }