Esempio n. 1
0
 public void CancelObserveObject(Guid clientID, Guid objectDefinitionID, string instanceID, bool useReset)
 {
     IPCRequest request = new IPCRequest();
     request.Method = "CancelObserveObject";
     request.AddToPayload(clientID);
     request.AddToPayload(objectDefinitionID);
     request.AddToPayload(instanceID);
     request.AddToPayload(useReset);
     SendRequest(request);
 }
Esempio n. 2
0
 public static IPCRequest Deserialise(Stream stream)
 {
     IPCRequest result = new IPCRequest();
     int length = NetworkByteOrderConverter.ToInt32(stream);
     byte[] buffer = new byte[length];
     stream.Read(buffer, 0, length);
     result.Method = Encoding.UTF8.GetString(buffer);
     result.RequestNumber = NetworkByteOrderConverter.ToInt32(stream);
     stream.CopyTo(result._Payload);
     result._Payload.Position = 0;
     return result;
 }
Esempio n. 3
0
        public static IPCRequest Deserialise(Stream stream)
        {
            IPCRequest result = new IPCRequest();
            int        length = NetworkByteOrderConverter.ToInt32(stream);

            byte[] buffer = new byte[length];
            stream.Read(buffer, 0, length);
            result.Method        = Encoding.UTF8.GetString(buffer);
            result.RequestNumber = NetworkByteOrderConverter.ToInt32(stream);
            stream.CopyTo(result._Payload);
            result._Payload.Position = 0;
            return(result);
        }
Esempio n. 4
0
        private void SendRequest(IPCRequest request)
        {
            if (!_Connected)
            {
                if (!Connect())
                {

                    throw new SocketException();
                }
                _Connected = true;
            }
            byte[] data = request.Serialise();
            _ResponseBytes = null;
            _ResponseWaitHandle.Reset();
            _TCPClient.Send(data, SocketFlags.None);
            _ResponseWaitHandle.WaitOne(20000);
            if (_ResponseBytes == null)
                throw new TimeoutException();
        }
Esempio n. 5
0
 public bool SetNotificationParameters(Guid clientID, Guid objectDefinitionID, string instanceID, Guid propertyMetadataID, NotificationParameters notificationParameters)
 {
     bool result = false;
     IPCRequest request = new IPCRequest();
     request.Method = "SetNotificationParameters";
     request.AddToPayload(clientID);
     request.AddToPayload(objectDefinitionID);
     request.AddToPayload(instanceID);
     request.AddToPayload(propertyMetadataID);
     notificationParameters.Serialise(request.Payload);
     SendRequest(request);
     if (_ResponseBytes.Length > 0)
     {
         result = _ResponseBytes[0] != 0x00;
     }
     return result;
 }
Esempio n. 6
0
 public void SetDataFormat(TDataFormat dataFormat)
 {
     IPCRequest request = new IPCRequest();
     request.Method = "SetDataFormat";
     request.AddToPayload((int)dataFormat);
     SendRequest(request);
 }
Esempio n. 7
0
 public void SaveObjectProperty(Guid clientID, Guid objectDefinitionID, string instanceID, Property property, Model.TObjectState state)
 {
     IPCRequest request = new IPCRequest();
     request.Method = "SaveObjectProperty";
     request.AddToPayload(clientID);
     request.AddToPayload(objectDefinitionID);
     request.AddToPayload(instanceID);
     property.Serialise(request.Payload);
     request.AddToPayload((int)state);
     SendRequest(request);
 }
Esempio n. 8
0
 public string SaveObject(Guid clientID, Imagination.Model.Object item, Model.TObjectState state)
 {
     string result = null;
     IPCRequest request = new IPCRequest();
     request.Method = "SaveObject";
     request.AddToPayload(clientID);
     item.Serialise(request.Payload);
     request.AddToPayload((int)state);
     SendRequest(request);
     if (_ResponseBytes.Length > 0)
     {
         CheckError();
         result = Encoding.UTF8.GetString(_ResponseBytes, 4, _ResponseBytes.Length - 4);
     }
     return result;
 }
