71 public function upload(
string $ftkey,
int $seek,
string $data): void
75 $size = strlen($data);
78 Signal::getInstance()->emit(
"filetransferUploadStarted", $ftkey, $seek, $size);
80 for (; $seek < $size;) {
81 $rest = $size - $seek;
82 $pack = min($rest, $pack);
83 $buff = substr($data, $seek, $pack);
84 $seek = $seek + $pack;
88 Signal::getInstance()->emit(
"filetransferUploadProgress", $ftkey, $seek, $size);
93 Signal::getInstance()->emit(
"filetransferUploadFinished", $ftkey, $seek, $size);
106 public function download(
string $ftkey,
int $size,
bool $passthru =
false)
118 Signal::getInstance()->emit(
"filetransferDownloadStarted", $ftkey, count($buff), $size);
120 for ($seek = 0; $seek < $size;) {
121 $rest = $size - $seek;
122 $pack = min($rest, $pack);
124 $seek = $seek + $pack;
126 $buff->append($data);
128 Signal::getInstance()->emit(
"filetransferDownloadProgress", $ftkey, count($buff), $size);
133 Signal::getInstance()->emit(
"filetransferDownloadFinished", $ftkey, count($buff), $size);
135 if (strlen($buff) != $size) {
136 throw new FileTransferException(
"incomplete file download (" . count($buff) .
" of " . $size .
" bytes)");