private void UpdateDeviceStateCounters(DeviceStateCountersQueue counters) { lock (state) { try { if (Devices.NetworkSpine.State == SpineClientWrap.States.DISCONNECTED || counters.Count == 0) { // silenciosamente, ignoro el commit pues no tengo spine a la vista. // o no nay nada en la cola de actualizacion. STrace.Debug(typeof(DeviceStateWrap).FullName, String.Format("UpdateDeviceStateCounters[DESCARTA]: id={0} SpineState={1} Counters_Count={2}", id, Devices.NetworkSpine.State, counters.Count)); return; } STrace.Debug(typeof(DeviceStateWrap).FullName, String.Format("UpdateDeviceStateCounters[INICIA]: id={0} Counters_Count={1} QueryState={2}", id, counters.Count, State)); var asyncCallback = new AsyncCallback(UpdateDeviceStateCounterAsyncCallbackHandler); // preparo el cliente. var remoteAsyncDelegate = new UpdateDeviceStateCountersHandler(Devices.NetworkSpine.UpdateDeviceStateCounters); var asyncCallBackData = new UpdateDeviceStateCountersData { RemoteCounters = counters, RemoteAsyncDelegate = remoteAsyncDelegate }; // lanzamos el evento. remoteAsyncDelegate.BeginInvoke(id, counters, asyncCallback, asyncCallBackData); } catch (Exception e) { STrace.Exception(typeof(DeviceStateWrap).FullName, e); } } }
public void Commit() { var queue = new DeviceStatePropertiesQueue(); var counters_queue = new DeviceStateCountersQueue(); EnqueueProperty(queue, qTreeState); EnqueueProperty(queue, type); EnqueueProperty(queue, storageMediaFailure); EnqueueProperty(queue, transientDeviceNetworkPath); EnqueueProperty(queue, state); EnqueueProperty(queue, lastLoginGPSPoint); EnqueueProperty(queue, lastKnownGPSPoint); EnqueueProperty(queue, lastLogin); EnqueueProperty(queue, lastReceivedTrackingData); EnqueueProperty(queue, lastReceivedEventData); EnqueueProperty(queue, clockSlice); EnqueueProperty(queue, qtreeRevision); EnqueueProperty(queue, firmwareVersion); EnqueueProperty(queue, xbeeFirmware); EnqueueProperty(queue, haveDisplay); SetDeviceStateProperties(queue); // contadores EnqueueCounter(counters_queue, flashCounter); EnqueueCounter(counters_queue, crapReceivedCounter); UpdateDeviceStateCounters(counters_queue); changes_to_commit = ChangesToCommit; //STrace.Trace(typeof(DeviceStateWrap).FullName,0, "DS[{0}]: COMMIT", id); }
private static void EnqueueCounter(DeviceStateCountersQueue queue, WrappedCounter counter) { if (counter.DeviceStateCounter.PendingCommits <= 0) { return; } STrace.Debug(typeof(DeviceStateWrap).FullName, String.Format("EnqueueCounter: {0} value={1}", counter.DeviceStateCounter.Counter, counter.DeviceStateCounter.PartialValue)); counter.DeviceStateCounter.Action = DeviceStateCounter.Actions.Increase; queue.Enqueue(counter.DeviceStateCounter); }
public bool UpdateDeviceStateCounters(short device_id, DeviceStateCountersQueue counters) { try { return(State == States.CONNECTED && SpineClient.Spine.UpdateDeviceStateCounters(device_id, counters)); } catch (Exception e) { STrace.Exception(GetType().FullName, e); STrace.Debug(GetType().FullName, String.Format("SPINE_CLIENT_WRAP/ERROR: No se pudo actualizar las propiedades del dispositivo {0}", device_id)); State = States.DISCONNECTED; SpineClient = null; } return(false); }