Exemplo n.º 1
0
            /** Convenience ctor */

            internal Packet(RequestHeader requestHeader, ReplyHeader replyHeader,
                            Record request, Record response,
                            ZooKeeper.WatchRegistration watchRegistration) :
                this(requestHeader, replyHeader, request, response,
                     watchRegistration, false)
            {
            }
Exemplo n.º 2
0
        internal Packet queuePacket(RequestHeader h, ReplyHeader rep, Record request,
                                    Record response, string clientPath,
                                    string serverPath, ZooKeeper.WatchRegistration watchRegistration)
        {
            Packet packet;

            // Note that we do not generate the Xid for the packet yet. It is
            // generated later at send-time, by an implementation of
            // ClientCnxnSocket::doIO(),
            // where the packet is actually sent.
            lock (outgoingQueue) {
                packet            = new Packet(h, rep, request, response, watchRegistration);
                packet.clientPath = clientPath;
                packet.serverPath = serverPath;
                if (!getState().isAlive() || closing.Value)
                {
                    conLossPacket(packet);
                }
                else
                {
                    // If the client is asking to close the session then
                    // mark as closing
                    if (h.get_Type() == (int)ZooDefs.OpCode.closeSession)
                    {
                        closing.Value = true;
                    }
                    outgoingQueue.AddLast(packet);
                }
            }
            clientCnxnSocket.wakeupCnxn();
            return(packet);
        }
Exemplo n.º 3
0
        public async Task <ReplyHeader> submitRequest(RequestHeader h, Record request, Record response,
                                                      ZooKeeper.WatchRegistration watchRegistration)
        {
            ReplyHeader rep    = new ReplyHeader();
            Packet      packet = queuePacket(h, rep, request, response, null, null, watchRegistration);
            await packet.PacketTask.ConfigureAwait(false);

            return(rep);
        }
Exemplo n.º 4
0
 internal Packet(RequestHeader requestHeader, ReplyHeader replyHeader,
                 Record request, Record response,
                 ZooKeeper.WatchRegistration watchRegistration, bool readOnly)
 {
     this.requestHeader     = requestHeader;
     this.replyHeader       = replyHeader;
     this.request           = request;
     this.response          = response;
     this.readOnly          = readOnly;
     this.watchRegistration = watchRegistration;
 }
Exemplo n.º 5
0
 internal Packet(RequestHeader requestHeader, ReplyHeader replyHeader,
                 Record request, Record response,
                 ZooKeeper.WatchRegistration watchRegistration, bool readOnly) : base(TaskCreationOptions.RunContinuationsAsynchronously)
 {
     this.requestHeader     = requestHeader;
     this.replyHeader       = replyHeader;
     this.request           = request;
     this.response          = response;
     this.readOnly          = readOnly;
     this.watchRegistration = watchRegistration;
 }
Exemplo n.º 6
0
 internal Packet(RequestHeader header, ReplyHeader replyHeader, IRecord request, IRecord response, byte[] data, ZooKeeper.WatchRegistration watchRegistration, string serverPath, string clientPath)
 {
     this.header = header;
     this.replyHeader = replyHeader;
     this.request = request;
     this.response = response;
     this.serverPath = serverPath;
     this.clientPath = clientPath;
     if (data != null)
     {
         this.data = data;
     }
     else
     {
         try
         {
             using (MemoryStream ms = new MemoryStream())
             using (EndianBinaryWriter writer = new EndianBinaryWriter(EndianBitConverter.Big, ms, Encoding.UTF8))
             {
                 BinaryOutputArchive boa = BinaryOutputArchive.getArchive(writer);
                 boa.WriteInt(-1, "len"); // We'll fill this in later
                 header.Serialize(boa, "header");
                 if (request != null)
                 {
                     request.Serialize(boa, "request");
                 }
                 ms.Position = 0;
                 writer.Write(ms.ToArray().Length - 4);
                 this.data = ms.ToArray();
             }
         }
         catch (IOException e)
         {
             LOG.Warn("Ignoring unexpected exception", e);
         }
     }
     this.watchRegistration = watchRegistration;
 }