本文整理汇总了C#中RecorderContext.FixOffsets方法的典型用法代码示例。如果您正苦于以下问题:C# RecorderContext.FixOffsets方法的具体用法?C# RecorderContext.FixOffsets怎么用?C# RecorderContext.FixOffsets使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类RecorderContext
的用法示例。
在下文中一共展示了RecorderContext.FixOffsets方法的3个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C#代码示例。
示例1: ProcessContextRecords
protected virtual NextInstruction ProcessContextRecords(RecorderContext context, ref Exception error)
{
try
{
Log(LogLevel.DEBUG, "Create Reader");
if (!context.CreateReader(ref error))
{
Log(LogLevel.DEBUG, "Create Reader Abort:" + error);
return NextInstruction.Abort;
}
Log(LogLevel.DEBUG, "Fix Offset in Context To:" + context.OffsetInStream);
var ins = context.FixOffsets(NextInstruction.Do, context.OffsetInStream, context.HeaderOffset, ref error);
if (ins != NextInstruction.Do)
{
Log(LogLevel.DEBUG, "Fix Offset did not allow continue. Return Value:" + ins);
if (error != null)
Log(LogLevel.ERROR, "Fix Offset Error:" + error);
return ins;
}
Log(LogLevel.DEBUG, "Getting Header Info");
ins = GetHeaderInfo(context, ref error);
if ((ins & NextInstruction.Continue) != NextInstruction.Continue)
{
Log(LogLevel.DEBUG, "Get Header Info return break:" + ins + (error != null ? error.ToString() : ""));
}
else if (ins == NextInstruction.Do)
{
Log(LogLevel.DEBUG, "Prepare Keywords");
context.LastKeywordBuffer.Remove(0, context.LastKeywordBuffer.Length);
PrepareKeywords(context, context.LastKeywordBuffer);
context.LastKeywords = context.LastKeywordBuffer.ToString();
string[] fields = null;
Log(LogLevel.DEBUG, "Process Stream");
ins = ProcessStream(context, ref fields, ref error);
if ((ins & NextInstruction.Continue) != NextInstruction.Continue)
{
Log(LogLevel.DEBUG, "Process Stream return break");
}
else if (context.RecordSent >= maxRecordSend)
{
Log(LogLevel.DEBUG, "Process Stream: Max Record Send Reached");
return NextInstruction.Return;
}
}
return ins;
}
catch (Exception e)
{
Log(LogLevel.DEBUG, "Process Context Records Error:" + e);
error = e;
return OnProcessContextRecordsError(context, error);
}
finally
{
context.Dispose();
}
}
示例2: GetHeaderInfo
public virtual NextInstruction GetHeaderInfo(RecorderContext context, ref Exception error)
{
var offset = context.OffsetInStream;
var headerOff = new[] { context.HeaderOffset[0], context.HeaderOffset[1] };
try
{
if (!context.SetOffset(context.HeaderOffset[0], ref error))
return context.FixOffsets(NextInstruction.Abort, offset, headerOff, ref error);
var lastStart = context.OffsetInStream;
var canRead = true;
while (canRead && context.ReadRecord(ref error) > 0)
{
NextInstruction ins;
switch (InputTextType(context, ref error))
{
case RecordInputType.EndOfStream:
canRead = false;
break;
case RecordInputType.Header:
ins = Text2Header(context, GetHeaderText(context));
if ((ins & NextInstruction.Continue) != NextInstruction.Continue)
return context.FixOffsets(ins, offset, headerOff, ref error);
if ((ins & NextInstruction.Do) == NextInstruction.Do)
{
context.HeaderOffset[0] = lastStart;
context.HeaderOffset[1] = context.OffsetInStream;
return context.FixOffsets(ins, offset, headerOff, ref error);
}
break;
case RecordInputType.Error:
if (ProcessInputTextType(context, OnGetHeaderInfoError, out ins, ref error))
break;
return context.FixOffsets(ins, offset, headerOff, ref error);
case RecordInputType.Unknown:
if (ProcessInputTextType(context, OnGetHeaderInfoUnknown, out ins, ref error))
break;
return context.FixOffsets(ins, offset, headerOff, ref error);
case RecordInputType.Comment:
if (ProcessInputTextType(context, OnGetHeaderInfoComment, out ins, ref error))
break;
return context.FixOffsets(ins, offset, headerOff, ref error);
}
lastStart = context.OffsetInStream;
}
return context.FixOffsets(NextInstruction.Skip, offset, headerOff, ref error);
}
catch (Exception e)
{
error = e;
return OnGetHeaderInfoError(context, offset, headerOff, error);
}
}
示例3: OnGetHeaderInfoError
protected virtual NextInstruction OnGetHeaderInfoError(RecorderContext context, long offset, long[] headerOff, Exception error)
{
return context.FixOffsets(NextInstruction.Abort, offset, headerOff, ref error);
}