Undelivered Mail Returned to Sender

From: Mail Delivery System <MAILER-DAEMON@caucho.com>
Date: Sun Jun 25 2006 - 23:36:45 PDT

This is the Postfix program at host caucho.com.

I'm sorry to have to inform you that your message could not be
be delivered to one or more recipients. It's attached below.

For further assistance, please send mail to <postmaster>

If you do so, please include this problem report. You can
delete your own text from the attached returned message.

                        The Postfix program

<johnm-hessian@xxx.net> (expanded from <hessian-interest-mailout>): delivery
    temporarily suspended: Host or domain name not found. Name service error
    for name=non.net type=MX: Host not found, try again

attached mail follows:


Hello.

Thanks for answers.

> Two issues.
>
> First, there's no intention to change any Hessian semantics. So
> there's no intention of adding any new datatypes. The Hessian type
> system has proved adequate.
>
> Second, Hessian is based on a byte-code, switch parser grammar. The
> basic type of any data is determined by the first byte. So the main
> Hessian parser is always just a big recursive switch, which is easy
> to implement.

These encodings are not intended to introduce new types (leaving aside
note about longer integers). They are exactly for compression.
Variable length integer would correspond to usual integer. Variable
length back reference has to have same meaning as original back
reference and so forth.

Byte code switch is also applicable in this case. Hypothetical parser
in this case would look like

switch (leading-byte) {
        'I': parse_integer // returns integer
        'i': parse_var_integer // returns integer
        'R': parse_reference // returns back reference
        'r': parse_var_reference // returns back reference
}

Where procedures whose names starting with "parse_var_" interpret next
byte as containing byte-length and portion of bits. In order to reduce
number of bit-shifts that portion of bits should represent higher ones.
Respective parse procedure for variable length integer values would
look like

ILEN = 4 // length of "normalized" integer (4 for int or 8 for long)
result = (byte array of length that can be interpreted as big-endian
long or integer)

b = read_next
len = b >> 5 // get length in bytes
result[0] = (b & 0x10) << 3 // store sign
result[ILEN - len - 1] = b & 0x0f // store higher bits
for i = (ILEN - len) to ILEN
{
        result[i] = read_next
}
return result

--
Petr
Received on Sun 25 Jun 2006 23:36:45 -0700

This archive was generated by hypermail 2.1.8 : Thu Sep 28 2006 - 20:16:41 PDT