Fix bug with missing broadcast. Add total traffic info

This commit is contained in:
Manfred Karrer 2016-02-16 01:51:51 +01:00
parent fc1ab8a346
commit 92ad387d70
22 changed files with 48 additions and 180 deletions

View file

@ -36,7 +36,6 @@ import io.bitsquare.trade.protocol.trade.tasks.buyer.*;
import io.bitsquare.trade.protocol.trade.tasks.offerer.*;
import io.bitsquare.trade.protocol.trade.tasks.seller.*;
import io.bitsquare.trade.protocol.trade.tasks.shared.BroadcastAfterLockTime;
import io.bitsquare.trade.protocol.trade.tasks.shared.CommitPayoutTx;
import io.bitsquare.trade.protocol.trade.tasks.shared.InitWaitPeriodForOpenDispute;
import io.bitsquare.trade.protocol.trade.tasks.taker.*;
import javafx.collections.FXCollections;
@ -97,7 +96,6 @@ public class DebugView extends InitializableView {
ProcessFinalizePayoutTxRequest.class,
SignAndFinalizePayoutTx.class,
CommitPayoutTx.class,
SendPayoutTxFinalizedMessage.class,
BroadcastAfterLockTime.class,
Boolean.class, /* used as seperator*/
@ -124,7 +122,6 @@ public class DebugView extends InitializableView {
SendFinalizePayoutTxRequest.class,
ProcessPayoutTxFinalizedMessage.class,
CommitPayoutTx.class,
BroadcastAfterLockTime.class,
Boolean.class /* used as seperator*/
)
@ -150,7 +147,6 @@ public class DebugView extends InitializableView {
ProcessFinalizePayoutTxRequest.class,
SignAndFinalizePayoutTx.class,
CommitPayoutTx.class,
SendPayoutTxFinalizedMessage.class,
BroadcastAfterLockTime.class,
Boolean.class, /* used as seperator*/
@ -176,7 +172,6 @@ public class DebugView extends InitializableView {
SendFinalizePayoutTxRequest.class,
ProcessPayoutTxFinalizedMessage.class,
CommitPayoutTx.class,
BroadcastAfterLockTime.class,
Boolean.class /* used as seperator*/
)

View file

@ -139,22 +139,10 @@ public class TransactionsListItem {
}
}
} else {
/* Optional<AddressEntry> addressEntryOptional = walletService.getAddressEntryList().stream()
.filter(e -> e.getAddressString() != null && e.getAddressString().equals(addressString))
.findAny();
if (addressEntryOptional.isPresent() &&
addressEntryOptional.get().getContext() == AddressEntry.Context.ARBITRATOR)
details = received ? "Received funds" : "Withdrawn from wallet";
else*/
if (amountAsCoin.isZero()) {
if (amountAsCoin.isZero())
details = "No refund from dispute";
} else {
details = received ? "Received funds" : "Withdrawn from wallet";
}
if (received)
details = amountAsCoin.isPositive() ? "Received funds" : "No refund from dispute";
else
details = amountAsCoin.isNegative() ? "Withdrawn from wallet" : "No refund from dispute";
details = received ? "Received funds" : "Withdrawn from wallet";
}
date.set(formatter.formatDateTime(transaction.getUpdateTime()));

View file

