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

Reply via email to