Esempio n. 1
0
        public unsafe void ProcessCEDirector(byte *buffer, byte[] message)
        {
            CEDirectorData data = *(CEDirectorData *)&buffer[0];

            ceSemaphore.WaitAsync();
            try {
                if (data.status != 0 && !ces.ContainsKey(data.ceKey))
                {
                    AddCE(data);
                    return;
                }
                else
                {
                    // Don't update if key is about to be removed
                    if (!ces[data.ceKey].Equals(data) &&
                        data.status != 0)
                    {
                        UpdateCE(data.ceKey, data);
                        return;
                    }

                    // Needs removing
                    if (data.status == 0)
                    {
                        RemoveCE(data);
                        return;
                    }
                }
            } finally {
                ceSemaphore.Release();
            }
        }
Esempio n. 2
0
 private void RemoveCE(CEDirectorData data)
 {
     if (ces.ContainsKey(data.ceKey))
     {
         client_.DoCEEvent(new JSEvents.CEEvent("remove", JObject.FromObject(data)));
         ces.Remove(data.ceKey);
     }
 }
Esempio n. 3
0
 private void RemoveCE(CEDirectorData data)
 {
     if (ces.ContainsKey(data.ceKey))
     {
         OnCEChanged(null, new CEChangedArgs("remove", data));
         ces.Remove(data.ceKey);
     }
 }
Esempio n. 4
0
 private void UpdateCE(byte ceKey, CEDirectorData data)
 {
     ces[data.ceKey] = data;
     client_.DoCEEvent(new JSEvents.CEEvent("update", JObject.FromObject(data)));
 }
Esempio n. 5
0
 private void AddCE(CEDirectorData data)
 {
     ces.Add(data.ceKey, data);
     client_.DoCEEvent(new JSEvents.CEEvent("add", JObject.FromObject(data)));
 }
Esempio n. 6
0
 public CEChangedArgs(string eventType, CEDirectorData data) : base()
 {
     this.eventType = eventType;
     this.data      = data;
 }
Esempio n. 7
0
 private void UpdateCE(byte ceKey, CEDirectorData data)
 {
     ces[data.ceKey] = data;
     OnCEChanged(null, new CEChangedArgs("update", data));
 }
Esempio n. 8
0
 private void AddCE(CEDirectorData data)
 {
     ces.Add(data.ceKey, data);
     OnCEChanged(null, new CEChangedArgs("add", data));
 }