本文整理汇总了C#中Filter.Match方法的典型用法代码示例。如果您正苦于以下问题:C# Filter.Match方法的具体用法?C# Filter.Match怎么用?C# Filter.Match使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类Filter
的用法示例。
在下文中一共展示了Filter.Match方法的3个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C#代码示例。
示例1: ReceiveMessages
//.........这里部分代码省略.........
}
}
}
if (!readingDeferredMessages)
{
readingDeferredMessages = inboundMessage == null && messageDeferProvider.Count > 0;
}
if (isCompleted ||
inboundMessage == null)
{
continue;
}
if (stopwatch.ElapsedMilliseconds > maximumReceiveTime)
{
maximumReceiveTime = stopwatch.ElapsedMilliseconds;
}
if (stopwatch.ElapsedMilliseconds < minimumReceiveTime)
{
minimumReceiveTime = stopwatch.ElapsedMilliseconds;
}
totalElapsedTime += stopwatch.ElapsedMilliseconds;
if (statistics)
{
updateStatistics(stopwatch.ElapsedMilliseconds, DirectionType.Receive);
}
builder = new StringBuilder();
if (defer &&
!readingDeferredMessages &&
filter != null &&
filter.Match(inboundMessage))
{
inboundMessage.Defer();
messageDeferProvider.Enqueue(inboundMessage.SequenceNumber);
deferredMessage = true;
}
if (!deferredMessage &&
moveToDeadLetterQueue &&
filter != null &&
filter.Match(inboundMessage))
{
inboundMessage.DeadLetter();
movedToDeadLetterQueue = true;
messagesReceived++;
}
if (!deferredMessage &&
!movedToDeadLetterQueue)
{
if (messageReceiver.Mode == ReceiveMode.PeekLock)
{
if (completeReceive)
{
inboundMessage.Complete();
messagesReceived++;
}
else
{
inboundMessage.Abandon();
}
}
示例2: ReceiveMessages
//.........这里部分代码省略.........
{
if (messageReceiver.PrefetchCount > 0)
{
if (stopwatch.ElapsedMilliseconds == 0)
{
fetchedMessages++;
}
else
{
if (fetchedMessages > 0)
{
updateStatistics(fetchedMessages,
prefetchElapsedTime,
DirectionType.Receive);
fetchedMessages = 1;
}
else
{
fetchedMessages++;
}
prefetchElapsedTime = stopwatch.ElapsedMilliseconds;
}
}
else
{
updateStatistics(1, stopwatch.ElapsedMilliseconds, DirectionType.Receive);
}
}
builder = new StringBuilder();
if (defer &&
!readingDeferredMessages &&
filter != null &&
filter.Match(inboundMessage))
{
inboundMessage.Defer();
messageDeferProvider.Enqueue(inboundMessage.SequenceNumber);
deferredMessage = true;
}
if (!deferredMessage &&
moveToDeadLetterQueue &&
filter != null &&
filter.Match(inboundMessage))
{
inboundMessage.DeadLetter();
movedToDeadLetterQueue = true;
messagesReceived++;
}
if (!deferredMessage &&
!movedToDeadLetterQueue)
{
if (messageReceiver.Mode == ReceiveMode.PeekLock)
{
if (completeReceive)
{
stopwatch = new Stopwatch();
stopwatch.Start();
inboundMessage.Complete();
stopwatch.Stop();
if (stopwatch.ElapsedMilliseconds > maximumCompleteTime)
{
maximumCompleteTime = stopwatch.ElapsedMilliseconds;
}
示例3: SearchAll
static bool SearchAll(PuzzleState startPuzzle ,Filter goalFilter, Dictionary< ulong, List<RootState>> allRoots, Dictionary<ulong, PuzzleState> nextPuzzles, ulong keepOutMask = 0UL, int depth = DEFAULT_DEPTH)
{
Dictionary<ulong, PuzzleState> currentStates = new Dictionary<ulong, PuzzleState>();
Dictionary<ulong, PuzzleState> nextStates = new Dictionary< ulong, PuzzleState>();
Dictionary<ulong, PuzzleState> tempSwapStates;
Dictionary<ulong, ulong> rootData = new Dictionary< ulong, ulong>();
bool flag = false;
rootData[startPuzzle.data] = 0UL;
currentStates[startPuzzle.data] = startPuzzle;
for (int i = 1; i <= depth;i++) {
nextStates.Clear();
foreach (PuzzleState puzzle in currentStates.Values) {
if (goalFilter.Match(puzzle)) {
Stack<int> stackRootNumbers = new Stack<int>();
ulong tempData = puzzle.data;
ulong tempData2= rootData[tempData];
List<int> root = new List<int>();
while (tempData2 != 0UL) {
stackRootNumbers.Push((int)PuzzleState.GetDifferenceOneNumber(tempData, tempData2));
tempData = tempData2;
tempData2 = rootData[tempData];
}
while (stackRootNumbers.Count > 0) {
root.Add(stackRootNumbers.Pop());
}
if (allRoots.ContainsKey(puzzle.data) == false) {
allRoots[puzzle.data] = new List<RootState>();
}
allRoots[puzzle.data].Add(new RootState(puzzle.data, startPuzzle.data, root));
nextPuzzles[puzzle.data] = puzzle;
flag = true;
}
if (flag == false) {
for (int j = 0; j <= 3; j++) {
PuzzleState tempPuzzle = puzzle.Move(j);
if (tempPuzzle.data != puzzle.data && (tempPuzzle.zero & keepOutMask) == 0UL) {
if (rootData.ContainsKey(tempPuzzle.data) == false) {
rootData[tempPuzzle.data] = puzzle.data;
nextStates[tempPuzzle.data] = tempPuzzle;
}
}
}
}
}
if (flag) {
return true;
}
if (nextStates.Count == 0) {
return false;
}
tempSwapStates = currentStates;
currentStates = nextStates;
nextStates = tempSwapStates;
}
return false;
}