Exemplo n.º 1
0
        public override SyncBlockComFlags GetComFlags(ulong obj)
        {
            if (obj == 0)
            {
                return(SyncBlockComFlags.None);
            }

            const ulong mask         = ~0xe000000000000000;
            ulong       lastComFlags = _lastComFlags;

            if ((lastComFlags & mask) == obj)
            {
                return((SyncBlockComFlags)(lastComFlags >> 61));
            }

            VolatileSyncBlockData?syncBlocks = _volatileSyncBlocks;

            if (syncBlocks is null)
            {
                syncBlocks          = new VolatileSyncBlockData(_helpers);
                _volatileSyncBlocks = syncBlocks;
            }

            SyncBlockComFlags flags = syncBlocks.GetComFlags(obj);

            _lastComFlags = ((ulong)flags << 61) | (obj & mask);
            return(flags);
        }
Exemplo n.º 2
0
 public ComSyncBlock(ulong obj, uint comFlags)
     : base(obj)
 {
     ComFlags = (SyncBlockComFlags)comFlags;
 }