Boolean PosixFdStorageObject::read(char *buf, size_t bufSize, Messenger &mgr, size_t &nread) { if (readSaved(buf, bufSize, nread)) return 1; if (fd_ < 0 || eof_) return 0; long n; do { n = ::read(fd_, buf, bufSize); } while (n < 0 && errno == EINTR); if (n > 0) { nread = size_t(n); saveBytes(buf, nread); return 1; } if (n < 0) { ParentLocationMessenger(mgr).message(PosixStorageMessages::fdRead, NumberMessageArg(fd_), ErrnoMessageArg(errno)); fd_ = -1; } else eof_ = 1; return 0; }
void FormatWriter::saveBytes(dimension_size_type plane, VariantPixelBuffer& buf) { assertId(currentId, true); dimension_size_type width = metadataRetrieve->getPixelsSizeX(getSeries()); dimension_size_type height = metadataRetrieve->getPixelsSizeY(getSeries()); saveBytes(plane, buf, 0, 0, width, height); }
Boolean PosixStorageObject::read(char *buf, size_t bufSize, Messenger &mgr, size_t &nread) { if (readSaved(buf, bufSize, nread)) return 1; if (suspended_) resume(mgr); if (fd_ < 0 || eof_) return 0; long n; do { n = ::read(fd_, buf, bufSize); } while (n < 0 && errno == EINTR); if (n > 0) { nread = size_t(n); saveBytes(buf, nread); return 1; } if (n < 0) { int saveErrno = errno; releaseD(); (void)xclose(fd_); systemError(mgr, PosixStorageMessages::readSystemCall, saveErrno); fd_ = -1; } else { eof_ = 1; // n == 0, so end of file if (!mayRewind_) { releaseD(); if (xclose(fd_) < 0) systemError(mgr, PosixStorageMessages::closeSystemCall, errno); fd_ = -1; } } return 0; }
void StorageHandler::save(StorageAddresses address, const long value) { union LongConversion data; data.l = value; saveBytes(address, data.buffer, 4); }
void StorageHandler::save(StorageAddresses address, const int value) { union IntConversion data; data.i = value; saveBytes(address, data.buffer, 2); }
void saveUint8(uint8_t value) { saveBytes((char*)&value, sizeof(uint8_t)); }