Otp.OtpOutputStream.write_long C# (CSharp) Метод

write_long() приватный Метод

private write_long ( long l, bool isNegative ) : void
l long
isNegative bool
Результат void
        private void write_long(long l, bool isNegative)
        {
            if ((l & 0xff) == l)
            {
                // will fit in one byte
                this.write1(OtpExternal.smallIntTag);
                this.write1(l);
            }
            else if ((l <= OtpExternal.erlMax) && (l >= OtpExternal.erlMin))
            {
                this.write1(OtpExternal.intTag);
                this.write4BE(l);
            }
            else
            {
                int  neg = isNegative ? 1 : 0;
                ulong v  = (ulong)(isNegative ? -l : l);
                byte arity = 0;
                this.write1(OtpExternal.smallBigTag);
                int arity_pos = _count;
                this.write1(0);  // Fill in later
                this.write1(neg); // sign
                while (v != 0) {
                    this.write1((byte)(v & 0xff));  // write lowest byte
                    v >>= 8;                // shift unsigned
                    arity++;
                }
                buf[arity_pos] = arity;
            }
        }

Same methods

OtpOutputStream::write_long ( long l ) : void

Usage Example

Пример #1
0
 private void  sendExit(int tag, Erlang.Pid from, Erlang.Pid dest, System.String reason)
 {
     if (!connected)
     {
         throw new System.IO.IOException("Not connected");
     }
     OtpOutputStream header = new OtpOutputStream(headerLen);
     
     // preamble: 4 byte length + "passthrough" tag
     header.write4BE(0); // reserve space for length
     header.write1(passThrough);
     header.write1(version);
     
     // header
     header.write_tuple_head(4);
     header.write_long(tag);
     header.write_any(from);
     header.write_any(dest);
     header.write_string(reason);
     
     // fix up length in preamble
     header.poke4BE(0, header.count() - 4);
     
     do_send(header);
 }
All Usage Examples Of Otp.OtpOutputStream::write_long