*** empty log message ***

This commit is contained in:
Mike Goslin 2000-10-20 03:35:28 +00:00
parent f836633fd5
commit 97641032d7
2 changed files with 86 additions and 34 deletions

View File

@ -177,10 +177,8 @@ client_file_version_correct(string mfname, string filename) const {
// Description:
////////////////////////////////////////////////////////////////////
bool DownloadDb::
client_file_hash_correct(string mfname, string filename) const {
Hash client_hash = get_client_file_hash(mfname, filename);
Hash server_hash = get_server_file_hash(mfname, filename);
return (client_hash == server_hash);
client_file_crc_correct(string mfname, string filename) const {
return true;
}
// Operations on multifiles
@ -246,6 +244,11 @@ read_db(Filename &file) {
<< file << endl;
return db;
}
if (!read_version_map(read_stream)) {
downloader_cat.error()
<< "DownloadDb::read() - read_version_map() failed: "
<< file << endl;
}
return db;
}
@ -270,6 +273,7 @@ write_db(Filename &file, Db db) {
<< "Writing to file: " << file << endl;
db.write(write_stream);
write_version_map(write_stream);
write_stream.close();
return true;
}
@ -305,9 +309,9 @@ server_add_multifile(string mfname, Phase phase, Version version, int size, int
// Description:
////////////////////////////////////////////////////////////////////
void DownloadDb::
server_add_file(string mfname, string fname, Version version, Hash hash) {
server_add_file(string mfname, string fname, Version version) {
// Make the new file record
PT(FileRecord) fr = new FileRecord(fname, version, hash);
PT(FileRecord) fr = new FileRecord(fname, version);
// Find the multifile with mfname
vector<PT(MultifileRecord)>::iterator i = _server_db._mfile_records.begin();
@ -658,12 +662,9 @@ parse_fr(uchar *start, int size) {
PN_int32 fr_name_length = di.get_int32();
fr->_name = di.extract_bytes(fr_name_length);
fr->_version = di.get_int32();
fr->_hash = di.get_int32();
downloader_cat.debug()
<< "Parsed file record: " << fr->_name
<< " version: " << fr->_version
<< " hash: " << fr->_hash << endl;
<< "Parsed file record: " << fr->_name << " version: " << fr->_version << endl;
// Return the new MultifileRecord
return fr;
@ -893,7 +894,6 @@ DownloadDb::FileRecord::
FileRecord(void) {
_name = "";
_version = 0;
_hash = 0;
}
@ -903,10 +903,9 @@ FileRecord(void) {
// Description:
////////////////////////////////////////////////////////////////////
DownloadDb::FileRecord::
FileRecord(string name, Version version, Hash hash) {
FileRecord(string name, Version version) {
_name = name;
_version = version;
_hash = hash;
}
////////////////////////////////////////////////////////////////////
@ -916,9 +915,7 @@ FileRecord(string name, Version version, Hash hash) {
////////////////////////////////////////////////////////////////////
void DownloadDb::FileRecord::
output(ostream &out) const {
out << " FileRecord: " << _name
<< " version: " << _version
<< " hash: " << _hash << endl;
out << " FileRecord: " << _name << " version: " << _version << endl;
}
////////////////////////////////////////////////////////////////////
@ -932,6 +929,16 @@ add_version(const Filename &name, ulong hash, int version) {
_versions[name_code][version] = hash;
}
////////////////////////////////////////////////////////////////////
// Function: DownloadDb::add_version
// Access: Public
// Description:
////////////////////////////////////////////////////////////////////
void DownloadDb::
add_version(int name, ulong hash, int version) {
_versions[name][version] = hash;
}
////////////////////////////////////////////////////////////////////
// Function: DownloadDb::get_version
// Access: Public
@ -947,6 +954,56 @@ get_version(const Filename &name, ulong hash) {
return -1;
}
////////////////////////////////////////////////////////////////////
// Function: DownloadDb::write_version_map
// Access: Protected
// Description:
////////////////////////////////////////////////////////////////////
void DownloadDb::
write_version_map(ofstream &write_stream) {
_master_datagram.clear();
VersionMap::iterator vmi;
vector_ulong::iterator i;
_master_datagram.add_int32(_versions.size());
for (vmi = _versions.begin(); vmi != _versions.end(); ++vmi) {
_master_datagram.add_int32((*vmi).first);
_master_datagram.add_int32((*vmi).second.size());
for (i = (*vmi).second.begin(); i != (*vmi).second.end(); ++i)
_master_datagram.add_uint64((*i));
}
string msg = _master_datagram.get_message();
write_stream.write((char *)msg.data(), msg.length());
}
////////////////////////////////////////////////////////////////////
// Function: DownloadDb::read_version_map
// Access: Protected
// Description:
////////////////////////////////////////////////////////////////////
bool DownloadDb::
read_version_map(ifstream &read_stream) {
_master_datagram.clear();
char *buffer = new char[sizeof(PN_uint64)];
read_stream.read(buffer, sizeof(PN_int32));
_master_datagram.append_data(buffer, sizeof(PN_int32));
DatagramIterator di(_master_datagram);
int num_entries = di.get_int32();
_master_datagram.clear();
for (int i = 0; i < num_entries; i++) {
read_stream.read(buffer, 2 * sizeof(PN_int32));
_master_datagram.append_data(buffer, 2 * sizeof(PN_int32));
DatagramIterator di2(_master_datagram);
int name = di2.get_int32();
int length = di2.get_int32();
for (int j = 0; j < length; j++) {
read_stream.read(buffer, sizeof(PN_uint64));
_master_datagram.clear();
_master_datagram.append_data(buffer, sizeof(PN_uint64));
DatagramIterator di3(_master_datagram);
int hash = di3.get_uint64();
add_version(name, hash, j);
}
}
delete buffer;
return true;
}

View File

@ -27,24 +27,20 @@
magic_number
number_of_multifiles
header_length multifile_name phase version size status num_files
header_length file_name version hash
header_length file_name version hash
header_length file_name version
header_length file_name version
header_length multifile_name phase version size status num_files
header_length file_name version hash
header_length file_name version hash
header_length file_name version
header_length file_name version
...
...
Note: the has value will not be valid on the client db. Only
the server db will have the hash value stored
A Db is a Vector<MultifileRecord>
MultifileRecord is a Vector<FileRecord>
*/
typedef int Version;
typedef ulong Hash;
typedef int Phase;
class EXPCL_PANDAEXPRESS DownloadDb {
@ -85,7 +81,6 @@ public:
INLINE void set_client_multifile_size(string mfname, int size);
INLINE void set_client_multifile_delta_size(string mfname, int size);
INLINE int get_server_multifile_size(string mfname) const;
INLINE void set_server_multifile_size(string mfname, int size);
INLINE int get_client_multifile_phase(string mfname) const;
INLINE int get_server_multifile_phase(string mfname) const;
@ -104,9 +99,6 @@ public:
INLINE Version get_server_file_version(string mfname, string fname) const;
INLINE void set_client_file_version(string mfname, string fname, Version version);
INLINE Hash get_client_file_hash(string mfname, string fname) const;
INLINE Hash get_server_file_hash(string mfname, string fname) const;
// Check client db against server db
bool client_db_current_version(void) const;
@ -117,7 +109,7 @@ public:
bool client_multifile_expanded(string mfname) const;
bool client_multifile_version_correct(string mfname) const;
bool client_file_version_correct(string mfname, string filename) const;
bool client_file_hash_correct(string mfname, string filename) const;
bool client_file_crc_correct(string mfname, string filename) const;
// Operations on multifiles
void delete_client_multifile(string mfname);
@ -127,18 +119,17 @@ public:
// Server side operations to create multifile records
void create_new_server_db();
void server_add_multifile(string mfname, Phase phase, Version version, int size, int status);
void server_add_file(string mfname, string fname, Version version, Hash hash);
void server_add_file(string mfname, string fname, Version version);
public:
class EXPCL_PANDAEXPRESS FileRecord : public ReferenceCount {
public:
FileRecord(void);
FileRecord(string name, Version version, Hash hash);
FileRecord(string name, Version version);
void output(ostream &out) const;
string _name;
Version _version;
Hash _hash;
};
typedef vector<PT(FileRecord)> FileRecords;
@ -206,10 +197,14 @@ public:
typedef vector<unsigned long> vector_ulong;
typedef map<int, vector_ulong> VersionMap;
void add_version(const Filename &name, ulong hash, int version);
void add_version(int name, ulong hash, int version);
int get_version(const Filename &name, ulong hash);
protected:
void write_version_map(ofstream &write_stream);
bool read_version_map(ifstream &read_stream);
VersionMap _versions;
Datagram _master_datagram;
};
INLINE ostream &operator << (ostream &out, const DownloadDb &dldb) {