Esempio n. 9
0
 public void ObserveObjects(Guid clientID, Guid objectDefinitionID)
 {
     IPCRequest request = new IPCRequest();
     request.Method = "ObserveObjects";
     request.AddToPayload(clientID);
     request.AddToPayload(objectDefinitionID);
     SendRequest(request);
 }
Esempio n. 10
0
 public List<Imagination.Model.Object> GetObjects(Guid clientID, Guid objectDefinitionID)
 {
     List<Imagination.Model.Object> result = new List<Imagination.Model.Object>();
     IPCRequest request = new IPCRequest();
     request.Method = "GetObjects";
     request.AddToPayload(clientID);
     request.AddToPayload(objectDefinitionID);
     SendRequest(request);
     if (_ResponseBytes.Length > 0)
     {
         MemoryStream stream = new MemoryStream(_ResponseBytes);
         while (stream.Position < stream.Length)
             result.Add(Imagination.Model.Object.Deserialise(stream));
     }
     return result;
 }
Esempio n. 11
0
 public Property GetObjectProperty(Guid clientID, Guid objectDefinitionID, string instanceID, Guid propertyMetadataID)
 {
     Property result = null;
     IPCRequest request = new IPCRequest();
     request.Method = "GetObjectProperty";
     request.AddToPayload(clientID);
     request.AddToPayload(objectDefinitionID);
     request.AddToPayload(instanceID);
     request.AddToPayload(propertyMetadataID);
     SendRequest(request);
     if (_ResponseBytes.Length > 0)
         result = Property.Deserialise(new MemoryStream(_ResponseBytes));
     return result;
 }
Esempio n. 12
0
 public Imagination.Model.Object GetObject(Guid clientID, Guid objectDefinitionID, string instanceID)
 {
     Imagination.Model.Object result = null;
     IPCRequest request = new IPCRequest();
     request.Method = "GetObject";
     request.AddToPayload(clientID);
     request.AddToPayload(objectDefinitionID);
     request.AddToPayload(instanceID);
     SendRequest(request);
     if (_ResponseBytes.Length > 0)
         result = Imagination.Model.Object.Deserialise(new MemoryStream(_ResponseBytes));
     return result;
 }
Esempio n. 13
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;
 }
Esempio n. 14
0
 public List<Client> GetClients()
 {
     List<Client> result = null;
     IPCRequest request = new IPCRequest();
     request.Method = "GetClients";
     SendRequest(request);
     if (_ResponseBytes.Length > 0)
     {
         result = new List<Client>();
         MemoryStream stream = new MemoryStream(_ResponseBytes);
         int count = IPCHelper.ReadInt32(stream);
         if (count > 0)
         {
             for (int index = 0; index < count; index++)
             {
                 result.Add(Client.Deserialise(stream));
             }
         }
     }
     return result;
 }
Esempio n. 15
0
 public bool ExecuteResource(Guid clientID, Guid objectDefinitionID, string instanceID, Guid propertyMetadataID)
 {
     bool result = false;
     IPCRequest request = new IPCRequest();
     request.Method = "ExecuteResource";
     request.AddToPayload(clientID);
     request.AddToPayload(objectDefinitionID);
     request.AddToPayload(instanceID);
     request.AddToPayload(propertyMetadataID);
     SendRequest(request);
     if (_ResponseBytes.Length > 0)
     {
         result = _ResponseBytes[0] != 0x00;
     }
     return result;
 }
Esempio n. 16
0
 public void DeleteClient(Guid clientID)
 {
     IPCRequest request = new IPCRequest();
     request.Method = "DeleteClient";
     request.AddToPayload(clientID);
     SendRequest(request);
 }
Esempio n. 17
0
        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);
        }
Esempio n. 18
0
 public void ObserveObjectProperty(Guid clientID, Guid objectDefinitionID, string instanceID, Guid propertyMetadataID)
 {
     IPCRequest request = new IPCRequest();
     request.Method = "ObserveObjectProperty";
     request.AddToPayload(clientID);
     request.AddToPayload(objectDefinitionID);
     request.AddToPayload(instanceID);
     request.AddToPayload(propertyMetadataID);
     SendRequest(request);
 }