rpc: fix issue with querying txids by block heights

This commit is contained in:
Braydon Fuller
2016-04-12 20:33:18 -04:00
committed by Braydon Fuller
parent 96d8307b55
commit 94ea69a4d5
5 changed files with 48 additions and 26 deletions

View File

@@ -561,23 +561,14 @@ struct CAddressIndexKey {
struct CAddressIndexIteratorKey {
unsigned int type;
uint160 hashBytes;
bool includeHeight;
int blockHeight;
size_t GetSerializeSize(int nType, int nVersion) const {
if (includeHeight) {
return 25;
} else {
return 21;
}
return 21;
}
template<typename Stream>
void Serialize(Stream& s, int nType, int nVersion) const {
ser_writedata8(s, type);
hashBytes.Serialize(s, nType, nVersion);
if (includeHeight) {
ser_writedata32be(s, blockHeight);
}
}
template<typename Stream>
void Unserialize(Stream& s, int nType, int nVersion) {
@@ -588,14 +579,6 @@ struct CAddressIndexIteratorKey {
CAddressIndexIteratorKey(unsigned int addressType, uint160 addressHash) {
type = addressType;
hashBytes = addressHash;
includeHeight = false;
}
CAddressIndexIteratorKey(unsigned int addressType, uint160 addressHash, int height) {
type = addressType;
hashBytes = addressHash;
blockHeight = height;
includeHeight = true;
}
CAddressIndexIteratorKey() {
@@ -605,7 +588,44 @@ struct CAddressIndexIteratorKey {
void SetNull() {
type = 0;
hashBytes.SetNull();
includeHeight = false;
}
};
struct CAddressIndexIteratorHeightKey {
unsigned int type;
uint160 hashBytes;
int blockHeight;
size_t GetSerializeSize(int nType, int nVersion) const {
return 25;
}
template<typename Stream>
void Serialize(Stream& s, int nType, int nVersion) const {
ser_writedata8(s, type);
hashBytes.Serialize(s, nType, nVersion);
ser_writedata32be(s, blockHeight);
}
template<typename Stream>
void Unserialize(Stream& s, int nType, int nVersion) {
type = ser_readdata8(s);
hashBytes.Unserialize(s, nType, nVersion);
blockHeight = ser_readdata32be(s);
}
CAddressIndexIteratorHeightKey(unsigned int addressType, uint160 addressHash, int height) {
type = addressType;
hashBytes = addressHash;
blockHeight = height;
}
CAddressIndexIteratorHeightKey() {
SetNull();
}
void SetNull() {
type = 0;
hashBytes.SetNull();
blockHeight = 0;
}
};