CommunicationP2P.java :  » UnTagged » ot-sims » fr » insa » lyon » ot » sims » client » communication » p2p » Android Open Source

Android Open Source » UnTagged » ot sims 
ot sims » fr » insa » lyon » ot » sims » client » communication » p2p » CommunicationP2P.java
package fr.insa.lyon.ot.sims.client.communication.p2p;


import java.util.HashMap;
import java.util.Vector;

import fr.insa.lyon.ot.sims.client.communication.p2p.Node.STATE_NODE;

import junit.framework.Assert;

public class CommunicationP2P implements CommunicationInterface {

  protected HashMap <String,Node> nodes;
  protected Vector<ResponseListenerMessage> listeners;
  protected ComSend comSend;
  protected ComRecv comRecv;
  protected DiscoveryInterface discovery;
  protected P2P p2p;
  
  public String getOurDeviceAdress()
  {
    return discovery.getOurDeviceAdress();
  }
  public CommunicationP2P(P2P p2p)
  {
    this.p2p = p2p;
    nodes = new HashMap <String,Node>();
    listeners = new Vector<ResponseListenerMessage>();
    comSend = new ComSend();
    comRecv = new ComRecv(this);
    System.out.println("Test2");
    discovery = new DiscoveryWiFi(this);
    System.out.println("Test FINAL");
    comRecv.start();
  }
   public void finalize()
     {
     System.out.println("CommunicationP2P: finalized");
     comRecv.MyDestroy();
    
  }
   protected void dispatchMessageToListeners(Message message)
    {
      for(int i=0;i<listeners.size();i++)
      {
        listeners.get(i).sendResponse(message);
      }
    }
   
  public Vector<Node> getNodes() {
    Vector<Node> returnNodes = new Vector<Node>();    
    for (Node node: nodes.values()) {
          if(node.getState()==STATE_NODE.INIT)
          {
            returnNodes.add(node);
          }
      }
    return returnNodes;
    
  }

  public Boolean sendMessage(Message message, Node node) {
    return true;
  }

  public void addResponseListenerMessage(ResponseListenerMessage listener) {
    Assert.assertEquals("BT: Listener already added",listeners.contains(listener),false);
      listeners.add(listener);
  }

  public void removeResponseListenerMessage(ResponseListenerMessage listener) {
    Assert.assertEquals("BT: Listener already removed",listeners.contains(listener),true);
      listeners.remove(listener);
  }
  
  public void callbackAddNodeDiscovery(Node node) {
    System.out.println("CommunicationP2P: discovery new node. ");
    if(!nodes.containsKey(node.adress))
    {
      System.out.println("CommunicationP2P: discovery new node. START send init trame to "+node.adress);
      Node ourNode=p2p.getOurNode();
      nodes.put(node.adress, node);
      TrameP2P trame = new TrameP2P(
          TypeTrameP2P.TypeTrameP2PInit, 
          ourNode.getAdress(),
          node.getAdress(),
          null);
      // TODO: get Node from P2P;
      comSend.sendTrameP2P(trame);
    }
  }

  public void callbackRemoveNodeDiscovery(Node node) {
    if(nodes.containsKey(node.adress))
    {
      nodes.remove(node.adress);
    }
  }

  synchronized public void callbackTrameP2PRecv(TrameP2P trameP2P) {
    if(trameP2P.getTypeTrameP2P()==TypeTrameP2P.TypeTrameP2PInit)
    {
      if(!nodes.containsKey(trameP2P.getAdressSrc()))
      {
        //TODO
        Node newNodeInit = new Node(true);
      }
    }
  }

}
java2s.com  | Contact Us | Privacy Policy
Copyright 2009 - 12 Demo Source and Support. All rights reserved.
All other trademarks are property of their respective owners.