/// <summary> /// Parses the streams records. /// </summary> public virtual void Parse() { while (Header.Stream.BeginRecord()) { Opcodes op = Header.Stream.Opcode; if (GlobalHandler.Handles(op)) // Check global handler { if (!GlobalHandler.Handle(op)) { break; } } else if (ActiveHandler.Handles(op)) // Try the active handler { if (!ActiveHandler.Handle(op)) { break; } } else { if (ActiveHandler.ThrowBackUnhandled || ActiveHandler.ThrowBacks.Contains(op)) // Do we throw back the record to be handled by the parent? { //Log.Write( string.Format( "{0} throwing back - {1}", GetType().Name, op ) ); // Mark the record to be repeated by our parent. Header.Stream.Repeat = true; break; } else { // Just ignore the record. Log.Write(string.Format("{0} not handled record - {1}", GetType().Name, op)); } } } }