public void ReadFields(ZooKeeperNet.IO.EndianBinaryReader reader) { BinaryInputArchive archive = new BinaryInputArchive(reader); Deserialize(archive, string.Empty); }
public void ReadFields(IkZooKeeperNet.IO.EndianBinaryReader reader) { BinaryInputArchive archive = new BinaryInputArchive(reader); Deserialize(archive, string.Empty); }
public void ReadFields(EndianBinaryReader reader) { BinaryInputArchive archive = new BinaryInputArchive(reader); this.Deserialize(archive, string.Empty); }
public void ReadFields(Newegg.EC.Zookeeper.Client.Core.IO.EndianBinaryReader reader) { BinaryInputArchive archive = new BinaryInputArchive(reader); Deserialize(archive, string.Empty); }
internal void readResponse(ByteBuffer incomingBuffer) { BigEndianBinaryReader bbis = new BigEndianBinaryReader(incomingBuffer.Stream); BinaryInputArchive bbia = BinaryInputArchive.getArchive(bbis); ReplyHeader replyHdr = new ReplyHeader(); ((Record)replyHdr).deserialize(bbia, "header"); if (replyHdr.getXid() == -2) { // -2 is the xid for pings if (LOG.isDebugEnabled()) { LOG.debug("Got ping response for sessionid: 0x" + sessionId.ToHexString() + " after " + ((TimeHelper.ElapsedNanoseconds - lastPingSentNs) / 1000000) + "ms"); } return; } if (replyHdr.getXid() == -4) { // -4 is the xid for AuthPacket if (replyHdr.getErr() == (int)KeeperException.Code.AUTHFAILED) { state.Value = ZooKeeper.States.AUTH_FAILED; queueEvent(new WatchedEvent(Watcher.Event.EventType.None, Watcher.Event.KeeperState.AuthFailed, null)); } if (LOG.isDebugEnabled()) { LOG.debug("Got auth sessionid:0x" + sessionId.ToHexString()); } return; } if (replyHdr.getXid() == -1) { // -1 means notification if (LOG.isDebugEnabled()) { LOG.debug("Got notification sessionid:0x" + sessionId.ToHexString()); } WatcherEvent @event = new WatcherEvent(); ((Record)@event).deserialize(bbia, "response"); // convert from a server path to a client path if (chrootPath != null) { string serverPath = @event.getPath(); if (serverPath == chrootPath) { @event.setPath("/"); } else if (serverPath.Length > chrootPath.Length) { @event.setPath(serverPath.Substring(chrootPath.Length)); } else { LOG.warn("Got server path " + @event.getPath() + " which is too short for chroot path " + chrootPath); } } WatchedEvent we = new WatchedEvent(@event); if (LOG.isDebugEnabled()) { LOG.debug("Got " + we + " for sessionid 0x" + sessionId.ToHexString()); } queueEvent(we); return; } Packet packet; lock (pendingQueue) { if (pendingQueue.size() == 0) { throw new IOException("Nothing in the queue, but got " + replyHdr.getXid()); } packet = pendingQueue.First.Value; pendingQueue.RemoveFirst(); } /* * Since requests are processed in order, we better get a response * to the first request! */ try { if (packet.requestHeader.getXid() != replyHdr.getXid()) { packet.replyHeader.setErr((int)KeeperException.Code.CONNECTIONLOSS); throw new IOException("Xid out of order. Got Xid " + replyHdr.getXid() + " with err " + +replyHdr.getErr() + " expected Xid " + packet.requestHeader.getXid() + " for a packet with details: " + packet); } packet.replyHeader.setXid(replyHdr.getXid()); packet.replyHeader.setErr(replyHdr.getErr()); packet.replyHeader.setZxid(replyHdr.getZxid()); if (replyHdr.getZxid() > 0) { lastZxid.Value = replyHdr.getZxid(); } if (packet.response != null && replyHdr.getErr() == 0) { packet.response.deserialize(bbia, "response"); } if (LOG.isDebugEnabled()) { LOG.debug("Reading reply sessionid:0x" + sessionId.ToHexString() + ", packet:: " + packet); } } finally { finishPacket(packet); } }
private void ReadResponse(byte[] content) { using (var reader = new EndianBinaryReader(EndianBitConverter.Big, new MemoryStream(content), Encoding.UTF8)) { BinaryInputArchive bbia = BinaryInputArchive.GetArchive(reader); ReplyHeader replyHdr = new ReplyHeader(); replyHdr.Deserialize(bbia, "header"); if (replyHdr.Xid == -2) { // -2 is the xid for pings if (LOG.IsDebugEnabled) { LOG.DebugFormat("Got ping response for sessionid: 0x{0:X} after {1}ms", conn.SessionId, (DateTime.Now.Nanos() - lastPingSentNs) / 1000000); } return; } if (replyHdr.Xid == -4) { // -2 is the xid for AuthPacket // TODO: process AuthPacket here if (LOG.IsDebugEnabled) { LOG.DebugFormat("Got auth sessionid:0x{0:X}", conn.SessionId); } return; } if (replyHdr.Xid == -1) { // -1 means notification if (LOG.IsDebugEnabled) { LOG.DebugFormat("Got notification sessionid:0x{0}", conn.SessionId); } WatcherEvent @event = new WatcherEvent(); @event.Deserialize(bbia, "response"); // convert from a server path to a client path if (conn.ChrootPath != null) { string serverPath = @event.Path; if (serverPath.CompareTo(conn.ChrootPath) == 0) { @event.Path = PathUtils.PathSeparator; } else { @event.Path = serverPath.Substring(conn.ChrootPath.Length); } } WatchedEvent we = new WatchedEvent(@event); if (LOG.IsDebugEnabled) { LOG.DebugFormat("Got {0} for sessionid 0x{1:X}", we, conn.SessionId); } conn.consumer.QueueEvent(we); return; } Packet packet; /* * Since requests are processed in order, we better get a response * to the first request! */ if (pendingQueue.TryDequeue(out packet)) { try { if (packet.header.Xid != replyHdr.Xid) { packet.replyHeader.Err = (int)KeeperException.Code.CONNECTIONLOSS; throw new IOException(new StringBuilder("Xid out of order. Got ").Append(replyHdr.Xid).Append(" expected ").Append(packet.header.Xid).ToString()); } packet.replyHeader.Xid = replyHdr.Xid; packet.replyHeader.Err = replyHdr.Err; packet.replyHeader.Zxid = replyHdr.Zxid; if (replyHdr.Zxid > 0) { lastZxid = replyHdr.Zxid; } if (packet.response != null && replyHdr.Err == 0) { packet.response.Deserialize(bbia, "response"); } if (LOG.IsDebugEnabled) { LOG.DebugFormat("Reading reply sessionid:0x{0:X}, packet:: {1}", conn.SessionId, packet); } } finally { FinishPacket(packet); } } else { throw new IOException(new StringBuilder("Nothing in the queue, but got ").Append(replyHdr.Xid).ToString()); } } }