Skip to content

Commit 8ac5849

Browse files
committed
SerializationException + other minor serialization changed
Involves dartcoin#2
1 parent 4f5bef5 commit 8ac5849

24 files changed

+41
-29
lines changed

lib/core/core.dart

+6-3
Original file line numberDiff line numberDiff line change
@@ -36,9 +36,12 @@ import "package:cipher/modes/cbc.dart";
3636
part "../src/core/utils.dart";
3737
part "../src/core/units.dart";
3838
part "../src/core/sha256hash.dart";
39-
part "../src/core/varint.dart";
40-
part "../src/core/varstr.dart";
41-
part "../src/core/bitcoin_serialization.dart";
39+
40+
// serialization
41+
part "../src/serialization/varint.dart";
42+
part "../src/serialization/varstr.dart";
43+
part "../src/serialization/bitcoin_serialization.dart";
44+
part "../src/serialization/serialization_exception.dart";
4245

4346
// addresses and private keys
4447
part "../src/core/address.dart";

lib/src/core/bloom_filter.dart

+2-2
Original file line numberDiff line numberDiff line change
@@ -113,11 +113,11 @@ class BloomFilter extends Object with BitcoinSerialization {
113113
_data = bytes.sublist(offset, offset + size.value);
114114
offset += size.value;
115115
if (_data.length > MAX_FILTER_SIZE)
116-
throw new Exception ("Bloom filter out of size range.");
116+
throw new SerializationException("Bloom filter out of size range.");
117117
_hashFuncs = Utils.bytesToUintLE(bytes.sublist(offset), 4);
118118
offset += 4;
119119
if (_hashFuncs > MAX_HASH_FUNCS)
120-
throw new Exception("Bloom filter hash function count out of range");
120+
throw new SerializationException("Bloom filter hash function count out of range");
121121
_nTweak = Utils.bytesToUintLE(bytes.sublist(offset), 4);
122122
offset += 4;
123123
_nFlags = bytes[offset];

lib/src/core/transaction_outpoint.dart

+2-2
Original file line numberDiff line numberDiff line change
@@ -48,8 +48,8 @@ class TransactionOutPoint extends Object with BitcoinSerialization {
4848

4949
@override
5050
operator ==(TransactionOutPoint other) {
51-
if(!(other is TransactionOutPoint)) return false;
52-
return txid == other.txid &&
51+
return other is TransactionOutPoint &&
52+
txid == other.txid &&
5353
index == other.index &&
5454
(transaction == null || other.transaction == null || transaction == other.transaction);
5555
}

lib/src/core/transaction_output.dart

+2-2
Original file line numberDiff line numberDiff line change
@@ -60,8 +60,8 @@ class TransactionOutput extends Object with BitcoinSerialization {
6060

6161
@override
6262
operator ==(TransactionOutput other) {
63-
if(!(other is TransactionOutput)) return false;
64-
return value == other.value &&
63+
return other is TransactionOutput &&
64+
value == other.value &&
6565
scriptPubKey == other.scriptPubKey &&
6666
(parentTransaction == null || other.parentTransaction == null || parentTransaction == other.parentTransaction);
6767
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
part of dartcoin.core;
2+
3+
class SerializationException implements Exception {
4+
5+
final String message;
6+
7+
SerializationException([String this.message]);
8+
9+
}
File renamed without changes.
File renamed without changes.

lib/src/wire/message.dart

+4-4
Original file line numberDiff line numberDiff line change
@@ -68,13 +68,13 @@ abstract class Message extends Object with BitcoinSerialization {
6868
* - verifies the command string from the serialization with [message.command]
6969
* (TODO it might be a possibility to make it possible to skip this check when it has already been performed)
7070
*/
71-
static int _preparePayloadSerialization(Uint8List bytes, Message message) {
71+
static int _preparePayloadDeserialization(Uint8List bytes, Message message) {
7272
if(bytes.length < 16)
73-
throw new Exception("Cannot deserialize because serialization is too short.");
73+
throw new SerializationException("Cannot deserialize because serialization is too short.");
7474
message._magic = Utils.bytesToUintLE(bytes, 4);
7575
String cmd = _parseCommand(bytes.sublist(4, HEADER_LENGTH));
7676
if(cmd != message.command)
77-
throw new Exception("Deserialization error: serialization belongs to different message type.");
77+
throw new SerializationException("Deserialization error: serialization belongs to different message type.");
7878
return HEADER_LENGTH;
7979
}
8080

@@ -110,7 +110,7 @@ abstract class Message extends Object with BitcoinSerialization {
110110

111111
Uint8List _serialize() {
112112
if(command.length > 12)
113-
throw new Exception("Command length should not be greater than 12.");
113+
throw new SerializationException("Command length should not be greater than 12.");
114114
List<int> result = new List<int>();
115115
// the magic value
116116
result.addAll(Utils.uintToBytesLE(magic, 4));

lib/src/wire/messages/block_message.dart

+1-1
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@ class BlockMessage extends Message {
1717
new BitcoinSerialization.deserialize(new BlockMessage(null), bytes, length: length, lazy: lazy, params: params, protocolVersion: protocolVersion);
1818

1919
int _deserialize(Uint8List bytes) {
20-
int offset = Message._preparePayloadSerialization(bytes, this);
20+
int offset = Message._preparePayloadDeserialization(bytes, this);
2121
_block = new Block.deserialize(bytes.sublist(offset), lazy: false);
2222
offset += _block.serializationLength;
2323
return offset;

lib/src/wire/messages/filteradd_message.dart

+1-1
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@ class FilterAddMessage extends Message {
2121
new BitcoinSerialization.deserialize(new FilterAddMessage(null), bytes, length: length, lazy: lazy, params: params, protocolVersion: protocolVersion);
2222

2323
int _deserialize(Uint8List bytes) {
24-
int offset = Message._preparePayloadSerialization(bytes, this);
24+
int offset = Message._preparePayloadDeserialization(bytes, this);
2525
VarInt dataSize = new VarInt.deserialize(bytes, lazy: false);
2626
offset += dataSize.size;
2727
_data = bytes.sublist(offset, offset + dataSize.value);

lib/src/wire/messages/filterclear_message.dart

+1-1
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ class FilterClearMessage extends Message {
88
new BitcoinSerialization.deserialize(new FilterClearMessage(), bytes, length: length, lazy: lazy, params: params, protocolVersion: protocolVersion);
99

1010
int _deserialize(Uint8List bytes) {
11-
int offset = Message._preparePayloadSerialization(bytes, this);
11+
int offset = Message._preparePayloadDeserialization(bytes, this);
1212
return offset;
1313
}
1414

lib/src/wire/messages/filterload_message.dart

+1-1
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@ class FilterLoadMessage extends Message {
1717
}
1818

1919
int _deserialize(Uint8List bytes) {
20-
int offset = Message._preparePayloadSerialization(bytes, this);
20+
int offset = Message._preparePayloadDeserialization(bytes, this);
2121
_filter = new BloomFilter.deserialize(bytes.sublist(offset), lazy: false);
2222
offset += _filter.serializationLength;
2323
return offset;

lib/src/wire/messages/getaddr_message.dart

+1-1
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ class GetAddrMessage extends Message {
88
new BitcoinSerialization.deserialize(new GetAddrMessage(), bytes, length: Message.HEADER_LENGTH, lazy: lazy, params: params, protocolVersion: protocolVersion);
99

1010
int _deserialize(Uint8List bytes) {
11-
int offset = Message._preparePayloadSerialization(bytes, this);
11+
int offset = Message._preparePayloadDeserialization(bytes, this);
1212
return offset;
1313
}
1414

lib/src/wire/messages/headers_message.dart

+1-1
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@ class HeadersMessage extends Message {
1818

1919
//TODO there's something phishy with the 80 vs 81 block header size
2020
int _deserialize(Uint8List bytes) {
21-
int offset = Message._preparePayloadSerialization(bytes, this);
21+
int offset = Message._preparePayloadDeserialization(bytes, this);
2222
VarInt nbHeaders = new VarInt.deserialize(bytes.sublist(offset), lazy: false);
2323
offset += nbHeaders.size;
2424
_headers = new List<Block>(nbHeaders.value);

lib/src/wire/messages/inventory_item_container_message.dart

+1-1
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@ abstract class InventoryItemContainerMessage extends Message {
1717
}
1818

1919
int _deserialize(Uint8List bytes) {
20-
int offset = Message._preparePayloadSerialization(bytes, this);
20+
int offset = Message._preparePayloadDeserialization(bytes, this);
2121
VarInt nbItems = new VarInt.deserialize(bytes.sublist(offset));
2222
offset += nbItems.size;
2323
_items = new List<InventoryItem>();

lib/src/wire/messages/mempool_message.dart

+1-1
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ class MemPoolMessage extends Message {
88
new BitcoinSerialization.deserialize(new MemPoolMessage(), bytes, length: length, lazy: lazy, params: params, protocolVersion: protocolVersion);
99

1010
int _deserialize(Uint8List bytes) {
11-
int offset = Message._preparePayloadSerialization(bytes, this);
11+
int offset = Message._preparePayloadDeserialization(bytes, this);
1212
return offset;
1313
}
1414

lib/src/wire/messages/merkleblock_message.dart

+1-1
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@ class MerkleBlockMessage extends Message {
1717
}
1818

1919
int _deserialize(Uint8List bytes) {
20-
int offset = Message._preparePayloadSerialization(bytes, this);
20+
int offset = Message._preparePayloadDeserialization(bytes, this);
2121
_block = new FilteredBlock.deserialize(bytes.sublist(offset), lazy: false);
2222
offset += _block.serializationLength;
2323
return offset;

lib/src/wire/messages/ping_message.dart

+1-1
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,7 @@ class PingMessage extends Message {
2828
}
2929

3030
int _deserialize(Uint8List bytes) {
31-
int offset = Message._preparePayloadSerialization(bytes, this);
31+
int offset = Message._preparePayloadDeserialization(bytes, this);
3232
_nonce = Utils.bytesToUintLE(bytes.sublist(offset), 8);
3333
offset += 8;
3434
return offset;

lib/src/wire/messages/pong_message.dart

+1-1
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,7 @@ class PongMessage extends Message {
3030
}
3131

3232
int _deserialize(Uint8List bytes) {
33-
int offset = Message._preparePayloadSerialization(bytes, this);
33+
int offset = Message._preparePayloadDeserialization(bytes, this);
3434
_nonce = Utils.bytesToUintLE(bytes.sublist(offset), 8);
3535
offset += 8;
3636
return offset;

lib/src/wire/messages/request_message.dart

+2-2
Original file line numberDiff line numberDiff line change
@@ -30,10 +30,10 @@ abstract class RequestMessage extends Message {
3030
}
3131

3232
int _deserialize(Uint8List bytes) {
33-
int offset = Message._preparePayloadSerialization(bytes, this);
33+
int offset = Message._preparePayloadDeserialization(bytes, this);
3434
int version = Utils.bytesToUintLE(bytes.sublist(offset), 4);
3535
if(version != _VERSION)
36-
throw new Exception("Version mismatch!");
36+
throw new SerializationException("Version mismatch!");
3737
offset += 4;
3838
VarInt nbLocators = new VarInt.deserialize(bytes.sublist(offset));
3939
offset += nbLocators.size;

lib/src/wire/messages/tx_message.dart

+1-1
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@ class TxMessage extends Message {
1717
}
1818

1919
int _deserialize(Uint8List bytes) {
20-
int offset = Message._preparePayloadSerialization(bytes, this);
20+
int offset = Message._preparePayloadDeserialization(bytes, this);
2121
_tx = new Transaction.deserialize(bytes.sublist(offset), lazy: false);
2222
offset += _tx.serializationLength;
2323
return offset;

lib/src/wire/messages/verack_message.dart

+1-1
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ class VerackMessage extends Message {
88
new BitcoinSerialization.deserialize(new VerackMessage(), bytes, length: Message.HEADER_LENGTH, lazy: lazy, params: params, protocolVersion: protocolVersion);
99

1010
int _deserialize(Uint8List bytes) {
11-
int offset = Message._preparePayloadSerialization(bytes, this);
11+
int offset = Message._preparePayloadDeserialization(bytes, this);
1212
return offset;
1313
}
1414

lib/src/wire/messages/version_message.dart

+1-1
Original file line numberDiff line numberDiff line change
@@ -127,7 +127,7 @@ class VersionMessage extends Message {
127127
}
128128

129129
int _deserialize(Uint8List bytes) {
130-
int offset = Message._preparePayloadSerialization(bytes, this);
130+
int offset = Message._preparePayloadDeserialization(bytes, this);
131131
clientVersion = Utils.bytesToUintLE(bytes, 4);
132132
offset += 4;
133133
services = Utils.bytesToUBigIntLE(bytes.sublist(offset), 8);

0 commit comments

Comments
 (0)