felix-commits mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From furf...@apache.org
Subject svn commit: r682934 - in /felix/sandbox/furfari/Bug-642/binarylight/src/main/java/org/apache/felix/upnp/sample/binaryLight: Activator.java devices/LightDevice.java
Date Tue, 05 Aug 2008 20:37:01 GMT
Author: furfari
Date: Tue Aug  5 13:37:00 2008
New Revision: 682934

URL: http://svn.apache.org/viewvc?rev=682934&view=rev
Log:
FELIX-642 modified BinaryLigth to instantiate several devices by means a system property(-Ddevices.count=<#devices>)

Modified:
    felix/sandbox/furfari/Bug-642/binarylight/src/main/java/org/apache/felix/upnp/sample/binaryLight/Activator.java
    felix/sandbox/furfari/Bug-642/binarylight/src/main/java/org/apache/felix/upnp/sample/binaryLight/devices/LightDevice.java

Modified: felix/sandbox/furfari/Bug-642/binarylight/src/main/java/org/apache/felix/upnp/sample/binaryLight/Activator.java
URL: http://svn.apache.org/viewvc/felix/sandbox/furfari/Bug-642/binarylight/src/main/java/org/apache/felix/upnp/sample/binaryLight/Activator.java?rev=682934&r1=682933&r2=682934&view=diff
==============================================================================
--- felix/sandbox/furfari/Bug-642/binarylight/src/main/java/org/apache/felix/upnp/sample/binaryLight/Activator.java
(original)
+++ felix/sandbox/furfari/Bug-642/binarylight/src/main/java/org/apache/felix/upnp/sample/binaryLight/Activator.java
Tue Aug  5 13:37:00 2008
@@ -40,40 +40,77 @@
 public class Activator implements BundleActivator {
 
 	static BundleContext context;
-	private ServiceRegistration serviceRegistration;
-	private LightDevice light;
+	private ServiceRegistration[] serviceRegistration;
+	private LightDevice[] light;
 	private HttpService httpServ;
 	
+	final int COUNT = Integer.parseInt(System.getProperty("devices.count","25"));
+	private boolean finished = false;
+	public class LightThread extends Thread{
+		private int i;
+
+		public LightThread(int i){
+			this.i=i;
+		}
+		public void run(){
+			doServiceRegistration(i);							
+		}
+	}
+
+	
 	/**
 	 * @see org.osgi.framework.BundleActivator#start(org.osgi.framework.BundleContext)
 	 */
 	public void start(BundleContext context) throws Exception {
 		Activator.context = context;
-		doServiceRegistration();
-		doServletRegistration();
+		serviceRegistration = new ServiceRegistration[COUNT];
+		light = new LightDevice[COUNT];
+		for( int i= 0; i < COUNT; i++){
+			new LightThread(i).start();				
+			//doServletRegistration(i);
+		}
+
+		new Thread(){
+			public void run(){
+				while (! finished){
+					try {
+						Thread.sleep(180000);
+						if (! finished){
+							for(int i= 0; i < COUNT; i++){
+								LightModel model = light[i].getModel();
+								model.doSwitch(! model.getStatus());
+							}	
+						}
+					} catch (InterruptedException e) {
+						return;
+					}
+				}
+			}
+		}.start();
+		
 	}
 
 
-	private void doServiceRegistration() {
-		light = new LightDevice(context);
-		Dictionary dict = light.getDescriptions(null);
+	private void doServiceRegistration(int i) {
+		light[i] = new LightDevice(context,i);
+		Dictionary dict = light[i].getDescriptions(null);
 				
-		serviceRegistration = context.registerService(
+		serviceRegistration[i] = context.registerService(
 				UPnPDevice.class.getName(),
-				light,
+				light[i],
 				dict
 			);
 	}
 	
-	private void doServletRegistration() {
+	private void doServletRegistration(int i) {
         ServiceReference sr = context.getServiceReference(HttpService.class.getName());
         if (sr != null) {
 			httpServ = (HttpService) context.getService(sr);
 
 			try {
-				Servlet presentationServlet = new PresentationServlet(light
+				Servlet presentationServlet = new PresentationServlet(light[i]
 						.getModel());
-				httpServ.registerServlet("/upnp/binaryLight",
+				httpServ.registerServlet("/upnp/binaryLight/"+i,
 						presentationServlet, null, null);
 			} catch (Exception e) {
 				System.err.println("Exception registering presentationServlet:"
@@ -95,7 +132,10 @@
 	 * @see org.osgi.framework.BundleActivator#stop(org.osgi.framework.BundleContext)
 	 */
 	public void stop(BundleContext context) throws Exception {
-		serviceRegistration.unregister();
-		light.close();
+		finished = true;
+		for(int i= 0; i < COUNT; i++){
+			serviceRegistration[i].unregister();
+			light[i].close();
+		}
 	}
 }

Modified: felix/sandbox/furfari/Bug-642/binarylight/src/main/java/org/apache/felix/upnp/sample/binaryLight/devices/LightDevice.java
URL: http://svn.apache.org/viewvc/felix/sandbox/furfari/Bug-642/binarylight/src/main/java/org/apache/felix/upnp/sample/binaryLight/devices/LightDevice.java?rev=682934&r1=682933&r2=682934&view=diff
==============================================================================
--- felix/sandbox/furfari/Bug-642/binarylight/src/main/java/org/apache/felix/upnp/sample/binaryLight/devices/LightDevice.java
(original)
+++ felix/sandbox/furfari/Bug-642/binarylight/src/main/java/org/apache/felix/upnp/sample/binaryLight/devices/LightDevice.java
Tue Aug  5 13:37:00 2008
@@ -42,7 +42,7 @@
 
 public class LightDevice implements UPnPDevice {
 
-	final private String DEVICE_ID = "uuid:Felix-BinaryLight+" +Integer.toHexString(new Random(System.currentTimeMillis()).nextInt());
+	private String DEVICE_ID = "uuid:Felix-BinaryLight+" +Integer.toHexString(new Random(System.currentTimeMillis()).nextInt());
 	private BundleContext context;
 	private LightModel model;
 	private LightUI ui;
@@ -51,8 +51,9 @@
 	private Dictionary dictionary;
 	private UPnPEventNotifier notifier;
 	
-	public LightDevice(BundleContext context) {
+	public LightDevice(BundleContext context,int i) {
 		this.context=context;
+		DEVICE_ID = DEVICE_ID + "_" +i;
 		model = new LightModel();
 		ui = new LightUI(model);
 		powerSwitch = new PowerSwitchService(model);



Mime
View raw message