• Home
  • History
  • Annotate
  • Raw
  • Download
  • only in /macosx-10.9.5/tcl-102/tcl_ext/mk4tcl/metakit/tcl/tequila/

Lines Matching refs:view

25 #   tqs_external(view)  - directory name, set for each external view
31 # tqs_notify($view) - socket name of client to notify on changes
70 # define a view (Metakit's equivalent concept for a Tcl array)
74 proc TqsDefine {view {clear 0} {type S}} {
77 set tqs_external($view) ""
79 catch {file delete -force $view.data}
80 tqsTrace $view "" u
82 file mkdir $view.data
83 #catch {mk::view delete tqs.$view}
85 mk::view layout tqs.$view "name text:$type date:I"
86 if {$clear && [mk::view size tqs.$view] > 0} {
87 mk::view size tqs.$view 0
88 tqsTrace $view "" u
90 #file delete -force $view.data
95 # get rid of a view
96 proc TqsUndefine {view} {
98 if {[info exists tqs_external($view)]} {
99 file delete -force $view.data
100 unset tqs_external($view)
102 mk::view delete tqs.$view
104 tqsTrace $view "" u
108 # return the list of all keys, like "array names view"
109 proc TqsNames {view} {
112 if {[info exists tqs_external($view)]} {
113 foreach x [glob -nocomplain $view.data/*] {
118 mk::loop c tqs.$view {
125 # return the number of keys, like "array size view"
126 proc TqsSize {view} {
129 if {[info exists tqs_external($view)]} {
130 set result [llength [glob -nocomplain $view.data/*]]
132 set result [mk::view size tqs.$view]
137 # return an existing value, lookup by key, like "set view(key)"
138 proc TqsGet {view key} {
140 if {[info exists tqs_external($view)]} {
141 set fd [open $view.data/$key]
147 set n [mk::select tqs.$view name $key]
148 mk::get tqs.$view!$n text ;# throws error if absent
152 # store a value, create if necessary, like "set view(key) data"
154 proc TqsSet {view key data {timestamp ""}} {
156 if {[info exists tqs_external($view)]} {
157 set fd [open $view.data/$key w]
163 set n [mk::select tqs.$view name $key]
165 set n [mk::view size tqs.$view]
166 } elseif {[mk::get tqs.$view!$n text] == $data} {
172 mk::set tqs.$view!$n name $key text $data date $timestamp
174 tqsTrace $view $key w
179 proc TqsAppend {view key data} {
181 if {[info exists tqs_external($view)]} {
182 set fd [open $view.data/$key a]
187 set n [mk::select tqs.$view name $key]
190 set data "[mk::get tqs.$view!$n text]$data"
192 mk::set tqs.$view!$n name $key text $data date [clock seconds]
194 tqsTrace $view $key w
198 # delete an existing entry by key, similar to "unset view(key)"
199 proc TqsUnset {view key} {
201 if {[info exists tqs_external($view)]} {
202 file delete $view.data/$key
204 set n [mk::select tqs.$view name $key]
208 mk::row delete tqs.$view!$n
210 tqsTrace $view $key u
214 # return all key/value pairs, like "array get view"
216 proc TqsGetAll {view {tracking 0}} {
219 if {[info exists tqs_external($view)]} {
220 foreach x [TqsNames $view] {
221 lappend result $x [TqsGet $view $x]
224 mk::loop c tqs.$view {
228 if {$tracking} { tqsSubscribe $view }
235 proc TqsListing {view {tracking 0}} {
238 if {[info exists tqs_external($view)]} {
239 foreach x [TqsNames $view] {
240 lappend result $x [file mtime $view.data/$x]
243 mk::loop c tqs.$view {
247 if {$tracking} { tqsSubscribe $view }
252 proc tqsSubscribe {view} {
255 # remember the client IP and listening number for this view
256 tqsPuts 1 "Notification set up for '$view': $tqs_info(port)"
257 lappend tqs_notify($view) $tqs_info(port)
279 # set a number of key/value pairs, like "array set view pairs"
280 proc TqsSetAll {view pairs} {
282 TqsSet $view $key $value
315 # handles tracing of all view changes (there's no read tracing)
317 proc tqsTrace {view key operation} {
320 if [info exists tqs_notify($view)] {
322 w { set req [list Set $view $key [TqsGet $view $key]] }
323 u { set req [list Unset $view $key] }
329 foreach p $tqs_notify($view) {
337 tqsPuts 1 "Notify to $p failed for $view $key"