SyncHostTask.java 2.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081
  1. package de.tudarmstadt.informatik.hostage.sync.wifi_direct.sync_tasks;
  2. import android.content.Context;
  3. import android.util.Log;
  4. import de.tudarmstadt.informatik.hostage.logging.SyncData;
  5. import de.tudarmstadt.informatik.hostage.logging.SyncInfo;
  6. import de.tudarmstadt.informatik.hostage.persistence.HostageDBOpenHelper;
  7. import de.tudarmstadt.informatik.hostage.sync.Synchronizer;
  8. import de.tudarmstadt.informatik.hostage.sync.wifi_direct.WiFiP2pSerializableObject;
  9. import de.tudarmstadt.informatik.hostage.sync.wifi_direct.WiFiP2pServerTask;
  10. /**
  11. * Created by Julien on 14.01.2015.
  12. */
  13. public class SyncHostTask extends WiFiP2pServerTask {
  14. public static final String SYNC_INFO_REQUEST = "sync_info_request";
  15. public static final String SYNC_INFO_RESPONSE = "sync_info_response";
  16. public static final String SYNC_DATA_REQUEST = "sync_data_request";
  17. public static final String SYNC_DATA_RESPONSE = "sync_data_response";
  18. private HostageDBOpenHelper mdbh;
  19. private Synchronizer synchronizer;
  20. private SyncInfo receivedInfo;
  21. public SyncHostTask(BackgroundTaskCompletionListener l , Context context) {
  22. super(l);
  23. mdbh = new HostageDBOpenHelper(context);
  24. synchronizer = new Synchronizer(mdbh);
  25. }
  26. @Override
  27. public WiFiP2pSerializableObject handleReceivedObject(WiFiP2pSerializableObject receivedObj){
  28. if (receivedObj != null) {
  29. Log.i("WiFiP2p_Host", "Received: " + receivedObj.getMethodName());
  30. if (receivedObj.getMethodName().equals(SYNC_INFO_REQUEST)){
  31. Log.i("WiFiP2p_Host", "Sending Sync Info: " + SYNC_INFO_RESPONSE);
  32. this.receivedInfo = (SyncInfo) receivedObj.getObjectToSend();
  33. SyncInfo response = synchronizer.getSyncInfo();
  34. WiFiP2pSerializableObject syncObj = new WiFiP2pSerializableObject();
  35. syncObj.setObjectToSend(response);
  36. syncObj.setMethodName(SYNC_INFO_RESPONSE);
  37. return syncObj;
  38. }
  39. if (receivedObj.getMethodName().equals(SYNC_DATA_REQUEST)){
  40. Log.i("WiFiP2p_Host", "Sending Sync Data: " + SYNC_DATA_RESPONSE);
  41. SyncData sdata = (SyncData) receivedObj.getObjectToSend();
  42. if (sdata != null && sdata instanceof SyncData){
  43. synchronizer.updateFromSyncData(sdata);
  44. }
  45. if (this.receivedInfo != null){
  46. SyncData response = synchronizer.getSyncData(this.receivedInfo);
  47. WiFiP2pSerializableObject syncObj = new WiFiP2pSerializableObject();
  48. syncObj.setObjectToSend(response);
  49. syncObj.setMethodName(SYNC_DATA_RESPONSE);
  50. return syncObj;
  51. }
  52. }
  53. }
  54. Log.i("WiFiP2p_Host", "Stop Sync Process - Performing a disconnect.");
  55. // DISCONNECT
  56. this.interrupt(true);
  57. return null;
  58. }
  59. }