本文整理汇总了C#中StringParser.ParseRaw方法的典型用法代码示例。如果您正苦于以下问题:C# StringParser.ParseRaw方法的具体用法?C# StringParser.ParseRaw怎么用?C# StringParser.ParseRaw使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类StringParser
的用法示例。
在下文中一共展示了StringParser.ParseRaw方法的5个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C#代码示例。
示例1: TryParseStatFile
private static bool TryParseStatFile(string statFilePath, out ParsedStat result, ReusableTextReader reusableReader)
{
string statFileContents;
try
{
using (var source = new FileStream(statFilePath, FileMode.Open, FileAccess.Read, FileShare.Read, bufferSize: 1, useAsync: false))
{
statFileContents = reusableReader.ReadAllText(source);
}
}
catch (IOException)
{
// Between the time that we get an ID and the time that we try to read the associated stat
// file(s), the process could be gone.
result = default(ParsedStat);
return false;
}
var parser = new StringParser(statFileContents, ' ');
var results = default(ParsedStat);
results.pid = parser.ParseNextInt32();
results.comm = parser.ParseRaw(delegate (string str, ref int startIndex, ref int endIndex)
{
if (str[startIndex] == '(')
{
int i;
for (i = endIndex; i < str.Length && str[i - 1] != ')'; i++) ;
if (str[i - 1] == ')')
{
endIndex = i;
return str.Substring(startIndex + 1, i - startIndex - 2);
}
}
throw new InvalidDataException();
});
results.state = parser.ParseNextChar();
parser.MoveNextOrFail(); // ppid
parser.MoveNextOrFail(); // pgrp
results.session = parser.ParseNextInt32();
parser.MoveNextOrFail(); // tty_nr
parser.MoveNextOrFail(); // tpgid
parser.MoveNextOrFail(); // flags
parser.MoveNextOrFail(); // majflt
parser.MoveNextOrFail(); // cmagflt
parser.MoveNextOrFail(); // minflt
parser.MoveNextOrFail(); // cminflt
results.utime = parser.ParseNextUInt64();
results.stime = parser.ParseNextUInt64();
parser.MoveNextOrFail(); // cutime
parser.MoveNextOrFail(); // cstime
parser.MoveNextOrFail(); // priority
results.nice = parser.ParseNextInt64();
parser.MoveNextOrFail(); // num_threads
parser.MoveNextOrFail(); // itrealvalue
results.starttime = parser.ParseNextUInt64();
results.vsize = parser.ParseNextUInt64();
results.rss = parser.ParseNextInt64();
results.rsslim = parser.ParseNextUInt64();
parser.MoveNextOrFail(); // startcode
parser.MoveNextOrFail(); // endcode
results.startstack = parser.ParseNextUInt64();
// The following lines are commented out as there's no need to parse through
// the rest of the entry (we've gotten all of the data we need). Should any
// of these fields be needed in the future, uncomment all of the lines up
// through and including the one that's needed. For now, these are being left
// commented to document what's available in the remainder of the entry.
//parser.MoveNextOrFail(); // kstkesp
//parser.MoveNextOrFail(); // kstkeip
//parser.MoveNextOrFail(); // signal
//parser.MoveNextOrFail(); // blocked
//parser.MoveNextOrFail(); // sigignore
//parser.MoveNextOrFail(); // sigcatch
//parser.MoveNextOrFail(); // wchan
//parser.MoveNextOrFail(); // nswap
//parser.MoveNextOrFail(); // cnswap
//parser.MoveNextOrFail(); // exit_signal
//parser.MoveNextOrFail(); // processor
//parser.MoveNextOrFail(); // rt_priority
//parser.MoveNextOrFail(); // policy
//parser.MoveNextOrFail(); // delayacct_blkio_ticks
//parser.MoveNextOrFail(); // guest_time
//parser.MoveNextOrFail(); // cguest_time
result = results;
return true;
}
示例2: ParseMapsModulesCore
private static IEnumerable<ParsedMapsModule> ParseMapsModulesCore(IEnumerable<string> lines)
{
Debug.Assert(lines != null);
// Parse each line from the maps file into a ParsedMapsModule result
foreach (string line in lines)
{
// Use a StringParser to avoid string.Split costs
var parser = new StringParser(line, separator: ' ', skipEmpty: true);
// Parse the address range
KeyValuePair<long, long> addressRange =
parser.ParseRaw(delegate (string s, ref int start, ref int end)
{
long startingAddress = 0, endingAddress = 0;
int pos = s.IndexOf('-', start, end - start);
if (pos > 0)
{
string startingString = s.Substring(start, pos);
if (long.TryParse(startingString, NumberStyles.HexNumber, CultureInfo.InvariantCulture, out startingAddress))
{
string endingString = s.Substring(pos + 1, end - (pos + 1));
long.TryParse(endingString, NumberStyles.HexNumber, CultureInfo.InvariantCulture, out endingAddress);
}
}
return new KeyValuePair<long, long>(startingAddress, endingAddress);
});
// Parse the permissions (we only care about entries with 'r' and 'x' set)
if (!parser.ParseRaw(delegate (string s, ref int start, ref int end)
{
bool sawRead = false, sawExec = false;
for (int i = start; i < end; i++)
{
if (s[i] == 'r')
sawRead = true;
else if (s[i] == 'x')
sawExec = true;
}
return sawRead & sawExec;
}))
{
continue;
}
// Skip past the offset, dev, and inode fields
parser.MoveNext();
parser.MoveNext();
parser.MoveNext();
// Parse the pathname
if (!parser.MoveNext())
{
continue;
}
string pathname = parser.ExtractCurrent();
// We only get here if a we have a non-empty pathname and
// the permissions included both readability and executability.
// Yield the result.
yield return new ParsedMapsModule { FileName = pathname, AddressRange = addressRange };
}
}
示例3: TryParseStatFile
private static bool TryParseStatFile(string statFilePath, out ParsedStat result, ReusableTextReader reusableReader)
{
string statFileContents;
try
{
using (var source = new FileStream(statFilePath, FileMode.Open, FileAccess.Read, FileShare.Read, bufferSize: 1, useAsync: false))
{
statFileContents = reusableReader.ReadAllText(source);
}
}
catch (IOException)
{
// Between the time that we get an ID and the time that we try to read the associated stat
// file(s), the process could be gone.
result = default(ParsedStat);
return false;
}
var parser = new StringParser(statFileContents, ' ');
var results = default(ParsedStat);
results.pid = parser.ParseNextInt32();
results.comm = parser.ParseRaw(delegate (string str, ref int startIndex, ref int endIndex)
{
if (str[startIndex] == '(')
{
int i;
for (i = endIndex; i < str.Length && str[i - 1] != ')'; i++) ;
if (str[i - 1] == ')')
{
endIndex = i;
return str.Substring(startIndex + 1, i - startIndex - 2);
}
}
throw new InvalidDataException();
});
results.state = parser.ParseNextChar();
parser.MoveNextOrFail(); // ppid
parser.MoveNextOrFail(); // pgrp
results.session = parser.ParseNextInt32();
parser.MoveNextOrFail(); // tty_nr
parser.MoveNextOrFail(); // tpgid
parser.MoveNextOrFail(); // flags
parser.MoveNextOrFail(); // majflt
parser.MoveNextOrFail(); // cmagflt
parser.MoveNextOrFail(); // minflt
parser.MoveNextOrFail(); // cminflt
results.utime = parser.ParseNextUInt64();
results.stime = parser.ParseNextUInt64();
parser.MoveNextOrFail(); // cutime
parser.MoveNextOrFail(); // cstime
parser.MoveNextOrFail(); // priority
results.nice = parser.ParseNextInt64();
parser.MoveNextOrFail(); // num_threads
parser.MoveNextOrFail(); // itrealvalue
results.starttime = parser.ParseNextUInt64();
results.vsize = parser.ParseNextUInt64();
results.rss = parser.ParseNextInt64();
results.rsslim = parser.ParseNextUInt64();
parser.MoveNextOrFail(); // startcode
parser.MoveNextOrFail(); // endcode
results.startstack = parser.ParseNextUInt64();
parser.MoveNextOrFail(); // kstkesp
parser.MoveNextOrFail(); // kstkeip
parser.MoveNextOrFail(); // signal
parser.MoveNextOrFail(); // blocked
parser.MoveNextOrFail(); // sigignore
parser.MoveNextOrFail(); // sigcatch
parser.MoveNextOrFail(); // wchan
parser.MoveNextOrFail(); // nswap
parser.MoveNextOrFail(); // cnswap
parser.MoveNextOrFail(); // exit_signal
parser.MoveNextOrFail(); // processor
parser.MoveNextOrFail(); // rt_priority
parser.MoveNextOrFail(); // policy
parser.MoveNextOrFail(); // delayacct_blkio_ticks
parser.MoveNextOrFail(); // guest_time
parser.MoveNextOrFail(); // cguest_time
result = results;
return true;
}
示例4: ParseStatFile
private static ParsedStat ParseStatFile(string statFilePath)
{
string statFileContents = File.ReadAllText(statFilePath);
var parser = new StringParser(statFileContents, ' ');
var results = default(ParsedStat);
results.pid = parser.ParseNextInt32();
results.comm = parser.ParseRaw(delegate (string str, ref int startIndex, ref int endIndex)
{
if (str[startIndex] == '(')
{
int i;
for (i = endIndex; i < str.Length && str[i - 1] != ')'; i++) ;
if (str[i - 1] == ')')
{
endIndex = i;
return str.Substring(startIndex + 1, i - startIndex - 2);
}
}
throw new InvalidDataException();
});
results.state = parser.ParseNextChar();
parser.MoveNextOrFail(); // ppid
parser.MoveNextOrFail(); // pgrp
results.session = parser.ParseNextInt32();
parser.MoveNextOrFail(); // tty_nr
parser.MoveNextOrFail(); // tpgid
parser.MoveNextOrFail(); // flags
parser.MoveNextOrFail(); // majflt
parser.MoveNextOrFail(); // cmagflt
parser.MoveNextOrFail(); // minflt
parser.MoveNextOrFail(); // cminflt
results.utime = parser.ParseNextUInt64();
results.stime = parser.ParseNextUInt64();
parser.MoveNextOrFail(); // cutime
parser.MoveNextOrFail(); // cstime
parser.MoveNextOrFail(); // priority
results.nice = parser.ParseNextInt64();
parser.MoveNextOrFail(); // num_threads
parser.MoveNextOrFail(); // itrealvalue
results.starttime = parser.ParseNextUInt64();
results.vsize = parser.ParseNextUInt64();
results.rss = parser.ParseNextInt64();
results.rsslim = parser.ParseNextUInt64();
parser.MoveNextOrFail(); // startcode
parser.MoveNextOrFail(); // endcode
results.startstack = parser.ParseNextUInt64();
parser.MoveNextOrFail(); // kstkesp
parser.MoveNextOrFail(); // kstkeip
parser.MoveNextOrFail(); // signal
parser.MoveNextOrFail(); // blocked
parser.MoveNextOrFail(); // sigignore
parser.MoveNextOrFail(); // sigcatch
parser.MoveNextOrFail(); // wchan
parser.MoveNextOrFail(); // nswap
parser.MoveNextOrFail(); // cnswap
parser.MoveNextOrFail(); // exit_signal
parser.MoveNextOrFail(); // processor
parser.MoveNextOrFail(); // rt_priority
parser.MoveNextOrFail(); // policy
parser.MoveNextOrFail(); // delayacct_blkio_ticks
parser.MoveNextOrFail(); // guest_time
parser.MoveNextOrFail(); // cguest_time
return results;
}
示例5: ParseStatFile
private static ParsedStat ParseStatFile(string statFileContents)
{
var parser = new StringParser(statFileContents, ' ');
var results = default(ParsedStat);
results.pid = parser.ParseNextInt32();
results.comm = parser.ParseRaw<string>((str, startIndex, endIndex) => {
if (str[startIndex] != '(' || str[endIndex - 1] != ')')
{
throw new InvalidDataException();
}
return str.Substring(startIndex + 1, endIndex - startIndex - 2);
});
results.state = parser.ParseNextChar();
parser.MoveNextOrFail(); // ppid
parser.MoveNextOrFail(); // pgrp
results.session = parser.ParseNextInt32();
parser.MoveNextOrFail(); // tty_nr
parser.MoveNextOrFail(); // tpgid
parser.MoveNextOrFail(); // flags
parser.MoveNextOrFail(); // majflt
parser.MoveNextOrFail(); // cmagflt
parser.MoveNextOrFail(); // minflt
parser.MoveNextOrFail(); // cminflt
results.utime = parser.ParseNextUInt64();
results.stime = parser.ParseNextUInt64();
parser.MoveNextOrFail(); // cutime
parser.MoveNextOrFail(); // cstime
parser.MoveNextOrFail(); // priority
results.nice = parser.ParseNextInt64();
parser.MoveNextOrFail(); // num_threads
parser.MoveNextOrFail(); // itrealvalue
results.starttime = parser.ParseNextUInt64();
results.vsize = parser.ParseNextUInt64();
results.rss = parser.ParseNextInt64();
results.rsslim = parser.ParseNextUInt64();
parser.MoveNextOrFail(); // startcode
parser.MoveNextOrFail(); // endcode
results.startstack = parser.ParseNextUInt64();
parser.MoveNextOrFail(); // kstkesp
parser.MoveNextOrFail(); // kstkeip
parser.MoveNextOrFail(); // signal
parser.MoveNextOrFail(); // blocked
parser.MoveNextOrFail(); // sigignore
parser.MoveNextOrFail(); // sigcatch
parser.MoveNextOrFail(); // wchan
parser.MoveNextOrFail(); // nswap
parser.MoveNextOrFail(); // cnswap
parser.MoveNextOrFail(); // exit_signal
parser.MoveNextOrFail(); // processor
parser.MoveNextOrFail(); // rt_priority
parser.MoveNextOrFail(); // policy
parser.MoveNextOrFail(); // delayacct_blkio_ticks
parser.MoveNextOrFail(); // guest_time
parser.MoveNextOrFail(); // cguest_time
return results;
}