Subject: Implementing XEP-0012
I'm implementing XEP-0012 (Last Activity) and I have a problem when working with the server answer.
I've create the next classes:
XMPP_LastActivityElement is for answer and XMPP_LastActivityElementQuery is for send the IQ. Both classes are registered in Matrix.
The IQ is defined as:
When I receive answer from server, it contains the right value. When processing I do:
But elem always returns null.
What I'm doing wrong? Other similar extensions implemented (and more complex) work fine but this not.
Thanks in advance.
I've create the next classes:
public class XMPP_LastActivityElement:XmppXElement
{
public XMPP_LastActivityElement() : base("jabber:iq:last", "query")
{
}
public string Seconds
{
get { return GetAttribute("seconds"); }
set {SetAttribute("seconds",value);}
}
public static void Test()
{
var e = new XMPP_LastActivityElement() {Seconds = "100"};
Debug.WriteLine("TEST XMPP_LastActivityElement");
Debug.WriteLine(e);
}
}
public class XMPP_LastActivityElementQuery:XmppXElement
{
public XMPP_LastActivityElementQuery()
: base("jabber:iq:last", "query")
{
}
public static void Test()
{
var e = new XMPP_LastActivityElementQuery();
Debug.WriteLine("TEST XMPP_LastActivityElementQuery");
Debug.WriteLine(e);
}
}
{
public XMPP_LastActivityElement() : base("jabber:iq:last", "query")
{
}
public string Seconds
{
get { return GetAttribute("seconds"); }
set {SetAttribute("seconds",value);}
}
public static void Test()
{
var e = new XMPP_LastActivityElement() {Seconds = "100"};
Debug.WriteLine("TEST XMPP_LastActivityElement");
Debug.WriteLine(e);
}
}
public class XMPP_LastActivityElementQuery:XmppXElement
{
public XMPP_LastActivityElementQuery()
: base("jabber:iq:last", "query")
{
}
public static void Test()
{
var e = new XMPP_LastActivityElementQuery();
Debug.WriteLine("TEST XMPP_LastActivityElementQuery");
Debug.WriteLine(e);
}
}
XMPP_LastActivityElement is for answer and XMPP_LastActivityElementQuery is for send the IQ. Both classes are registered in Matrix.
The IQ is defined as:
public class XMPP_LastActivityIq : Iq
{
public XMPP_LastActivityIq()
{
From = XmppProcessor.Processor.MyJid;
GenerateId();
Type=IqType.get;
LastActivity = new XMPP_LastActivityElement();
}
public XMPP_LastActivityIq(Jid to)
{
From = XmppProcessor.Processor.MyJid;
GenerateId();
To = to;
Type = IqType.get;
LastActivity = new XMPP_LastActivityElement();
}
public XMPP_LastActivityElement LastActivity
{
get { return Element<XMPP_LastActivityElement>(); }
set { Replace(value); }
}
public static void Test()
{
var e = new XMPP_LastActivityIq();
Debug.WriteLine("TEST XMPP_LastActivityIq default ctor");
Debug.WriteLine(e);
e = new XMPP_LastActivityIq(new Jid("juan","jabber.com","homelesman"));
Debug.WriteLine("TEST XMPP_LastActivityIq default ctor");
Debug.WriteLine(e);
}
}
{
public XMPP_LastActivityIq()
{
From = XmppProcessor.Processor.MyJid;
GenerateId();
Type=IqType.get;
LastActivity = new XMPP_LastActivityElement();
}
public XMPP_LastActivityIq(Jid to)
{
From = XmppProcessor.Processor.MyJid;
GenerateId();
To = to;
Type = IqType.get;
LastActivity = new XMPP_LastActivityElement();
}
public XMPP_LastActivityElement LastActivity
{
get { return Element<XMPP_LastActivityElement>(); }
set { Replace(value); }
}
public static void Test()
{
var e = new XMPP_LastActivityIq();
Debug.WriteLine("TEST XMPP_LastActivityIq default ctor");
Debug.WriteLine(e);
e = new XMPP_LastActivityIq(new Jid("juan","jabber.com","homelesman"));
Debug.WriteLine("TEST XMPP_LastActivityIq default ctor");
Debug.WriteLine(e);
}
}
When I receive answer from server, it contains the right value. When processing I do:
if (e.Iq.Type == IqType.result)
{
var elem = e.Iq.Element<XMPP_LastActivityElement>();
var s = elem.Seconds;
{
var elem = e.Iq.Element<XMPP_LastActivityElement>();
var s = elem.Seconds;
But elem always returns null.
What I'm doing wrong? Other similar extensions implemented (and more complex) work fine but this not.
Thanks in advance.
rfog
Show profile
Link to this post
Last.zip 826 Bytes