Search in sources :

Example 1 with StateChanged

use of org.apache.felix.upnp.basedriver.importer.core.event.message.StateChanged in project felix by apache.

the class MyCtrlPoint method newEventArrived.

/*
	 * (non-Javadoc)
	 * 
	 * @see org.apache.felix.upnpbase.importer.MyEventListener#newEventArrived(java.lang.String,
	 *      long, java.util.Dictionary)
	 */
public void newEventArrived(String uuid, long seq, PropertyList props) {
    Activator.logger.DEBUG("[Importer] newEventArrived");
    Service service = serviceFromSid(uuid);
    if (service != null) {
        int size = props.size();
        Hashtable hash = new Hashtable();
        for (int i = 0; i < size; i++) {
            Property prop = props.getProperty(i);
            String varName = prop.getName();
            String varValue = prop.getValue();
            String upnpType = service.getStateVariable(varName).getDataType();
            Object valueObj;
            try {
                valueObj = Converter.parseString(varValue, upnpType);
            } catch (Exception e) {
                Activator.logger.ERROR("[Importer] Bad data value in Notify event: " + "var name=" + varName + " value=" + varValue + " type=" + upnpType + "\n" + e);
                return;
            }
            hash.put(varName, valueObj);
        }
        Device device = service.getDevice();
        StateChanged msg = new StateChanged(uuid, seq, hash, device, service);
        notifierQueue.enqueue(msg);
    }
}
Also used : Hashtable(java.util.Hashtable) UPnPDevice(org.osgi.service.upnp.UPnPDevice) Device(org.cybergarage.upnp.Device) UPnPService(org.osgi.service.upnp.UPnPService) Service(org.cybergarage.upnp.Service) StateChanged(org.apache.felix.upnp.basedriver.importer.core.event.message.StateChanged) Property(org.cybergarage.upnp.event.Property) ControlPoint(org.cybergarage.upnp.ControlPoint) InvalidSyntaxException(org.osgi.framework.InvalidSyntaxException)

Example 2 with StateChanged

use of org.apache.felix.upnp.basedriver.importer.core.event.message.StateChanged in project felix by apache.

the class Notifier method run.

public void run() {
    while (running) {
        StateChanged msg = (StateChanged) notifierQueue.dequeue();
        if (running) {
            StateVarsToNotify vars = null;
            if (msg.getSeq() == 0) {
                vars = new StateVarsToNotify(msg);
                monitor.putStateVars(msg.getSid(), vars);
            } else {
                monitor.updateStateVars(msg.getSid(), msg.getDictionary());
            }
        }
    }
}
Also used : StateChanged(org.apache.felix.upnp.basedriver.importer.core.event.message.StateChanged) StateVarsToNotify(org.apache.felix.upnp.basedriver.importer.core.event.structs.StateVarsToNotify)

Aggregations

StateChanged (org.apache.felix.upnp.basedriver.importer.core.event.message.StateChanged)2 Hashtable (java.util.Hashtable)1 StateVarsToNotify (org.apache.felix.upnp.basedriver.importer.core.event.structs.StateVarsToNotify)1 ControlPoint (org.cybergarage.upnp.ControlPoint)1 Device (org.cybergarage.upnp.Device)1 Service (org.cybergarage.upnp.Service)1 Property (org.cybergarage.upnp.event.Property)1 InvalidSyntaxException (org.osgi.framework.InvalidSyntaxException)1 UPnPDevice (org.osgi.service.upnp.UPnPDevice)1 UPnPService (org.osgi.service.upnp.UPnPService)1