f = $mail; $this->ftype = ((($type&0xff)<<8)|self::IS_PKT); $this->readpos = 0; } public function __get($key) { switch ($key) { case 'dbids': return $this->f->messages->pluck('dbid'); case 'name': return sprintf('%08x',timew($this->youngest())); case 'nameas': return sprintf('%s.pkt',$this->name); case 'mtime': return $this->youngest()->timestamp; case 'size': return strlen($this->f); case 'type': return ($this->ftype&0xff00)>>8; default: return parent::__get($key); } } public function close(bool $successful): void { if ($successful) $this->complete = TRUE; } public function feof(): bool { return ($this->readpos === $this->size); } public function open(string $compress=''): bool { return TRUE; } public function read(int $length): string { $result = substr((string)$this->f,$this->readpos,$length); $this->readpos += strlen($result); return $result; } public function seek(int $pos): bool { $this->readpos = ($pos < $this->size) ? $pos : $this->size; return TRUE; } public function youngest(): Carbon { return $this->f->messages->pluck('date')->sort()->last(); } }