/// <summary> /// Add a field flow operation activity item. /// </summary> /// <param name = "oper">The operation being logged.</param> /// <param name = "flowMode">The task's flow mode.</param> /// <param name = "flowDirection">The task's flow direction.</param> /// <param name = "bExecuted">Will the operation be executed.</param> internal void addFlowFieldOperation(Operation oper, Flow flowMode, Direction flowDirection, bool bExecuted) { if (_enabled && _isFlowOperation) { ActivityItem act = new ActivityItem(this, ACT_FLW_OPER, FlowMonitorInterface.FLWMTR_DATA_OPER); StringBuilder buffer = new StringBuilder(FLW_PERFIX); oper.AddFlowDescription(buffer); buffer.Append(' '); switch (flowMode) { case Flow.FAST: if (flowDirection == Direction.FORE) { buffer.Append(FLW_FAST_FWD); } else if (flowDirection == Direction.BACK) { // FLOW_BACK buffer.Append(FLW_FAST_BWD); } break; // We add nothing for FLOW_NONE case Flow.STEP: if (flowDirection == Direction.FORE) { buffer.Append(FLW_STEP_FWD); } else if (flowDirection == Direction.BACK) { // FLOW_BACK buffer.Append(FLW_STEP_BWD); } break; // For operation mode NONE we write STEP_FORWARD - // see FLWMTR_CTX::output_ case FLWMTR_DATA_OPER: case Flow.NONE: buffer.Append(FLW_STEP_FWD); break; default: Logger.Instance.WriteExceptionToLog("FlowMonitorQueue.addFlowFieldOperation unknown flow mode " + flowMode); return; } if (!bExecuted) { buffer.Append(FLW_NOT_EXEC); } act.setInfo(buffer.ToString()); _queue.put(act); } }