Agnos.Protocol.ClientUtils.ProcessIncoming C# (CSharp) Method

ProcessIncoming() public method

public ProcessIncoming ( int msecs ) : void
msecs int
return void
            public void ProcessIncoming(int msecs)
            {
                int seq = transport.BeginRead ();

                try {
                    int code = (byte)(Packers.Int8.unpack (transport));
                    ReplySlot slot;

                    if (!replies.TryGetValue (seq, out slot) ||
                            (slot.type != ReplySlotType.SLOT_EMPTY && slot.type != ReplySlotType.SLOT_DISCARDED)) {
                        throw new ProtocolError ("invalid reply sequence: " + seq);
                    }
                    Packers.AbstractPacker packer = (Packers.AbstractPacker)slot.value;
                    bool discard = (slot.type == ReplySlotType.SLOT_DISCARDED);

                    switch (code) {
                    case REPLY_SUCCESS:
                        if (packer == null) {
                            slot.value = null;
                        }
                        /*else if (packer == Packers.MockupPacker) {
                            slot.value = transport.ReadAll ();
                        }*/
                        else {
                            slot.value = packer.unpack (transport);
                        }
                        slot.type = ReplySlotType.SLOT_VALUE;
                        break;
                    case REPLY_PROTOCOL_ERROR:
                        throw (ProtocolError)loadProtocolError ();
                    case REPLY_PACKED_EXCEPTION:
                        slot.type = ReplySlotType.SLOT_EXCEPTION;
                        slot.value = loadPackedException ();
                        break;
                    case REPLY_GENERIC_EXCEPTION:
                        slot.type = ReplySlotType.SLOT_EXCEPTION;
                        slot.value = loadGenericException ();
                        break;
                    default:
                        throw new ProtocolError ("unknown reply code: " + code);
                    }

                    if (discard) {
                        replies.Remove (seq);
                    }
                } finally {
                    transport.EndRead ();
                }
            }