public void Read(TProtocol iprot)
        {
            TField field;

            iprot.ReadStructBegin();
            while (true)
            {
                field = iprot.ReadFieldBegin();
                if (field.Type == TType.Stop)
                {
                    break;
                }
                switch (field.ID)
                {
                case 1:
                    if (field.Type == TType.Struct)
                    {
                        Exec_summary = new ExecutorSummary();
                        Exec_summary.Read(iprot);
                    }
                    else
                    {
                        TProtocolUtil.Skip(iprot, field.Type);
                    }
                    break;

                case 2:
                    if (field.Type == TType.Struct)
                    {
                        Stats = new ComponentAggregateStats();
                        Stats.Read(iprot);
                    }
                    else
                    {
                        TProtocolUtil.Skip(iprot, field.Type);
                    }
                    break;

                default:
                    TProtocolUtil.Skip(iprot, field.Type);
                    break;
                }
                iprot.ReadFieldEnd();
            }
            iprot.ReadStructEnd();
        }
        public void Read(TProtocol iprot)
        {
            bool   isset_id          = false;
            bool   isset_name        = false;
            bool   isset_uptime_secs = false;
            bool   isset_executors   = false;
            bool   isset_status      = false;
            bool   isset_errors      = false;
            TField field;

            iprot.ReadStructBegin();
            while (true)
            {
                field = iprot.ReadFieldBegin();
                if (field.Type == TType.Stop)
                {
                    break;
                }
                switch (field.ID)
                {
                case 1:
                    if (field.Type == TType.String)
                    {
                        Id       = iprot.ReadString();
                        isset_id = true;
                    }
                    else
                    {
                        TProtocolUtil.Skip(iprot, field.Type);
                    }
                    break;

                case 2:
                    if (field.Type == TType.String)
                    {
                        Name       = iprot.ReadString();
                        isset_name = true;
                    }
                    else
                    {
                        TProtocolUtil.Skip(iprot, field.Type);
                    }
                    break;

                case 3:
                    if (field.Type == TType.I32)
                    {
                        Uptime_secs       = iprot.ReadI32();
                        isset_uptime_secs = true;
                    }
                    else
                    {
                        TProtocolUtil.Skip(iprot, field.Type);
                    }
                    break;

                case 4:
                    if (field.Type == TType.List)
                    {
                        {
                            Executors = new List <ExecutorSummary>();
                            TList _list158 = iprot.ReadListBegin();
                            for (int _i159 = 0; _i159 < _list158.Count; ++_i159)
                            {
                                ExecutorSummary _elem160 = new ExecutorSummary();
                                _elem160 = new ExecutorSummary();
                                _elem160.Read(iprot);
                                Executors.Add(_elem160);
                            }
                            iprot.ReadListEnd();
                        }
                        isset_executors = true;
                    }
                    else
                    {
                        TProtocolUtil.Skip(iprot, field.Type);
                    }
                    break;

                case 5:
                    if (field.Type == TType.String)
                    {
                        Status       = iprot.ReadString();
                        isset_status = true;
                    }
                    else
                    {
                        TProtocolUtil.Skip(iprot, field.Type);
                    }
                    break;

                case 6:
                    if (field.Type == TType.Map)
                    {
                        {
                            Errors = new Dictionary <string, List <ErrorInfo> >();
                            TMap _map161 = iprot.ReadMapBegin();
                            for (int _i162 = 0; _i162 < _map161.Count; ++_i162)
                            {
                                string           _key163;
                                List <ErrorInfo> _val164;
                                _key163 = iprot.ReadString();
                                {
                                    _val164 = new List <ErrorInfo>();
                                    TList _list165 = iprot.ReadListBegin();
                                    for (int _i166 = 0; _i166 < _list165.Count; ++_i166)
                                    {
                                        ErrorInfo _elem167 = new ErrorInfo();
                                        _elem167 = new ErrorInfo();
                                        _elem167.Read(iprot);
                                        _val164.Add(_elem167);
                                    }
                                    iprot.ReadListEnd();
                                }
                                Errors[_key163] = _val164;
                            }
                            iprot.ReadMapEnd();
                        }
                        isset_errors = true;
                    }
                    else
                    {
                        TProtocolUtil.Skip(iprot, field.Type);
                    }
                    break;

                case 7:
                    if (field.Type == TType.Map)
                    {
                        {
                            Component_debug = new Dictionary <string, DebugOptions>();
                            TMap _map168 = iprot.ReadMapBegin();
                            for (int _i169 = 0; _i169 < _map168.Count; ++_i169)
                            {
                                string       _key170;
                                DebugOptions _val171;
                                _key170 = iprot.ReadString();
                                _val171 = new DebugOptions();
                                _val171.Read(iprot);
                                Component_debug[_key170] = _val171;
                            }
                            iprot.ReadMapEnd();
                        }
                    }
                    else
                    {
                        TProtocolUtil.Skip(iprot, field.Type);
                    }
                    break;

                case 513:
                    if (field.Type == TType.String)
                    {
                        Sched_status = iprot.ReadString();
                    }
                    else
                    {
                        TProtocolUtil.Skip(iprot, field.Type);
                    }
                    break;

                case 514:
                    if (field.Type == TType.String)
                    {
                        Owner = iprot.ReadString();
                    }
                    else
                    {
                        TProtocolUtil.Skip(iprot, field.Type);
                    }
                    break;

                case 515:
                    if (field.Type == TType.I32)
                    {
                        Replication_count = iprot.ReadI32();
                    }
                    else
                    {
                        TProtocolUtil.Skip(iprot, field.Type);
                    }
                    break;

                case 521:
                    if (field.Type == TType.Double)
                    {
                        Requested_memonheap = iprot.ReadDouble();
                    }
                    else
                    {
                        TProtocolUtil.Skip(iprot, field.Type);
                    }
                    break;

                case 522:
                    if (field.Type == TType.Double)
                    {
                        Requested_memoffheap = iprot.ReadDouble();
                    }
                    else
                    {
                        TProtocolUtil.Skip(iprot, field.Type);
                    }
                    break;

                case 523:
                    if (field.Type == TType.Double)
                    {
                        Requested_cpu = iprot.ReadDouble();
                    }
                    else
                    {
                        TProtocolUtil.Skip(iprot, field.Type);
                    }
                    break;

                case 524:
                    if (field.Type == TType.Double)
                    {
                        Assigned_memonheap = iprot.ReadDouble();
                    }
                    else
                    {
                        TProtocolUtil.Skip(iprot, field.Type);
                    }
                    break;

                case 525:
                    if (field.Type == TType.Double)
                    {
                        Assigned_memoffheap = iprot.ReadDouble();
                    }
                    else
                    {
                        TProtocolUtil.Skip(iprot, field.Type);
                    }
                    break;

                case 526:
                    if (field.Type == TType.Double)
                    {
                        Assigned_cpu = iprot.ReadDouble();
                    }
                    else
                    {
                        TProtocolUtil.Skip(iprot, field.Type);
                    }
                    break;

                default:
                    TProtocolUtil.Skip(iprot, field.Type);
                    break;
                }
                iprot.ReadFieldEnd();
            }
            iprot.ReadStructEnd();
            if (!isset_id)
            {
                throw new TProtocolException(TProtocolException.INVALID_DATA);
            }
            if (!isset_name)
            {
                throw new TProtocolException(TProtocolException.INVALID_DATA);
            }
            if (!isset_uptime_secs)
            {
                throw new TProtocolException(TProtocolException.INVALID_DATA);
            }
            if (!isset_executors)
            {
                throw new TProtocolException(TProtocolException.INVALID_DATA);
            }
            if (!isset_status)
            {
                throw new TProtocolException(TProtocolException.INVALID_DATA);
            }
            if (!isset_errors)
            {
                throw new TProtocolException(TProtocolException.INVALID_DATA);
            }
        }