public void Execute(IPCRequest ipcRequest) { var repo = Uow.GetRepository <IPCRequest>(); repo.Update(ipcRequest); Uow.SaveChanges(); }
private IPCRequest CreateIpc(RfIpc oldIpc, int requestId) { try { var ipcId = GetObjectId <DicIPC>(oldIpc.TypeId); if (ipcId == null || ipcId == 0) { return(null); } var ipc = new IPCRequest { DateCreate = new DateTimeOffset(oldIpc.DateCreate.GetValueOrDefault(DateTime.Now)), DateUpdate = DateTimeOffset.Now, ExternalId = oldIpc.Id, IpcId = ipcId.Value, IsMain = GenerateHelper.StringToNullableBool(oldIpc.FlIsMain) ?? false, RequestId = requestId, Timestamp = BitConverter.GetBytes(DateTime.Now.Ticks) }; return(ipc); } catch (Exception) { return(null); } }
public int Execute(IPCRequest ipcRequest) { var repo = Uow.GetRepository <IPCRequest>(); repo.Create(ipcRequest); Uow.SaveChanges(); return(ipcRequest.Id); }
public void DeleteClient(Guid clientID) { IPCRequest request = new IPCRequest(); request.Method = "DeleteClient"; request.AddToPayload(clientID); SendRequest(request); }
public void SetDataFormat(TDataFormat dataFormat) { IPCRequest request = new IPCRequest(); request.Method = "SetDataFormat"; request.AddToPayload((int)dataFormat); SendRequest(request); }
public void ObserveObjects(Guid clientID, Guid objectDefinitionID) { IPCRequest request = new IPCRequest(); request.Method = "ObserveObjects"; request.AddToPayload(clientID); request.AddToPayload(objectDefinitionID); SendRequest(request); }
public void CancelObserveObjects(Guid clientID, Guid objectDefinitionID, bool useReset) { IPCRequest request = new IPCRequest(); request.Method = "CancelObserveObjects"; request.AddToPayload(clientID); request.AddToPayload(objectDefinitionID); request.AddToPayload(useReset); SendRequest(request); }
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); }
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); }
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); }
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); }
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); }
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); }
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); }
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); }
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); }
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(); } }
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); }
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); }
private void DoReceiveCallback(IAsyncResult asyncResult) { ReceiveStateObject stateObject = asyncResult.AsyncState as ReceiveStateObject; try { int readCount = stateObject.Client.EndReceive(asyncResult); bool continueReceive = true; if (readCount > 0) { stateObject.Data.Write(stateObject.Buffer, 0, readCount); if ((stateObject.RequestLength == 0) && (stateObject.Data.Length > 4)) { long position = stateObject.Data.Position; stateObject.Data.Position = 0; stateObject.RequestLength = NetworkByteOrderConverter.ToInt32(stateObject.Data) + 4; stateObject.Data.Position = position; } if (stateObject.RequestLength == stateObject.Data.Position) { stateObject.Data.Position = 4; IPCRequest request = IPCRequest.Deserialise(stateObject.Data); ThreadPool.QueueUserWorkItem(new WaitCallback((s) => { ProcessRequest(stateObject.Client, request); })); stateObject.Data.Position = 0; stateObject.Data.SetLength(0); stateObject.RequestLength = 0; } } else { if (stateObject.Client.ReceiveTimeout <= 0) { continueReceive = false; } else { TimeSpan diff = DateTime.Now.Subtract(stateObject.StartReceive); if (diff.TotalMilliseconds < stateObject.Client.ReceiveTimeout) { continueReceive = false; } } } if (continueReceive) { stateObject.StartReceive = DateTime.Now; SocketError socketError; stateObject.Client.BeginReceive(stateObject.Buffer, 0, ReceiveStateObject.BufferSize, SocketFlags.None, out socketError, new AsyncCallback(DoReceiveCallback), stateObject); } else { stateObject.Client.Close(); } } #pragma warning disable 0168 catch (Exception ex) #pragma warning restore 0168 { stateObject.Client.Close(); } }