Hello,
Here's some parts of cryptlib.streams rewritten to demonstrate some
ideas on stack effects.
! These setters are changed such that the handle is preserved.
: set-attribute ( handle attribute value -- handle )
pick >r cryptSetAttribute check-result r> ;
: set-attribute-string ( handle attribute value -- handle )
pick >r dup length swap string>char-alien swap
cryptSetAttributeString check-result r> ;
! Now init-crypt-stream is a 'filter' word:
: init-crypt-stream ( handle -- handle )
CRYPT_OPTION_NET_READTIMEOUT 1 set-attribute
CRYPT_SESSINFO_ACTIVE 1 set-attribute ;
! Assuming the alternative tuple semantics, the constructor becomes:
: <crypt-stream> ( handle -- stream )
init-crypt-stream default-buffer-size <buffer> set-delegate f <crypt-stream*>
dup >r <line-reader> r> <plain-writer> <duplex-stream> ;
! crypt-client becomes:
: crypt-client ( server port -- handle )
CRYPT_SESSION_SSL create-session
CRYPT_SESSINFO_SERVER_PORT rot set-attribute
CRYPT_SESSINFO_SERVER_NAME rot set-attribute-string ;
! crypt-client becomes:
: crypt-server ( port -- handle )
CRYPT_SESSION_SSL_SERVER create-session
CRYPT_SESSINFO_SERVER_PORT rot set-attribute ;
! crypt-login :
: crypt-login ( handle user pass -- handle )
>r >r CRYPT_SESSINFO_USERNAME r> set-attribute-string
CRYPT_SESSINFO_PASSWORD r> set-attribute-string ;
-------------------------------------------------------------------------
This SF.net email is sponsored by DB2 Express
Download DB2 Express C - the FREE version of DB2 express and take
control of your XML. No limits. Just data. Click to get it now.
http://sourceforge.net/powerbar/db2/
_______________________________________________
Factor-talk mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/factor-talk