예제 #1
0
        public bool Apply(int typeOp, int k)
        {
            FSetOp fSetOp = new FSetOp(typeOp, k);

            while (true)
            {
                HNode temp = Head;
                FSet  b    = temp.Buckets[k % temp.Size];
                if (b == null)
                {
                    b = InitBucket(temp, k % temp.Size);
                }
                if (Invoke(b, fSetOp))
                {
                    return(GetResponse(fSetOp));
                }
            }
        }
예제 #2
0
        public bool Invoke(FSet b, FSetOp op)
        {
            try
            {
                if (b.Ok && !op.Done)
                {
                    if (op.OpType == 1)
                    {
                        op.Resp = !HasMember(b, op.Key);
                        b.Set.Add(op.Key);
                    }
                    else if (op.OpType == -1)
                    {
                        op.Resp = HasMember(b, op.Key);
                        b.Set.Remove(op.Key);
                    }
                    op.Done = true;
                }
            }
            catch (Exception)
            { }

            return(op.Done);
        }
예제 #3
0
 public bool GetResponse(FSetOp fSetOp)
 {
     return(fSetOp.Resp);
 }