GSP
Quick Navigator

Search Site

Unix VPS
A - Starter
B - Basic
C - Preferred
D - Commercial
MPS - Dedicated
Previous VPSs
* Sign Up! *

Support
Contact Us
Online Help
Handbooks
Domain Status
Man Pages

FAQ
Virtual Servers
Pricing
Billing
Technical

Network
Facilities
Connectivity
Topology Map

Miscellaneous
Server Agreement
Year 2038
Credits
 

USA Flag

 

 

Man Pages
OpenXPKI::Serialization::Legacy(3) User Contributed Perl Documentation OpenXPKI::Serialization::Legacy(3)

OpenXPKI::Serialization::Simple

Really simple serialization class for scalars, arrays and hashes. This is a platform neutral example implementation. It mainly demonstrates the interface and can easily be ported to other scripting languages.

Initializes the object.

Returns the serialization of data passed as argument.

Returns the deserialization of data passed as argument.

This checks if a given argument is a serialized string. This method is static!

__write_data

This function returns the serialization of data passed as argument by calling one or more of the following functions. Each of those functions serializes a specific data type according to the syntax (see below). An exception is thrown if the data type cannot be recognized.

__write_scalar

__write_array

__write_hash

__write_undef

__read_data

This function returns the deserialization of data passed as argument by calling one or more of the following functions. Each of those functions deserializes a specific data type according to the syntax (see below). An exception is thrown if the data type cannot be recognized.

Basically, the deserialization works as follows: While scalars and undefs are easily deserialized upon recognition, it's a bit more tricky with arrays and hashes. Since they can possibly contain more (complex) data, each of the functions below returns two values: "$data" holds the deserialized data, and "$returnmessage" returns the (serialized) string that was used to deserialize the data. The latter value is important to keep track of which part of the serialized string has already been deserialized.

__read_scalar

__read_array

__read_hash

__read_undef

We support scalars, array references and hash references in any combination. The syntax is the following one:

scalar ::= 'SCALAR'.SEPARATOR. [0-9]+.SEPARATOR. /* length of data */ data.SEPARATOR

array ::= 'ARRAY'.SEPARATOR. [0-9]+.SEPARATOR. /* length of array data */ array_element+

array_element ::= [0-9]+.SEPARATOR. /* position in the array */ (hash|array|scalar)

hash ::= 'HASH'.SEPARATOR. [0-9]+.SEPARATOR. /* length of hash data */ hash_element+

hash_element ::= [1-9][0-9]*.SEPARATOR. /* length of the hash key */ [a-zA-Z0-9_]+.SEPARATOR. /* the hash key */ (hash|array|undef|scalar)

undef ::= 'UNDEF'.SEPARATOR.

The SEPARATOR is one character long. It can be any non number. The default separator is newline. The important thing is that you can parse every structure without knowing the used SEPARATOR.

Perhaps the good mathmatics notice that the last SEPARATOR in the definition of a scalar is not necessary. This SEPARATOR is only used to make the resulting structure better readable for humans.

2022-05-14 perl v5.32.1

Search for    or go to Top of page |  Section 3 |  Main Index

Powered by GSP Visit the GSP FreeBSD Man Page Interface.
Output converted with ManDoc.