TestApp.java :  » Network » haggle » org » haggle » Android Open Source

Android Open Source » Network » haggle 
haggle » org » haggle » TestApp.java
package org.haggle;

import java.lang.System;
import java.lang.Thread;
import org.haggle.Handle;
import org.haggle.EventHandler;
import org.haggle.DataObject;
import org.haggle.LaunchCallback;

public class TestApp implements EventHandler {  
        private Handle h = null;
        private String name;
  private long num_dataobjects_received = 0;
  private boolean should_quit = false;
  private int num_dataobjects = 10;

  public synchronized void onNewDataObject(DataObject dObj) {
    num_dataobjects_received++;
                System.out.println("Got data object " + num_dataobjects_received + " filepath=" + dObj.getFilePath());
    dObj.dispose();
        }
  public synchronized void onNeighborUpdate(Node[] neighbors) {
                System.out.println("Got neighbor update event");

                for (int i = 0; i < neighbors.length; i++) {
                        System.out.println("Neighbor: " + neighbors[i].getName());
                }
        }
        public synchronized void onInterestListUpdate(Attribute[] interests) {
                System.out.println("Got interest list update event");

                for (int i = 0; i < interests.length; i++) {
                        System.out.println("Interest: " + interests[i].toString());
                }
        }
  public synchronized void onShutdown(int reason) {
                System.out.println("Got shutdown event, reason=" + reason);
    should_quit = true;
        }
  public void onEventLoopStart() {
    System.out.println("Event loop started");
  }
  public void onEventLoopStop() {
    System.out.println("Event loop stopped");
  }
        public TestApp(String name, int num_dataobjects)
        {
                super();
                this.name = name;
    this.num_dataobjects = num_dataobjects;
        }
        public void start()
        {
                Attribute attr = new Attribute("foo", "bar", 3);
                
                System.out.println("Attribute " + attr.toString());
                
                long pid = Handle.getDaemonPid();

                System.out.println("Pid is " + pid);

                if (pid == 0) {
                        // Haggle is not running
                        if (Handle.spawnDaemon(new LaunchCallback() { 
                                        public int callback(long milliseconds) {
                                                System.out.println("Launching haggle, milliseconds=" + milliseconds); 
                                                return 0;
                                        }
                                }) == false) {
                                // Could not spawn daemon
                                System.out.println("Could not spawn new Haggle daemon");
                                return;
                        }
                }
                try {
      DataObject[] dobjs = new DataObject[num_dataobjects];
                        h = new Handle(name);

                        h.registerEventInterest(EVENT_NEW_DATAOBJECT, this);
                        h.registerEventInterest(EVENT_NEIGHBOR_UPDATE, this);
                        h.registerEventInterest(EVENT_INTEREST_LIST_UPDATE, this);
                        h.registerEventInterest(EVENT_HAGGLE_SHUTDOWN, this);
                        
                        h.registerInterest(attr);
                
                        h.eventLoopRunAsync(this);
                        
      System.out.println("Getting Application interests");

                        h.getApplicationInterestsAsync();

                        Thread.sleep(2000);
      
      System.out.println("Forcing Haggle to send node description");

      h.sendNodeDescription();
      
      Thread.sleep(3000);

      for (int i = 0; i < num_dataobjects; i++) {
        dobjs[i] = new DataObject();
        dobjs[i].addAttribute("num", "" + i);
        dobjs[i].addAttribute(attr);
        h.publishDataObject(dobjs[i]);
        Thread.sleep(40);
      }
      
      Thread.sleep(2000);
      
      for (int i = 0; i < num_dataobjects; i++) {
        h.deleteDataObject(dobjs[i], false);
        dobjs[i].dispose();
        Thread.sleep(40);
      }

      while (num_dataobjects != num_dataobjects_received && !should_quit)
        Thread.sleep(1000);

                        h.eventLoopStop();
                        
                        Thread.sleep(2000);
      h.shutdown();
      Thread.sleep(2000);

                } catch (Handle.RegistrationFailedException e) {
                        System.out.println("Could not get handle: " + e.getMessage());
                        return;
                } catch (InterruptedException e) {
      h.unregister();
      h.eventLoopStop();
    } catch (Exception e) {
                        System.out.println("Got run loop exception\n");
                        return;
                }

                h.dispose();
        }
        public static void main(String args[])
        {
    int num_dataobjects = 10;

    for (int i = 0; i < args.length; i++) {
      if (args[i].compareTo("-h") == 0) {
        System.out.println("usage:");
        System.out.println("\t -h : print this help");
        System.out.println("\t -n NUM_DATAOBJECTS : generate specified number of data objects");
        System.out.println("");
        return;
      } else if (args[i].compareTo("-n") == 0 && (i + 1) != args.length) {
        try {
          num_dataobjects = Integer.parseInt(args[++i]);
          System.out.println("Going to generate " + num_dataobjects + " data objects");
        } catch (NumberFormatException e) {
          System.err.println("Bad number format in argument");
        }
      }
    }
                TestApp app = new TestApp("JavaTestApp", num_dataobjects);

                app.start();

                System.out.println("Done...\n");
        }
}
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.