{"body":"(defun recv-string-or-array-bytes (socket &key dontwait (encoding cffi:*default-foreign-encoding*))\n  \"Receive a message part from a socket as a string.\"\n  (pzmq:with-message msg\n    (pzmq:msg-recv msg socket :dontwait dontwait)\n    (values\n     (let* ((data (pzmq:msg-data msg))\n            (len (pzmq:msg-size msg))\n            (all-graphic-p (loop for index from 0 below len\n                                 always (graphic-char-p (cffi:mem-aref data :uint8 index)))))\n       (if all-graphic-p\n           (cffi:foreign-string-to-lisp data :count len :encoding encoding)\n           (let ((array-bytes (make-array len :element-type 'ext:byte8)))\n             (loop for index from 0 below len\n                   do (setf (aref array-bytes index) (cffi:mem-aref data :uint8 index)))\n             array-bytes)))\n     (pzmq:getsockopt socket :rcvmore))))\n","name":"","extension":"txt","url":"https://www.irccloud.com/pastebin/PHHt4I89","modified":1534143570,"id":"PHHt4I89","size":852,"lines":16,"own_paste":false,"theme":"","date":1534143570}