SyncHostTask.java 2.7 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576
  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("WiFi Direct Host", "Received: " + receivedObj.getMethodName());
  30. if (receivedObj.getMethodName().equals(SYNC_INFO_REQUEST)){
  31. this.receivedInfo = (SyncInfo) receivedObj.getObjectToSend();
  32. SyncInfo response = synchronizer.getSyncInfo();
  33. WiFiP2pSerializableObject syncObj = new WiFiP2pSerializableObject();
  34. syncObj.setObjectToSend(response);
  35. syncObj.setMethodName(SYNC_INFO_RESPONSE);
  36. return syncObj;
  37. }
  38. if (receivedObj.getMethodName().equals(SYNC_DATA_REQUEST)){
  39. SyncData sdata = (SyncData) receivedObj.getObjectToSend();
  40. if (sdata != null && sdata.getClass().isInstance(SyncData.class)){
  41. synchronizer.updateFromSyncData(sdata);
  42. }
  43. if (this.receivedInfo != null){
  44. SyncData response = synchronizer.getSyncData(this.receivedInfo);
  45. WiFiP2pSerializableObject syncObj = new WiFiP2pSerializableObject();
  46. syncObj.setObjectToSend(response);
  47. syncObj.setMethodName(SYNC_DATA_RESPONSE);
  48. return syncObj;
  49. }
  50. }
  51. }
  52. // DISCONNECT
  53. this.interrupt(true);
  54. return null;
  55. }
  56. }