예제 #1
0
        private ZkprProtocolMessages.Multi DeserializeMulti(int xid)
        {
            // A Multi consists of a repeating pattern of MultiHeader
            // int OpType. (-1 or 0 is no-op)
            // byte if '1' if done or '0'
            // int error byte (set t0 -1 on request)
            // Seralized Op depending on Type
            bool done = false;
            List <IZooKeeperRequest> ops = new List <IZooKeeperRequest>();

            do
            {
                ZkprProtocolMessages.MultiHeader mh = this.DeserializeMultiHeader();
                if (mh.Done)
                {
                    done = true;
                }
                else
                {
                    switch (mh.OpType)
                    {
                    case ZooKeeperRequestType.Create:
                        ZkprProtocolMessages.Create cr = this.DeserializeCreate(xid);
                        ops.Add(cr);
                        break;

                    case ZooKeeperRequestType.Delete:
                        ZkprProtocolMessages.Delete dl = this.DeserializeDelete(xid);
                        ops.Add(dl);
                        break;

                    case ZooKeeperRequestType.SetData:
                        ZkprProtocolMessages.SetData sd = this.DeserializeSetData(xid);
                        ops.Add(sd);
                        break;

                    case ZooKeeperRequestType.Check:
                        ZkprProtocolMessages.Check ch = this.DeserializeCheck(xid);
                        ops.Add(ch);
                        break;
                    }
                }
            }while (!done);

            return(ZkprProtocolMessages.Multi.CreateMulti(xid, ops));
        }
예제 #2
0
        private IReadOnlyList <Op> TranslateZkprOpsListToRmOpsList(IReadOnlyList <IZooKeeperRequest> zkprOps)
        {
            List <Op> rmOps = new List <Op>();

            foreach (IZooKeeperRequest zkReq in zkprOps)
            {
                switch (zkReq.RequestType)
                {
                case ZooKeeperRequestType.Create:
                    ZkprProtocolMessages.Create zkCreate = zkReq as ZkprProtocolMessages.Create;
                    IReadOnlyList <Acl>         acls     = this.TranslateZkprAclListToRMAclList(zkCreate.Acls);
                    CreateMode cm = this.TranslateZkprCreatFlagsToRmCreateMode(zkCreate.Flags);

                    rmOps.Add(Op.Create(zkCreate.Path, zkCreate.Data, acls, cm));
                    break;

                case ZooKeeperRequestType.Delete:
                    ZkprProtocolMessages.Delete zkDelete = zkReq as ZkprProtocolMessages.Delete;

                    rmOps.Add(Op.Delete(zkDelete.Path, zkDelete.Version, false));
                    break;

                case ZooKeeperRequestType.SetData:
                    ZkprProtocolMessages.SetData zkSetData = zkReq as ZkprProtocolMessages.SetData;

                    rmOps.Add(Op.SetData(zkSetData.Path, zkSetData.Data, zkSetData.Version));
                    break;

                case ZooKeeperRequestType.Check:
                    ZkprProtocolMessages.Check zkCheck = zkReq as ZkprProtocolMessages.Check;

                    rmOps.Add(Op.Check(zkCheck.Path, zkCheck.Version));
                    break;
                }
            }

            return(rmOps);
        }