@ -346,7 +346,7 @@ public class WithdrawalView extends ActivatableView<VBox, Void> {
withdrawToTextField.setPromptText("Fill in your destination address");
if (BitsquareApp.DEV_MODE)
withdrawToTextField.setText("mhpVDvMjJT1Gn7da44dkq1HXd3wXdFZpXu");
withdrawToTextField.setText("mi8k5f9L972VgDaT4LgjAhriC9hHEPL7EW");
}
private Optional<Tradable> getTradable(WithdrawalListItem item) {

View file

@ -305,8 +305,7 @@ public class PendingTradesViewModel extends ActivatableWithDataModel<PendingTrad
case PAYOUT_TX_SENT:
buyerState.set(PendingTradesViewModel.BuyerState.WAIT_FOR_BROADCAST_AFTER_UNLOCK);
break;
case PAYOUT_TX_RECEIVED:
case PAYOUT_TX_COMMITTED:
case PAYOUT_TX_RECEIVED_AND_COMMITTED:
sellerState.set(SellerState.WAIT_FOR_BROADCAST_AFTER_UNLOCK);
break;
case PAYOUT_BROAD_CASTED:

View file

@ -130,7 +130,7 @@ public class BuyerStep5View extends TradeStepView {
});
if (BitsquareApp.DEV_MODE)
withdrawAddressTextField.setText("mhpVDvMjJT1Gn7da44dkq1HXd3wXdFZpXu");
withdrawAddressTextField.setText("mi8k5f9L972VgDaT4LgjAhriC9hHEPL7EW");
}
protected String getBtcTradeAmountLabel() {

View file

@ -66,15 +66,14 @@
</TextField>
<Label fx:id="p2PPeersLabel" text="Connected peers:" GridPane.rowIndex="4"/>
<TableView fx:id="p2PPeerTable" GridPane.rowIndex="4" GridPane.columnIndex="1" VBox.vgrow="ALWAYS"
GridPane.hgrow="ALWAYS">
<TableView fx:id="p2PPeerTable" GridPane.rowIndex="4" GridPane.columnIndex="1" GridPane.hgrow="ALWAYS">
<columns>
<TableColumn text="Onion address" fx:id="onionAddressColumn" minWidth="220">
<cellValueFactory>
<PropertyValueFactory property="onionAddress"/>
</cellValueFactory>
</TableColumn>
<TableColumn text="Type" fx:id="connectionTypeColumn" minWidth="70" maxWidth="80">
<TableColumn text="In/Out" fx:id="connectionTypeColumn" minWidth="70" maxWidth="80">
<cellValueFactory>
<PropertyValueFactory property="connectionType"/>
</cellValueFactory>
@ -99,7 +98,7 @@
<PropertyValueFactory property="receivedBytes"/>
</cellValueFactory>
</TableColumn>
<TableColumn text="Identity" fx:id="peerTypeColumn" minWidth="100" maxWidth="100">
<TableColumn text="Peer type" fx:id="peerTypeColumn" minWidth="100" maxWidth="100">
<cellValueFactory>
<PropertyValueFactory property="peerType"/>
</cellValueFactory>
@ -107,6 +106,10 @@
</columns>
</TableView>
<Label text="Total traffic:" GridPane.rowIndex="5"/>
<TextField fx:id="totalTraffic" GridPane.rowIndex="5" GridPane.columnIndex="1" editable="false"
focusTraversable="false"/>
<columnConstraints>
<ColumnConstraints hgrow="NEVER" halignment="RIGHT"/>
<ColumnConstraints hgrow="ALWAYS"/>

View file

@ -28,6 +28,7 @@ import io.bitsquare.gui.util.BSFormatter;
import io.bitsquare.p2p.NodeAddress;
import io.bitsquare.p2p.P2PService;
import io.bitsquare.p2p.P2PServiceListener;
import io.bitsquare.p2p.network.Statistic;
import io.bitsquare.user.Preferences;
import javafx.beans.value.ChangeListener;
import javafx.collections.FXCollections;
@ -38,6 +39,7 @@ import javafx.scene.control.*;
import javafx.scene.layout.GridPane;
import javafx.util.StringConverter;
import org.bitcoinj.core.Peer;
import org.fxmisc.easybind.EasyBind;
import org.reactfx.util.FxTimer;
import javax.inject.Inject;
@ -55,7 +57,7 @@ public class NetworkSettingsView extends ActivatableViewAndModel<GridPane, Activ
@FXML
TextField onionAddress;
TextField onionAddress, totalTraffic;
@FXML
ComboBox<BitcoinNetwork> netWorkComboBox;
@FXML
@ -149,6 +151,7 @@ public class NetworkSettingsView extends ActivatableViewAndModel<GridPane, Activ
((Integer) o1.statistic.getSentBytes()).compareTo(((Integer) o2.statistic.getSentBytes())));
receivedBytesColumn.setComparator((o1, o2) ->
((Integer) o1.statistic.getReceivedBytes()).compareTo(((Integer) o2.statistic.getReceivedBytes())));*/
}
@Override
@ -185,6 +188,9 @@ public class NetworkSettingsView extends ActivatableViewAndModel<GridPane, Activ
numP2PPeersChangeListener = (observable, oldValue, newValue) -> updateP2PStatistics();
p2PService.getNumConnectedPeers().addListener(numP2PPeersChangeListener);
updateP2PStatistics();
totalTraffic.textProperty().bind(EasyBind.combine(Statistic.totalSentBytesProperty(), Statistic.totalReceivedBytesProperty(),
(sent, received) -> "Sent:" + formatter.formatBytes((int) sent) + " / Received: " + formatter.formatBytes((int) received)));
}
@Override
@ -201,6 +207,7 @@ public class NetworkSettingsView extends ActivatableViewAndModel<GridPane, Activ
p2PService.getNumConnectedPeers().removeListener(numP2PPeersChangeListener);
p2PPeerTable.getItems().forEach(NetworkStatisticListItem::cleanup);
totalTraffic.textProperty().unbind();
}
private void updateP2PStatistics() {

View file

@ -34,7 +34,7 @@ import org.slf4j.LoggerFactory;
import java.time.Duration;
class NetworkStatisticListItem {
public class NetworkStatisticListItem {
private static final Logger log = LoggerFactory.getLogger(NetworkStatisticListItem.class);
private final Statistic statistic;

View file

@ -376,83 +376,8 @@ public class BSFormatter {
public String getDaysHoursMinutes(Date startDate, Date endDate) {
return DurationFormatUtils.formatDurationWords(endDate.getTime() - startDate.getTime(), true, true);
/* long secondsInMilli = 1000;
long minutesInMilli = secondsInMilli * 60;
long hoursInMilli = minutesInMilli * 60;
long daysInMilli = hoursInMilli * 24;
long elapsedDays = different / daysInMilli;
different = different % daysInMilli;
long elapsedHours = different / hoursInMilli;
different = different % hoursInMilli;
long elapsedMinutes = different / minutesInMilli;
String dayString = elapsedDays == 1 ? "day" : "days";
String hourString = elapsedHours == 1 ? "hour" : "hours";
String minuteString = elapsedMinutes == 1 ? "minute" : "minutes";
if (elapsedDays > 0)
return elapsedDays + " " + dayString + ", " + elapsedHours + " " + hourString + " and " + elapsedMinutes + " " + minuteString;
else if (elapsedHours > 0)
return elapsedHours + " " + hourString + " and " + elapsedMinutes + " " + minuteString;
else if (elapsedMinutes > 0)
return elapsedMinutes + " " + minuteString;
else
return null;*/
}
/* public List<String> tokenizePeriod(long time, boolean showSeconds, boolean showMillis) {
log.error("formatPastTimestamp " + time + "");
long secondsInMilli = 1000;
long minutesInMilli = secondsInMilli * 60;
long hoursInMilli = minutesInMilli * 60;
long daysInMilli = hoursInMilli * 24;
long elapsedDays = time / daysInMilli;
time = time % daysInMilli;
long elapsedHours = time / hoursInMilli;
time = time % hoursInMilli;
long elapsedMinutes = time / minutesInMilli;
time = time % minutesInMilli;
long elapsedSeconds = time / secondsInMilli;
time = time % secondsInMilli;
long elapsedMillis = time;
String dayString = elapsedDays == 1 ? elapsedDays + " day" : elapsedDays + " days";
String hourString = elapsedHours == 1 ? elapsedHours + " hour" : elapsedHours + " hours";
String minuteString = elapsedMinutes == 1 ? elapsedMinutes + " minute" : elapsedMinutes + " minutes";
String secondsString = elapsedSeconds == 1 ? elapsedSeconds + " second" : elapsedSeconds + " seconds";
String millisString = elapsedMillis + " ms";
List<String> tokens = new ArrayList<>();
if (elapsedDays > 0)
tokens.add(dayString);
if (elapsedHours > 0)
tokens.add(hourString);
if (elapsedMinutes > 0)
tokens.add(minuteString);
if (showSeconds && elapsedSeconds > 0)
tokens.add(secondsString);
if (showMillis && elapsedMillis > 0)
tokens.add(millisString);
return tokens;
}
private String formatTimeTokens(List<String> tokens) {
if (tokens.size() > 1) {
String last = tokens.remove(tokens.size() - 1);
String result = tokens.stream().collect(Collectors.joining(", "));
return result + " and " + last;
} else if (tokens.size() == 1) {
return tokens.get(0);
} else {
return "";
}
}*/
public String booleanToYesNo(boolean value) {
return value ? "Yes" : "No";