コード例 #1
0
 /// <summary>
 /// clear record from position cache
 /// </summary>
 /// <param name="record"></param>
 internal void ClearRecord(IRecord record)
 {
     if (!IgnorePositionCache)
     {
         PositionId positionId = GetPositionId(record);
         PositionCache.Remove(positionId);
     }
 }
コード例 #2
0
        /// <summary>
        /// get position
        /// </summary>
        /// <param name="record"></param>
        /// <returns></returns>
        internal DbPos GetPosition(IRecord record)
        {
            DbPos      pos        = null;
            PositionId positionId = GetPositionId(record);

            PositionCache.TryGetValue(positionId, out pos);
            return(pos);
        }
コード例 #3
0
        /// <summary>
        /// get current  position
        /// </summary>
        /// <returns></returns>
        internal DbPos GetCurrentPosition()
        {
            DbPos      pos        = null;
            IRecord    currRec    = ((DataView)LocalDataviewManager.Task.DataView).getCurrRec();
            PositionId positionId = GetPositionId(currRec);

            PositionCache.TryGetValue(positionId, out pos);
            return(pos);
        }
コード例 #4
0
        internal override GatewayResult Fetch(IRecord record)
        {
            GatewayResult result = base.Fetch(record);

            if (result.Success && !IgnorePositionCache)
            {
                PositionCache.Set(GetPositionId(record), CurrentPosition);
            }

            return(result);
        }
コード例 #5
0
        /// <summary>
        /// fetch link into record
        /// </summary>
        /// <param name="record"></param>
        /// <returns></returns>
        internal override GatewayResult Fetch(IRecord record)
        {
            GatewayResult result = CursorFetch();

            if (result.Success)
            {
                PositionCache.Set(GetPositionId(record), CurrentPosition);
                CopyValues(record);
            }
            if (!result.Success)
            {
                PositionCache.Remove(GetPositionId(record));
            }

            return(result);
        }
コード例 #6
0
        /// <summary>
        /// insert cursor
        /// </summary>
        /// <param name="pos"></param>
        /// <returns></returns>
        internal GatewayResult InsertRecord(IRecord record)
        {
            GatewayResult result = CheckTransactionValidation();

            if (result.Success)
            {
                UpdateRuntimeCursor(record, true);

                GatewayCommandCursorInsertRecord cursorCommand = GatewayCommandsFactory.CreateCursorInsertCommand(CurrentCursor, LocalDataviewManager.LocalManager);
                result = cursorCommand.Execute();
                if (result.Success && !IgnorePositionCache)
                {
                    PositionCache.Set(GetPositionId(record), CurrentPosition);
                }
            }
            return(result);
        }