You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@felix.apache.org by fu...@apache.org on 2008/09/23 18:50:24 UTC
svn commit: r698237 - in
/felix/sandbox/furfari/Version-1.0.0/basedriver/src/main/java/org/apache/felix/upnp/basedriver:
export/ importer/core/ importer/core/event/message/
importer/core/event/structs/ importer/core/event/thread/ importer/core/upnp/
Author: furfari
Date: Tue Sep 23 09:50:24 2008
New Revision: 698237
URL: http://svn.apache.org/viewvc?rev=698237&view=rev
Log:
Added warning message to ThreadExporter when devices are not exported.
First revision of UPnP interface implementation provided by the basedriver importer
Changed serviceFromSid() implementation in MyCtrlPoint;Now we don't rely now on the Cyberdomo internal list to associate the subscription ID (sid) to a services.
Added Thread.yield() to Notifier and SubScriber to avoid starvation.
Added critical section in Subscriber to synchronize sidServices structure.
Modified:
felix/sandbox/furfari/Version-1.0.0/basedriver/src/main/java/org/apache/felix/upnp/basedriver/export/ThreadExporter.java
felix/sandbox/furfari/Version-1.0.0/basedriver/src/main/java/org/apache/felix/upnp/basedriver/importer/core/MyCtrlPoint.java
felix/sandbox/furfari/Version-1.0.0/basedriver/src/main/java/org/apache/felix/upnp/basedriver/importer/core/event/message/FirstMessage.java
felix/sandbox/furfari/Version-1.0.0/basedriver/src/main/java/org/apache/felix/upnp/basedriver/importer/core/event/message/StateChanged.java
felix/sandbox/furfari/Version-1.0.0/basedriver/src/main/java/org/apache/felix/upnp/basedriver/importer/core/event/structs/Monitor.java
felix/sandbox/furfari/Version-1.0.0/basedriver/src/main/java/org/apache/felix/upnp/basedriver/importer/core/event/thread/Notifier.java
felix/sandbox/furfari/Version-1.0.0/basedriver/src/main/java/org/apache/felix/upnp/basedriver/importer/core/event/thread/SubScriber.java
felix/sandbox/furfari/Version-1.0.0/basedriver/src/main/java/org/apache/felix/upnp/basedriver/importer/core/upnp/UPnPDeviceImpl.java
felix/sandbox/furfari/Version-1.0.0/basedriver/src/main/java/org/apache/felix/upnp/basedriver/importer/core/upnp/UPnPServiceImpl.java
felix/sandbox/furfari/Version-1.0.0/basedriver/src/main/java/org/apache/felix/upnp/basedriver/importer/core/upnp/UPnPStateVariableImpl.java
Modified: felix/sandbox/furfari/Version-1.0.0/basedriver/src/main/java/org/apache/felix/upnp/basedriver/export/ThreadExporter.java
URL: http://svn.apache.org/viewvc/felix/sandbox/furfari/Version-1.0.0/basedriver/src/main/java/org/apache/felix/upnp/basedriver/export/ThreadExporter.java?rev=698237&r1=698236&r2=698237&view=diff
==============================================================================
--- felix/sandbox/furfari/Version-1.0.0/basedriver/src/main/java/org/apache/felix/upnp/basedriver/export/ThreadExporter.java (original)
+++ felix/sandbox/furfari/Version-1.0.0/basedriver/src/main/java/org/apache/felix/upnp/basedriver/export/ThreadExporter.java Tue Sep 23 09:50:24 2008
@@ -146,16 +146,19 @@
Device d = BuildDevice.createCyberLinkDevice(dn.getReference());
if (d != null) {
if(!bindInvokes(d,rootDevice)){
- Activator.logger.DEBUG("Unable to find all the sub device or to set action listener");
+ Activator.logger.WARNING("Unable to to set action listener for the exported device: " + d.getUDN());
continue;
}
ServiceRegistration listenReg = bindSubscribe(d);
if(listenReg==null){
- Activator.logger.DEBUG("Unable to set action listener event listener");
+ Activator.logger.WARNING("Unable to set event listener for the exported device: " + d.getUDN());
continue;
}
//makeIcons(r.getRootDevice(),xml.getAbsolutePath());
- d.start();
+ if (d.start() == false){
+ Activator.logger.WARNING("Unable to allocate resources for the exported device: " + d.getUDN());
+ continue;
+ }
exportedDevices.put(
rootDevice.getProperty(UPnPDevice.UDN),
new ExportedDeviceInfo(d,listenReg,dn)
Modified: felix/sandbox/furfari/Version-1.0.0/basedriver/src/main/java/org/apache/felix/upnp/basedriver/importer/core/MyCtrlPoint.java
URL: http://svn.apache.org/viewvc/felix/sandbox/furfari/Version-1.0.0/basedriver/src/main/java/org/apache/felix/upnp/basedriver/importer/core/MyCtrlPoint.java?rev=698237&r1=698236&r2=698237&view=diff
==============================================================================
--- felix/sandbox/furfari/Version-1.0.0/basedriver/src/main/java/org/apache/felix/upnp/basedriver/importer/core/MyCtrlPoint.java (original)
+++ felix/sandbox/furfari/Version-1.0.0/basedriver/src/main/java/org/apache/felix/upnp/basedriver/importer/core/MyCtrlPoint.java Tue Sep 23 09:50:24 2008
@@ -79,8 +79,6 @@
"(" + UPnPDevice.UPNP_EXPORT + "=*" + ")";
private final String IMPORT_FLTR =
"(" + org.apache.felix.upnp.basedriver.util.Constants.UPNP_IMPORT + "=*" + ")";
-// private Hashtable waitingEvents;
-// private Hashtable sidServices;
public MyCtrlPoint(BundleContext context, SubscriptionQueue subQueue,
@@ -90,8 +88,6 @@
devices = new Hashtable();
addDeviceChangeListener(this);
-// waitingEvents = new Hashtable();
-// sidServices = new Hashtable();
try {
context.addServiceListener(this, UPNP_EVENT_LISTENER_FLTR);
} catch (InvalidSyntaxException e) {
@@ -111,7 +107,6 @@
public void deviceAdded(Device cyberDevice) {
String udn = cyberDevice.getUDN();
String friendlyName = cyberDevice.getFriendlyName();
-
if (isExportedDevice(udn)) {
Activator.logger.INFO("[Importer] discoverded Exported Device :"+friendlyName+"("+udn+")" );
}
@@ -256,7 +251,7 @@
String serviceId = (String) filters[j].get(UPnPService.ID);
UPnPServiceImpl service = (UPnPServiceImpl) device.getService(serviceId);
FirstMessage msg = new FirstMessage(
- service.getCyberService(),
+ service,
upnpEventListenerService);
subQueue.enqueue(msg);
}
@@ -274,7 +269,7 @@
for (int j = 0; j < eventedServices.length; j++) {
FirstMessage msg = new FirstMessage(
- eventedServices[j].getCyberService(),
+ eventedServices[j],
upnpEventListenerService);
subQueue.enqueue(msg);
}
@@ -298,7 +293,7 @@
if (filter.match(filters[j])) {
String serviceId = (String) filters[j].get(UPnPService.ID);
UPnPServiceImpl service = (UPnPServiceImpl) device.getService(serviceId);
- newServices.add(service.getCyberService());
+ newServices.add(service);
}
}
context.ungetService(devicesRefs[i]);
@@ -359,9 +354,7 @@
}
- public void searchForListener(UPnPDeviceImpl device) {
- System.out.println("searching for UPnPEvent Listners already registered");
-
+ public void searchForListener(UPnPDeviceImpl device) {
Activator.logger.DEBUG("[Importer] searching for UPnPEventListener");
ServiceReference[] listeners = null;
try {
@@ -378,7 +371,7 @@
UPnPServiceImpl[] eventedServices = device.getEventedServices();
for (int j = 0; j < eventedServices.length; j++) {
FirstMessage msg = new FirstMessage(
- eventedServices[j].getCyberService(),
+ eventedServices[j],
listener);
subQueue.enqueue(msg);
}
@@ -388,7 +381,7 @@
if( filter.match(filters[j])){
String serviceId = (String) filters[j].get(UPnPService.ID);
UPnPServiceImpl service = (UPnPServiceImpl) device.getService(serviceId);
- subQueue.enqueue(new FirstMessage(service.getCyberService(), listener));
+ subQueue.enqueue(new FirstMessage(service, listener));
}
}
}
@@ -411,7 +404,7 @@
* @see org.osgi.framework.ServiceListener#serviceChanged(org.osgi.framework.ServiceEvent)
*/
- synchronized public void httpRequestRecieved(HTTPRequest httpReq) {
+ public void httpRequestRecieved(HTTPRequest httpReq) {
Activator.logger.DEBUG("[Importer] httpRequestRecieved event");
Activator.logger.PACKET(httpReq.toString());
@@ -433,13 +426,9 @@
Activator.logger.DEBUG("[Importer] newEventArrived");
String uuid = notifyReq.getSID();
- Service service = serviceFromSid(uuid);
- //System.out.println("new event arrived" + " seq: " +seq + " uuis: " +uuid );
+ UPnPServiceImpl service = serviceFromSid(uuid);
if (service == null) {
System.out.println(" but SERVICE IS NULL !!!!!!!!!!! sid: " +uuid);
-// synchronized (waitingEvents) {
-// waitingEvents.put(uuid, notifyReq);
-// }
}
else if (service != null) {
long seq = notifyReq.getSEQ();
@@ -450,7 +439,7 @@
Property prop = props.getProperty(i);
String varName = prop.getName();
String varValue = prop.getValue();
- String upnpType = service.getStateVariable(varName).getDataType();
+ String upnpType = service.getStateVariable(varName).getUPnPDataType();
Object valueObj;
try {
valueObj = Converter.parseString(varValue,upnpType);
@@ -462,98 +451,70 @@
hash.put(varName, valueObj);
}
- Device device = service.getDevice();
- StateChanged msg = new StateChanged(uuid, seq, hash, device, service);
- //System.out.println("notifierQueue.enqueue(msg);");
+ String deviceId = service.getDeviceId();
+ String serviceId = service.getId();
+ StateChanged msg = new StateChanged(uuid, seq, hash, deviceId, serviceId);
notifierQueue.enqueue(msg);
}
}
- public Service serviceFromSid(String sid) {
-
-// synchronized (sidServices) {
-// return (Service) sidServices.get(sid);
-// }
-
-
- synchronized (devices) {
-
- Enumeration e = devices.elements();
- //System.out.println("#### DEVICES SIZE" +devices.size());
- Service cyberService = null;
- while (e.hasMoreElements()) {
- OSGiDeviceInfo deviceinfo = (OSGiDeviceInfo) e.nextElement();
- UPnPDevice device = deviceinfo.getOSGiDevice();
- UPnPService[] services = (UPnPService[]) device.getServices();
- UPnPServiceImpl[] servicesImpl = new UPnPServiceImpl[services.length];
- for (int i = 0; i < servicesImpl.length; i++) {
- servicesImpl[i] = (UPnPServiceImpl) services[i];
- }
- for (int i = 0; i < servicesImpl.length; i++) {
- cyberService = servicesImpl[i].getCyberService();
- boolean bool = cyberService.isSubscribed();
- if (bool) {
- if (cyberService.getSID().equals(sid)) {
- return cyberService;
- }
- }
- }
- //System.out.println("Device NOT MATCHED " +device.getDescriptions(null).get(UPnPDevice.ID));
- }
+ public UPnPServiceImpl serviceFromSid(String sid) {
+
+ synchronized (sidServices) {
+ return (UPnPServiceImpl) sidServices.get(sid);
}
- return null;
- }
-
-
-
-
-
-// public Hashtable getWaitingEvents() {
-// return waitingEvents;
-//
-// }
-
- synchronized public boolean subscribe(Service service, long timeout)
- {
- return super.subscribe(service,timeout);
-
-// if (service.isSubscribed() == true) {
-// System.out.println( "isSubsribed "+ service.getServiceID() + " " +service.getDevice().getUDN());
-// String sid = service.getSID();
-// return subscribe(service, sid, timeout);
-// }
-//
-// Device rootDev = service.getRootDevice();
-// if (rootDev == null)
-// return false;
-// String ifAddress = rootDev.getInterfaceAddress();
-// SubscriptionRequest subReq = new SubscriptionRequest();
-// subReq.setSubscribeRequest(service, getEventSubCallbackURL(ifAddress), timeout);
-// SubscriptionResponse subRes = subReq.post();
-// if (subRes.isSuccessful() == true) {
-// //System.out.println( "subscription response "+ service.getServiceID() + " " +service.getDevice().getUDN());
-// String sid = subRes.getSID();
-
-// synchronized (sidServices) {
-// sidServices.put(sid,service);
+
+// synchronized (devices) {
+//
+// Enumeration e = devices.elements();
+// //System.out.println("#### DEVICES SIZE" +devices.size());
+// Service cyberService = null;
+// while (e.hasMoreElements()) {
+// OSGiDeviceInfo deviceinfo = (OSGiDeviceInfo) e.nextElement();
+// UPnPDevice device = deviceinfo.getOSGiDevice();
+// UPnPService[] services = (UPnPService[]) device.getServices();
+// UPnPServiceImpl[] servicesImpl = new UPnPServiceImpl[services.length];
+// for (int i = 0; i < servicesImpl.length; i++) {
+// servicesImpl[i] = (UPnPServiceImpl) services[i];
+// }
+// for (int i = 0; i < servicesImpl.length; i++) {
+// cyberService = servicesImpl[i].getCyberService();
+// boolean bool = cyberService.isSubscribed();
+// if (bool) {
+// if (cyberService.getSID().equals(sid)) {
+// return cyberService;
+// }
+// }
+// }
+// //System.out.println("Device NOT MATCHED " +device.getDescriptions(null).get(UPnPDevice.ID));
// }
-
-// service.setSID(sid);
-// service.setTimeout(subRes.getTimeout());
-// return true;
-//
// }
-// service.clearSID();
-// return false;
+//
+// return null;
}
+
+
+
/*
* (non-Javadoc)
*
* @see org.cybergarage.upnp.ControlPoint#removeExpiredDevices()
*
*/
+
+ public Hashtable sidServices = new Hashtable();
+ public void saveSid(String sid, UPnPServiceImpl service) {
+ synchronized (sidServices) {
+ sidServices.put(sid, service);
+ }
+ }
+ public void clearSid(String sid) {
+ synchronized (sidServices) {
+ sidServices.remove(sid);
+ }
+ }
Modified: felix/sandbox/furfari/Version-1.0.0/basedriver/src/main/java/org/apache/felix/upnp/basedriver/importer/core/event/message/FirstMessage.java
URL: http://svn.apache.org/viewvc/felix/sandbox/furfari/Version-1.0.0/basedriver/src/main/java/org/apache/felix/upnp/basedriver/importer/core/event/message/FirstMessage.java?rev=698237&r1=698236&r2=698237&view=diff
==============================================================================
--- felix/sandbox/furfari/Version-1.0.0/basedriver/src/main/java/org/apache/felix/upnp/basedriver/importer/core/event/message/FirstMessage.java (original)
+++ felix/sandbox/furfari/Version-1.0.0/basedriver/src/main/java/org/apache/felix/upnp/basedriver/importer/core/event/message/FirstMessage.java Tue Sep 23 09:50:24 2008
@@ -21,6 +21,8 @@
import org.osgi.service.upnp.UPnPEventListener;
+import org.apache.felix.upnp.basedriver.importer.core.upnp.UPnPServiceImpl;
+
import org.cybergarage.upnp.Device;
import org.cybergarage.upnp.Service;
@@ -34,18 +36,19 @@
public class FirstMessage {
- private Service service;
+
+
+ private UPnPServiceImpl service;
private UPnPEventListener listener;
private String sid;
- private Device device;
-
- public FirstMessage(Service service, UPnPEventListener listener) {
+
+ public FirstMessage(UPnPServiceImpl service, UPnPEventListener listener) {
this.service = service;
this.listener = listener;
this.sid = "";
- this.device = service.getDevice();
}
- public Service getService() {
+
+ public UPnPServiceImpl getService() {
return service;
}
public UPnPEventListener getListener() {
Modified: felix/sandbox/furfari/Version-1.0.0/basedriver/src/main/java/org/apache/felix/upnp/basedriver/importer/core/event/message/StateChanged.java
URL: http://svn.apache.org/viewvc/felix/sandbox/furfari/Version-1.0.0/basedriver/src/main/java/org/apache/felix/upnp/basedriver/importer/core/event/message/StateChanged.java?rev=698237&r1=698236&r2=698237&view=diff
==============================================================================
--- felix/sandbox/furfari/Version-1.0.0/basedriver/src/main/java/org/apache/felix/upnp/basedriver/importer/core/event/message/StateChanged.java (original)
+++ felix/sandbox/furfari/Version-1.0.0/basedriver/src/main/java/org/apache/felix/upnp/basedriver/importer/core/event/message/StateChanged.java Tue Sep 23 09:50:24 2008
@@ -31,27 +31,22 @@
private String sid;
private Dictionary dic;
private long seq;
- private Service service;
- private Device device;
+ private String serviceId;
+ private String deviceId;
/**
* @param sid
* @param dic
* @param varName
* @param varValue
*/
- public StateChanged(String sid, long seq, Dictionary dic, Device device,
- Service service) {
- super();
+ public StateChanged(String sid, long seq, Dictionary dic, String deviceId,
+ String serviceId) {
+
this.sid = sid;
- /*
- * this.varName = varName; this.varValue = varValue;
- */
this.dic = dic;
- /* dic.put(this.varName, this.varValue); */
- //this.service=service;
this.seq = seq;
- this.device = device;
- this.service = service;
+ this.deviceId = deviceId;
+ this.serviceId = serviceId;
}
public Dictionary getDictionary() {
@@ -72,9 +67,9 @@
*
*/
public String getDeviceID() {
- return device.getUDN();
+ return deviceId;
}
public String getServiceID() {
- return service.getServiceID();
+ return serviceId;
}
}
Modified: felix/sandbox/furfari/Version-1.0.0/basedriver/src/main/java/org/apache/felix/upnp/basedriver/importer/core/event/structs/Monitor.java
URL: http://svn.apache.org/viewvc/felix/sandbox/furfari/Version-1.0.0/basedriver/src/main/java/org/apache/felix/upnp/basedriver/importer/core/event/structs/Monitor.java?rev=698237&r1=698236&r2=698237&view=diff
==============================================================================
--- felix/sandbox/furfari/Version-1.0.0/basedriver/src/main/java/org/apache/felix/upnp/basedriver/importer/core/event/structs/Monitor.java (original)
+++ felix/sandbox/furfari/Version-1.0.0/basedriver/src/main/java/org/apache/felix/upnp/basedriver/importer/core/event/structs/Monitor.java Tue Sep 23 09:50:24 2008
@@ -32,6 +32,7 @@
import org.apache.felix.upnp.basedriver.importer.core.MyCtrlPoint;
import org.apache.felix.upnp.basedriver.importer.core.event.message.FirstMessage;
import org.apache.felix.upnp.basedriver.importer.core.event.message.ListenerModified;
+import org.apache.felix.upnp.basedriver.importer.core.upnp.UPnPServiceImpl;
/*
* @author <a href="mailto:dev@felix.apache.org">Felix Project Team</a>
@@ -125,10 +126,7 @@
sidListSid.getListenersFromSid(sid);
listeners.remove(listener);
if (listeners.size() == 0) {
- Service service =
- ctrl.serviceFromSid(sid);
- //##renew Renewer renewer = sidRenewer.get((String) sids.elementAt(i));
- //##renew renewer.stop();
+ Service service = ctrl.serviceFromSid(sid).getCyberService();
if (service != null) {
boolean ok = ctrl.unsubscribe(service);
if (!ok) {
@@ -153,16 +151,17 @@
Vector notSubscribed = new Vector();
for (int i = 0; i < newServices.size(); i++) {
- Service ser = (Service) newServices.elementAt(i);
- if (ser.isSubscribed()) {
- subscribed.add(ser);
+ UPnPServiceImpl osgiService = (UPnPServiceImpl) newServices.get(i);
+ Service cyberService = osgiService.getCyberService();
+ if (cyberService.isSubscribed()) {
+ subscribed.add(osgiService);
} else {
- notSubscribed.add(ser);
+ notSubscribed.add(osgiService);
}
}
for (int i = 0; i < notSubscribed.size(); i++) {
- Service ser = (Service) notSubscribed.elementAt(i);
+ UPnPServiceImpl ser = (UPnPServiceImpl) notSubscribed.get(i);
subqueue.enqueue(new FirstMessage(ser, listener));
}
@@ -195,7 +194,7 @@
Vector listeners = sidListSid.getListenersFromSid(sid);
listeners.remove(listener);
if(listeners.size()==0){
- Service service = ctrl.serviceFromSid(sid);
+ Service service = ctrl.serviceFromSid(sid).getCyberService();
if (service != null) {
boolean ok = ctrl.unsubscribe(service);
if (!ok) {
Modified: felix/sandbox/furfari/Version-1.0.0/basedriver/src/main/java/org/apache/felix/upnp/basedriver/importer/core/event/thread/Notifier.java
URL: http://svn.apache.org/viewvc/felix/sandbox/furfari/Version-1.0.0/basedriver/src/main/java/org/apache/felix/upnp/basedriver/importer/core/event/thread/Notifier.java?rev=698237&r1=698236&r2=698237&view=diff
==============================================================================
--- felix/sandbox/furfari/Version-1.0.0/basedriver/src/main/java/org/apache/felix/upnp/basedriver/importer/core/event/thread/Notifier.java (original)
+++ felix/sandbox/furfari/Version-1.0.0/basedriver/src/main/java/org/apache/felix/upnp/basedriver/importer/core/event/thread/Notifier.java Tue Sep 23 09:50:24 2008
@@ -53,6 +53,7 @@
} else {
monitor.updateStateVars(msg.getSid(),msg.getDictionary());
}
+ Thread.yield();
}
}
}
Modified: felix/sandbox/furfari/Version-1.0.0/basedriver/src/main/java/org/apache/felix/upnp/basedriver/importer/core/event/thread/SubScriber.java
URL: http://svn.apache.org/viewvc/felix/sandbox/furfari/Version-1.0.0/basedriver/src/main/java/org/apache/felix/upnp/basedriver/importer/core/event/thread/SubScriber.java?rev=698237&r1=698236&r2=698237&view=diff
==============================================================================
--- felix/sandbox/furfari/Version-1.0.0/basedriver/src/main/java/org/apache/felix/upnp/basedriver/importer/core/event/thread/SubScriber.java (original)
+++ felix/sandbox/furfari/Version-1.0.0/basedriver/src/main/java/org/apache/felix/upnp/basedriver/importer/core/event/thread/SubScriber.java Tue Sep 23 09:50:24 2008
@@ -29,6 +29,7 @@
import org.cybergarage.upnp.event.NotifyRequest;
import org.cybergarage.upnp.event.Property;
import org.cybergarage.upnp.event.PropertyList;
+import org.cybergarage.upnp.event.Subscription;
import org.apache.felix.upnp.basedriver.Activator;
import org.apache.felix.upnp.basedriver.importer.core.MyCtrlPoint;
@@ -64,35 +65,34 @@
Object msg = subQueue.dequeue();
if (running) {
if (msg instanceof FirstMessage) {
- //System.out.println("msg instanceof FirstMessage");
-
FirstMessage firstmsg = (FirstMessage) msg;
- Service service = firstmsg.getService();
+ Service service = firstmsg.getService().getCyberService();
if (!service.isSubscribed()) {//is not subscribe
- boolean ok = ctrl.subscribe(service,120000);
- String sid = "";
- if (ok) {//subcribe ok
- sid = service.getSID();
- firstmsg.setSid(sid);
- monitor.addListener(sid,firstmsg.getListener());
-// wakeupEventsForSid(sid);
- } else {//subscribe not ok
- Activator.logger.log(LogService.LOG_ERROR,"Sucribe failed");
- //System.out.println(" subscribe failed");
+
+ synchronized (ctrl.sidServices) {
+ boolean ok = ctrl.subscribe(service,Subscription.INFINITE_VALUE);
+ String sid = "";
+ if (ok) {//subcribe ok
+ sid = service.getSID();
+ firstmsg.setSid(sid);
+ monitor.addListener(sid,firstmsg.getListener());
+ ctrl.saveSid(sid,firstmsg.getService());
+ } else {//subscribe not ok
+ Activator.logger.log(LogService.LOG_ERROR,"Sucribe failed");
+ System.out.println(" subscribe failed");
+ }
}
} else {// already subscribe
monitor.addListener(service.getSID(),firstmsg.getListener());
-// wakeupEventsForSid(service.getSID());
- //System.out.println("already subscribed");
}
} else if (msg instanceof ListenerModified) {
- //System.out.println("msg instanceof ListenerModified");
monitor.updateListener((ListenerModified)msg,subQueue,ctrl);
} else if (msg instanceof ListenerUnRegistration) {
- //System.out.println("msg instanceof ListenerUnRegistration");
ListenerUnRegistration unreg=(ListenerUnRegistration)msg;
monitor.delListener(unreg.getListener(),ctrl);
+ //TODO invoke ctrl.clearSID()
}
+ Thread.yield();
}
}
}
Modified: felix/sandbox/furfari/Version-1.0.0/basedriver/src/main/java/org/apache/felix/upnp/basedriver/importer/core/upnp/UPnPDeviceImpl.java
URL: http://svn.apache.org/viewvc/felix/sandbox/furfari/Version-1.0.0/basedriver/src/main/java/org/apache/felix/upnp/basedriver/importer/core/upnp/UPnPDeviceImpl.java?rev=698237&r1=698236&r2=698237&view=diff
==============================================================================
--- felix/sandbox/furfari/Version-1.0.0/basedriver/src/main/java/org/apache/felix/upnp/basedriver/importer/core/upnp/UPnPDeviceImpl.java (original)
+++ felix/sandbox/furfari/Version-1.0.0/basedriver/src/main/java/org/apache/felix/upnp/basedriver/importer/core/upnp/UPnPDeviceImpl.java Tue Sep 23 09:50:24 2008
@@ -215,7 +215,7 @@
}
/*
- * service of this device
+ * services of this device
*/
ServiceList serviceList = dev.getServiceList();
int size = serviceList.size();
@@ -225,7 +225,7 @@
ArrayList eventedServiceList = new ArrayList();
for (int i = 0; i < size; i++) {
Service service = serviceList.getService(i);
- UPnPServiceImpl serviceImpl = new UPnPServiceImpl(service);
+ UPnPServiceImpl serviceImpl = new UPnPServiceImpl(service,udn);
services.put(service.getServiceID(), serviceImpl);
servicesArray[i] = serviceImpl;
if (serviceImpl.hasEventedStateVariables()) eventedServiceList.add(serviceImpl);
@@ -233,16 +233,8 @@
seriviceTypeSet.add(serviceImpl.getType());
}
- //TODO check null for eventedservices
String[] servicesTypeProperty = (String[]) seriviceTypeSet.toArray(new String[]{});
eventedServices = (UPnPServiceImpl[]) eventedServiceList.toArray(new UPnPServiceImpl[]{});
-// String[] servicesTypeProperty = new String[serTypeSet.size()];
-// Iterator iter = serTypeSet.iterator();
-// int i = 0;
-// while (iter.hasNext()) {
-// servicesTypeProperty[i] = (String) iter.next();
-// i++;
-// }
properties.put(UPnPService.ID, servicesIDProperty);
properties.put(UPnPService.TYPE, servicesTypeProperty);
Modified: felix/sandbox/furfari/Version-1.0.0/basedriver/src/main/java/org/apache/felix/upnp/basedriver/importer/core/upnp/UPnPServiceImpl.java
URL: http://svn.apache.org/viewvc/felix/sandbox/furfari/Version-1.0.0/basedriver/src/main/java/org/apache/felix/upnp/basedriver/importer/core/upnp/UPnPServiceImpl.java?rev=698237&r1=698236&r2=698237&view=diff
==============================================================================
--- felix/sandbox/furfari/Version-1.0.0/basedriver/src/main/java/org/apache/felix/upnp/basedriver/importer/core/upnp/UPnPServiceImpl.java (original)
+++ felix/sandbox/furfari/Version-1.0.0/basedriver/src/main/java/org/apache/felix/upnp/basedriver/importer/core/upnp/UPnPServiceImpl.java Tue Sep 23 09:50:24 2008
@@ -44,9 +44,15 @@
private UPnPActionImpl[] actionsArray;
private UPnPStateVariableImpl[] stateVariablesArray;
private boolean hasEventedStateVariables;
+ private String deviceId;
+ private String serviceId;
+ private String serviceType;
- public UPnPServiceImpl(Service service) {
+ public UPnPServiceImpl(Service service, String udn) {
this.service = service;
+ this.deviceId = udn;
+ this.serviceId = service.getServiceID();
+ this.serviceType = service.getServiceType();
actions = new Hashtable();
stateVariables=new Hashtable();
@@ -78,7 +84,7 @@
* @see org.osgi.service.upnp.UPnPService#getId()
*/
public String getId() {
- return service.getServiceID();
+ return serviceId;
}
/*
@@ -87,7 +93,7 @@
* @see org.osgi.service.upnp.UPnPService#getType()
*/
public String getType() {
- return service.getServiceType();
+ return serviceType;
}
/*
@@ -144,5 +150,9 @@
public boolean hasEventedStateVariables(){
return hasEventedStateVariables;
}
+
+ public String getDeviceId(){
+ return deviceId;
+ }
}
Modified: felix/sandbox/furfari/Version-1.0.0/basedriver/src/main/java/org/apache/felix/upnp/basedriver/importer/core/upnp/UPnPStateVariableImpl.java
URL: http://svn.apache.org/viewvc/felix/sandbox/furfari/Version-1.0.0/basedriver/src/main/java/org/apache/felix/upnp/basedriver/importer/core/upnp/UPnPStateVariableImpl.java?rev=698237&r1=698236&r2=698237&view=diff
==============================================================================
--- felix/sandbox/furfari/Version-1.0.0/basedriver/src/main/java/org/apache/felix/upnp/basedriver/importer/core/upnp/UPnPStateVariableImpl.java (original)
+++ felix/sandbox/furfari/Version-1.0.0/basedriver/src/main/java/org/apache/felix/upnp/basedriver/importer/core/upnp/UPnPStateVariableImpl.java Tue Sep 23 09:50:24 2008
@@ -46,7 +46,13 @@
private String[] values = null;
private Boolean hasMaxMinStep = null;
- private Boolean hasRangeValues = null;
+ private Boolean hasRangeValues = null;
+
+ private String name;
+
+ private String dataType;
+
+ private boolean isSendEvent;
private static Hashtable upnp2javaTable = null;
@@ -107,27 +113,30 @@
public UPnPStateVariableImpl(StateVariable variable) {
this.variable = variable;
+ this.name = variable.getName();
+ this.dataType = variable.getDataType();
+ this.isSendEvent = variable.isSendEvents();
}
/**
* @see org.osgi.service.upnp.UPnPStateVariable#getName()
*/
public String getName() {
- return variable.getName();
+ return name;
}
/**
* @see org.osgi.service.upnp.UPnPStateVariable#getJavaDataType()
*/
public Class getJavaDataType() {
- return (Class) upnp2javaTable.get(variable.getDataType());
+ return (Class) upnp2javaTable.get(dataType);
}
/**
* @see org.osgi.service.upnp.UPnPStateVariable#getUPnPDataType()
*/
public String getUPnPDataType() {
- return variable.getDataType();
+ return dataType;
}
/**
@@ -267,7 +276,7 @@
* @see org.osgi.service.upnp.UPnPStateVariable#sendsEvents()
*/
public boolean sendsEvents() {
- return variable.isSendEvents();
+ return isSendEvent;
}