SyncClientTask.java 2.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475
  1. package de.tudarmstadt.informatik.hostage.sync.wifi_direct.sync_tasks;
  2. import android.content.Context;
  3. import android.net.wifi.p2p.WifiP2pDevice;
  4. import android.net.wifi.p2p.WifiP2pManager;
  5. import android.util.Log;
  6. import de.tudarmstadt.informatik.hostage.logging.SyncData;
  7. import de.tudarmstadt.informatik.hostage.logging.SyncInfo;
  8. import de.tudarmstadt.informatik.hostage.persistence.HostageDBOpenHelper;
  9. import de.tudarmstadt.informatik.hostage.sync.Synchronizer;
  10. import de.tudarmstadt.informatik.hostage.sync.wifi_direct.WiFiP2pClientTask;
  11. import de.tudarmstadt.informatik.hostage.sync.wifi_direct.WiFiP2pSerializableObject;
  12. /**
  13. * Created by Julien on 14.01.2015.
  14. */
  15. public class SyncClientTask extends WiFiP2pClientTask {
  16. private HostageDBOpenHelper mdbh;
  17. private Synchronizer synchronizer;
  18. public SyncClientTask(String hostIP, WifiP2pDevice ownDevice,BackgroundTaskCompletionListener l, Context context) {
  19. super(hostIP, ownDevice, l);
  20. mdbh = new HostageDBOpenHelper(context);
  21. synchronizer = new Synchronizer(mdbh);
  22. }
  23. @Override
  24. public WiFiP2pSerializableObject handleReceivedObject(WiFiP2pSerializableObject receivedObj) {
  25. if (receivedObj == null) {
  26. Log.i("WiFiP2p_Client", "Starting sync process: " + SyncHostTask.SYNC_INFO_REQUEST);
  27. SyncInfo thisSyncInfo = synchronizer.getSyncInfo();
  28. WiFiP2pSerializableObject syncObj = new WiFiP2pSerializableObject();
  29. syncObj.setObjectToSend(thisSyncInfo);
  30. syncObj.setRequestIdentifier(SyncHostTask.SYNC_INFO_REQUEST);
  31. return syncObj;
  32. } else {
  33. Log.i("WiFiP2p_Client", "Received: " + receivedObj.getRequestIdentifier());
  34. if (receivedObj.getRequestIdentifier().equals(SyncHostTask.SYNC_INFO_RESPONSE)) {
  35. SyncInfo sinfo = (SyncInfo) receivedObj.getObjectToSend();
  36. if (sinfo != null && (sinfo instanceof SyncInfo)) {
  37. Log.i("WiFiP2p_Client", "Sending Data: " + SyncHostTask.SYNC_DATA_REQUEST);
  38. SyncData syncData = synchronizer.getSyncData(sinfo);
  39. WiFiP2pSerializableObject syncObj = new WiFiP2pSerializableObject();
  40. syncObj.setObjectToSend(syncData);
  41. syncObj.setRequestIdentifier(SyncHostTask.SYNC_DATA_REQUEST);
  42. return syncObj;
  43. }
  44. } else if (receivedObj.getRequestIdentifier().equals(SyncHostTask.SYNC_DATA_RESPONSE)) {
  45. Log.i("WiFiP2p_Client", "Received Sync Data - ending sync process successfully." );
  46. SyncData sdata = (SyncData) receivedObj.getObjectToSend();
  47. if (sdata != null && (sdata instanceof SyncData)) {
  48. synchronizer.updateFromSyncData(sdata);
  49. }
  50. }
  51. }
  52. // DISCONNECT
  53. this.interrupt(true);
  54. return null;
  55. }
  56. }