public override object FromErlang(OtpErlangObject erlangObject)
        {
            IList<QueueInfo> queueInfoList = new List<QueueInfo>();
            if (erlangObject is OtpErlangList)
            {
                OtpErlangList erlangList = (OtpErlangList) erlangObject;
                foreach (OtpErlangObject element in erlangList)
                {
                    QueueInfo queueInfo = new QueueInfo();
                    OtpErlangList itemList = (OtpErlangList) element;
                    foreach (OtpErlangObject item in itemList)
                    {
                        OtpErlangTuple tuple = (OtpErlangTuple) item;
                        if (tuple.arity() == 2)
                        {
                            string key = tuple.elementAt(0).ToString();
                            OtpErlangObject value = tuple.elementAt(1);
                            switch (key)
                            {
                                case "name":
                                    queueInfo.Name = ExtractNameValueFromTuple((OtpErlangTuple) value);
                                    break;
                                case "transactions":
                                    queueInfo.Transactions = ExtractLong(value);
                                    break;
                                case "acks_uncommitted":
                                    queueInfo.AcksUncommitted = ExtractLong(value);
                                    break;
                                case "consumers":
                                    queueInfo.Consumers = ExtractLong(value);
                                    break;
                                case "pid":
                                    queueInfo.Pid = ExtractPid(value);
                                    break;
                                case "durable":
                                    queueInfo.Durable = ExtractAtomBoolean(value);
                                    break;
                                case "messages":
                                    queueInfo.Messages = ExtractLong(value);
                                    break;
                                case "memory":
                                    queueInfo.Memory = ExtractLong(value);
                                    break;
                                case "auto_delete":
                                    queueInfo.AutoDelete = ExtractAtomBoolean(value);
                                    break;
                                case "messages_ready":
                                    queueInfo.MessagesReady = ExtractLong(value);
                                    break;
                                case "arguments":
                                    OtpErlangList list = (OtpErlangList)value;
                                    if (list != null)
                                    {
                                        String[] args = new String[list.arity()];
                                        for (int i = 0; i < list.arity(); i++)
                                        {
                                            OtpErlangObject obj = list.elementAt(i);
                                            args[i] = obj.ToString();
                                        }
                                        queueInfo.Arguments = args;
                                    }
                                    break;
                                case "messages_unacknowledged":
                                    queueInfo.MessagesUnacknowledged = ExtractLong(value);
                                    break;
                                case "messages_uncommitted":
                                    queueInfo.MessageUncommitted = ExtractLong(value);
                                    break;
                                default:
                                    break;

                            }
                            queueInfoList.Add(queueInfo);
                        }
                    }
                }
            }
            return queueInfoList;
        }
        /// <summary>The from erlang.</summary>
        /// <param name="erlangObject">The erlang object.</param>
        /// <returns>The System.Object.</returns>
        public override object FromErlang(OtpErlangObject erlangObject)
        {
            var queueInfoList = new List<QueueInfo>();
            if (erlangObject is OtpErlangList)
            {
                var erlangList = (OtpErlangList)erlangObject;
                foreach (var element in erlangList)
                {
                    var queueInfo = new QueueInfo();
                    var itemList = (OtpErlangList)element;
                    foreach (var item in itemList)
                    {
                        var tuple = (OtpErlangTuple)item;
                        if (tuple.arity() == 2)
                        {
                            var key = tuple.elementAt(0).ToString();
                            var value = tuple.elementAt(1);
                            switch (ToQueueInfoField(key))
                            {
                                case QueueInfoField.name:
                                    queueInfo.Name = this.ExtractNameValueFromTuple((OtpErlangTuple)value);
                                    break;
                                case QueueInfoField.transactions:
                                    queueInfo.Transactions = ExtractLong(value);
                                    break;
                                case QueueInfoField.acks_uncommitted:
                                    queueInfo.AcksUncommitted = ExtractLong(value);
                                    break;
                                case QueueInfoField.consumers:
                                    queueInfo.Consumers = ExtractLong(value);
                                    break;
                                case QueueInfoField.pid:
                                    queueInfo.Pid = ExtractPid(value);
                                    break;
                                case QueueInfoField.durable:
                                    queueInfo.Durable = this.ExtractAtomBoolean(value);
                                    break;
                                case QueueInfoField.messages:
                                    queueInfo.Messages = ExtractLong(value);
                                    break;
                                case QueueInfoField.memory:
                                    queueInfo.Memory = ExtractLong(value);
                                    break;
                                case QueueInfoField.auto_delete:
                                    queueInfo.AutoDelete = this.ExtractAtomBoolean(value);
                                    break;
                                case QueueInfoField.messages_ready:
                                    queueInfo.MessagesReady = ExtractLong(value);
                                    break;
                                case QueueInfoField.arguments:
                                    var list = (OtpErlangList)value;
                                    if (list != null)
                                    {
                                        var args = new string[list.arity()];
                                        for (var i = 0; i < list.arity(); i++)
                                        {
                                            var obj = list.elementAt(i);
                                            args[i] = obj.ToString();
                                        }

                                        queueInfo.Arguments = args;
                                    }

                                    break;
                                case QueueInfoField.messages_unacknowledged:
                                    queueInfo.MessagesUnacknowledged = ExtractLong(value);
                                    break;
                                case QueueInfoField.messages_uncommitted:
                                    queueInfo.MessageUncommitted = ExtractLong(value);
                                    break;
                                default:
                                    break;
                            }
                        }
                    }

                    queueInfoList.Add(queueInfo);
                }
            }

            return queueInfoList;
        }
