001 /**
002 * Copyright (C) 2010, Skype Limited
003 *
004 * All intellectual property rights, including but not limited to copyrights,
005 * trademarks and patents, as well as know how and trade secrets contained in,
006 * relating to, or arising from the internet telephony software of
007 * Skype Limited (including its affiliates, "Skype"), including without
008 * limitation this source code, Skype API and related material of such
009 * software proprietary to Skype and/or its licensors ("IP Rights") are and
010 * shall remain the exclusive property of Skype and/or its licensors.
011 * The recipient hereby acknowledges and agrees that any unauthorized use of
012 * the IP Rights is a violation of intellectual property laws.
013 *
014 * Skype reserves all rights and may take legal action against infringers of
015 * IP Rights.
016 *
017 * The recipient agrees not to remove, obscure, make illegible or alter any
018 * notices or indications of the IP Rights and/or Skype's rights and
019 * ownership thereof.
020 */
021
022 package com.skype.ipc;
023
024 import java.io.IOException;
025 import java.util.ArrayList;
026
027 import com.skype.util.Log;
028
029
030 public class ResponseListElement extends AbstractDecoder
031 {
032 private static final String TAG="ResponseList";
033 public static final int INITIAL_LIST_SIZE=16;
034 private ArrayList<Object> items;
035 private int getindex;
036
037 ResponseListElement(Transport in) throws IOException
038 {
039 super(in);
040 getindex=0;
041 items=new ArrayList<Object>(INITIAL_LIST_SIZE);
042 while(true)
043 {
044 int kind=ioTransport.read();
045 // there are no tags in lists
046 Object o=decodeOneOfKind(kind);
047 if(o==null)
048 {
049 Log.d(TAG,"In list: Decoding returned null");
050 items.trimToSize();
051 return;
052 }
053 items.add(o);
054 Log.d(TAG,"In list: added parm of kind='"+kind+"'");
055 }
056 }
057
058 public Object GetNext()
059 {
060 try
061 {
062 return items.get(getindex++);
063 }
064 catch(ArrayIndexOutOfBoundsException e)
065 {
066 Log.e(TAG,"GetNext() called even though there is no more items in list");
067 return null;
068 }
069 }
070
071 public boolean HasMore()
072 {
073 return(getindex<items.size());
074 }
075
076 }