Пример #1
0
        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);
        }
Пример #2
0
        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"]);
            }
        }
Пример #3
0
        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);
        }
Пример #4
0
        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);
        }
Пример #5
0
        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"]);
        }
Пример #6
0
        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);
        }
Пример #7
0
        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);
        }
Пример #8
0
        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);
        }