docs / stdlib / wire

Stdlib index
  1. Overview
  1. Captured-borrow migration worklist (3.3.3)
  2. Owned-bind migration worklist (8.2.7)
  3. Return-side title audit — the ride-through enumeration
  4. stdlib ownership audit
  5. stdlib ownership dispositions (plan 1.3.1 / 4.3.1)

aot

  1. Components
  2. Scope
  3. Scoped

codec

  1. Base32
  2. Base64

codec / csv

  1. Csv

codec / json

  1. Json

collection

  1. ArrayList
  2. BPlusTree
  3. Cache
  4. Collectors
  5. HashMap
  6. HashSet
  7. Heap
  8. ImmutableList
  9. ImmutableMap
  10. ImmutableSet
  11. LinkedList
  12. RedBlackTree
  13. Sort

collection / ltm

  1. LtmBPlusTree

concurrent

  1. AtomicInt32
  2. AtomicInt64
  3. Channel
  4. Fiber
  5. FiberLocal
  6. Lock
  7. Mutex
  8. RwLock
  9. Semaphore
  10. Tasks

error

  1. Exception
  2. NoOptionalValueException
  3. NotProvidedException
  4. RecoverableException
  5. ScopedBuildFailedException
  6. ScopeNotActiveException
  7. Throwable
  8. UnrecoverableException

gfx

  1. Sampler
  2. Texture2D

hash

  1. DefaultHasher
  2. Hash
  3. SipHash
  4. XXHash3

ifx

  1. BackendRegistry
  2. Window

io

  1. Buffer

io / file

  1. File
  2. FileInfo
  3. FileReader
  4. FileWriter
  5. Path
  6. Watcher

io / net

  1. BufferPool
  2. ByteBuffer
  3. IpAddress
  4. Server
  5. ServerBuilder
  6. SocketAddress
  7. TcpListener
  8. TcpStream
  9. UdpSocket

io / net / dns

  1. Dns

io / net / uri

  1. Uri
  2. UriBuilder

lang

  1. Guid
  2. Math
  3. Optional
  4. Pair
  5. Slice
  6. String
  7. StringBuilder

lang / stream

  1. ArrayStream
  2. Stream

math

  1. Camera
  2. Color
  3. DType
  4. Ray
  5. Rotation
  6. Tensor
  7. Transform

math / fft

  1. Fft

math / linalg

  1. LinAlg

math / npio

  1. Npy

math / poly

  1. Poly

math / random

  1. Generator

math / stats

  1. Stats

nucleo

  1. Columns — the Arrow-laid-out substrate
  2. Fused tensor expressions — Fuse
  3. Table — the lazy, typed dataframe
  4. Tape — define-by-run autograd
  5. Transform intrinsics — Grad, Vmap, Jit

process

  1. Command
  2. Process

reflect

  1. Class

search / distance

  1. Distance

search / fuzzy

  1. Matcher

search / ngram

  1. Index

session

  1. PackageInstallException
  2. Packages

time

  1. Clock
  2. DateTimeFormatter
  3. Duration
  4. Instant
  5. LocalDate
  6. LocalDateTime
  7. LocalTime
  8. Period
  9. ZonedDateTime
  10. ZoneId
  11. ZoneOffset

wire

  1. Compressor
  2. CompressStream
  3. DecompressionLimitException
  4. Decompressor
  5. Encoder
  6. Schema
  7. SchemaEncoder

xpu

  1. Device
  2. KernelBuffer
  3. KernelStream
  4. KernelTimer

xpu / mesh

  1. MeshSimplifier

Compressor

cajeta.wire.Compressor is the compress stage of a byte-to-byte codec, the inverse of Decompressor. It carries no T, so it stays separate from Encoder<T>. Block containers (Parquet, ORC, Avro) call compress(src). HTTP content coding picks a level with compress(src, len, level) and streams a body through stream(level).

import cajeta.wire.Compressor;
import cajeta.wire.CompressStream;

// The stream a pass-through codec hands out: it returns what was written.
final class PassStream implements CompressStream {
    int8[] held;
    int64 n;

    PassStream() {
        this.held = heap int8[4096];
        this.n = 0;
    }

    public void write(int8[] src, int64 len) {
        int64 i = 0;
        while (i < len) {
            this.held[this.n + i] = src[i];
            i = i + 1;
        }
        this.n = this.n + len;
    }

    public #int8[] flush() {
        int8[] out #= CopyCompressor.take(this.held, this.n);
        this.n = 0;
        return #out;
    }

    public #int8[] finish() {
        return this.flush();
    }
}

// A pass-through codec showing the contract's shape.
public final class CopyCompressor implements Compressor {
    public CopyCompressor() { }

    static #int8[] take(int8[] src, int64 len) {
        int8[] out = heap int8[len];
        int64 i = 0;
        while (i < len) {
            out[i] = src[i];
            i = i + 1;
        }
        return #out;
    }

    public #int8[] compress(int8[] src) {
        return CopyCompressor.take(src, src.count());
    }

    public #int8[] compress(int8[] src, int64 len, int32 level) {
        return CopyCompressor.take(src, len);
    }

    public #CompressStream stream(int32 level) {
        return heap PassStream();
    }
}

Methods

Signature
#int8[] compress(int8[] src) ⚑Compress all of src into a fresh, caller-owned block
#int8[] compress(int8[] src, int64 len, int32 level) ⚑Compress src[0 .. len) at level (1 fastest to 9 smallest for DEFLATE codecs). A codec without levels ignores it
#CompressStream stream(int32 level) ⚑A CompressStream that compresses what is written to it

⚑ = @EntryPoint

See also

Source: docs/stdlib/wire/Compressor.md · 1 min read · 144 words