public Add ( object value ) : int | ||
value | object | PubSubItem to add to the list. |
return | int |
public override int Add(object value)
{
PubSubItem item = value as PubSubItem;
if (item == null)
throw new ArgumentException("Must be an XmlElement", "value");
string id = item.ID;
int i;
if (id == null)
{
if (Count == Capacity)
{
RemoveAt(0);
}
i = base.Add(value);
m_node.ItemAdded(item);
return i;
}
// RemoveId(id);
if (!m_index.Contains(id) && (Count == Capacity))
RemoveAt(0);
i = base.Add(value);
m_index[id] = i;
m_node.ItemAdded(item);
return i;
}
private void GotItems(object sender, IQ iq, object state) { if (iq.Type != IQType.result) { FireError(Op.ITEMS, "Error retrieving items", iq); return; } PubSub ps = iq["pubsub", URI.PUBSUB] as PubSub; if (ps == null) { FireError(Op.ITEMS, "Invalid pubsub protocol", iq); return; } PubSubItemCommand items = ps["items", URI.PUBSUB] as PubSubItemCommand; if (items == null) { // That doesn't really hurt us, I guess. No items. Keep going. this[Op.ITEMS] = STATE.Running; return; } if (items.Node != m_node) { FireError(Op.ITEMS, "Non-matching node. Probably a server bug.", iq); return; } foreach (PubSubItem item in items.GetItems()) { m_items.Add(item); } this[Op.ITEMS] = STATE.Running; }