Fixed problem with sending broadcasts

(while adding some tests)
This commit is contained in:
2016-02-13 08:03:05 +01:00
parent af3e63f592
commit e4a69f42b0
5 changed files with 261 additions and 16 deletions

View File

@ -26,6 +26,7 @@ import ch.dissem.bitmessage.entity.valueobject.InventoryVector;
import ch.dissem.bitmessage.entity.valueobject.Label;
import ch.dissem.bitmessage.entity.valueobject.PrivateKey;
import ch.dissem.bitmessage.exception.DecryptionFailedException;
import ch.dissem.bitmessage.factory.Factory;
import ch.dissem.bitmessage.ports.*;
import ch.dissem.bitmessage.utils.Property;
import ch.dissem.bitmessage.utils.TTL;
@ -168,7 +169,7 @@ public class BitmessageContext {
ctx.send(
msg.getFrom(),
to,
new Msg(msg),
wrapInObjectPayload(msg),
TTL.msg()
);
msg.setStatus(SENT);
@ -179,6 +180,17 @@ public class BitmessageContext {
});
}
private ObjectPayload wrapInObjectPayload(Plaintext msg) {
switch (msg.getType()) {
case MSG:
return new Msg(msg);
case BROADCAST:
return Factory.getBroadcast(msg);
default:
throw new RuntimeException("Unknown message type " + msg.getType());
}
}
public void startup() {
ctx.getNetworkHandler().start(networkListener);
}

View File

@ -196,7 +196,8 @@ public class Factory {
}
}
public static ObjectPayload getBroadcast(BitmessageAddress sendingAddress, Plaintext plaintext) {
public static ObjectPayload getBroadcast(Plaintext plaintext) {
BitmessageAddress sendingAddress = plaintext.getFrom();
if (sendingAddress.getVersion() < 4) {
return new V4Broadcast(sendingAddress, plaintext);
} else {