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;
}