\ Tor specific words. require libs/parser/parser.4th create proxyline-parser PARSER_SIZE allot : (expect&skip) ( str -- ) tuck parser>>string invert abort" parsing exception" parser>> ; : (extract-before) ( str -- ) parser-mark (expect&skip) 1 parser<< parser-extract 1 parser>> ; : (hexstr>value) ( str -- n ) hex 2>r 0 0 2r> >number 2drop d>s decimal ; : (parse-circuitid) ( -- circuitid-n ) s" :" (extract-before) pad place s" " (extract-before) pad +place pad count (hexstr>value) ; : proxyline>circuitid ( line-str -- circuitid-n remaining-str ) proxyline-parser new-parser s" PROXY TCP6 fc00:dead:beef:4dad::" (expect&skip) (parse-circuitid) s\" \r\n" (expect&skip) parser-remaining ; \ TODO: removeme : proxyline-test1 ( -- ) s\" PROXY TCP6 fc00:dead:beef:4dad::ffff:ffff ::1 65535 42\r\n" proxyline>circuitid 2drop 4294967295 <> abort" ASDF" ; : proxyline-test2 ( -- ) s\" PROXY TCP6 fc00:dead:beef:4dad::AABB:CCDD ::1 65535 42\r\n" proxyline>circuitid 2drop 2864434397 <> abort" ASDF" ; proxyline-test1 proxyline-test2