public void setStatus(Status status) { if (status != Status.RECEIVED && sent == null && status != Status.DRAFT) { sent = UnixTime.now(); } this.status = status; }
public Builder defaults(long clientNonce) { version = BitmessageContext.CURRENT_VERSION; services = 1; timestamp = UnixTime.now(); userAgent = "/Jabit:0.0.1/"; streamNumbers = new long[]{1}; nonce = clientNonce; return this; }
private Connection(InternalContext context, Mode mode, Socket socket, Map<InventoryVector, Long> commonRequestedObjects, NetworkAddress node, long syncTimeout) { super(context, mode, node, commonRequestedObjects, syncTimeout); this.startTime = UnixTime.now(); this.socket = socket; }
private boolean checkOpenRequests() { return !requestedObjects.isEmpty() && lastObjectTime > 0 && (UnixTime.now() - lastObjectTime) > 2 * MINUTE; }
public Builder defaults() { version = BitmessageContext.CURRENT_VERSION; services = 1; timestamp = UnixTime.now(); nonce = new Random().nextInt(); userAgent = "/Jabit:0.0.1/"; streamNumbers = new long[]{1}; return this; }
private void cleanupIvCache() { Long fiveMinutesAgo = UnixTime.now(-5 * MINUTE); for (Map.Entry<InventoryVector, Long> entry : ivCache.entrySet()) { if (entry.getValue() < fiveMinutesAgo) { ivCache.remove(entry.getKey()); } } }
public NetworkAddress build() { if (time == 0) { time = UnixTime.now(); } return new NetworkAddress(this); } }
@Override protected void send(MessagePayload payload) { sendingQueue.add(payload); if (payload instanceof GetData) { Long now = UnixTime.now(); List<InventoryVector> inventory = ((GetData) payload).getInventory(); requestedObjects.addAll(inventory); for (InventoryVector iv : inventory) { commonRequestedObjects.put(iv, now); } } }
@Override public List<InventoryVector> getInventory(long... streams) { List<InventoryVector> result = new LinkedList<>(); for (long stream : streams) { getCache(stream).entrySet().stream() .filter(e -> e.getValue() > now()) .forEach(e -> result.add(e.getKey())); } return result; }
private void cleanUp() { try ( Connection connection = config.getConnection(); PreparedStatement ps = connection.prepareStatement( "DELETE FROM Node WHERE time<?") ) { ps.setLong(1, now(-28 * DAY)); ps.executeUpdate(); } catch (SQLException e) { LOG.error(e.getMessage(), e); } }
public NetworkAddress build() { if (time == 0) { time = UnixTime.now(); } return new NetworkAddress(this); } }
private void updateIvCache(List<InventoryVector> inventory) { cleanupIvCache(); Long now = UnixTime.now(); for (InventoryVector iv : inventory) { ivCache.put(iv, now); } }
public void updateNextTry() { if (to != null) { if (nextTry == null) { if (sent != null && to.has(Feature.DOES_ACK)) { nextTry = UnixTime.now(+ttl); retries++; } } else { nextTry = nextTry + (1 << retries) * ttl; retries++; } } }
private static byte[] getProofOfWorkTarget(ObjectMessage object, long nonceTrialsPerByte, long extraBytes) throws IOException { BigInteger TTL = BigInteger.valueOf(object.getExpiresTime() - UnixTime.now()); LOG.debug("TTL: " + TTL + "s"); BigInteger numerator = TWO.pow(64); BigInteger powLength = BigInteger.valueOf(object.getPayloadBytesWithoutNonce().length + extraBytes); BigInteger denominator = BigInteger.valueOf(nonceTrialsPerByte).multiply(powLength.add(powLength.multiply(TTL).divide(BigInteger.valueOf(2).pow(16)))); return Bytes.expand(numerator.divide(denominator).toByteArray(), 8); }
@Override public List<Plaintext> findMessagesToResend() { return find("status='" + Plaintext.Status.SENT.name() + "'" + " AND next_try < " + UnixTime.now()); }
private void activateConnection() { LOG.info("Successfully established connection with node " + node); state = ACTIVE; node.setTime(UnixTime.now()); if (mode != SYNC) { sendAddresses(); ctx.getNodeRegistry().offerAddresses(Collections.singletonList(node)); } sendInventory(); }
public static Plaintext read(Type type, InputStream in) throws IOException { return readWithoutSignature(type, in) .signature(Decode.varBytes(in)) .received(UnixTime.now()) .build(); }
public void send(final Plaintext plaintext) { if (plaintext.getAckMessage() != null) { long expires = UnixTime.now(+plaintext.getTTL()); LOG.info("Expires at " + expires); proofOfWorkService.doProofOfWorkWithAck(plaintext, expires); } else { send(plaintext.getFrom(), plaintext.getTo(), new Msg(plaintext), plaintext.getTTL()); } }
public void requestPubkey(BitmessageAddress contact) { long expires = UnixTime.now(+2 * DAY); LOG.info("Expires at " + expires); ObjectMessage response = new ObjectMessage.Builder() .stream(contact.getStream()) .expiresTime(expires) .payload(new GetPubkey(contact)) .build(); Security.doProofOfWork(response, proofOfWorkEngine, networkNonceTrialsPerByte, networkExtraBytes); inventory.storeObject(response); networkHandler.offer(response.getInventoryVector()); }
public static ObjectMessage createAck(Plaintext plaintext) { if (plaintext == null || plaintext.getAckData() == null) return null; GenericPayload ack = new GenericPayload(3, plaintext.getFrom().getStream(), plaintext.getAckData()); return new ObjectMessage.Builder().objectType(MSG).payload(ack).expiresTime(UnixTime.now(plaintext.getTTL())).build(); } }