コード例 #1
0
ファイル: PosixStorage.C プロジェクト: osen/cdesktopenv
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;
}
コード例 #2
0
ファイル: FormatWriter.cpp プロジェクト: dgault/bioformats
      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);
      }
コード例 #3
0
ファイル: PosixStorage.C プロジェクト: osen/cdesktopenv
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;
}
コード例 #4
0
ファイル: StorageHandler.cpp プロジェクト: sepal/gh2_trigger
void StorageHandler::save(StorageAddresses address, const long value)
{
  union LongConversion data;
  data.l = value;
  saveBytes(address, data.buffer, 4);
}
コード例 #5
0
ファイル: StorageHandler.cpp プロジェクト: sepal/gh2_trigger
void StorageHandler::save(StorageAddresses address, const int value)
{
  union IntConversion data;
  data.i = value;
  saveBytes(address, data.buffer, 2);
}
コード例 #6
0
 void saveUint8(uint8_t value) {
     saveBytes((char*)&value, sizeof(uint8_t));
 }