// The method is called after the database is created or loaded. // This guarantees that the directory is there. // The file with an identifier could be read or created safely. // Returns: true if everything is fine. void CNetScheduleServer::InitNodeID(const string & db_path) { CFile node_id_file(CFile::MakePath( CDirEntry::AddTrailingPathSeparator(db_path), "NODE_ID")); if (node_id_file.Exists()) { // File exists, read the ID from it CFileIO f; char buffer[64]; f.Open(node_id_file.GetPath(), CFileIO_Base::eOpen, CFileIO_Base::eRead); size_t n = f.Read(buffer, sizeof(buffer)); m_NodeID = string(buffer, n); NStr::TruncateSpacesInPlace(m_NodeID, NStr::eTrunc_End); f.Close(); } else { // No file, need to be created m_NodeID = "n" + x_GenerateGUID(); CFileIO f; f.Open(node_id_file.GetPath(), CFileIO_Base::eCreate, CFileIO_Base::eReadWrite); f.Write(m_NodeID.data(), m_NodeID.size()); f.Close(); } }
void CTest::CreateFile(const string& path, size_t offset, size_t size) { CFileIO fio; fio.Open(path, CFileIO::eCreate, CFileIO::eReadWrite); assert((offset + size) <= m_BufLen); size_t n = fio.Write(m_Buf + offset, size); assert(n == size); fio.Close(); assert(CFile(path).Exists()); }