diff --git a/src/boot/sysobj.reb b/src/boot/sysobj.reb index e8cd057a1c..f681ba77f4 100644 --- a/src/boot/sysobj.reb +++ b/src/boot/sysobj.reb @@ -247,8 +247,8 @@ standard: object [ actor: ; port action handler (script driven) awake: ; port awake function (event driven) state: ; internal state values (private) + extra: ; user-defined storage of local data data: ; data buffer (usually binary or block) - locals: ; user-defined storage of local data ; stats: ; stats on operation (optional) ] diff --git a/src/core/p-checksum.c b/src/core/p-checksum.c index 1d4d92320c..43501e4f42 100644 --- a/src/core/p-checksum.c +++ b/src/core/p-checksum.c @@ -133,7 +133,7 @@ ***********************************************************************/ { //REBVAL *data = BLK_SKIP(port, STD_PORT_DATA); - REBVAL *ctx = BLK_SKIP(port, STD_PORT_LOCALS); + REBVAL *ctx = BLK_SKIP(port, STD_PORT_EXTRA); if(!IS_BINARY(ctx)) { SET_BINARY(ctx, Make_Binary(ctx_size)); @@ -224,7 +224,7 @@ req = Use_Port_State(port, RDI_CHECKSUM, sizeof(REBREQ)); data = BLK_SKIP(port, STD_PORT_DATA); //will hold result - ctx = BLK_SKIP(port, STD_PORT_LOCALS); + ctx = BLK_SKIP(port, STD_PORT_EXTRA); int ctx_size = 0, blk_size = 0; Init_sizes(method, &blk_size, &ctx_size); diff --git a/src/mezz/prot-http.reb b/src/mezz/prot-http.reb index b46cae1c25..687df906c4 100644 --- a/src/mezz/prot-http.reb +++ b/src/mezz/prot-http.reb @@ -1,6 +1,6 @@ REBOL [ System: "REBOL [R3] Language Interpreter and Run-time Environment" - Title: "REBOL 3 HTTP protocol scheme" + Title: "Rebol3 HTTP protocol scheme" Name: http Type: module Rights: { @@ -141,7 +141,7 @@ read-sync-awake: func [event [event!] /local error][ ] http-awake: func [event /local port http-port state awake res][ port: event/port - http-port: port/locals + http-port: port/extra state: http-port/state if any-function? :http-port/awake [state/awake: :http-port/awake] awake: :state/awake @@ -792,7 +792,7 @@ sys/make-scheme [ ] conn/awake: :http-awake - conn/locals: port + conn/extra: port sys/log/info 'HTTP ["Opening connection:^[[22m" conn/spec/ref] open conn diff --git a/src/mezz/prot-mysql.reb b/src/mezz/prot-mysql.reb index b22e39bd49..c993fd457f 100644 --- a/src/mezz/prot-mysql.reb +++ b/src/mezz/prot-mysql.reb @@ -286,7 +286,7 @@ mysql-driver: make object! [ ] set 'change-type-handler func [p [port!] type [word!] blk [block!]][ - head change/only next find p/locals/conv-list type blk + head change/only next find p/extra/conv-list type blk ] convert-types: func [ @@ -295,12 +295,12 @@ mysql-driver: make object! [ /local row i convert-body action cols col conv-func tmp ][ ;;sys/log/more 'MySQL["converting types"] - cols: p/locals/current-result/columns + cols: p/extra/current-result/columns convert-body: make block! 1 action: [if tmp: pick row (i)] foreach col cols [ i: index? find cols col - if 'none <> conv-func: select p/locals/conv-list col/type [ + if 'none <> conv-func: select p/extra/conv-list col/type [ ;;sys/log/more 'MySQL["conv-func:" mold conv-func "for" col/type] append convert-body append/only compose action head insert* at compose [change at row (i) :tmp] 5 conv-func @@ -308,7 +308,7 @@ mysql-driver: make object! [ ] ;;sys/log/more 'MySQL["convert-body:" mold convert-body] if not empty? convert-body [ - either p/locals/result-options/flat? [ + either p/extra/result-options/flat? [ while [not tail? rows][ row: rows do convert-body @@ -532,10 +532,10 @@ mysql-driver: make object! [ scramble: func [data [string! none!] port [port!] /v10 /local seed][ if any [none? data empty? data][return make binary! 0] - seed: port/locals/crypt-seed + seed: port/extra/crypt-seed if v10 [return crypt-v10 data copy*/part seed 8] - either port/locals/protocol > 9 [ - either port/locals/auth-v11 [ + either port/extra/protocol > 9 [ + either port/extra/auth-v11 [ crypt-v11 to-binary data seed ][ crypt-v10 data seed @@ -598,7 +598,7 @@ mysql-driver: make object! [ to-string read-packet port ][ res: read-packet port - either all [cmd = defs/cmd/ping zero? port/locals/last-status][true][none] + either all [cmd = defs/cmd/ping zero? port/extra/last-status][true][none] ] ] @@ -637,17 +637,17 @@ mysql-driver: make object! [ while [16777215 <= length? data] [; size < 2**24 - 1 header: join #{FFFFFF} - write-byte port/locals/seq-num: port/locals/seq-num + 1 + write-byte port/extra/seq-num: port/extra/seq-num + 1 insert data header data: skip data 16777215 + length? header ] ;;sys/log/more 'MySQL["write function port state " open? tcp-port] ;if not open? tcp-port [open tcp-port] - ;sys/log/more 'MySQL["state:" tcp-port/locals/state] + ;sys/log/more 'MySQL["state:" tcp-port/extra/state] header: join write-int24 length? data - write-byte port/locals/seq-num: port/locals/seq-num + 1 + write-byte port/extra/seq-num: port/extra/seq-num + 1 insert data header head data @@ -658,12 +658,12 @@ mysql-driver: make object! [ ] send-cmd: func [port [port!] cmd [integer!] cmd-data] compose/deep [ - port/locals/seq-num: -1 - port/locals/current-cmd: cmd + port/extra/seq-num: -1 + port/extra/current-cmd: cmd ;sys/log/more 'MySQL["sending cmd:" cmd] send-packet port rejoin [ write-byte cmd - port/locals/current-cmd-data: + port/extra/current-cmd-data: switch/default cmd [ (defs/cmd/quit) [""] (defs/cmd/shutdown) [""] @@ -683,7 +683,7 @@ mysql-driver: make object! [ ][either string? cmd-data [cmd-data][pick cmd-data 1]] ] ;sys/log/more 'MySQL["sent a command"] - port/locals/state: 'sending-cmd + port/extra/state: 'sending-cmd ] insert-query: func [port [port!] data [string! block!]][ @@ -693,7 +693,7 @@ mysql-driver: make object! [ ] insert-all-queries: func [port [port!] data [string!] /local s e res d][ - d: port/locals/delimiter + d: port/extra/delimiter parse/all s: data [ any [ #"#" thru newline @@ -727,7 +727,7 @@ mysql-driver: make object! [ port [port!] /local pl ][ - pl: port/locals + pl: port/extra parse next port/data case [ pl/capabilities and defs/client/protocol-41 [ [ @@ -754,7 +754,7 @@ mysql-driver: make object! [ port [port!] /local pl status rules ][ - pl: port/locals + pl: port/extra sys/log/debug 'MySQL["parsing a packet:" mold port/data] pl/last-status: status: to integer! port/data/1 @@ -806,7 +806,7 @@ mysql-driver: make object! [ port [port!] /local pl qry ][ - pl: port/locals + pl: port/extra either empty? pl/o-buf [ pl/state: 'idle ][ @@ -820,7 +820,7 @@ mysql-driver: make object! [ evt-type /local mysql-port pl ][ - pl: port/locals + pl: port/extra mysql-port: pl/mysql-port sys/log/more 'MySQL ["Event:^[[22m" evt-type] case compose [ @@ -854,7 +854,7 @@ mysql-driver: make object! [ text-type infile-data ][ - pl: port/locals + pl: port/extra mysql-port: pl/mysql-port sys/log/more 'MySQL["processing a packet in state:" pl/state] sys/log/debug 'MySQL["buf:" mold buf] @@ -881,7 +881,7 @@ mysql-driver: make object! [ sys/log/more 'MySQL "handshaked" ;OK? emit-event port 'connect - ;sys/log/more 'MySQL["o-buf after auth resp:" mold port/locals/o-buf] + ;sys/log/more 'MySQL["o-buf after auth resp:" mold port/extra/o-buf] start-next-cmd port ] pl/stream-end?: true ;done or wait for a WROTE event @@ -891,7 +891,7 @@ mysql-driver: make object! [ if buf/1 = #"^(00)"[ emit-event port 'connect - ;sys/log/more 'MySQL["o-buf after old auth resp:" mold port/locals/o-buf] + ;sys/log/more 'MySQL["o-buf after old auth resp:" mold port/extra/o-buf] start-next-cmd port ] pl/stream-end?: true ;done or wait for a WROTE event @@ -1083,7 +1083,7 @@ mysql-driver: make object! [ pl/stream-end?: true sys/log/more 'MySQL["Emitting read event because of no more results"] emit-event port 'read - ;sys/log/more 'MySQL["o-buf after reading query resp:" mold port/locals/o-buf] + ;sys/log/more 'MySQL["o-buf after reading query resp:" mold port/extra/o-buf] start-next-cmd port exit ] @@ -1112,7 +1112,7 @@ mysql-driver: make object! [ ][ sys/log/more 'MySQL["processing a greeting packet"] tcp-port: port - pl: port/locals + pl: port/extra if data/1 = 255 [;error packet parse/all skip data 1 [ read-int (pl/error-code: int) @@ -1170,7 +1170,7 @@ mysql-driver: make object! [ port [port!] /local pl auth-pack path key ][ - pl: port/locals + pl: port/extra path: to binary! skip port/spec/path 1 auth-pack: either pl/capabilities and defs/client/protocol-41 [ rejoin [ @@ -1203,7 +1203,7 @@ mysql-driver: make object! [ ;------ Public interface ------ clear-data: func [ port ][ clear port/data - ;port/locals/tcp-port/spec/response: make binary! 0 + ;port/extra/tcp-port/spec/response: make binary! 0 ] tcp-awake: func [event @@ -1214,13 +1214,13 @@ mysql-driver: make object! [ packet-len ][ tcp-port: event/port - mysql-port: tcp-port/locals/mysql-port - pl: tcp-port/locals + mysql-port: tcp-port/extra/mysql-port + pl: tcp-port/extra pl/last-activity: now/precise sys/log/more 'MySQL["tcp event:" event/type] - ;sys/log/more 'MySQL["o-buf:" mold tcp-port/locals/o-buf] - ;;sys/log/more 'MySQL["locals:" mold tcp-port/locals] + ;sys/log/more 'MySQL["o-buf:" mold tcp-port/extra/o-buf] + ;;sys/log/more 'MySQL["locals:" mold tcp-port/extra] ;pl/exit-wait?: false switch event/type [ error [ @@ -1352,13 +1352,13 @@ mysql-driver: make object! [ options [object!] ][ ;;sys/log/more 'MySQL["inserting to " mold port] - ;sys/log/more 'MySQL["state:" port/locals/state] - either 'idle = port/locals/state [ + ;sys/log/more 'MySQL["state:" port/extra/state] + either 'idle = port/extra/state [ do-tcp-insert port data options ][ - append/only port/locals/o-buf reduce [data options] + append/only port/extra/o-buf reduce [data options] ] - ;sys/log/more 'MySQL[port/spec/scheme "o-buf:" mold port/locals/o-buf] + ;sys/log/more 'MySQL[port/spec/scheme "o-buf:" mold port/extra/o-buf] ] do-tcp-insert: func [ @@ -1368,7 +1368,7 @@ mysql-driver: make object! [ options [object!] /local pl res ][ - pl: port/locals + pl: port/extra ;sys/log/more 'MySQL["do-tcp-insert" mold data] pl/result-options: options @@ -1382,7 +1382,7 @@ mysql-driver: make object! [ insert-cmd port data ] ][ - either port/locals/capabilities and defs/client/protocol-41[ + either port/extra/capabilities and defs/client/protocol-41[ insert-query port data ][ insert-all-queries port data ;FIXME: not tested @@ -1407,7 +1407,7 @@ mysql-driver: make object! [ timeout: port/spec/timeout ] - conn/locals: make locals-class [ + conn/extra: make locals-class [ state: 'init mysql-port: port o-buf: make block! 10 @@ -1430,7 +1430,7 @@ mysql-driver: make object! [ ][ ;sys/log/more 'MySQL["converting results:" mold results] either any [ - port/locals/current-cmd != defs/cmd/query + port/extra/current-cmd != defs/cmd/query ][;results from multiple queries return results ][ @@ -1501,7 +1501,7 @@ sys/make-scheme [ /local pl cb mode spec ][ sys/log/more 'MySQL["mysql port event:" event/type] - pl: event/port/locals + pl: event/port/extra pl/last-activity: now/precise switch/default event/type [ connect [ @@ -1575,7 +1575,7 @@ sys/make-scheme [ ][ ;;sys/log/more 'MySQL" new open function " if none? port/spec/host [http-error "Missing host address"] - port/locals: make object! [ + port/extra: make object! [ handshaked?: false exit-wait-after-handshaked?: false pending-requests: copy [] @@ -1590,14 +1590,14 @@ sys/make-scheme [ ] open?: func [port [port!]][ - all [open? port/locals/tcp-port port/locals/handshaked?] + all [open? port/extra/tcp-port port/extra/handshaked?] ] close: func [ port [port!] /local tcp-port ][ - tcp-port: port/locals/tcp-port + tcp-port: port/extra/tcp-port tcp-port/spec/timeout: 4 if open? tcp-port [ try [;allow this to fail, so the port will always be closed @@ -1616,7 +1616,7 @@ sys/make-scheme [ data [block!] "hackish: if the first element in the block is an object, then it's an option object" /local tcp-port options pl query ][ - pl: port/locals + pl: port/extra tcp-port: pl/tcp-port options: data/1 either object? options [ @@ -1635,7 +1635,7 @@ sys/make-scheme [ ] sys/log/debug 'MySQL["inserting a query:" mold data mold pl/pending-requests] mysql-driver/tcp-insert tcp-port query options - ;sys/log/debug 'MySQL["tcp-port locals after insert" mold tcp-port/locals] + ;sys/log/debug 'MySQL["tcp-port locals after insert" mold tcp-port/extra] ] copy: func [ @@ -1663,7 +1663,7 @@ send-sql: func [ /verbose "return detailed info" /local result pl old-handshaked? ret-from-wait ][ - pl: port/locals + pl: port/extra unless any [async open? port] [ cause-error 'Access 'not-connected reduce [port none none] @@ -1688,14 +1688,14 @@ send-sql: func [ old-handshaked?: pl/handshaked? while [pl/last-activity + port/spec/timeout >= now/precise][ ;will not return unless: 1) handshaked, 2) sync request processed, or 3) error - ret-from-wait: wait/only [port port/locals/tcp-port port/spec/timeout] + ret-from-wait: wait/only [port port/extra/tcp-port port/spec/timeout] either port = ret-from-wait [ ;assert [empty? pl/pending-requests] ;sys/log/more 'MySQL["port/data:" mold port/data] return port/data ][ if port? ret-from-wait [ - assert [ret-from-wait = port/locals/tcp-port] + assert [ret-from-wait = port/extra/tcp-port] print ["******* Unexpected wakeup from tcp-port *********"] ] ;sys/log/more 'MySQL"wait returned none" @@ -1717,8 +1717,8 @@ connect-sql: func [ /local p ][ if any [url? port not open? port][ port: open port ] - port/locals/exit-wait-after-handshaked?: true - p: wait/only [port port/locals/tcp-port port/spec/timeout] + port/extra/exit-wait-after-handshaked?: true + p: wait/only [port port/extra/tcp-port port/spec/timeout] if port? p [return port] throw-timeout port ] diff --git a/src/mezz/prot-tls.reb b/src/mezz/prot-tls.reb index b3cdaa8ccf..0f1c8c141a 100644 --- a/src/mezz/prot-tls.reb +++ b/src/mezz/prot-tls.reb @@ -1087,7 +1087,7 @@ do-commands: func [ log-error "Timeout" ;? ctx ? ctx/connection - send-event 'close ctx/connection/locals + send-event 'close ctx/connection/extra do make error! "port timeout" ] ] @@ -1662,7 +1662,7 @@ send-event: function[ TLS-awake: function [event [event!]][ log-more ["AWAKE:^[[1m" event/type] TCP-port: event/port - TLS-port: TCP-port/locals + TLS-port: TCP-port/extra TLS-awake: :TLS-port/awake if all [ @@ -1700,10 +1700,10 @@ TLS-awake: function [event [event!]][ ] TLS-error *Alert/Close_notify ] - if error? TLS-port/locals/state [ + if error? TLS-port/extra/state [ ; upper protocol was already closed and reports the error in its state ; it's safe to throw the error now - do TLS-port/locals/state + do TLS-port/extra/state ] ; in case that the upper protocol is not yet closed, store error and report it if TLS-port/state [ TLS-port/state/error: error ] @@ -1829,7 +1829,7 @@ sys/make-scheme [ port/data: port/state/port-data conn/awake: :TLS-awake - conn/locals: port + conn/extra: port open conn port ] diff --git a/src/mezz/prot-whois.reb b/src/mezz/prot-whois.reb index 0120f07df5..badb765cf9 100644 --- a/src/mezz/prot-whois.reb +++ b/src/mezz/prot-whois.reb @@ -28,7 +28,7 @@ sys/make-scheme [ awake: func [event /local port parent] [ sys/log/debug 'WHOIS ["Awake:^[[22m" event/type] port: event/port - parent: port/locals + parent: port/extra switch event/type [ lookup [ open port ] connect [ @@ -87,7 +87,7 @@ sys/make-scheme [ port-id: port/spec/port-id ref: rejoin [tcp:// host #":" port-id] ] - conn/locals: port + conn/extra: port conn/awake: :awake open conn port diff --git a/src/mezz/view-funcs.reb b/src/mezz/view-funcs.reb index dfda37c6c2..8e2a9ecd52 100644 --- a/src/mezz/view-funcs.reb +++ b/src/mezz/view-funcs.reb @@ -89,7 +89,7 @@ view: func [ ] ; Set up default handler... if all [ - empty? system/view/event-port/locals/handlers ; ...if there is no other handler + empty? system/view/event-port/extra/handlers ; ...if there is no other handler not opts/handler ; ...and user did not provide one ][ handle-events [ @@ -189,7 +189,7 @@ handle-events: func [ /local sys-hand ][ handler: make base-handler handler - sys-hand: system/view/event-port/locals/handlers + sys-hand: system/view/event-port/extra/handlers ; First check if there is not any handler with such a name... forall sys-hand [ if handler/name = sys-hand/1/name [ @@ -214,7 +214,7 @@ unhandle-events: func [ "Removes a handler from the view event system." handler [object!] ][ - remove find system/view/event-port/locals/handlers handler + remove find system/view/event-port/extra/handlers handler exit ] @@ -222,7 +222,7 @@ handled-events?: func [ "Returns event handler object matching a given name." name ][ - foreach hand system/view/event-port/locals/handlers [ + foreach hand system/view/event-port/extra/handlers [ if hand/name = name [return hand] ] none @@ -254,11 +254,11 @@ init-view-system: func [ system/view/event-port: ep ; Create block of event handlers: - ep/locals: object [handlers: copy []] + ep/extra: object [handlers: copy []] ; Global event handler for view system: ep/awake: func [event /local h] [ - h: event/port/locals/handlers + h: event/port/extra/handlers while [ ; (no binding needed) all [event not tail? h] ][ diff --git a/src/modules/httpd.reb b/src/modules/httpd.reb index 83e03c2d87..3791953fa3 100644 --- a/src/modules/httpd.reb +++ b/src/modules/httpd.reb @@ -200,18 +200,18 @@ sys/make-scheme [ Open: func [port [port!]][ ; probe port/spec sys/log/info 'HTTPD ["Opening server at port:^[[22m" port/spec/port-id] - port/locals: make object! [ + port/extra: make object! [ subport: open compose [ scheme: 'tcp port-id: (port/spec/port-id) ] subport/awake: :port/scheme/awake-server - subport/locals: make object! [ + subport/extra: make object! [ parent: port config: none clients: make block! 16 ] - subport/locals/config: + subport/extra/config: config: make object! [ root: system/options/home index: [%index.html %index.htm] @@ -219,14 +219,14 @@ sys/make-scheme [ server-name: "Rebol3-HTTPD" ] ] - port/state: port/locals/subport/locals/clients + port/state: port/extra/subport/extra/clients port/awake: :awake-client port ] Close: func [port [port!]][ sys/log/info 'HTTPD ["Closing server at port:^[[22m" port/spec/port-id] - close port/locals/subport + close port/extra/subport ] On-Accept: func [ctx [object!]][ true ] @@ -495,7 +495,7 @@ sys/make-scheme [ ] Respond: function [port [port!]][ - ctx: port/locals + ctx: port/extra out: ctx/out sys/log/info 'HTTPD ["Respond:^[[22m" out/status status-codes/(out/status) length? out/content] ; send the response header @@ -597,7 +597,7 @@ sys/make-scheme [ event [event!] ][ port: event/port - ctx: port/locals + ctx: port/extra inp: ctx/inp out: ctx/out @@ -636,7 +636,7 @@ sys/make-scheme [ break ] ] - actor/on-read port/locals + actor/on-read port/extra ][ print system/state/last-error ctx/state: 'error @@ -692,7 +692,7 @@ sys/make-scheme [ ] CLOSE [ sys/log/info 'HTTPD ["Closing:^[[22m" ctx/remote] - if pos: find ctx/parent/locals/clients port [ remove pos ] + if pos: find ctx/parent/extra/clients port [ remove pos ] close port ] ] @@ -705,7 +705,7 @@ sys/make-scheme [ ACCEPT [ New-Client event/port ] CLOSE [ close event/port - close event/port/locals/parent + close event/port/extra/parent ] ] true @@ -723,7 +723,7 @@ sys/make-scheme [ return false ] client/awake: :Awake-Client - client/locals: make object! [ + client/extra: make object! [ state: none parent: port remote-ip: info/remote-ip @@ -748,27 +748,27 @@ sys/make-scheme [ requests: 0 ; number of already served requests per connection ] ;? port - client/locals/config: port/locals/config - append port/locals/clients client + client/extra/config: port/extra/config + append port/extra/clients client - sys/log/info 'HTTPD ["New client:^[[1;31m" client/locals/remote] + sys/log/info 'HTTPD ["New client:^[[1;31m" client/extra/remote] try/except [read client][ - print ["** Failed to read new client:" client/locals/remote] + print ["** Failed to read new client:" client/extra/remote] print system/state/last-error ] ] End-Client: function [port [port!]][ - ctx: port/locals + ctx: port/extra Do-log ctx - clients: ctx/parent/locals/clients + clients: ctx/parent/extra/clients keep-alive: ctx/config/keep-alive either all [ keep-alive open? port ctx/requests <= keep-alive/2 ; limit to max requests - "close" <> select port/locals/inp/Header 'Connection ; client don't want or cannot handle persistent connection + "close" <> select port/extra/inp/Header 'Connection ; client don't want or cannot handle persistent connection ][ ctx/requests: ctx/requests + 1 sys/log/info 'HTTPD ["Keep-alive:^[[22m" ctx/remote "requests:" ctx/requests] @@ -801,10 +801,10 @@ sys/make-scheme [ ;sys/log/debug 'HTTPD ["Check-Clients:" length? port/state #"-" now] if block? port/state [ foreach client reverse copy port/state [ - ;sys/log/debug 'HTTPD ["Checking:" client/locals/remote client/locals/timeout] + ;sys/log/debug 'HTTPD ["Checking:" client/extra/remote client/extra/timeout] try [ if all [ - date? tmc: client/locals/timeout + date? tmc: client/extra/timeout tm >= tmc ][ Awake-Client make event! [type: 'CLOSE port: client] @@ -831,11 +831,11 @@ http-server: function [ file? spec/root [spec/root: dirize clean-path spec/root] none? spec/root [spec/root: what-dir] ] - append server/locals/config spec + append server/extra/config spec ] unless system/options/quiet [ - ? server/locals/config + ? server/extra/config ] if actor [ @@ -845,7 +845,7 @@ http-server: function [ ] unless no-wait [ forever [ - p: wait [server server/locals/subport 15] + p: wait [server server/extra/subport 15] if all [port? p not open? p] [ return p/data ]