protected void receive(GenericPayload ack) { if (ack.getData().length == Msg.ACK_LENGTH) { Plaintext msg = ctx.getMessageRepository().getMessageForAck(ack.getData()); if (msg != null) { ctx.getLabeler().markAsAcknowledged(msg); ctx.getMessageRepository().save(msg); } } }
private void updatePubkey(BitmessageAddress address, Pubkey pubkey) { address.setPubkey(pubkey); LOG.info("Got pubkey for contact " + address); ctx.getAddressRepository().save(address); List<Plaintext> messages = ctx.getMessageRepository().findMessages(PUBKEY_REQUESTED, address); LOG.info("Sending " + messages.size() + " messages for contact " + address); for (Plaintext msg : messages) { ctx.getLabeler().markAsSending(msg); ctx.getMessageRepository().save(msg); ctx.send(msg); } }
protected void receive(InventoryVector iv, Plaintext msg) { msg.setInventoryVector(iv); labeler.setLabels(msg); ctx.getMessageRepository().save(msg); listener.receive(msg); updatePubkey(msg.getFrom(), msg.getFrom().getPubkey()); if (msg.getType() == Plaintext.Type.MSG && msg.getTo().has(Pubkey.Feature.DOES_ACK)) { ObjectMessage ack = msg.getAckMessage(); if (ack != null) { ctx.getInventory().storeObject(ack); ctx.getNetworkHandler().offer(ack.getInventoryVector()); } } } }
plaintext.setInventoryVector(object.getInventoryVector()); plaintext.updateNextTry(); ctx.getLabeler().markAsSent(plaintext); messageRepo.save(plaintext);
public void send(final Plaintext msg) { if (msg.getFrom() == null || msg.getFrom().getPrivateKey() == null) { throw new IllegalArgumentException("'From' must be an identity, i.e. have a private key."); } labeler().markAsSending(msg); BitmessageAddress to = msg.getTo(); if (to != null) { if (to.getPubkey() == null) { LOG.info("Public key is missing from recipient. Requesting."); ctx.requestPubkey(to); } if (to.getPubkey() == null) { ctx.getMessageRepository().save(msg); } } if (to == null || to.getPubkey() != null) { LOG.info("Sending message."); ctx.getMessageRepository().save(msg); if (msg.getType() == MSG) { ctx.send(msg); } else { ctx.send( msg.getFrom(), to, Factory.getBroadcast(msg), msg.getTTL() ); } } }