void Receive_RequestField(XConnection connection, GenericPacket request) { // received by server from client // get client SyncClient client; if (!SyncClients.TryGetValue(connection.GetHashCode(), out client)) { Log("Request field: Instance request received, but sync client not found"); return; } // get thread - client can have multiple ui threads viewing instances var threadID = int.Parse(request.Data["ThreadID"]); InstanceModel instance; if (!client.SelectedInstances.TryGetValue(threadID, out instance)) { Log("Request field: instance not found " + threadID.ToString()); return; } // get field var fieldID = int.Parse(request.Data["FieldID"]); IFieldModel field; if (!instance.FieldMap.TryGetValue(fieldID, out field)) { Log("Request field: field not found " + fieldID.ToString()); return; } field.ExpandField(); // create packet with expanded results and send var response = new InstancePacket() { Type = InstancePacketType.Field, ThreadID = threadID, FieldID = fieldID, Fields = field.Nodes }; client.Connection.SendPacket(response); }
void Receive_Settings(XConnection connection, GenericPacket request) { // received by server from client SyncClient client; if (!SyncClients.TryGetValue(connection.GetHashCode(), out client)) { Log("Request field: Settings received, but sync client not found"); return; } if (request.Data.ContainsKey("TargetFps")) { client.TargetFps = int.Parse(request.Data["TargetFps"]); } if (request.Data.ContainsKey("TrackFunctionHits")) { XRay.TrackFunctionHits = bool.Parse(request.Data["TrackFunctionHits"]); } if (request.Data.ContainsKey("FlowTracking")) { XRay.FlowTracking = bool.Parse(request.Data["FlowTracking"]); } if (request.Data.ContainsKey("InstanceTracking")) { XRay.InstanceTracking = bool.Parse(request.Data["InstanceTracking"]); } if (request.Data.ContainsKey("TrackRemoteProfiling")) { client.TrackProfiling = bool.Parse(request.Data["TrackRemoteProfiling"]); } if (request.Data.ContainsKey("TrackRemoteThreadlines")) { client.TrackThreadlines = bool.Parse(request.Data["TrackRemoteThreadlines"]); } }
void Receive_RequestInstanceRefresh(XConnection connection, GenericPacket request) { // received by server from client SyncClient client; if (!SyncClients.TryGetValue(connection.GetHashCode(), out client)) { Log("Request Instance Refresh: Sync client not found"); return; } var threadID = int.Parse(request.Data["ThreadID"]); InstanceModel instance; if (!client.SelectedInstances.TryGetValue(threadID, out instance)) { Log("Request field: instance not found " + threadID.ToString()); return; } instance.BeginUpdateTree(true); // send columns if updated var response = new InstancePacket(); response.Type = InstancePacketType.Refresh; response.ThreadID = threadID; // flag as a refresh? if (instance.ColumnsUpdated) { response.Columns = instance.Columns; } // iterate fields, send any marked as changed response.Fields = instance.FieldMap.Values.Where(f => instance.UpdatedFields.Contains(f.ID)).ToList(); client.Connection.SendPacket(response); }
void Receive_RequestInstance(XConnection connection, GenericPacket request) { // received by server from client SyncClient client; if (!SyncClients.TryGetValue(connection.GetHashCode(), out client)) { Log("Request Instance: Sync client not found"); return; } var threadID = int.Parse(request.Data["ThreadID"]); var node = XRay.Nodes[int.Parse(request.Data["NodeID"])]; string filter = null; request.Data.TryGetValue("Filter", out filter); var model = new InstanceModel(node, filter); client.SelectedInstances[threadID] = model; Log("Request Instance: Model added for thread " + threadID.ToString()); model.BeginUpdateTree(false); // send back details, columns, and nodes var response = new InstancePacket() { Type = InstancePacketType.Root, ThreadID = threadID, Details = model.DetailsLabel, Columns = model.Columns, Fields = model.RootNodes }; client.Connection.SendPacket(response); }
void Receive_Settings(XConnection connection, GenericPacket request) { // received by server from client SyncClient client; if (!SyncClients.TryGetValue(connection.GetHashCode(), out client)) { Log("Request field: Settings received, but sync client not found"); return; } if (request.Data.ContainsKey("TargetFps")) client.TargetFps = int.Parse(request.Data["TargetFps"]); if (request.Data.ContainsKey("TrackFunctionHits")) XRay.TrackFunctionHits = bool.Parse(request.Data["TrackFunctionHits"]); if (request.Data.ContainsKey("FlowTracking")) XRay.FlowTracking = bool.Parse(request.Data["FlowTracking"]); if (request.Data.ContainsKey("InstanceTracking")) XRay.InstanceTracking = bool.Parse(request.Data["InstanceTracking"]); if (request.Data.ContainsKey("TrackRemoteProfiling")) client.TrackProfiling = bool.Parse(request.Data["TrackRemoteProfiling"]); if (request.Data.ContainsKey("TrackRemoteThreadlines")) client.TrackThreadlines = bool.Parse(request.Data["TrackRemoteThreadlines"]); }
void Receive_RequestInstanceRefresh(XConnection connection, GenericPacket request) { // received by server from client SyncClient client; if (!SyncClients.TryGetValue(connection.GetHashCode(), out client)) { Log("Request Instance Refresh: Sync client not found"); return; } var threadID = int.Parse(request.Data["ThreadID"]); InstanceModel instance; if (!client.SelectedInstances.TryGetValue(threadID, out instance)) { Log("Request field: instance not found " + threadID.ToString()); return; } instance.BeginUpdateTree(true); // send columns if updated var response = new InstancePacket(); response.Type = InstancePacketType.Refresh; response.ThreadID = threadID; // flag as a refresh? if (instance.ColumnsUpdated) response.Columns = instance.Columns; // iterate fields, send any marked as changed response.Fields = instance.FieldMap.Values.Where(f => instance.UpdatedFields.Contains(f.ID)).ToList(); client.Connection.SendPacket(response); }
void Receive_RequestInstance(XConnection connection, GenericPacket request) { // received by server from client SyncClient client; if (!SyncClients.TryGetValue(connection.GetHashCode(), out client)) { Log("Request Instance: Sync client not found"); return; } var threadID = int.Parse(request.Data["ThreadID"]); var node = XRay.Nodes[int.Parse(request.Data["NodeID"])]; string filter = null; request.Data.TryGetValue("Filter", out filter); var model = new InstanceModel(node, filter); client.SelectedInstances[threadID] = model; Log("Request Instance: Model added for thread " + threadID.ToString()); model.BeginUpdateTree(false); // send back details, columns, and nodes var response = new InstancePacket() { Type = InstancePacketType.Root, ThreadID = threadID, Details = model.DetailsLabel, Columns = model.Columns, Fields = model.RootNodes }; client.Connection.SendPacket(response); }
void Receive_RequestField(XConnection connection, GenericPacket request) { // received by server from client // get client SyncClient client; if (!SyncClients.TryGetValue(connection.GetHashCode(), out client)) { Log("Request field: Instance request received, but sync client not found"); return; } // get thread - client can have multiple ui threads viewing instances var threadID = int.Parse(request.Data["ThreadID"]); InstanceModel instance; if (!client.SelectedInstances.TryGetValue(threadID, out instance)) { Log("Request field: instance not found " + threadID.ToString()); return; } // get field var fieldID = int.Parse(request.Data["FieldID"]); IFieldModel field; if (!instance.FieldMap.TryGetValue(fieldID, out field)) { Log("Request field: field not found " + fieldID.ToString()); return; } field.ExpandField(); // create packet with expanded results and send var response = new InstancePacket() { Type = InstancePacketType.Field, ThreadID = threadID, FieldID = fieldID, Fields = field.Nodes }; client.Connection.SendPacket(response); }