portal Michała Hanćkowiaka
Begin main content
#wm withdraw .; wm withdraw .output; kons_font 13
  # tylko pod konsola2c
#lappend auto_path ~/tcl/tclws ~/tcl/tcllib
  # niepotrzebne, jesli uruchamiac przez tclkit_2

# ten przyklada zawiera typ "rekurencyjny" mojTyp2
# tj. zawiera pole "nast" wskazujace na siebie samego...
#

package re WS::Server
package re WS::Embeded
  #% 2.3.0

::WS::Server::Service -mode embedded -service qqq -ports 30000

# def typu "mojTyp"
WS::Utils::ServiceTypeDef Server qqq mojTyp {
  a {type string}
  b {type int}
}

# def typu "mojTyp2",
# ktory zawiera pole "nast" (do budowania list !!!)
# przyklad uzycia: proc met2a
WS::Utils::ServiceTypeDef Server qqq mojTyp2 {
  a {type float}
  nast {type mojTyp2}
}

::WS::Server::ServiceProc qqq {met2 {type mojTyp()}} {
  liczbaElem {type int}
} {zwraca sekwencje struktur typu mojTyp} {
  set w {}
  for {set i 0} {$i<$liczbaElem} {incr i} {
    lappend w [list a "a ku ku ($i)" b $i]
  }
  return [list met2Result $w]
}

# proc met2a zwraca liste zbudowana z mojTyp2...
# + prosze zwrocic uwage na sposob konczenia tej listy !!
#  (nie ma pola nast)
::WS::Server::ServiceProc qqq {met2a {type mojTyp2}} {
} {zwraca liste ???} {
  return [list met2aResult {a 1 nast {a 2 nast {a 3}}}]
}

::WS::Server::ServiceProc qqq {razyDwa {type int()}} {
  par1 {type int() comment {ciag liczb int}}
} {mnozy elementy ciagu razy 2} {
  set w {}
  foreach e $par1 {lappend w [expr {$e*2}]}
  return [list razyDwaResult $w]
}

::WS::Embeded::Listen 30000

vwait abc

uwaga: portal używa ciasteczek tylko do obsługi tzw. sesji...