Ejemplo n.º 3
0
        /// <summary>The from erlang.</summary>
        /// <param name="erlangObject">The erlang object.</param>
        /// <returns>The System.Object.</returns>
        public override object FromErlang(OtpErlangObject erlangObject)
        {
            var queueInfoList = new List <QueueInfo>();

            if (erlangObject is OtpErlangList)
            {
                var erlangList = (OtpErlangList)erlangObject;
                foreach (var element in erlangList)
                {
                    var queueInfo = new QueueInfo();
                    var itemList  = (OtpErlangList)element;
                    foreach (var item in itemList)
                    {
                        var tuple = (OtpErlangTuple)item;
                        if (tuple.arity() == 2)
                        {
                            var key   = tuple.elementAt(0).ToString();
                            var value = tuple.elementAt(1);
                            switch (ToQueueInfoField(key))
                            {
                            case QueueInfoField.name:
                                queueInfo.Name = this.ExtractNameValueFromTuple((OtpErlangTuple)value);
                                break;

                            case QueueInfoField.transactions:
                                queueInfo.Transactions = ExtractLong(value);
                                break;

                            case QueueInfoField.acks_uncommitted:
                                queueInfo.AcksUncommitted = ExtractLong(value);
                                break;

                            case QueueInfoField.consumers:
                                queueInfo.Consumers = ExtractLong(value);
                                break;

                            case QueueInfoField.pid:
                                queueInfo.Pid = ExtractPid(value);
                                break;

                            case QueueInfoField.durable:
                                queueInfo.Durable = this.ExtractAtomBoolean(value);
                                break;

                            case QueueInfoField.messages:
                                queueInfo.Messages = ExtractLong(value);
                                break;

                            case QueueInfoField.memory:
                                queueInfo.Memory = ExtractLong(value);
                                break;

                            case QueueInfoField.auto_delete:
                                queueInfo.AutoDelete = this.ExtractAtomBoolean(value);
                                break;

                            case QueueInfoField.messages_ready:
                                queueInfo.MessagesReady = ExtractLong(value);
                                break;

                            case QueueInfoField.arguments:
                                var list = (OtpErlangList)value;
                                if (list != null)
                                {
                                    var args = new string[list.arity()];
                                    for (var i = 0; i < list.arity(); i++)
                                    {
                                        var obj = list.elementAt(i);
                                        args[i] = obj.ToString();
                                    }

                                    queueInfo.Arguments = args;
                                }

                                break;

                            case QueueInfoField.messages_unacknowledged:
                                queueInfo.MessagesUnacknowledged = ExtractLong(value);
                                break;

                            case QueueInfoField.messages_uncommitted:
                                queueInfo.MessageUncommitted = ExtractLong(value);
                                break;

                            default:
                                break;
                            }
                        }
                    }

                    queueInfoList.Add(queueInfo);
                }
            }

            return(queueInfoList);
        }