var searchIndex = {}; searchIndex["safe_core"] = {"doc":"#Safe-Core Library\n[Project github page](https://github.com/maidsafe/safe_core)","items":[[0,"core","safe_core","Core module",null,null],[0,"id","safe_core::core","Public and Private Id types",null,null],[3,"MaidTypeTags","safe_core::core::id","TypeTags for Maid type variants",null,null],[3,"MpidTypeTags","","TypeTags for Maid type variants",null,null],[0,"id_type","","Maid",null,null],[3,"IdType","safe_core::core::id::id_type","IdType",null,null],[11,"decode","","",0,{"inputs":[{"name":"__d"}],"output":{"name":"result"}}],[11,"encode","","",0,null],[11,"eq","","",0,null],[11,"ne","","",0,null],[11,"fmt","","",0,null],[11,"clone","","",0,null],[11,"new","","Invoked to create an instance of IdType",0,{"inputs":[{"name":"revocationidtype"}],"output":{"name":"idtype"}}],[11,"name","","Returns name",0,null],[11,"public_keys","","Returns the PublicKeys",0,null],[11,"secret_keys","","Returns the PublicKeys",0,null],[11,"sign","","Signs the data with the SecretKey and returns the Signed data",0,null],[11,"seal","","Encrypts and authenticates data. It returns a ciphertext and the Nonce.",0,null],[11,"open","","Verifies and decrypts the data",0,null],[0,"public_id_type","safe_core::core::id","PublicMaid",null,null],[3,"PublicIdType","safe_core::core::id::public_id_type","PublicIdType",null,null],[11,"decode","","",1,{"inputs":[{"name":"__d"}],"output":{"name":"result"}}],[11,"encode","","",1,null],[11,"eq","","",1,null],[11,"ne","","",1,null],[11,"fmt","","",1,null],[11,"clone","","",1,null],[11,"new","","An instanstance of the PublicIdType can be created using the new()",1,{"inputs":[{"name":"idtype"},{"name":"revocationidtype"}],"output":{"name":"publicidtype"}}],[11,"name","","Returns the name",1,null],[11,"public_keys","","Returns the PublicKeys",1,null],[11,"revocation_public_key","","Returns revocation public key",1,null],[11,"signature","","Returns the Signature of PublicIdType",1,null],[0,"revocation_id_type","safe_core::core::id","AnMaid",null,null],[3,"RevocationIdType","safe_core::core::id::revocation_id_type","RevocationIdType",null,null],[11,"decode","","",2,{"inputs":[{"name":"__d"}],"output":{"name":"result"}}],[11,"encode","","",2,null],[11,"eq","","",2,null],[11,"ne","","",2,null],[11,"fmt","","",2,null],[11,"clone","","",2,null],[11,"new","","An instance of RevocationIdType can be created by invoking the new()\nDefault contructed RevocationIdType instance is returned",2,{"inputs":[],"output":{"name":"revocationidtype"}}],[11,"name","","Returns name",2,null],[11,"type_tags","","Returns type tags",2,null],[11,"type_tag","","Returns type tag",2,null],[11,"secret_key","","Returns the SecretKey of the RevocationIdType",2,null],[11,"public_key","","Returns the PublicKey of the AnMaid",2,null],[11,"sign","","Signs the data with the SecretKey of the AnMaid and recturns the Signed Data",2,null],[0,"data_tags","safe_core::core::id","All Maidsafe ID tags",null,null],[17,"MAIDSAFE_DATA_TAG","safe_core::core::id::data_tags","",null,null],[17,"AN_MPID_TAG","","",null,null],[17,"AN_MAID_TAG","","",null,null],[17,"MAID_TAG","","",null,null],[17,"MPID_TAG","","",null,null],[17,"PUBLIC_MAID_TAG","","",null,null],[17,"PUBLIC_MPID_TAG","","",null,null],[8,"IdTypeTags","safe_core::core::id","Interface to IdTypes",null,null],[10,"revocation_id_type_tag","","returns tag type for revocation id type",3,null],[10,"id_type_tag","","returns tag type for id type",3,null],[10,"public_id_type_tag","","returns tag type for public id type",3,null],[8,"Random","","Random trait is used to generate random instances.\nUsed in the test mod",null,null],[10,"generate_random","","Generates a random instance and returns the created random instance",4,{"inputs":[],"output":{"name":"self"}}],[11,"revocation_id_type_tag","","returns tag type for AnMaid type",5,null],[11,"id_type_tag","","returns tag type for Maid type",5,null],[11,"public_id_type_tag","","returns tag type for PublicMaid type",5,null],[11,"revocation_id_type_tag","","returns tag type for AnMpid type",6,null],[11,"id_type_tag","","returns tag type for Mpid type",6,null],[11,"public_id_type_tag","","returns tag type for PublicMpid type",6,null],[0,"errors","safe_core::core","Safe-Core Errors",null,null],[4,"CoreError","safe_core::core::errors","Client Errors",null,null],[13,"StructuredDataHeaderSizeProhibitive","","StructuredData has no space available to fit in any user data inside it.",7,null],[13,"UnsuccessfulEncodeDecode","","Could not Serialise or Deserialise",7,null],[13,"AsymmetricDecipherFailure","","Asymmetric Key Decryption Failed",7,null],[13,"SymmetricDecipherFailure","","Symmetric Key Decryption Failed",7,null],[13,"ReceivedUnexpectedData","","ReceivedUnexpectedData",7,null],[13,"VersionCacheMiss","","No such data found in local version cache",7,null],[13,"RootDirectoryAlreadyExists","","Cannot overwrite a root directory if it already exists",7,null],[13,"RandomDataGenerationFailure","","Unable to obtain generator for random data",7,null],[13,"OperationForbiddenForClient","","Forbidden operation requested for this Client",7,null],[13,"Unexpected","","Unexpected - Probably a Logic error",7,null],[13,"RoutingError","","Routing Error",7,null],[13,"RoutingInterfaceError","","Interface Error",7,null],[13,"UnsupportedSaltSizeForPwHash","","Unable to pack into or operate with size of Salt",7,null],[13,"UnsuccessfulPwHash","","Unable to complete computation for password hashing - usually because OS refused to\nallocate amount of requested memory",7,null],[13,"OperationAborted","","Blocking operation was cancelled",7,null],[13,"MpidMessagingError","","MpidMessaging Error",7,null],[13,"GetFailure","","Performing a GET operation failed",7,null],[12,"data_id","safe_core::core::errors::CoreError","Original request that was made to the network",7,null],[12,"reason","","Reason for failure",7,null],[13,"GetAccountInfoFailure","safe_core::core::errors","Performing a GetAccountInfo operation failed",7,null],[12,"reason","safe_core::core::errors::CoreError","Reason for failure",7,null],[13,"MutationFailure","safe_core::core::errors","Performing a network mutating operation such as PUT/POST/DELETE failed",7,null],[12,"data_id","safe_core::core::errors::CoreError","Original data that was sent to the network",7,null],[12,"reason","","Reason for failure",7,null],[13,"SelfEncryption","safe_core::core::errors","Error while self-encrypting data",7,null],[17,"CLIENT_ERROR_START_RANGE","","Intended for converting Client Errors into numeric codes for propagating some error information\nacross FFI boundaries and specially to C.",null,null],[11,"from","","",7,{"inputs":[{"name":"str"}],"output":{"name":"coreerror"}}],[11,"from","","",7,{"inputs":[{"name":"serialisationerror"}],"output":{"name":"coreerror"}}],[11,"from","","",7,{"inputs":[{"name":"routingerror"}],"output":{"name":"coreerror"}}],[11,"from","","",7,{"inputs":[{"name":"interfaceerror"}],"output":{"name":"coreerror"}}],[11,"from","","",7,{"inputs":[{"name":"recverror"}],"output":{"name":"coreerror"}}],[11,"from","","",7,{"inputs":[{"name":"error"}],"output":{"name":"coreerror"}}],[11,"from","","",7,{"inputs":[{"name":"selfencryptionerror"}],"output":{"name":"coreerror"}}],[11,"into","","",7,null],[11,"fmt","","",7,null],[11,"fmt","","",7,null],[11,"description","","",7,null],[11,"cause","","",7,null],[0,"client","safe_core::core","Self-Authentication and Gateway Module",null,null],[3,"Client","safe_core::core::client","The main self-authentication client instance that will interface all the request from high\nlevel API's to the actual routing layer and manage all interactions with it. This is\nessentially a non-blocking Client with upper layers having an option to either block and wait\non the returned ResponseGetters for receiving network response or spawn a new thread. The Client\nitself is however well equipped for parallel and non-blocking PUTs and GETS.",null,null],[0,"response_getter","","Lazy evaluated response getter.",null,null],[3,"GetResponseGetter","safe_core::core::client::response_getter","`GetResponseGetter` is a lazy evaluated response getter for GET Requests. It will fetch either\nfrom local cache or wait for the `MessageQueue` to notify it of the incoming response from the\nnetwork.",null,null],[3,"GetAccountInfoResponseGetter","","`GetAccountInfoResponseGetter` is a lazy evaluated response getter for `GetAccountInfo`\nRequests. It will wait for the `MessageQueue` to notify it of the incoming response from the\nnetwork.",null,null],[3,"MutationResponseGetter","","MutationResponseGetter is a lazy evaluated response getter for mutating network requests such\nas PUT/POST/DELETE. It will fetch either from local cache or wait for the MessageQueue to notify\nit of the incoming response from the network",null,null],[11,"new","","Create a new instance of `GetResponseGetter`",8,{"inputs":[{"name":"option"},{"name":"arc"},{"name":"dataidentifier"}],"output":{"name":"getresponsegetter"}}],[11,"get","","Get either from local cache or (if not available there) get it when it comes from the\nnetwork as informed by MessageQueue. This is blocking.",8,null],[11,"get_sender","","Extract associated sender. This will help cancel the blocking wait at will if so desired.\nAll that is needed is to extract the sender before doing a `get()` and then while blocking\non `get()` fire `sender.send(ResponseEvent::Terminated)` to gracefully exit the receiver.",8,null],[11,"new","","Create a new instance of `GetAccountInfoResponseGetter`",9,null],[11,"get","","Get result from the network as informed by MessageQueue. This is blocking. Tuple fields of\nresult are `(data_stored, space_available)`. `data_stored` means number of chunks Put.\n`space_available` means number of chunks which can still be Put.",9,null],[11,"get_sender","","Extract associated sender. This will help cancel the blocking wait at will if so desired.\nAll that is needed is to extract the sender before doing a `get()` and then while blocking\non `get()` fire `sender.send(ResponseEvent::Terminated)` to gracefully exit the receiver.",9,null],[11,"new","","Create a new instance of MutationResponseGetter",10,null],[11,"get","","Get response when it comes from the network as informed by MessageQueue. This is blocking",10,null],[11,"get_sender","","Extract associated sender. This will help cancel the blocking wait at will if so desired.\nAll that is needed is to extract the sender before doing a `get()` and then while blocking\non `get()` fire `sender.send(ResponseEvent::Terminated)` to gracefully exit the receiver.",10,null],[11,"create_unregistered_client","safe_core::core::client","This is a getter-only Gateway function to the Maidsafe network. It will create an\nunregistered random clinet, which can do very limited set of operations - eg., a\nNetwork-Get",11,{"inputs":[],"output":{"name":"result"}}],[11,"create_account","","This is one of the two Gateway functions to the Maidsafe network, the other being the\nlog_in. This will help create a fresh account for the user in the SAFE-network.",11,{"inputs":[{"name":"string"},{"name":"string"},{"name":"string"}],"output":{"name":"result"}}],[11,"log_in","","This is one of the two Gateway functions to the Maidsafe network, the other being the\ncreate_account. This will help log into an already created account for the user in the\nSAFE-network.",11,{"inputs":[{"name":"string"},{"name":"string"},{"name":"string"}],"output":{"name":"result"}}],[11,"set_user_root_directory_id","","Create an entry for the Root Directory ID for the user into the session packet, encrypt and\nstore it. It will be retrieved when the user logs into their account. Root directory ID is\nnecessary to fetch all of the user's data as all further data is encoded as meta-information\ninto the Root Directory or one of its subdirectories.",11,null],[11,"get_user_root_directory_id","","Get User's Root Directory ID if available in session packet used for current login",11,null],[11,"set_configuration_root_directory_id","","Create an entry for the Maidsafe configuration specific Root Directory ID into the\nsession packet, encrypt and store it. It will be retrieved when the user logs into\ntheir account. Root directory ID is necessary to fetch all of configuration data as all\nfurther data is encoded as meta-information into the config Root Directory or one of its\nsubdirectories.",11,null],[11,"get_configuration_root_directory_id","","Get Maidsafe specific configuration's Root Directory ID if available in session packet used\nfor current login",11,null],[11,"hybrid_encrypt","","Combined Asymmetric and Symmetric encryption. The data is encrypted using random Key and\nIV with Xsalsa-symmetric encryption. Random IV ensures that same plain text produces\ndifferent cipher-texts for each fresh symmetric encryption. The Key and IV are then\nasymmetrically encrypted using Public-MAID and the whole thing is then serialised into a\nsingle `Vec<u8>`.",11,null],[11,"hybrid_decrypt","","Reverse of hybrid_encrypt. Refer hybrid_encrypt.",11,null],[11,"get","","Get data from the network. This is non-blocking.",11,null],[11,"put","","Put data onto the network. This is non-blocking.",11,null],[11,"put_recover","","Put data to the network. Unlike `put` this method is blocking and will return success if\nthe data has already been put to the network.",11,null],[11,"post","","Post data onto the network",11,null],[11,"delete","","Delete data from the network",11,null],[11,"delete_recover","","A blocking version of `delete` that returns success if the data was already not present on\nthe network.",11,null],[11,"get_account_info","","Get data from the network. This is non-blocking.",11,null],[11,"send_message","","Send a message to receiver via the network. This is non-blocking.",11,null],[11,"delete_message","","Delete a message from own or sender's outbox. This is non-blocking.",11,null],[11,"delete_header","","Delete a header from own inbox. This is non-blocking.",11,null],[11,"register_online","","Register as an online mpid_messaging client to the network. This is non-blocking.",11,null],[11,"query_outbox_headers","","Query the targeted messages' header that still in the outbox. This is non-blocking.",11,null],[11,"get_outbox_headers","","Get the list of messages' headers that still in the outbox. This is non-blocking.",11,null],[11,"get_public_encryption_key","","Returns the public encryption key",11,null],[11,"get_secret_encryption_key","","Returns the Secret encryption key",11,null],[11,"get_public_signing_key","","Returns the Public Signing key",11,null],[11,"get_secret_signing_key","","Returns the Secret Signing key",11,null],[11,"add_network_event_observer","","Add observers for Network Events like `Connected`, `Disconnected`, `Terminated`",11,null],[11,"get_default_client_manager_address","","Get the default address where the PUTs will go to for this client",11,null],[11,"set_default_client_manager_address","","Set the default address where the PUTs and DELETEs will go to for this client",11,null],[11,"issued_gets","","Return the amount of calls that were done to `get`",11,null],[11,"issued_puts","","Return the amount of calls that were done to `put`",11,null],[11,"issued_posts","","Return the amount of calls that were done to `post`",11,null],[11,"issued_deletes","","Return the amount of calls that were done to `delete`",11,null],[0,"utility","safe_core::core","Utility functions",null,null],[5,"hybrid_encrypt","safe_core::core::utility","Combined Asymmetric and Symmetric encryption. The data is encrypted using random Key and\nIV with Xsalsa-symmetric encryption. Random IV ensures that same plain text produces different\ncipher-texts for each fresh symmetric encryption. The Key and IV are then asymmetrically\nenrypted using Public-MAID and the whole thing is then serialised into a single Vec<u8>.",null,null],[5,"hybrid_decrypt","","Reverse of hybrid_encrypt. Refer hybrid_encrypt.",null,null],[5,"generate_random_string","","Generates a random string for specified size",null,{"inputs":[{"name":"usize"}],"output":{"name":"result"}}],[5,"generate_random_vector","","Generate a random vector of given length",null,{"inputs":[{"name":"usize"}],"output":{"name":"result"}}],[0,"test_utils","","Common utility functions for writting test cases",null,null],[5,"get_client","safe_core::core::utility::test_utils","Generates a random mock client for testing",null,{"inputs":[],"output":{"name":"result"}}],[5,"generate_public_keys","","Generates random public keys",null,{"inputs":[{"name":"usize"}],"output":{"name":"vec"}}],[5,"generate_secret_keys","","Generates random secret keys",null,{"inputs":[{"name":"usize"}],"output":{"name":"vec"}}],[5,"get_max_sized_public_keys","","Generates public keys of maximum size",null,{"inputs":[{"name":"usize"}],"output":{"name":"vec"}}],[5,"get_max_sized_secret_keys","","Generates secret keys of maximum size",null,{"inputs":[{"name":"usize"}],"output":{"name":"vec"}}],[0,"translated_events","safe_core::core","Events filtered from set of Routing provided events, on which the Client Modules must\nspecifically act",null,null],[4,"ResponseEvent","safe_core::core::translated_events","These events are received as a response to a GET/PUT/POST/DELETE requests made by clients",null,null],[13,"GetResp","","Response to a previous GET request",12,null],[13,"GetAccountInfoResp","","Response to a previous GetAccountInfo request",12,null],[13,"MutationResp","","Response to a previous Mutating (PUT/POST/DELETE) request",12,null],[13,"Terminated","","Graceful Exit Condition",12,null],[4,"NetworkEvent","","Netowork Events that Client Modules need to deal with",null,null],[13,"Connected","","The client engine is connected to atleast one peer",13,null],[13,"Disconnected","","The client engine is disconnected from the network (under usual circumstances this would\nindicate that client connection to proxy node has been lost)",13,null],[13,"Terminated","","Graceful Exit Condition",13,null],[17,"NETWORK_EVENT_START_RANGE","","Network Events will be translated into values starting from this number for propagating them\nbeyond the FFI boudaries when required",null,null],[11,"fmt","","",12,null],[11,"fmt","","",13,null],[11,"into","","",13,null],[0,"self_encryption_storage","safe_core::core","Implements the Self Encryption storage trait",null,null],[3,"SelfEncryptionStorage","safe_core::core::self_encryption_storage","Network storage is the concrete type which self-encryption crate will use to put or get data\nfrom the network",null,null],[11,"new","","Create a new SelfEncryptionStorage instance",14,{"inputs":[{"name":"arc"}],"output":{"name":"selfencryptionstorage"}}],[11,"get","","",14,null],[11,"put","","",14,null],[0,"self_encryption_storage_error","safe_core::core","Implements the Self Encryption storage error trait",null,null],[3,"SelfEncryptionStorageError","safe_core::core::self_encryption_storage_error","Errors arising from storage object being used by self-encryptors.",null,null],[12,"0","","",15,null],[11,"fmt","","",15,null],[11,"fmt","","",15,null],[11,"description","","",15,null],[11,"cause","","",15,null],[11,"from","","",15,{"inputs":[{"name":"coreerror"}],"output":{"name":"selfencryptionstorageerror"}}],[0,"immut_data_operations","safe_core::core","Helper functions to handle ImmutableData related operations",null,null],[5,"create","safe_core::core::immut_data_operations","Create and obtain immutable data out of the given raw data. The API will encrypt the right\ncontent if the keys are provided and will ensure the maximum immutable data chunk size is\nrespected.",null,{"inputs":[{"name":"arc"},{"name":"vec"},{"name":"option"}],"output":{"name":"result"}}],[5,"get_data","","Get actual data from ImmutableData created via create() function in this module.",null,{"inputs":[{"name":"arc"},{"name":"xorname"},{"name":"option"}],"output":{"name":"result"}}],[0,"structured_data_operations","safe_core::core","Helper functions to handle StructuredData related operations",null,null],[4,"DataFitResult","safe_core::core::structured_data_operations","Inform about data fitting or not into given StructuredData",null,null],[13,"NoDataCanFit","","Invalid StrucuturedData.",16,null],[13,"DataDoesNotFit","","Given data is too large to fit into the given StructuredData",16,null],[13,"DataFits","","Given data fits into the given StructuredData",16,null],[5,"get_approximate_space_for_data","","Calculates approximate space available for data. Calculates the worst case scenario in which\nall owners must sign this StructuredData.",null,{"inputs":[{"name":"vec"},{"name":"vec"}],"output":{"name":"result"}}],[5,"check_if_data_can_fit_in_structured_data","","Check if it is possible to fit the given data into the given StructuredData",null,null],[0,"unversioned","","Unversioned-Structured Data",null,null],[5,"create","safe_core::core::structured_data_operations::unversioned","Create StructuredData in accordance with data-encoding rules abstracted from user. For\nStructuredData created with create, data must be obtained using the complementary function\ndefined in this module to get_data()",null,{"inputs":[{"name":"arc"},{"name":"u64"},{"name":"xorname"},{"name":"u64"},{"name":"vec"},{"name":"vec"},{"name":"vec"},{"name":"secretkey"},{"name":"option"}],"output":{"name":"result"}}],[5,"get_data","","Get Actual Data From StructuredData created via create() function in this module.",null,{"inputs":[{"name":"arc"},{"name":"structureddata"},{"name":"option"}],"output":{"name":"result"}}],[0,"versioned","safe_core::core::structured_data_operations","Versioned-Structured Data",null,null],[5,"create","safe_core::core::structured_data_operations::versioned","Create the StructuredData to manage versioned data.",null,{"inputs":[{"name":"client"},{"name":"xorname"},{"name":"u64"},{"name":"xorname"},{"name":"u64"},{"name":"vec"},{"name":"vec"},{"name":"secretkey"}],"output":{"name":"result"}}],[5,"get_all_versions","","Get the complete version list",null,{"inputs":[{"name":"client"},{"name":"structureddata"}],"output":{"name":"result"}}],[5,"append_version","","Append a new version",null,{"inputs":[{"name":"client"},{"name":"structureddata"},{"name":"xorname"},{"name":"secretkey"}],"output":{"name":"result"}}],[11,"fmt","safe_core::core::structured_data_operations","",16,null],[11,"partial_cmp","","",16,null],[11,"cmp","","",16,null],[11,"eq","","",16,null],[17,"MAIDSAFE_TAG","safe_core::core","All Maidsafe tagging should positive-offset from this",null,null],[17,"CLIENT_STRUCTURED_DATA_TAG","","All StructuredData tagging should positive-offset from this if the operation needs to go\nthrough this safe_core crate",null,null],[0,"nfs","safe_core","Nfs module;",null,null],[4,"AccessLevel","safe_core::nfs","AccessLevel indicates whether the container is Private or Public shared",null,null],[13,"Private","","Private Directory where the directory is encrypted with users private keys",17,null],[13,"Public","","Public Directory where the directory is not encrypted and anyone can read the contents of it",17,null],[0,"file","","Module for File struct",null,null],[3,"File","safe_core::nfs::file","Representation of a File to be put into the network. Could be text, music, video etc any kind\nof file",null,null],[11,"clone","","",18,null],[11,"cmp","","",18,null],[11,"partial_cmp","","",18,null],[11,"lt","","",18,null],[11,"le","","",18,null],[11,"gt","","",18,null],[11,"ge","","",18,null],[11,"eq","","",18,null],[11,"ne","","",18,null],[11,"decode","","",18,{"inputs":[{"name":"__d"}],"output":{"name":"result"}}],[11,"encode","","",18,null],[11,"new","","Create a new instance of File",18,{"inputs":[{"name":"filemetadata"},{"name":"datamap"}],"output":{"name":"result"}}],[11,"get_id","","Returns unique id",18,null],[11,"get_name","","Get the name of the File",18,null],[11,"get_metadata","","Get metadata associated with the file",18,null],[11,"get_mut_metadata","","Get metadata associated with the file, with mutability to allow updation",18,null],[11,"get_datamap","","Get the data-map of the File. This is generated by passing the contents of the File to\nself-encryption",18,null],[11,"set_datamap","","Set a data-map to be associated with the File",18,null],[11,"fmt","","",18,null],[0,"errors","safe_core::nfs","Errors",null,null],[4,"NfsError","safe_core::nfs::errors","NFS Errors",null,null],[13,"CoreError","","Client Error",19,null],[13,"DirectoryAlreadyExistsWithSameName","","If Directory already exists with the same name in the same level",19,null],[13,"DestinationAndSourceAreSame","","Destination is Same as the Source",19,null],[13,"DirectoryNotFound","","Directory not found",19,null],[13,"FileAlreadyExistsWithSameName","","File Already exists with the same name in a directory",19,null],[13,"FileDoesNotMatch","","File does not match with the existing file in the directory listing",19,null],[13,"FileNotFound","","File not found",19,null],[13,"InvalidRangeSpecified","","Invalid byte range specified",19,null],[13,"ParameterIsNotValid","","Validation error - if the field passed as parameter is not valid",19,null],[13,"Unexpected","","Unexpected error",19,null],[13,"UnsuccessfulEncodeDecode","","Unsuccessful Serialisation or Deserialisation",19,null],[13,"SelfEncryption","","Error while self-encrypting/-decrypting data",19,null],[17,"NFS_ERROR_START_RANGE","","Intended for converting NFS Errors into numeric codes for propagating some error information\nacross FFI boundaries and specially to C.",null,null],[11,"from","","",19,{"inputs":[{"name":"coreerror"}],"output":{"name":"nfserror"}}],[11,"from","","",19,{"inputs":[{"name":"serialisationerror"}],"output":{"name":"nfserror"}}],[11,"from","","",19,{"inputs":[{"name":"str"}],"output":{"name":"nfserror"}}],[11,"from","","",19,{"inputs":[{"name":"selfencryptionerror"}],"output":{"name":"nfserror"}}],[11,"into","","",19,null],[11,"fmt","","",19,null],[0,"helper","safe_core::nfs","Helper for directory_listing and File for NFS Low level API",null,null],[0,"writer","safe_core::nfs::helper","Data for the file can be written using Wirter",null,null],[3,"Writer","safe_core::nfs::helper::writer","Writer is used to write contents to a File and especially in chunks if the file happens to be\ntoo large",null,null],[4,"Mode","","Mode of the writer",null,null],[13,"Overwrite","","Will create new data",20,null],[13,"Modify","","Will modify the existing data",20,null],[11,"new","","Create new instance of Writer",21,{"inputs":[{"name":"arc"},{"name":"selfencryptionstorage"},{"name":"mode"},{"name":"directorylisting"},{"name":"file"}],"output":{"name":"result"}}],[11,"write","","Data of a file/blob can be written in smaller chunks",21,null],[11,"close","","close is invoked only after all the data is completely written\nThe file/blob is saved only when the close is invoked.\nReturns the update DirectoryListing which owns the file and also the updated\nDirectoryListing of the file's parent\nReturns (files's parent_directory, Option<file's parent_directory's parent>)",21,null],[0,"reader","safe_core::nfs::helper","Data from a file can be read using Reader",null,null],[3,"Reader","safe_core::nfs::helper::reader","Reader is used to read contents of a File. It can read in chunks if the file happens to be very\nlarge",null,null],[11,"new","","Create a new instance of Reader",22,{"inputs":[{"name":"arc"},{"name":"selfencryptionstorage"},{"name":"file"}],"output":{"name":"result"}}],[11,"size","","Returns the total size of the file/blob",22,null],[11,"read","","Read data from file/blob",22,null],[0,"file_helper","safe_core::nfs::helper","FileHelper provides functions for CRUD on file",null,null],[3,"FileHelper","safe_core::nfs::helper::file_helper","File provides helper functions to perform Operations on Files",null,null],[11,"new","","Create a new FileHelper instance",23,{"inputs":[{"name":"arc"}],"output":{"name":"filehelper"}}],[11,"create","","Helper function to create a file in a directory listing\nA writer object is returned, through which the data for the file\ncan be written to the network\nThe file is actually saved in the directory listing only after\n`writer.close()` is invoked",23,null],[11,"delete","","Delete a file from the DirectoryListing\nReturns Option<parent_directory's parent>",23,null],[11,"update_metadata","","Updates the file metadata.\nReturns Option<parent_directory's parent>",23,null],[11,"update_content","","Helper function to Update content of a file in a directory listing\nA writer object is returned, through which the data for the file\ncan be written to the network\nThe file is actually saved in the directory listing only after\n`writer.close()` is invoked",23,null],[11,"get_versions","","Return the versions of a directory containing modified versions of a file",23,null],[11,"read","","Returns a reader for reading the file contents",23,null],[0,"directory_helper","safe_core::nfs::helper","DirectoryHelper provides functions for CRUD on DirectoryListing",null,null],[3,"DirectoryHelper","safe_core::nfs::helper::directory_helper","DirectoryHelper provides helper functions to perform Operations on Directory",null,null],[11,"new","","Create a new DirectoryHelper instance",24,{"inputs":[{"name":"arc"}],"output":{"name":"directoryhelper"}}],[11,"create","","Creates a Directory in the network.\nWhen a directory is created and parent_directory is passed as a parameter.\nThen the parent directory is updated.\nIf the parent_directory passed has a parent, then the parent_directory's parent\nis also updated and the same is returned\nReturns (created_directory, Option<parent_directory's parent>)",24,null],[11,"delete","","Deletes a sub directory\nThe parent_directory's parent is also updated if present\nReturns Option<parent_directory's parent>",24,null],[11,"update","","Updates an existing DirectoryListing in the network.\nThe parent_directory's parent is also updated and the same is returned\nReturns Option<parent_directory's parent>",24,null],[11,"get_versions","","Return the versions of the directory",24,null],[11,"get_by_version","","Return the DirectoryListing for the specified version",24,null],[11,"get","","Return the DirectoryListing for the latest version",24,null],[11,"get_user_root_directory_listing","","Returns the Root Directory",24,null],[11,"get_configuration_directory_listing","","Returns the Configuration DirectoryListing from the configuration root folder\nCreates the directory or the root or both if it doesn't find one.",24,null],[0,"metadata","safe_core::nfs","Directory and File Metadata",null,null],[0,"file_metadata","safe_core::nfs::metadata","FileMetadata",null,null],[3,"FileMetadata","safe_core::nfs::metadata::file_metadata","FileMetadata about a File or a Directory",null,null],[11,"clone","","",25,null],[11,"cmp","","",25,null],[11,"partial_cmp","","",25,null],[11,"lt","","",25,null],[11,"le","","",25,null],[11,"gt","","",25,null],[11,"ge","","",25,null],[11,"eq","","",25,null],[11,"ne","","",25,null],[11,"fmt","","",25,null],[11,"new","","Create a new instance of FileMetadata",25,{"inputs":[{"name":"string"},{"name":"vec"}],"output":{"name":"filemetadata"}}],[11,"get_version","","Get version",25,null],[11,"get_created_time","","Get time of creation",25,null],[11,"get_modified_time","","Get time of modification",25,null],[11,"get_name","","Get name associated with the structure (file or directory) that this metadata is a part\nof",25,null],[11,"get_size","","Get size information",25,null],[11,"get_user_metadata","","Get user setteble custom metadata",25,null],[11,"set_name","","Set name associated with the structure (file or directory)",25,null],[11,"increment_version","","Increment the file version",25,null],[11,"set_size","","Set the size of file",25,null],[11,"set_modified_time","","Set time of modification",25,null],[11,"set_user_metadata","","User setteble metadata for custom metadata",25,null],[11,"encode","","",25,null],[11,"decode","","",25,{"inputs":[{"name":"d"}],"output":{"name":"result"}}],[0,"directory_key","safe_core::nfs::metadata","DirectoryKey",null,null],[3,"DirectoryKey","safe_core::nfs::metadata::directory_key","DirectoryKey represnts the meta information about a directory\nA directory can be feteched with the DirectoryKey",null,null],[11,"clone","","",26,null],[11,"cmp","","",26,null],[11,"partial_cmp","","",26,null],[11,"lt","","",26,null],[11,"le","","",26,null],[11,"gt","","",26,null],[11,"ge","","",26,null],[11,"eq","","",26,null],[11,"ne","","",26,null],[11,"decode","","",26,{"inputs":[{"name":"__d"}],"output":{"name":"result"}}],[11,"encode","","",26,null],[11,"fmt","","",26,null],[11,"new","","Creates a new instance of DirectoryKey",26,{"inputs":[{"name":"xorname"},{"name":"u64"},{"name":"bool"},{"name":"accesslevel"}],"output":{"name":"directorykey"}}],[11,"get_id","","Returns the id",26,null],[11,"get_type_tag","","Returns the type_tag",26,null],[11,"is_versioned","","Returns true if the directory represented by the key is versioned, else returns false",26,null],[11,"get_access_level","","Returns the accesslevel of the directory represented by the key",26,null],[0,"directory_metadata","safe_core::nfs::metadata","DirectoryMetadata",null,null],[3,"DirectoryMetadata","safe_core::nfs::metadata::directory_metadata","Metadata about a File or a Directory",null,null],[11,"clone","","",27,null],[11,"cmp","","",27,null],[11,"partial_cmp","","",27,null],[11,"lt","","",27,null],[11,"le","","",27,null],[11,"gt","","",27,null],[11,"ge","","",27,null],[11,"eq","","",27,null],[11,"ne","","",27,null],[11,"fmt","","",27,null],[11,"new","","Create a new instance of Metadata",27,{"inputs":[{"name":"string"},{"name":"u64"},{"name":"bool"},{"name":"accesslevel"},{"name":"vec"},{"name":"option"}],"output":{"name":"result"}}],[11,"get_id","","Return the id",27,null],[11,"get_type_tag","","Return type_tag",27,null],[11,"is_versioned","","Returns true if the DirectoryListing is versioned, else returns false",27,null],[11,"get_access_level","","Returns the AccessLevel of the DirectoryListing",27,null],[11,"get_created_time","","Get time of creation",27,null],[11,"get_modified_time","","Get time of modification",27,null],[11,"get_name","","Get name associated with the structure (file or directory) that this metadata is a part\nof",27,null],[11,"get_key","","Returns the DirectoryKey",27,null],[11,"get_parent_dir_key","","Returns the Parent dir id",27,null],[11,"get_user_metadata","","Get user setteble custom metadata",27,null],[11,"set_name","","Set name associated with the structure (file or directory) that this metadata is a part\nof",27,null],[11,"set_created_time","","Set time of creation",27,null],[11,"set_modified_time","","Set time of modification",27,null],[11,"set_user_metadata","","Setter for user_metadata",27,null],[11,"set_parent_dir_key","","Setter for parent_dir_key",27,null],[11,"encode","","",27,null],[11,"decode","","",27,{"inputs":[{"name":"d"}],"output":{"name":"result"}}],[0,"directory_listing","safe_core::nfs","Module for directory reltaed structs - DirectoryListin, DirectoryInfo",null,null],[3,"DirectoryListing","safe_core::nfs::directory_listing","DirectoryListing is the representation of a deserialised Directory in the network",null,null],[11,"clone","","",28,null],[11,"cmp","","",28,null],[11,"partial_cmp","","",28,null],[11,"lt","","",28,null],[11,"le","","",28,null],[11,"gt","","",28,null],[11,"ge","","",28,null],[11,"eq","","",28,null],[11,"ne","","",28,null],[11,"decode","","",28,{"inputs":[{"name":"__d"}],"output":{"name":"result"}}],[11,"encode","","",28,null],[11,"fmt","","",28,null],[11,"new","","Create a new DirectoryListing",28,{"inputs":[{"name":"string"},{"name":"u64"},{"name":"vec"},{"name":"bool"},{"name":"accesslevel"},{"name":"option"}],"output":{"name":"result"}}],[11,"get_key","","Returns the DirectoryKey representing the DirectoryListing",28,null],[11,"get_metadata","","Get Directory metadata",28,null],[11,"get_mut_metadata","","Get Directory metadata in mutable format so that it can also be updated",28,null],[11,"get_files","","Get all files in this DirectoryListing",28,null],[11,"get_mut_files","","Get all files in this DirectoryListing with mutability to update the listing of files",28,null],[11,"get_sub_directories","","Get all subdirectories in this DirectoryListing",28,null],[11,"get_mut_sub_directories","","Get all subdirectories in this DirectoryListing with mutability to update the\nlisting of subdirectories",28,null],[11,"decrypt","","Decrypts a directory listing",28,{"inputs":[{"name":"arc"},{"name":"xorname"},{"name":"vec"}],"output":{"name":"result"}}],[11,"encrypt","","Encrypts the directory listing",28,null],[11,"find_file","","Get DirectoryInfo of sub_directory within a DirectoryListing.\nReturns the Option<DirectoryInfo> for the directory_name from the DirectoryListing",28,null],[11,"find_file_by_id","","Get DirectoryInfo of sub_directory within a DirectoryListing.\nReturns the Option<DirectoryInfo> for the directory_name from the DirectoryListing",28,null],[11,"find_sub_directory","","Get DirectoryInfo of sub_directory within a DirectoryListing.\nReturns the Option<DirectoryInfo> for the directory_name from the DirectoryListing",28,null],[11,"find_sub_directory_by_id","","Get DirectoryInfo of sub_directory within a DirectoryListing.\nReturns the Option<DirectoryInfo> for the directory_name from the DirectoryListing",28,null],[11,"upsert_file","","If file is present in the DirectoryListing then replace it else insert it",28,null],[11,"upsert_sub_directory","","If DirectoryMetadata is present in the sub_directories of DirectoryListing\nthen replace it else insert it",28,null],[11,"remove_sub_directory","","Remove a sub_directory",28,null],[11,"remove_file","","Remove a file",28,null],[11,"generate_nonce","","Generates a nonce based on the directory_id",28,{"inputs":[{"name":"xorname"}],"output":{"name":"nonce"}}],[17,"ROOT_DIRECTORY_NAME","safe_core::nfs","Root directory name",null,null],[17,"CONFIGURATION_DIRECTORY_NAME","","Configuration directory Name stored in the session packet",null,null],[17,"VERSIONED_DIRECTORY_LISTING_TAG","","Tag representing the Versioned Directory Listing",null,null],[17,"UNVERSIONED_DIRECTORY_LISTING_TAG","","Tag representing the Versioned Directory Listing",null,null],[11,"fmt","","",17,null],[11,"clone","","",17,null],[11,"cmp","","",17,null],[11,"partial_cmp","","",17,null],[11,"eq","","",17,null],[11,"decode","","",17,{"inputs":[{"name":"__d"}],"output":{"name":"result"}}],[11,"encode","","",17,null],[0,"dns","safe_core","Dns module;",null,null],[0,"errors","safe_core::dns","Safe-Dns errors",null,null],[4,"DnsError","safe_core::dns::errors","Safe-Dns specific errors",null,null],[13,"CoreError","","Errors from Safe-Client",29,null],[13,"NfsError","","Errors from Safe-Nfs",29,null],[13,"DnsNameAlreadyRegistered","","Dns record already exists",29,null],[13,"DnsRecordNotFound","","Dns record not found",29,null],[13,"ServiceAlreadyExists","","Service already exists",29,null],[13,"ServiceNotFound","","Service not found",29,null],[13,"DnsConfigFileNotFoundOrCorrupted","","Dns Configuration file not found or corrupted",29,null],[13,"Unexpected","","Unexpected, probably due to logical error",29,null],[13,"UnsuccessfulEncodeDecode","","Could not serialise or deserialise data",29,null],[17,"DNS_ERROR_START_RANGE","","Intended for converting DNS Errors into numeric codes for propagating some error information\nacross FFI boundaries and specially to C.",null,null],[11,"from","","",29,{"inputs":[{"name":"serialisationerror"}],"output":{"name":"dnserror"}}],[11,"from","","",29,{"inputs":[{"name":"coreerror"}],"output":{"name":"dnserror"}}],[11,"from","","",29,{"inputs":[{"name":"nfserror"}],"output":{"name":"dnserror"}}],[11,"from","","",29,{"inputs":[{"name":"str"}],"output":{"name":"dnserror"}}],[11,"into","","",29,null],[11,"fmt","","",29,null],[0,"dns_operations","safe_core::dns","Contains interfaces for all dns related operations",null,null],[3,"DnsOperations","safe_core::dns::dns_operations","This is a representational structure for all safe-dns operations",null,null],[0,"dns_configuration","","Dns operations. Implementation for some of the `dns` module",null,null],[3,"DnsConfiguration","safe_core::dns::dns_operations::dns_configuration","Dns configuration. For internal use by the `dns` module.",null,null],[12,"long_name","","Dns long name",30,null],[12,"encryption_keypair","","Encryption keys",30,null],[5,"initialise_dns_configuaration","","Initialise dns configuration.",null,{"inputs":[{"name":"arc"}],"output":{"name":"result"}}],[5,"get_dns_configuration_data","","Get dns configuration data.",null,{"inputs":[{"name":"arc"}],"output":{"name":"result"}}],[5,"write_dns_configuration_data","","Write dns configuration data.",null,null],[11,"decode","","",30,{"inputs":[{"name":"__d"}],"output":{"name":"result"}}],[11,"encode","","",30,null],[11,"eq","","",30,null],[11,"ne","","",30,null],[11,"fmt","","",30,null],[11,"clone","","",30,null],[11,"new","safe_core::dns::dns_operations","Create a new instance of DnsOperations. It is intended that only one of this be created as\nit operates on global data such as files.",31,{"inputs":[{"name":"arc"}],"output":{"name":"result"}}],[11,"new_unregistered","","Create a new instance of DnsOperations. This is used for an unregistered client and will\nhave very limited set of functionalities - mostly reads. This is ideal for browsers etc.,\nwhich only want to fetch from the Network, not mutate it.\nIt is intended that only one of this be created as it operates on global data such as\nfiles.",31,{"inputs":[{"name":"arc"}],"output":{"name":"dnsoperations"}}],[11,"register_dns","","Register one's own Dns - eg., pepsico.com, spandansharma.com, krishnakumar.in etc",31,null],[11,"delete_dns","","Delete the Dns-Record",31,null],[11,"get_all_registered_names","","Get all the Dns-names registered by the user so far in the network.",31,null],[11,"get_messaging_encryption_keys","","Get the messaging encryption keys that the user has associated with one's particular\nDns-name.",31,null],[11,"get_all_services","","Get all the services (www, blog, micro-blog etc) that user has associated with this\nDns-name",31,null],[11,"get_service_home_directory_key","","Get the home directory (eg., homepage containing HOME.html, INDEX.html) for the given\nservice.",31,null],[11,"add_service","","Add a new service for the given Dns-name.",31,null],[11,"remove_service","","Remove a service from the given Dns-name.",31,null],[0,"ffi","safe_core","Ffi module;\nThis module provides FFI-bindings to the Client Modules (`core`, `nfs`, `dns`)\nIn the current implementation the allocations made by this crate are managed within the crate\nitself and is guaranteed that management of such allocations will not be pushed beyond the FFI\nboundary. This has a 2-fold outcome: firstly, the passing of data is done by filling of the\nallocations passed by the caller and is caller's responsibility to manage those. For this every\nfunction that fills an allocated memory also has a companion function to return the size of\ndata which the caller can call to find out how much space needs to be allocated in the first\nplace. Second and consequently, the caller does not have to bother calling functions within\nthis crate which only serve to free resources allocated by the crate itself. This otherwise\nwould be error prone and cumbersome. Instead the caller can use whatever idiom in his language\nto manage memory much more naturally and conveniently (eg., RAII idioms etc)",null,null],[3,"ParameterPacket","safe_core::ffi","ParameterPacket acts as a holder for the standard parameters that would be needed for performing\noperations across the modules like nfs and dns",null,null],[12,"client","","Client instance used for performing the API operation",32,null],[12,"app_root_dir_key","","Root directory of the application",32,null],[12,"safe_drive_access","","Denotes whether the application has access to SAFEDrive",32,null],[12,"safe_drive_dir_key","","SAFEDrive root directory key",32,null],[3,"FfiHandle","","A handle, passed through the FFI.",null,null],[5,"init_logging","","This function should be called to enable logging to a file",null,{"inputs":[],"output":{"name":"int32_t"}}],[5,"create_unregistered_client","","Create an unregistered client. This or any one of the other companion functions to get a\nclient must be called before initiating any operation allowed by this crate.",null,null],[5,"create_account","","Create a registered client. This or any one of the other companion functions to get a\nclient must be called before initiating any operation allowed by this crate. `client_handle` is\na pointer to a pointer and must point to a valid pointer not junk, else the consequences are\nundefined.",null,null],[5,"log_in","","Log into a registered client. This or any one of the other companion functions to get a\nclient must be called before initiating any operation allowed by this crate. `client_handle` is\na pointer to a pointer and must point to a valid pointer not junk, else the consequences are\nundefined.",null,null],[5,"register_network_event_observer","","Register an observer to network events like Connected, Disconnected etc. as provided by the\ncore module",null,null],[5,"get_app_dir_key","","Returns key size",null,null],[5,"get_safe_drive_key","","Returns Key as base64 string",null,null],[5,"drop_client","","Discard and clean up the previously allocated client. Use this only if the client is obtained\nfrom one of the client obtainment functions in this crate (`create_account`, `log_in`,\n`create_unregistered_client`). Using `client_handle` after a call to this functions is\nundefined behaviour.",null,null],[5,"execute","","General function that can be invoked for performing a API specific operation that will return\nonly result to indicate whether the operation was successful or not.\nThis function would only perform the operation and return 0 or error code\nc_payload refers to the JSON payload that can be passed as a JSON string.\nThe JSON string should have keys module, action, app_root_dir_key, safe_drive_dir_key,\nsafe_drive_access and data. `data` refers to API specific payload.",null,null],[5,"execute_for_content","","General function that can be invoked for getting data as a resut for an operation.\nThe function return a pointer to a U8 vecotr. The size of the U8 vector and its capacity is\nwritten to the out params c_size & c_capacity. The size and capcity would be required for\ndroping the vector The result of the execution is returned in the c_result out param",null,null],[5,"drop_vector","","Drop the vector returned as a result of the execute_for_content fn",null,null],[5,"client_issued_gets","","Return the amount of calls that were done to `get`",null,null],[5,"client_issued_puts","","Return the amount of calls that were done to `put`",null,null],[5,"client_issued_posts","","Return the amount of calls that were done to `post`",null,null],[5,"client_issued_deletes","","Return the amount of calls that were done to `delete`",null,null],[5,"get_nfs_writer","","Obtain NFS writer handle for writing data to a file in streaming mode",null,null],[5,"nfs_create_file","","Create a file and return a writer for it.",null,null],[5,"nfs_stream_write","","Write data to the Network using the NFS Writer handle",null,null],[5,"nfs_stream_close","","Closes the NFS Writer handle",null,null],[5,"get_account_info","","Get data from the network. This is non-blocking. `data_stored` means number\nof chunks Put. `space_available` means number of chunks which can still be\nPut.",null,null],[0,"errors","","Errors thrown by the FFI operations",null,null],[4,"FfiError","safe_core::ffi::errors","Launcher Errors",null,null],[13,"CoreError","","Error from safe_core. Boxed to hold a pointer instead of value so that this enum variant is\nnot insanely bigger than others.",33,null],[13,"NfsError","","Errors from safe_nfs",33,null],[13,"DnsError","","Errors from safe_nfs",33,null],[13,"PathNotFound","","Unable to find/traverse directory or file path",33,null],[13,"InvalidPath","","Supplied path was invalid",33,null],[13,"PermissionDenied","","Permission denied - e.g. permission to access SAFEDrive etc.",33,null],[13,"JsonParseError","","Could not parse payload as a valid JSON",33,null],[13,"JsonDecodeError","","Could not decode valid JSON into expected Structures probably because a mandatory field was\nmissing or a field was wrongly named etc.",33,null],[13,"SpecificParseError","","JSON non-conforming to the Launcher RFC and not covered by JsonDecodeError, e.g. things\nlike invalid base64 formatting, unreasonable/unexpected indexing, ranges etc.",33,null],[13,"JsonEncodeError","","Error encoding into Json String",33,null],[13,"LocalConfigAccessFailed","","Unable to Read from or Write to a Local Config file.",33,null],[13,"Unexpected","","Unexpected - Probably a Logic error",33,null],[13,"UnsuccessfulEncodeDecode","","Could not serialise or deserialise data",33,null],[17,"FFI_ERROR_START_RANGE","","Intended for converting Launcher Errors into numeric codes for propagating some error\ninformation across FFI boundaries and specially to C.",null,null],[11,"from","","",33,{"inputs":[{"name":"serialisationerror"}],"output":{"name":"ffierror"}}],[11,"from","","",33,{"inputs":[{"name":"str"}],"output":{"name":"ffierror"}}],[11,"from","","",33,{"inputs":[{"name":"coreerror"}],"output":{"name":"ffierror"}}],[11,"from","","",33,{"inputs":[{"name":"nfserror"}],"output":{"name":"ffierror"}}],[11,"from","","",33,{"inputs":[{"name":"dnserror"}],"output":{"name":"ffierror"}}],[11,"from","","",33,{"inputs":[{"name":"frombase64error"}],"output":{"name":"ffierror"}}],[11,"from","","",33,{"inputs":[{"name":"parsererror"}],"output":{"name":"ffierror"}}],[11,"from","","",33,{"inputs":[{"name":"encodererror"}],"output":{"name":"ffierror"}}],[11,"from","","",33,{"inputs":[{"name":"decodererror"}],"output":{"name":"ffierror"}}],[11,"into","","",33,null],[11,"fmt","","",33,null],[6,"ResponseType","safe_core::ffi","ResponseType specifies the standard Response that is to be expected from the Action trait",null,null],[8,"Action","","ICommand trait",null,null],[10,"execute","","ICommand executer",34,null],[11,"clone","","",32,null],[11,"drop","","",35,null],[14,"parse_result!","safe_core","This macro is intended to be used in all cases where we get an Err out of Result<T, U> and want\nto package it into `safe_core::ffi::errors::FfiError::SpecificParseError(String)`. This is\nuseful because there may be miscellaneous erros while parsing through a valid JSON due to JSON\nnot conforming to certain mandatory requirements. This can then be communicated back to the\nJSON sending client.",null,null]],"paths":[[3,"IdType"],[3,"PublicIdType"],[3,"RevocationIdType"],[8,"IdTypeTags"],[8,"Random"],[3,"MaidTypeTags"],[3,"MpidTypeTags"],[4,"CoreError"],[3,"GetResponseGetter"],[3,"GetAccountInfoResponseGetter"],[3,"MutationResponseGetter"],[3,"Client"],[4,"ResponseEvent"],[4,"NetworkEvent"],[3,"SelfEncryptionStorage"],[3,"SelfEncryptionStorageError"],[4,"DataFitResult"],[4,"AccessLevel"],[3,"File"],[4,"NfsError"],[4,"Mode"],[3,"Writer"],[3,"Reader"],[3,"FileHelper"],[3,"DirectoryHelper"],[3,"FileMetadata"],[3,"DirectoryKey"],[3,"DirectoryMetadata"],[3,"DirectoryListing"],[4,"DnsError"],[3,"DnsConfiguration"],[3,"DnsOperations"],[3,"ParameterPacket"],[4,"FfiError"],[8,"Action"],[3,"FfiHandle"]]}; initSearch(searchIndex);