public DeviceConnectedStatus GetDeviceConnectedStatus(Client client)
        {
            DeviceConnectedStatus result = null;

            Service.ILWM2MServerService service = GetService(client.Server);
            lock (service)
            {
                result = service.GetDeviceConnectedStatus(client.ClientID);
            }
            return(result);
        }
Exemple #2
0
        public DeviceConnectedStatus GetDeviceConnectedStatus(Guid clientID)
        {
            DeviceConnectedStatus result  = null;
            IPCRequest            request = new IPCRequest();

            request.Method = "GetDeviceConnectedStatus";
            request.AddToPayload(clientID);
            SendRequest(request);
            if (_ResponseBytes.Length > 0)
            {
                result = DeviceConnectedStatus.Deserialise(new MemoryStream(_ResponseBytes));
            }
            return(result);
        }
Exemple #3
0
        public DeviceConnectedStatus GetDeviceConnectedStatus(Guid clientID)
        {
            DeviceConnectedStatus result = null;
            LWM2MClient           client = BusinessLogicFactory.Clients.GetClient(clientID);

            if (client != null)
            {
                result        = new DeviceConnectedStatus();
                result.Online = (client.Lifetime > DateTime.UtcNow);
                if (client.LastActivityTime > DateTime.MinValue)
                {
                    result.LastActivityTime = client.LastActivityTime;
                }
            }
            return(result);
        }
 private void ProcessRequest(Socket client, IPCRequest request)
 {
     byte[] response = new byte[4];
     try
     {
         if (string.Compare(request.Method, "CancelObserveObject", true) == 0)
         {
             Guid   clientID           = request.ReadGuid();
             Guid   objectDefinitionID = request.ReadGuid();
             string instanceID         = request.ReadString();
             bool   useReset           = request.ReadBoolean();
             _ServerAPI.CancelObserveObject(clientID, objectDefinitionID, instanceID, useReset);
         }
         else if (string.Compare(request.Method, "CancelObserveObjectProperty", true) == 0)
         {
             Guid   clientID             = request.ReadGuid();
             Guid   objectDefinitionID   = request.ReadGuid();
             string instanceID           = request.ReadString();
             Guid   propertyDefinitionID = request.ReadGuid();
             bool   useReset             = request.ReadBoolean();
             _ServerAPI.CancelObserveObjectProperty(clientID, objectDefinitionID, instanceID, propertyDefinitionID, useReset);
         }
         else if (string.Compare(request.Method, "CancelObserveObjects", true) == 0)
         {
             Guid clientID           = request.ReadGuid();
             Guid objectDefinitionID = request.ReadGuid();
             bool useReset           = request.ReadBoolean();
             _ServerAPI.CancelObserveObjects(clientID, objectDefinitionID, useReset);
         }
         else if (string.Compare(request.Method, "DeleteClient", true) == 0)
         {
             Guid clientID = request.ReadGuid();
             _ServerAPI.DeleteClient(clientID);
         }
         else if (string.Compare(request.Method, "ExecuteResource", true) == 0)
         {
             Guid         clientID             = request.ReadGuid();
             Guid         objectDefinitionID   = request.ReadGuid();
             string       instanceID           = request.ReadString();
             Guid         propertyDefinitionID = request.ReadGuid();
             bool         success = _ServerAPI.ExecuteResource(clientID, objectDefinitionID, instanceID, propertyDefinitionID);
             MemoryStream data    = new MemoryStream(4096);
             data.Position = 4;
             IPCHelper.Write(data, success);
             data.Position = 0;
             NetworkByteOrderConverter.WriteInt32(data, (int)data.Length - 4);
             response = data.ToArray();
         }
         if (string.Compare(request.Method, "GetClients", true) == 0)
         {
             List <Client> clients = _ServerAPI.GetClients();
             if (clients != null)
             {
                 MemoryStream data = new MemoryStream(4096);
                 data.Position = 4;
                 IPCHelper.Write(data, clients.Count);
                 foreach (Client item in clients)
                 {
                     item.Serialise(data);
                 }
                 data.Position = 0;
                 NetworkByteOrderConverter.WriteInt32(data, (int)data.Length - 4);
                 response = data.ToArray();
             }
         }
         else if (string.Compare(request.Method, "GetDeviceConnectedStatus", true) == 0)
         {
             Guid clientID = request.ReadGuid();
             DeviceConnectedStatus responseObject = _ServerAPI.GetDeviceConnectedStatus(clientID);
             if (responseObject != null)
             {
                 MemoryStream data = new MemoryStream(4096);
                 data.Position = 4;
                 responseObject.Serialise(data);
                 data.Position = 0;
                 NetworkByteOrderConverter.WriteInt32(data, (int)data.Length - 4);
                 response = data.ToArray();
             }
         }
         else if (string.Compare(request.Method, "GetObject", true) == 0)
         {
             Guid         clientID           = request.ReadGuid();
             Guid         objectDefinitionID = request.ReadGuid();
             string       instanceID         = request.ReadString();
             Model.Object responseObject     = _ServerAPI.GetObject(clientID, objectDefinitionID, instanceID);
             if (responseObject != null)
             {
                 MemoryStream data = new MemoryStream(4096);
                 data.Position = 4;
                 responseObject.Serialise(data);
                 data.Position = 0;
                 NetworkByteOrderConverter.WriteInt32(data, (int)data.Length - 4);
                 response = data.ToArray();
             }
         }
         else if (string.Compare(request.Method, "GetObjectProperty", true) == 0)
         {
             Guid     clientID             = request.ReadGuid();
             Guid     objectDefinitionID   = request.ReadGuid();
             string   instanceID           = request.ReadString();
             Guid     propertyDefinitionID = request.ReadGuid();
             Property responseProperty     = _ServerAPI.GetObjectProperty(clientID, objectDefinitionID, instanceID, propertyDefinitionID);
             if (responseProperty != null)
             {
                 MemoryStream data = new MemoryStream(4096);
                 data.Position = 4;
                 responseProperty.Serialise(data);
                 data.Position = 0;
                 NetworkByteOrderConverter.WriteInt32(data, (int)data.Length - 4);
                 response = data.ToArray();
             }
         }
         else if (string.Compare(request.Method, "GetObjects", true) == 0)
         {
             Guid clientID                       = request.ReadGuid();
             Guid objectDefinitionID             = request.ReadGuid();
             List <Model.Object> responseObjects = _ServerAPI.GetObjects(clientID, objectDefinitionID);
             if (responseObjects != null)
             {
                 MemoryStream data = new MemoryStream(4096);
                 data.Position = 4;
                 foreach (Model.Object responseObject in responseObjects)
                 {
                     responseObject.Serialise(data);
                 }
                 data.Position = 0;
                 NetworkByteOrderConverter.WriteInt32(data, (int)data.Length - 4);
                 response = data.ToArray();
             }
         }
         else if (string.Compare(request.Method, "ObserveObject", true) == 0)
         {
             Guid   clientID           = request.ReadGuid();
             Guid   objectDefinitionID = request.ReadGuid();
             string instanceID         = request.ReadString();
             _ServerAPI.ObserveObject(clientID, objectDefinitionID, instanceID);
         }
         else if (string.Compare(request.Method, "ObserveObjectProperty", true) == 0)
         {
             Guid   clientID             = request.ReadGuid();
             Guid   objectDefinitionID   = request.ReadGuid();
             string instanceID           = request.ReadString();
             Guid   propertyDefinitionID = request.ReadGuid();
             _ServerAPI.ObserveObjectProperty(clientID, objectDefinitionID, instanceID, propertyDefinitionID);
         }
         else if (string.Compare(request.Method, "ObserveObjects", true) == 0)
         {
             Guid clientID           = request.ReadGuid();
             Guid objectDefinitionID = request.ReadGuid();
             _ServerAPI.ObserveObjects(clientID, objectDefinitionID);
         }
         else if (string.Compare(request.Method, "SaveObject", true) == 0)
         {
             Guid         clientID   = request.ReadGuid();
             Model.Object item       = Model.Object.Deserialise(request.Payload);
             TObjectState state      = (TObjectState)request.ReadInt32();
             string       responseID = _ServerAPI.SaveObject(clientID, item, state);
             if (responseID != null)
             {
                 MemoryStream data   = new MemoryStream(4096);
                 byte[]       buffer = Encoding.UTF8.GetBytes(responseID);
                 NetworkByteOrderConverter.WriteInt32(data, (int)(buffer.Length + 4));
                 NetworkByteOrderConverter.WriteInt32(data, buffer.Length);
                 data.Write(buffer, 0, buffer.Length);
                 response = data.ToArray();
             }
         }
         else if (string.Compare(request.Method, "SaveObjectProperty", true) == 0)
         {
             Guid         clientID           = request.ReadGuid();
             Guid         objectDefinitionID = request.ReadGuid();
             string       instanceID         = request.ReadString();
             Property     property           = Property.Deserialise(request.Payload);
             TObjectState state = (TObjectState)request.ReadInt32();
             _ServerAPI.SaveObjectProperty(clientID, objectDefinitionID, instanceID, property, state);
         }
         else if (string.Compare(request.Method, "SetDataFormat", true) == 0)
         {
             TDataFormat dataFormat = (TDataFormat)request.ReadInt32();
             _ServerAPI.SetDataFormat(dataFormat);
         }
         else if (string.Compare(request.Method, "SetNotificationParameters", true) == 0)
         {
             Guid   clientID             = request.ReadGuid();
             Guid   objectDefinitionID   = request.ReadGuid();
             string instanceID           = request.ReadString();
             Guid   propertyDefinitionID = request.ReadGuid();
             NotificationParameters notificationParameters = NotificationParameters.Deserialise(request.Payload);
             bool         success = _ServerAPI.SetNotificationParameters(clientID, objectDefinitionID, instanceID, propertyDefinitionID, notificationParameters);
             MemoryStream data    = new MemoryStream(4096);
             data.Position = 4;
             IPCHelper.Write(data, success);
             data.Position = 0;
             NetworkByteOrderConverter.WriteInt32(data, (int)data.Length - 4);
             response = data.ToArray();
         }
     }
     catch (Exception ex)
     {
         MemoryStream data = new MemoryStream(4096);
         data.Position = 4;
         IPCHelper.Write(data, ex.GetType().AssemblyQualifiedName);
         IPCHelper.Write(data, ex.Message);
         data.Position = 0;
         NetworkByteOrderConverter.WriteInt32(data, -((int)data.Length - 4));
         response = data.ToArray();
     }
     client.Send(response, SocketFlags.None);
 }