package com.neemre.btcdcli4j.examples.daemon;
import java.util.Properties;
import com.neemre.btcdcli4j.core.BitcoindException;
import com.neemre.btcdcli4j.core.CommunicationException;
import com.neemre.btcdcli4j.core.client.BtcdClient;
import com.neemre.btcdcli4j.daemon.BtcdDaemonImpl;
import com.neemre.btcdcli4j.daemon.Notifications;
import com.neemre.btcdcli4j.daemon.event.AlertListener;
import com.neemre.btcdcli4j.daemon.event.BlockListener;
import com.neemre.btcdcli4j.daemon.event.WalletListener;
/**A subclass of {@code BtcdDaemonImpl} that writes detailed operational data (<i>e.g.</i> the
* result of each method call) to {@code stdout}. This implementation is provided for informational
* purposes only; it is not meant for use in production environments.*/
public class VerboseBtcdDaemonImpl extends BtcdDaemonImpl {
public VerboseBtcdDaemonImpl(BtcdClient btcdProvider) throws BitcoindException,
CommunicationException {
super(btcdProvider);
System.out.println("Initiating the 'bitcoind' notification daemon (type: RPC-capable)");
}
public VerboseBtcdDaemonImpl(Integer alertPort, Integer blockPort, Integer walletPort) {
super(alertPort, blockPort, walletPort);
System.out.println("Initiating the 'bitcoind' notification daemon (type: autonomous)");
}
@Override
public void addAlertListener(AlertListener listener) {
System.out.printf("Registering an event listener for 'ALERT' notifications (%s)\n", listener);
super.addAlertListener(listener);
}
@Override
public int countAlertListeners() {
int listenerCount = super.countAlertListeners();
System.out.printf("The daemon reported an alert listener count of: %s\n", listenerCount);
return listenerCount;
}
@Override
public void removeAlertListener(AlertListener listener) {
System.out.printf("Deregistering the specified alert listener (%s)\n", listener);
super.removeAlertListener(listener);
}
@Override
public void removeAlertListeners() {
System.out.println("Deregistering all alert listener(s)");
super.removeAlertListeners();
}
@Override
public void addBlockListener(BlockListener listener) {
System.out.printf("Registering an event listener for 'BLOCK' notifications (%s)\n", listener);
super.addBlockListener(listener);
}
@Override
public int countBlockListeners() {
int listenerCount = super.countBlockListeners();
System.out.printf("The daemon reported a block listener count of: %s\n", listenerCount);
return listenerCount;
}
@Override
public void removeBlockListener(BlockListener listener) {
System.out.printf("Deregistering the specified block listener (%s)\n", listener);
super.removeBlockListener(listener);
}
@Override
public void removeBlockListeners() {
System.out.println("Deregistering all block listener(s)");
super.removeBlockListeners();
}
@Override
public void addWalletListener(WalletListener listener) {
System.out.printf("Registering an event listener for 'WALLET' notifications (%s)\n", listener);
super.addWalletListener(listener);
}
@Override
public int countWalletListeners() {
int listenerCount = super.countWalletListeners();
System.out.printf("The daemon reported a wallet listener count of: %s\n", listenerCount);
return listenerCount;
}
@Override
public void removeWalletListener(WalletListener listener) {
System.out.printf("Deregistering the specified wallet listener (%s)\n", listener);
super.removeWalletListener(listener);
}
@Override
public void removeWalletListeners() {
System.out.println("Deregistering all wallet listener(s)");
super.removeWalletListeners();
}
@Override
public boolean isMonitoring(Notifications notificationType) {
boolean isMonitoringX = super.isMonitoring(notificationType);
System.out.printf("'%s' notification monitor status was: '%s'\n", notificationType.name(),
((isMonitoringX == true) ? "ACTIVE" : "INACTIVE"));
return isMonitoringX;
}
@Override
public boolean isMonitoringAny() {
boolean isMonitoringAny = super.isMonitoringAny();
System.out.printf("Is listening for ANY supported notification types: %s\n",
((isMonitoringAny == true) ? "YES" : "NO"));
return isMonitoringAny;
}
@Override
public boolean isMonitoringAll() {
boolean isMonitoringAll = super.isMonitoringAll();
System.out.printf("Is listening for ALL supported notification types: %s\n",
((isMonitoringAll == true) ? "YES" : "NO"));
return isMonitoringAll;
}
@Override
public Properties getNodeConfig() {
Properties nodeConfig = super.getNodeConfig();
System.out.printf("Node configuration passed to & used by the daemon: '%s'\n", nodeConfig);
return nodeConfig;
}
@Override
public void shutdown() {
System.out.println("Shutting down the 'bitcoind' notification daemon");
super.shutdown();
}
}