/* * Created by 伝作 (Densaku). * Types & Messages generator written by フランスのトトロ aka (David RENÉ) * Date: 2019-05-17 * Time: 19:05:20 * */ transmit system/muscle.anubis transmit system/convert.anubis transmit tools/basis.anubis transmit types/generated/mime.anubis public type File_ref: file_ref( String path, //access ptah to the file on the original machine String name, //name of the file MIME mime, //mime type of the file String key, //key is a SHA1 gave by sender to certify it when it will be downloaded Int size //size of the file in Bytes ) . File_ref message format ======================= public define Message to_Message ( File_ref _file_ref )= with _file_ref_message = message((Word32)0), // forget(add_string(_file_ref_message, "__TYPE__", "File_ref")); if _file_ref is { //Alternative file_ref file_ref(_path, _name, _mime, _key, _size) then forget(add_string(_file_ref_message, "__TYPE_ALT__", "file_ref")); // [type = String] file_ref.path forget(add_string(_file_ref_message, "path", _path)); // [type = String] file_ref.name forget(add_string(_file_ref_message, "name", _name)); // [type = MIME] file_ref.mime forget(add_message(_file_ref_message, "mime", to_Message(_mime))); // [type = String] file_ref.key forget(add_string(_file_ref_message, "key", _key)); // [type = Int] file_ref.size forget(add_string(_file_ref_message, "size", to_String(_size))), }; _file_ref_message . public define Maybe(File_ref) from_Message ( Message _file_ref_message )= if find_string(_file_ref_message, "__TYPE__") is {failure then failure, success(__type__) then if find_string(_file_ref_message, "__TYPE_ALT__") is {failure then failure, success(__type_alt__) then if __type__ = "File_ref" then //Alternative file_ref if __type_alt__ = "file_ref" then //Alternative file_ref // [type = String] file_ref.path if find_string(_file_ref_message, "path") is {failure then failure, success(_path_) then // [type = String] file_ref.name if find_string(_file_ref_message, "name") is {failure then failure, success(_name_) then // [type = MIME] file_ref.mime if find_message(_file_ref_message, "mime") is {failure then failure, success(_mime__msg) then if (Maybe(MIME))from_Message(_mime__msg) is {failure then failure, success(_mime_) then // [type = String] file_ref.key if find_string(_file_ref_message, "key") is {failure then failure, success(_key_) then // [type = Int] file_ref.size if find_string(_file_ref_message, "size") is {failure then failure, success(__size_) then if decimal_scan(__size_) is { failure then failure, success(_size_) then success(file_ref(_path_, _name_, _mime_, _key_, _size_)) }}}}}}} else failure //No valid Alternative found ! else failure //Type not found in message ! }} .