Removing redundant code in console fragment

This commit is contained in:
Yaroslav Berezanskyi 2015-08-10 19:23:52 +03:00
parent 4d0e06b400
commit 413cd9a65f

View File

@ -2,13 +2,11 @@ package io.syng.fragment;
import android.annotation.SuppressLint;
import android.os.AsyncTask;
import android.os.Bundle;
import android.os.Handler;
import android.os.Message;
import android.support.v4.app.Fragment;
import android.text.method.ScrollingMovementMethod;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
@ -20,7 +18,6 @@ import com.squareup.leakcanary.RefWatcher;
import org.ethereum.android.service.ConnectorHandler;
import org.ethereum.android.service.EthereumClientMessage;
import org.ethereum.android.service.EthereumConnector;
import org.ethereum.android.service.events.BlockEventData;
import org.ethereum.android.service.events.EventData;
import org.ethereum.android.service.events.EventFlag;
@ -40,7 +37,6 @@ import java.util.UUID;
import io.syng.R;
import io.syng.app.SyngApplication;
import io.syng.entity.LogEntry;
import io.syng.service.EthereumService;
public class ConsoleFragment extends Fragment implements ConnectorHandler {
@ -63,24 +59,16 @@ public class ConsoleFragment extends Fragment implements ConnectorHandler {
@Override
public void run() {
long startTime = System.currentTimeMillis();
int length = mConsoleLog.length();
if (length > CONSOLE_LENGTH) {
mConsoleLog = mConsoleLog.substring(CONSOLE_LENGTH * ((length / CONSOLE_LENGTH) - 1) + length % CONSOLE_LENGTH);
}
mConsoleText.setText(mConsoleLog);
long stopTime = System.currentTimeMillis();
long elapsedTime = stopTime - startTime;
Log.d("mRunnable", Long.toString(elapsedTime));
mHandler.postDelayed(mRunnable, CONSOLE_REFRESH_MILLS);
}
};
public ConsoleFragment() {
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
@ -105,38 +93,84 @@ public class ConsoleFragment extends Fragment implements ConnectorHandler {
public void onPause() {
super.onPause();
mHandler.removeCallbacksAndMessages(null);
SyngApplication application = (SyngApplication)getActivity().getApplication();
application.sEthereumConnector.removeHandler(this);
application.sEthereumConnector.removeListener(mHandlerIdentifier);
application.sEthereumConnector.unbindService();
SyngApplication.sEthereumConnector.removeHandler(this);
SyngApplication.sEthereumConnector.removeListener(mHandlerIdentifier);
SyngApplication.sEthereumConnector.unbindService();
}
@Override
public void onResume() {
super.onResume();
mHandler.post(mRunnable);
SyngApplication application = (SyngApplication)getActivity().getApplication();
application.sEthereumConnector.registerHandler(this);
application.sEthereumConnector.bindService();
SyngApplication.sEthereumConnector.registerHandler(this);
SyngApplication.sEthereumConnector.bindService();
}
@Override
public boolean handleMessage(Message message) {
new MyAsyncTask(message).execute();
return true;
boolean isClaimed = true;
switch (message.what) {
case EthereumClientMessage.MSG_EVENT:
Bundle data = message.getData();
data.setClassLoader(EventFlag.class.getClassLoader());
EventFlag event = (EventFlag) data.getSerializable("event");
EventData eventData;
MessageEventData messageEventData;
switch (event) {
case EVENT_BLOCK:
BlockEventData blockEventData = data.getParcelable("data");
addLogEntry(new LogEntry(blockEventData.registeredTime, "Added block with " + blockEventData.receipts.size() + " transaction receipts."));
break;
case EVENT_HANDSHAKE_PEER:
messageEventData = data.getParcelable("data");
addLogEntry(new LogEntry(messageEventData.registeredTime, "Peer " + new HelloMessage(messageEventData.message).getPeerId() + " said hello"));
break;
case EVENT_NO_CONNECTIONS:
eventData = data.getParcelable("data");
addLogEntry(new LogEntry(eventData.registeredTime, "No connections"));
break;
case EVENT_PEER_DISCONNECT:
PeerDisconnectEventData peerDisconnectEventData = data.getParcelable("data");
addLogEntry(new LogEntry(peerDisconnectEventData.registeredTime, "Peer " + peerDisconnectEventData.host + ":" + peerDisconnectEventData.port + " disconnected."));
break;
case EVENT_PENDING_TRANSACTIONS_RECEIVED:
PendingTransactionsEventData pendingTransactionsEventData = data.getParcelable("data");
addLogEntry(new LogEntry(pendingTransactionsEventData.registeredTime, "Received " + pendingTransactionsEventData.transactions.size() + " pending transactions"));
break;
case EVENT_RECEIVE_MESSAGE:
messageEventData = data.getParcelable("data");
addLogEntry(new LogEntry(messageEventData.registeredTime, "Received message: " + messageEventData.messageClass.getName()));
break;
case EVENT_SEND_MESSAGE:
messageEventData = data.getParcelable("data");
addLogEntry(new LogEntry(messageEventData.registeredTime, "Sent message: " + messageEventData.messageClass.getName()));
break;
case EVENT_SYNC_DONE:
eventData = data.getParcelable("data");
addLogEntry(new LogEntry(eventData.registeredTime, "Sync done"));
break;
case EVENT_VM_TRACE_CREATED:
VMTraceCreatedEventData vmTraceCreatedEventData = data.getParcelable("data");
addLogEntry(new LogEntry(vmTraceCreatedEventData.registeredTime,
"CM trace created: " + vmTraceCreatedEventData.transactionHash + " - " + vmTraceCreatedEventData.trace));
break;
case EVENT_TRACE:
TraceEventData traceEventData = data.getParcelable("data");
addLogEntry(new LogEntry(traceEventData.registeredTime, traceEventData.message));
break;
}
break;
default:
isClaimed = false;
}
return isClaimed;
}
private void addLogEntry(LogEntry logEntry) {
long startTime = System.currentTimeMillis();
Date date = new Date(logEntry.getTimeStamp());
mConsoleLog += mDateFormatter.format(date) + " -> " + logEntry.getMessage() + "\n";
long stopTime = System.currentTimeMillis();
long elapsedTime = stopTime - startTime;
Log.d("addLogEntry", Long.toString(elapsedTime));
}
@Override
@ -146,8 +180,7 @@ public class ConsoleFragment extends Fragment implements ConnectorHandler {
@Override
public void onConnectorConnected() {
SyngApplication application = (SyngApplication)getActivity().getApplication();
application.sEthereumConnector.addListener(mHandlerIdentifier, EnumSet.allOf(EventFlag.class));
SyngApplication.sEthereumConnector.addListener(mHandlerIdentifier, EnumSet.allOf(EventFlag.class));
}
@Override
@ -161,92 +194,4 @@ public class ConsoleFragment extends Fragment implements ConnectorHandler {
refWatcher.watch(this);
}
private LogEntry myHandleMessage(Message message) {
switch (message.what) {
case EthereumClientMessage.MSG_EVENT:
Bundle data = message.getData();
data.setClassLoader(EventFlag.class.getClassLoader());
EventFlag event = (EventFlag) data.getSerializable("event");
EventData eventData;
MessageEventData messageEventData;
switch (event) {
case EVENT_BLOCK:
BlockEventData blockEventData = data.getParcelable("data");
// addLogEntry(blockEventData.registeredTime, "Added block with " + blockEventData.receipts.size() + " transaction receipts.");
return new LogEntry(blockEventData.registeredTime, "Added block with " + blockEventData.receipts.size() + " transaction receipts.");
case EVENT_HANDSHAKE_PEER:
messageEventData = data.getParcelable("data");
// addLogEntry(messageEventData.registeredTime, "Peer " + new HelloMessage(messageEventData.message).getPeerId() + " said hello");
return new LogEntry(messageEventData.registeredTime, "Peer " + new HelloMessage(messageEventData.message).getPeerId() + " said hello");
case EVENT_NO_CONNECTIONS:
eventData = data.getParcelable("data");
// addLogEntry(eventData.registeredTime, "No connections");
return new LogEntry(eventData.registeredTime, "No connections");
case EVENT_PEER_DISCONNECT:
PeerDisconnectEventData peerDisconnectEventData = data.getParcelable("data");
// addLogEntry(peerDisconnectEventData.registeredTime, "Peer " + peerDisconnectEventData.host + ":" + peerDisconnectEventData.port + " disconnected.");
return new LogEntry(peerDisconnectEventData.registeredTime, "Peer " + peerDisconnectEventData.host + ":" + peerDisconnectEventData.port + " disconnected.");
case EVENT_PENDING_TRANSACTIONS_RECEIVED:
PendingTransactionsEventData pendingTransactionsEventData = data.getParcelable("data");
// addLogEntry(pendingTransactionsEventData.registeredTime, "Received " + pendingTransactionsEventData.transactions.size() + " pending transactions");
return new LogEntry(pendingTransactionsEventData.registeredTime, "Received " + pendingTransactionsEventData.transactions.size() + " pending transactions");
case EVENT_RECEIVE_MESSAGE:
messageEventData = data.getParcelable("data");
// addLogEntry(messageEventData.registeredTime, "Received message: " + messageEventData.messageClass.getName());
return new LogEntry(messageEventData.registeredTime, "Received message: " + messageEventData.messageClass.getName());
case EVENT_SEND_MESSAGE:
messageEventData = data.getParcelable("data");
// addLogEntry(messageEventData.registeredTime, "Sent message: " + messageEventData.messageClass.getName());
return new LogEntry(messageEventData.registeredTime, "Sent message: " + messageEventData.messageClass.getName());
case EVENT_SYNC_DONE:
eventData = data.getParcelable("data");
// addLogEntry(eventData.registeredTime, "Sync done");
return new LogEntry(eventData.registeredTime, "Sync done");
case EVENT_VM_TRACE_CREATED:
VMTraceCreatedEventData vmTraceCreatedEventData = data.getParcelable("data");
// addLogEntry(vmTraceCreatedEventData.registeredTime, "CM trace created: " + vmTraceCreatedEventData.transactionHash + " - " + vmTraceCreatedEventData.trace);
return new LogEntry(vmTraceCreatedEventData.registeredTime, "CM trace created: " + vmTraceCreatedEventData.transactionHash + " - " + vmTraceCreatedEventData.trace);
case EVENT_TRACE:
TraceEventData traceEventData = data.getParcelable("data");
// addLogEntry(traceEventData.registeredTime, traceEventData.message);
return new LogEntry(traceEventData.registeredTime, traceEventData.message);
}
break;
}
return null;
}
private class MyAsyncTask extends AsyncTask<Void, Void, LogEntry> {
private final Message mMessage;
public MyAsyncTask(final Message message) {
mMessage = Message.obtain(message);
}
@Override
protected LogEntry doInBackground(Void... params) {
long startTime = System.currentTimeMillis();
LogEntry logEntry = myHandleMessage(mMessage);
long stopTime = System.currentTimeMillis();
long elapsedTime = stopTime - startTime;
Log.d("doInBackground", Long.toString(elapsedTime));
return logEntry;
}
@Override
protected void onPostExecute(LogEntry logEntry) {
super.onPostExecute(logEntry);
if (logEntry != null) {
addLogEntry(logEntry);
}
}
}
}