Many hyperlinks are disabled.
Use anonymous login
to enable hyperlinks.
Overview
| Comment: | Fix off-by-one sync problem |
|---|---|
| Timelines: | family | ancestors | descendants | both | trunk |
| Files: | files | file ages | folders |
| SHA1: |
11076b178ebe084b32e03919c11c736c |
| User & Date: | bernd 2016-08-18 13:08:49.604 |
Context
|
2016-08-18
| ||
| 13:48 | Bump version number check-in: 1b704982af user: bernd tags: trunk, 0.1.7-20160818 | |
| 13:08 | Fix off-by-one sync problem check-in: 11076b178e user: bernd tags: trunk | |
|
2016-08-17
| ||
| 23:51 | Better syncing check-in: 55b63763a0 user: bernd tags: trunk | |
Changes
Changes to net2o-file.fs.
| ︙ | ︙ | |||
235 236 237 238 239 240 241 |
event: ->termfile ( o -- ) dup termfile ! >o form term-w ! term-h ! o>
termserver-in termserver-out ;
event: ->termclose ( -- ) termfile off default-in default-out ;
:noname ( addr u -- u )
fs-limit 64@ 64>n fs-inbuf $@len - min tuck fs-inbuf $+!
| | | 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 |
event: ->termfile ( o -- ) dup termfile ! >o form term-w ! term-h ! o>
termserver-in termserver-out ;
event: ->termclose ( -- ) termfile off default-in default-out ;
:noname ( addr u -- u )
fs-limit 64@ 64>n fs-inbuf $@len - min tuck fs-inbuf $+!
fs-size 64@ fs-inbuf $@len u>64 64= fs-inbuf $@len 0<> and IF
<event o elit, ->file-done parent @ .wait-task @ event>
THEN ; termserver-class to fs-write
:noname ( addr u -- u ) fs-outbuf $@len umin >r
fs-outbuf $@ r@ umin rot swap move
fs-outbuf 0 r@ $del r> ; termserver-class to fs-read
:noname ( addr u 64n -- ) 64drop 2drop
[: termserver-tasks $@ 0= !!no-termserver!!
|
| ︙ | ︙ |
Changes to net2o-msg.fs.
| ︙ | ︙ | |||
473 474 475 476 477 478 479 |
:noname ( -- 64len )
\ poll serializes the
fs-outbuf $off
fs-path $@ 2 64s /string ?msg-log
last# msg-log@ over >r
fs-path $@ drop le-64@ last# cell+ $search[]date \ start index
| | > < | 473 474 475 476 477 478 479 480 481 482 483 484 485 486 487 488 489 490 491 492 493 494 495 496 497 498 |
:noname ( -- 64len )
\ poll serializes the
fs-outbuf $off
fs-path $@ 2 64s /string ?msg-log
last# msg-log@ over >r
fs-path $@ drop le-64@ last# cell+ $search[]date \ start index
fs-path $@ drop 64'+ le-64@ last# cell+ $search[]date 1+ \ end index
last# cell+ $[]# 1- umin over - >r
cells safe/string r> cells umin
req? @ >r req? off serialize-log r> req? ! fs-outbuf $!buf
r> free throw
fs-outbuf $@len u>64 ; msgfs-class is fs-poll
:noname ( addr u mode -- )
\G addr u is starttick endtick name concatenated together
fs-close drop fs-path $! fs-poll fs-size!
; msgfs-class is fs-open
: msg-file-done ( -- )
fs-close parent @ >o
file-count @ 0< IF file-count off
ELSE file-count @ 0= IF
." === sync done ===" forth:cr
file-reg# off file-count off
msg-group$ $@ ?msg-log last# cell+ $[]#
sync-date 64@ date>i 1+ - 0 max
?dup-IF last# $@ rot display-lastn THEN
|
| ︙ | ︙ | |||
508 509 510 511 512 513 514 515 516 517 518 519 520 521 |
:noname ( -- )
fs-path @ 0= ?EXIT
fs-path $@ 2 64s /string >group
replay-mode @ >r replay-mode on
fs-inbuf $@ dup IF msg-eval ELSE 2drop THEN fs-inbuf $off
r> replay-mode !
fs-path $off
; msgfs-class is fs-close
:noname ( perm -- )
perm%msg and 0= !!msg-perm!!
; msgfs-class to fs-perm?
:noname ( -- date perm )
64#0 0 ; msgfs-class is fs-get-stat
:noname ( date perm -- )
| > | 508 509 510 511 512 513 514 515 516 517 518 519 520 521 522 |
:noname ( -- )
fs-path @ 0= ?EXIT
fs-path $@ 2 64s /string >group
replay-mode @ >r replay-mode on
fs-inbuf $@ dup IF msg-eval ELSE 2drop THEN fs-inbuf $off
r> replay-mode !
fs-path $off
-1 parent @ .file-count +!
; msgfs-class is fs-close
:noname ( perm -- )
perm%msg and 0= !!msg-perm!!
; msgfs-class to fs-perm?
:noname ( -- date perm )
64#0 0 ; msgfs-class is fs-get-stat
:noname ( date perm -- )
|
| ︙ | ︙ |