Opcode-specific request structs and decode/2 dispatcher.
Each opcode's payload layout is taken verbatim from Linux's
include/uapi/linux/fuse.h v7.31. Filenames in request bodies are
always NUL-terminated and are decoded without the terminator.
Summary
Functions
Decode a body for the given opcode. Returns the populated struct or
{:error, :malformed_body} when the bytes don't match the expected
layout.
Types
@type t() :: Wick.Protocol.Request.Init.t() | Wick.Protocol.Request.Destroy.t() | Wick.Protocol.Request.Lookup.t() | Wick.Protocol.Request.Forget.t() | Wick.Protocol.Request.BatchForget.t() | Wick.Protocol.Request.GetAttr.t() | Wick.Protocol.Request.SetAttr.t() | Wick.Protocol.Request.Mkdir.t() | Wick.Protocol.Request.Unlink.t() | Wick.Protocol.Request.Rmdir.t() | Wick.Protocol.Request.Rename.t() | Wick.Protocol.Request.Rename2.t() | Wick.Protocol.Request.Open.t() | Wick.Protocol.Request.Release.t() | Wick.Protocol.Request.Read.t() | Wick.Protocol.Request.Readdir.t() | Wick.Protocol.Request.ReaddirPlus.t() | Wick.Protocol.Request.Write.t() | Wick.Protocol.Request.Statfs.t() | Wick.Protocol.Request.Flush.t() | Wick.Protocol.Request.Fsync.t() | Wick.Protocol.Request.Create.t() | Wick.Protocol.Request.SetXattr.t() | Wick.Protocol.Request.GetXattr.t() | Wick.Protocol.Request.ListXattr.t() | Wick.Protocol.Request.RemoveXattr.t() | Wick.Protocol.Request.GetLk.t() | Wick.Protocol.Request.SetLk.t() | Wick.Protocol.Request.Interrupt.t()