void Uplink_OnStanzaMessage(StanzaMessage Data) { try { if (Data.From.GetBareJID() != Orchestrator.GetBareJID()) { return; } XElement ActEl = Data.Payload.Element(CDO.Namespace + "actionrequest"); if (ActEl == null) { return; } ActionRequest Req = new ActionRequest(ActEl); switch (Req.Name) { case "sessionstarted": HandleSessionStarted(Req); break; case "sessionterminated": HandleSessionTerminated(Req); break; } } catch (System.Exception ex) { Console.WriteLine("Uncatched exception in on stanzamessage: " + ex.ToString()); } }
void Uplink_OnStanzaIQ(StanzaIQ Data) { if (Data.From.GetBareJID() != DataSourceAddress.GetBareJID()) { return; } Console.WriteLine("Controller received iq stanza"); if (!IQRequests.ContainsKey(Data.ID)) { return; } TaskCompletionSource <StanzaIQ> Signal; if (!IQRequests.TryRemove(Data.ID, out Signal)) { return; } Signal.SetResult(Data); }
// Returns address to source or null public async Task <JID> StartSession(string SessionID, int TimeoutSeconds = 60) { DateTime StartedAt = DateTime.UtcNow; XElement Payload = new XElement(CDO.Namespace + "entitystartsession"); CDO.SetString(Payload, "sessionid", SessionID); var Resp = await Requester.Request("startsession", Payload, TimeoutSeconds); if (!Resp.Successful) { return(null); } JID BareJID = CDO.GetAddress(Resp.Payload, "targetaddress"); if (Uplink.Roster.AggregatedPresence.ContainsKey(BareJID.GetBareJID())) { return(Uplink.Roster.AggregatedPresence[BareJID.GetBareJID()].Last().FullJID); } Uplink.Roster.Subscribe(BareJID); while (!Uplink.Roster.AggregatedPresence.ContainsKey(BareJID.GetBareJID())) { await Task.Delay(25); if ((DateTime.UtcNow - StartedAt).TotalSeconds > TimeoutSeconds) { throw new System.TimeoutException(); } } return(Uplink.Roster.AggregatedPresence[BareJID.GetBareJID()].Last().FullJID); }
public void RemoveAccessToken(JID Actor, AccessToken Token) { AccessTokenSession Temp; AccessTokens.TryRemove(Actor.GetBareJID() + Token, out Temp); }
public void SetAccessTokenSession(JID Actor, AccessTokenSession Session) { AccessTokens[Actor.GetBareJID() + Session.Token] = Session; }