Terraria v1.4.4.9
Terraria source code documentation
Loading...
Searching...
No Matches

◆ DoCommand()

void System.Diagnostics.Tracing.EventSource.DoCommand ( EventCommandEventArgs commandArgs)
inlinepackageinherited

Definition at line 1836 of file EventSource.cs.

1837 {
1838 if (!IsSupported || m_etwProvider == null || m_eventPipeProvider == null)
1839 {
1840 return;
1841 }
1843 try
1844 {
1846 commandArgs.dispatcher = GetDispatcher(commandArgs.listener);
1847 if (commandArgs.dispatcher == null && commandArgs.listener != null)
1848 {
1849 throw new ArgumentException(SR.EventSource_ListenerNotFound);
1850 }
1851 if (commandArgs.Arguments == null)
1852 {
1853 IDictionary<string, string> dictionary2 = (commandArgs.Arguments = new Dictionary<string, string>());
1854 }
1855 if (commandArgs.Command == EventCommand.Update)
1856 {
1857 for (int i = 0; i < m_eventData.Length; i++)
1858 {
1859 EnableEventForDispatcher(commandArgs.dispatcher, commandArgs.eventProviderType, i, IsEnabledByDefault(i, commandArgs.enable, commandArgs.level, commandArgs.matchAnyKeyword));
1860 }
1861 if (commandArgs.enable)
1862 {
1864 {
1865 m_level = commandArgs.level;
1866 m_matchAnyKeyword = commandArgs.matchAnyKeyword;
1867 }
1868 else
1869 {
1870 if (commandArgs.level > m_level)
1871 {
1872 m_level = commandArgs.level;
1873 }
1874 if (commandArgs.matchAnyKeyword == EventKeywords.None)
1875 {
1876 m_matchAnyKeyword = EventKeywords.None;
1877 }
1878 else if (m_matchAnyKeyword != EventKeywords.None)
1879 {
1880 m_matchAnyKeyword |= commandArgs.matchAnyKeyword;
1881 }
1882 }
1883 }
1884 bool flag = commandArgs.perEventSourceSessionId >= 0;
1885 if (commandArgs.perEventSourceSessionId == 0 && !commandArgs.enable)
1886 {
1887 flag = false;
1888 }
1889 if (commandArgs.listener == null)
1890 {
1891 if (!flag)
1892 {
1893 commandArgs.perEventSourceSessionId = -commandArgs.perEventSourceSessionId;
1894 }
1895 commandArgs.perEventSourceSessionId--;
1896 }
1897 commandArgs.Command = (flag ? EventCommand.Enable : EventCommand.Disable);
1898 if (flag && commandArgs.dispatcher == null && !SelfDescribingEvents)
1899 {
1901 }
1902 if (commandArgs.enable)
1903 {
1904 m_eventSourceEnabled = true;
1905 }
1907 m_eventCommandExecuted?.Invoke(this, commandArgs);
1908 if (commandArgs.enable)
1909 {
1910 return;
1911 }
1912 for (int j = 0; j < m_eventData.Length; j++)
1913 {
1914 bool enabledForAnyListener = false;
1915 for (EventDispatcher eventDispatcher = m_Dispatchers; eventDispatcher != null; eventDispatcher = eventDispatcher.m_Next)
1916 {
1917 if (eventDispatcher.m_EventEnabled[j])
1918 {
1919 enabledForAnyListener = true;
1920 break;
1921 }
1922 }
1923 m_eventData[j].EnabledForAnyListener = enabledForAnyListener;
1924 }
1925 if (!AnyEventEnabled())
1926 {
1927 m_level = EventLevel.LogAlways;
1928 m_matchAnyKeyword = EventKeywords.None;
1929 m_eventSourceEnabled = false;
1930 }
1931 }
1932 else
1933 {
1934 if (commandArgs.Command == EventCommand.SendManifest && m_rawManifest != null)
1935 {
1937 }
1939 m_eventCommandExecuted?.Invoke(this, commandArgs);
1940 }
1941 }
1942 catch (Exception ex)
1943 {
1944 ReportOutOfBandMessage("ERROR: Exception in Command Processing for EventSource " + Name + ": " + ex.Message);
1945 }
1946 }
volatile OverrideEventProvider m_eventPipeProvider
volatile EventMetadata[] m_eventData
virtual void OnEventCommand(EventCommandEventArgs command)
bool EnableEventForDispatcher(EventDispatcher dispatcher, EventProviderType eventProviderType, int eventId, bool value)
volatile OverrideEventProvider m_etwProvider
EventDispatcher GetDispatcher(EventListener listener)
volatile EventDispatcher m_Dispatchers
EventHandler< EventCommandEventArgs > m_eventCommandExecuted
bool IsEnabledByDefault(int eventNum, bool enable, EventLevel currentLevel, EventKeywords currentMatchAnyKeyword)

References System.Diagnostics.Tracing.EventSource.AnyEventEnabled(), System.Diagnostics.Tracing.EventSource.EnableEventForDispatcher(), System.Diagnostics.Tracing.EventSource.EnsureDescriptorsInitialized(), System.SR.EventSource_ListenerNotFound, System.Diagnostics.Tracing.EventSource.GetDispatcher(), System.Diagnostics.Tracing.EventSource.IsEnabledByDefault(), System.Diagnostics.Tracing.EventSource.IsSupported, System.Diagnostics.Tracing.EventSource.m_Dispatchers, System.Diagnostics.Tracing.EventSource.m_etwProvider, System.Diagnostics.Tracing.EventSource.m_eventCommandExecuted, System.Diagnostics.Tracing.EventSource.m_eventData, System.Diagnostics.Tracing.EventSource.m_eventPipeProvider, System.Diagnostics.Tracing.EventSource.m_eventSourceEnabled, System.Diagnostics.Tracing.EventSource.m_level, System.Diagnostics.Tracing.EventSource.m_matchAnyKeyword, System.Diagnostics.Tracing.EventSource.m_outOfBandMessageCount, System.Diagnostics.Tracing.EventSource.m_rawManifest, System.Diagnostics.Tracing.EventSource.Name, System.Diagnostics.Tracing.EventSource.OnEventCommand(), System.Diagnostics.Tracing.EventSource.ReportOutOfBandMessage(), System.Diagnostics.Tracing.EventSource.SelfDescribingEvents, and System.Diagnostics.Tracing.SendManifest.

Referenced by System.Diagnostics.Tracing.EventSource.Initialize(), and System.Diagnostics.Tracing.EventSource.SendCommand().