Protobuf\Binary\StreamWriter::writeZigzag PHP Method

writeZigzag() public method

Encodes an integer with zigzag.
public writeZigzag ( Stream $stream, integer $value, integer $base = 32 )
$stream Protobuf\Stream
$value integer
$base integer
    public function writeZigzag(Stream $stream, $value, $base = 32)
    {
        if ($base == 32) {
            $this->writeZigzag32($stream, $value);
            return;
        }
        $this->writeZigzag64($stream, $value);
    }

Usage Example

 public function testWriteSimpleMessage()
 {
     $stream = Stream::create();
     $writer = new StreamWriter($this->config);
     $binary = $this->getProtoContent('simple.bin');
     $writer->writeVarint($stream, WireFormat::getFieldKey(1, WireFormat::WIRE_FIXED64));
     $writer->writeDouble($stream, 123456789.12345);
     $writer->writeVarint($stream, WireFormat::getFieldKey(2, WireFormat::WIRE_FIXED32));
     $writer->writeFloat($stream, 12345.123046875);
     $writer->writeVarint($stream, WireFormat::getFieldKey(3, WireFormat::WIRE_VARINT));
     $writer->writeVarint($stream, -123456789123456789);
     $writer->writeVarint($stream, WireFormat::getFieldKey(4, WireFormat::WIRE_VARINT));
     $writer->writeVarint($stream, 123456789123456789);
     $writer->writeVarint($stream, WireFormat::getFieldKey(5, WireFormat::WIRE_VARINT));
     $writer->writeVarint($stream, -123456789);
     $writer->writeVarint($stream, WireFormat::getFieldKey(6, WireFormat::WIRE_FIXED64));
     $writer->writeFixed64($stream, 123456789123456789);
     $writer->writeVarint($stream, WireFormat::getFieldKey(7, WireFormat::WIRE_FIXED32));
     $writer->writeFixed32($stream, 123456789);
     $writer->writeVarint($stream, WireFormat::getFieldKey(8, WireFormat::WIRE_VARINT));
     $writer->writeVarint($stream, 1);
     $writer->writeVarint($stream, WireFormat::getFieldKey(9, WireFormat::WIRE_LENGTH));
     $writer->writeString($stream, 'foo');
     $writer->writeVarint($stream, WireFormat::getFieldKey(12, WireFormat::WIRE_LENGTH));
     $writer->writeByteStream($stream, Stream::wrap('bar'));
     $writer->writeVarint($stream, WireFormat::getFieldKey(13, WireFormat::WIRE_VARINT));
     $writer->writeVarint($stream, 123456789);
     $writer->writeVarint($stream, WireFormat::getFieldKey(15, WireFormat::WIRE_FIXED32));
     $writer->writeSFixed32($stream, -123456789);
     $writer->writeVarint($stream, WireFormat::getFieldKey(16, WireFormat::WIRE_FIXED64));
     $writer->writeSFixed64($stream, -123456789123456789);
     $writer->writeVarint($stream, WireFormat::getFieldKey(17, WireFormat::WIRE_VARINT));
     $writer->writeZigzag($stream, -123456789, 32);
     $writer->writeVarint($stream, WireFormat::getFieldKey(18, WireFormat::WIRE_VARINT));
     $writer->writeZigzag($stream, -123456789123456789, 64);
     $this->assertEquals($binary, (string) $stream);
 }