<title>Europagate WWW index</title>
</head>
<body>
-<h2>Europagate WWW index, $Id: egwindex.html,v 1.8 1996/01/26 17:41:25 adam Exp $</h2>
+<h2>Europagate WWW index, $Id: egwindex.html,v 1.9 1996/01/29 17:31:45 adam Exp $</h2>
<p>
<ul>
<li>
- <a href="http://localhost/cgi-bin/egwcgi/egwirtcl/targets.egw">
+ <a href="http:/cgi-bin/egwcgi/egwirtcl/targets.egw">
single target</a>
<li>
- <a href="http://localhost/cgi-bin/egwcgi/egwirtcl/targets.egw/1+1">
+ <a href="http:/cgi-bin/egwcgi/egwirtcl/targets.egw/1+1">
single target with debug and html3</a>
<li>
- <a href="http://localhost/cgi-bin/egwcgi/egwirtcl/targets.egw/0+1">
+ <a href="http:/cgi-bin/egwcgi/egwirtcl/targets.egw/0+1">
single target with debug and html2</a>
<li>
- <a href="http://localhost/cgi-bin/egwcgi/egwirtcl/mtargets.egw">
+ <a href="http:/cgi-bin/egwcgi/egwirtcl/mtargets.egw">
multiple targets</a>
<li>
- <a href="http://localhost/cgi-bin/egwcgi/egwirtcl/mtargets.egw/1+1">
+ <a href="http:/cgi-bin/egwcgi/egwirtcl/mtargets.egw/1+1">
multiple targets with debug and html3</a>
<li>
- <a href="http://localhost/cgi-bin/egwcgi/egwirtcl/mtargets.egw/1+1">
+ <a href="http:/cgi-bin/egwcgi/egwirtcl/mtargets.egw/1+1">
multiple targets with debug and html2</a>
</ul>
</body>
#
-# $Id: z39util.tcl,v 1.27 1996/01/26 17:41:26 adam Exp $
+# $Id: z39util.tcl,v 1.28 1996/01/29 17:31:48 adam Exp $
#
proc saveState {} {
uplevel #0 {
incr zleft -1
}
-proc search-m-response {setNo i} {
+proc search-m-response {setNo i start number} {
global zleft
global zstatus
+ global hist
- incr zleft -1
- set zstatus($i) 2
+ egw_log debug "search-m-response"
+ set status [z39$i.$setNo responseStatus]
+ egw_log debug "search-m-response1"
+ if {[lindex $status 0] != "DBOSD"} {
+ egw_log debug "search-m-response2"
+ incr zleft -1
+ set zstatus($i) 2
+ return
+ }
+ set nor [z39$i.$setNo numberOfRecordsReturned]
+ egw_log debug "search-m-response3"
+ set hist($setNo,$i,offset) [expr $start + $nor -1]
+ if {[expr $nor + $start] >= [z39$i.$setNo resultCount]} {
+ egw_log debug "search-m-response4"
+ incr zleft -1
+ set zstatus($i) 2
+ return
+ }
+ egw_log debug "search-m-response5"
+ if {$nor >= $number} {
+ egw_log debug "search-m-response6"
+ incr zleft -1
+ set zstatus($i) 2
+ return
+ }
+ egw_log debug "search-m-response7"
+ set start [expr $start + $nor]
+ set number [expr $number - $nor]
+ if {[expr $start + $number - 1] > [z39$i.$setNo resultCount]} {
+ set number [expr [z39$i.$setNo resultCount] - $start + 1]
+ }
+ z39$i callback [list search-m-response $setNo $i $start $number]
+ egw_log debug "mpresent start=$number number=$number"
+ z39$i.$setNo present $start $number
}
-proc z39msearch {setNo piggy elements} {
+proc z39msearch {setNo elements start number cache} {
global zleft
global zstatus
global hist
for {set i 1} {$i <= $not} {incr i} {
set host $hist($setNo,$i,host)
- if {[catch {z39 failback fail-response}]} {
+ if {[catch [list z39$i failback fail-m-response $i]]} {
ir z39$i
}
- if {[catch {set oldHost [z39$i connect]}]} {
- set oldHost ""
- }
+ set oldHost [z39$i connect]
set thisHost [splitHostSpec $host]
if {$oldHost != $thisHost} {
catch {z39$i disconnect}
set host $hist($setNo,$i,host)
set thisHost [splitHostSpec $host]
if {$oldHost == $thisHost} {
- set zstatus($i) 1
continue
}
+ egw_log debug "old=$oldHost this=$thisHost"
z39$i idAuthentication $hist($setNo,$i,idAuthentication)
html "Connecting to target " $thisHost " <br>\n"
set zstatus($i) -1
}
while {$zleft > 0} {
egw_log debug "Waiting for init response"
- if {[catch {egw_wait zleft 10}]} {
+ if {[catch {egw_wait zleft 20}]} {
break
}
}
set zleft 0
for {set i 1} {$i <= $not} {incr i} {
html "host " [splitHostSpec $hist($setNo,$i,host)] ": "
- if {$zstatus($i) >= 1} {
- html "ok <br>\n"
+ egw_log debug "i=$i zstatus=$zstatus($i)"
+ if {$zstatus($i) < 1} {
+ html "fail<br>\n"
+ continue
+ }
+ if {[catch [list z39$i.$setNo preferredRecordSyntax USMARC]]} {
+ html "ok<br>\n"
ir-set z39$i.$setNo z39$i
set hist($setNo,$i,offset) 0
eval z39$i.$setNo databaseNames $hist($setNo,$i,database)
}
z39$i.$setNo smallSetElementSetNames $thisElements
z39$i.$setNo mediumSetElementSetNames $thisElements
+ z39$i.$setNo elementSetNames $thisElements
z39$i.$setNo recordElements $thisElements
z39$i.$setNo preferredRecordSyntax USMARC
- z39$i callback [list search-m-response $setNo $i]
+ z39$i callback [list search-m-response $setNo $i $start $number]
- if {$piggy} {
+ if {$start == 1} {
z39$i.$setNo largeSetLowerBound 999999
z39$i.$setNo smallSetUpperBound 0
- z39$i.$setNo mediumSetPresentNumber $hist($setNo,maxPresent)
+ z39$i.$setNo mediumSetPresentNumber $number
} else {
z39$i.$setNo largeSetLowerBound 2
z39$i.$setNo smallSetUpperBound 0
z39$i.$setNo mediumSetPresentNumber 0
}
set zstatus($i) 1
- egw_log debug "search " $hist($setNo,$i,query)
+ incr zleft
+ egw_log debug "setNo=$setNo msearch " $hist($setNo,$i,query)
z39$i.$setNo search $hist($setNo,$i,query)
+ } elseif {[z39$i.$setNo resultCount] >= $start} {
+ if {[expr $start + $number - 1] > [z39$i.$setNo resultCount]} {
+ set tnumber [expr [z39$i.$setNo resultCount] - $start + 1]
+ } else {
+ set tnumber $number
+ }
+ if {![lindex $targets($hist($setNo,$i,host)) 5]} {
+ set thisElements {}
+ } else {
+ set thisElements $elements
+ }
+ z39$i.$setNo smallSetElementSetNames $thisElements
+ z39$i.$setNo mediumSetElementSetNames $thisElements
+ z39$i.$setNo elementSetNames $thisElements
+ z39$i.$setNo recordElements $thisElements
+
+ for {set n 0} {$n < $tnumber} {incr n} {
+ if {[z39$i.$setNo type [expr $start + $n]] == ""} {
+ if {$n > 0} {
+ egw_log debug "failed on $n"
+ }
+ break
+ }
+ }
+ if {$n == $tnumber} {
+ html "cached<br>\n"
+ continue
+ }
+
+ html "present<br>\n"
+ z39$i.$setNo preferredRecordSyntax USMARC
+ z39$i callback [list search-m-response $setNo $i $start $tnumber]
incr zleft
+ egw_log debug "mpresent start=$start number=$tnumber"
+ z39$i.$setNo present $start $tnumber
} else {
- html "fail <br>\n"
+ html "ok<br>\n"
}
}
while {$zleft > 0} {
- egw_log debug "Waiting for search response"
- if {[catch {egw_wait zleft 30}]} {
+ egw_log debug "Waiting for search/present response"
+ if {[catch {egw_wait zleft 60}]} {
break
}
}
for {set i 1} {$i <= $not} {incr i} {
if {$zstatus($i) != 2} continue
set status [z39$i.$setNo responseStatus]
- if {[lindex $status 0] != "NSD"} {
+ if {0 && [lindex $status 0] != "NSD"} {
set hist($setNo,$i,offset) [z39$i.$setNo numberOfRecordsReturned]
}
}
proc maintenance {} {
html {<hr>This page is maintained by }
html {<a href="mailto:pwh@dtv.dk"> Peter Wad Hansen </a>.}
- html {Last modified 26. january 1996. <br>}
+ html {Last modified 29. january 1996. <br>}
html {<em> This and the following pages are under construction and }
html {will continue to be so until the end of January 1996.</em>}
}