private void SendRequest(ResourceMessage request) { if (m_gatewaySocket == null || m_gatewaySocket.ReadyState == WebSocketState.Closed) { Connect(); } m_gatewaySocket.Send(JsonConvert.SerializeObject(request)); }
private ResourceMessage CreateDefaultResponse(string message) { var response = new ResourceMessage() { Command = "default", Data = message, SenderGuid = m_serverGuid.ToString(), RequestGuid = Guid.NewGuid().ToString() }; return(response); }
private void SendPushMessage(IResource resource, string resData) { var message = new ResourceMessage() { Command = "push-response", Data = resData, DataType = resource.GetResourceDataType(), DataUnits = resource.GetResourceDataUnits(), SenderGuid = resource.Guid.ToString() }; Send(JsonConvert.SerializeObject((message))); }
public static void Test() { var gwsc = new GatewaySocketClient("ws://localhost:9300/resources"); gwsc.Connect(); var request = new ResourceMessage() { Command = "get", SenderGuid = Guid.NewGuid().ToString(), TargetGuid = (new Guid("e16c519e-d5f1-494d-b1ba-ed546a6bf199")).ToString() }; gwsc.SendRequest(request); }
private ResourceMessage CreateResponse(IResource r, string id) { var response = new ResourceMessage() { Command = "response", // Resources that are write-only (e.g. most actuators) will return nothing here Data = r.GetResourceData(), DataType = r.GetResourceDataType(), DataUnits = r.GetResourceDataUnits(), SenderGuid = r.Guid.ToString(), RequestGuid = id }; return(response); }
public Guid SendSetCommunicationMode(Guid resourceId, CommunicationMode mode) { var requestGuid = Guid.NewGuid(); var request = new ResourceMessage() { Command = "mode", Data = mode.ToString().ToLower(), TargetGuid = resourceId.ToString(), SenderGuid = m_clientId.ToString(), RequestGuid = requestGuid.ToString() }; SendRequest(request); return(requestGuid); }
private void HandleModeChangeRequest(ResourceMessage message) { var newMode = message.Data; var resource = m_boundResources.Where(r => r.Guid == Guid.Parse(message.TargetGuid)).First(); if (newMode == "push" && resource.CommunicationMode == CommunicationMode.Poll) { resource.OnDataChanged += OnResourceDataChanged; resource.CommunicationMode = CommunicationMode.Push; } else if (newMode == "poll" && resource.CommunicationMode == CommunicationMode.Push) { resource.OnDataChanged -= OnResourceDataChanged; resource.CommunicationMode = CommunicationMode.Poll; } }
public Guid SendGetResourceDataRequest(Guid resourceId, INotifiableRequester sender) { Guid requestGuid = Guid.NewGuid(); var request = new ResourceMessage() { Command = "get", SenderGuid = m_clientId.ToString(), TargetGuid = resourceId.ToString(), RequestGuid = requestGuid.ToString(), }; m_requestList.Add(requestGuid, new Request { Id = requestGuid, Sender = sender }); SendRequest(request); return(requestGuid); }
private ResourceMessage PerformRequest(ResourceMessage request) { var resourceGuid = new Guid(request.TargetGuid); var resource = GetResourceByGuid(resourceGuid); if (resource != null && resource.IsInitialized) { if (request.Command.Contains("set")) { resource.SetResourceData(request.Data); } else if (request.Command.Contains("mode")) { HandleModeChangeRequest(request); return(CreateDefaultResponse("OK")); } return(CreateResponse(resource, request.RequestGuid)); } else { return(CreateDefaultResponse(String.Format("No resource with guid: '{0}' exists.", request.TargetGuid.ToString()))); } }