diff options
author | Alan Young <consult.awy@gmail.com> | 2014-11-13 06:42:37 (GMT) |
---|---|---|
committer | Alan Young <consult.awy@gmail.com> | 2015-04-10 06:50:58 (GMT) |
commit | 7d2101b93b6253c3ea15b663f7f3dc385cb21364 (patch) | |
tree | d81338baf0d117e83cdc07f882cbedd9471e834d /src/com/isode/stroke/disco/ClientDiscoManager.java | |
parent | a20ca7ba40d837abe228462be0aba5d32d6831e3 (diff) | |
download | stroke-7d2101b93b6253c3ea15b663f7f3dc385cb21364.zip stroke-7d2101b93b6253c3ea15b663f7f3dc385cb21364.tar.bz2 |
Checkpoint - A bunch of initial stuff for Android
MemoryStorages, Storages
NickManager, NickResolver
CryptoProvider, Hash, SafeByteArray, JavaCryptoProvider
CapsInfoGenerator, CapsManager, CapsMemoryStorage, CapsProvider,
CapsStorage, CapsInfo
CapsInfoSerializer, CapsInfoParser
ClientDiscoManager, DiscoInfoResponder, EntityCapsManager,
EntityCapsProvider
GetDiscoInfoRequest
ChatState, Idle
Presence, PayloadAddingPresenceSender, PresenceOracle,
SubscriptionManager
StatusSerializer, StatusShowSerializer, StatusParser, StatusShowParser,
Replace, ReplaceParser, ReplaceSerializer
SecurityLabel, SecurityLabelsCatalog, GetSecurityLabelsCatalogRequest
VCard, GetVCardRequest, SetVCardRequest, VCardManager,
VCardMemoryStorage, VCardStorage
RosterMemoryStorage, RosterPushResponder, RosterStorage,
SetRosterRequest
XMPPRoster, XMPPRosterController, XMPPRosterImpl, XMPPRosterItem
GetRosterRequest, SetResponder
Add parsers and serializers for Idle, VCard, PrivateStorage & Stroage.
Add
parser for Subject.
Add impromptu flag to MUCInvitation.
Update copyrights.
Change-Id: I9949f506b70e60b3a64f1dadde8f9b235b322e1d
Diffstat (limited to 'src/com/isode/stroke/disco/ClientDiscoManager.java')
-rw-r--r-- | src/com/isode/stroke/disco/ClientDiscoManager.java | 76 |
1 files changed, 76 insertions, 0 deletions
diff --git a/src/com/isode/stroke/disco/ClientDiscoManager.java b/src/com/isode/stroke/disco/ClientDiscoManager.java new file mode 100644 index 0000000..3770fbc --- /dev/null +++ b/src/com/isode/stroke/disco/ClientDiscoManager.java @@ -0,0 +1,76 @@ +/* + * Copyright (c) 2010-2015, Isode Limited, London, England. + * All rights reserved. + */ +package com.isode.stroke.disco; + +import com.isode.stroke.crypto.CryptoProvider; +import com.isode.stroke.elements.CapsInfo; +import com.isode.stroke.elements.DiscoInfo; +import com.isode.stroke.presence.PayloadAddingPresenceSender; +import com.isode.stroke.presence.PresenceSender; +import com.isode.stroke.queries.IQRouter; + +public class ClientDiscoManager { + private PayloadAddingPresenceSender presenceSender; + private CryptoProvider crypto; + private DiscoInfoResponder discoInfoResponder; + private String capsNode; + private CapsInfo capsInfo; + + /** + * Constructs the manager + * + * \param iqRouter the router on which requests will be answered \param + * presenceSender the presence sender to which all outgoing presence (with + * caps information) will be sent. + */ + public ClientDiscoManager(IQRouter iqRouter, PresenceSender presenceSender, + CryptoProvider crypto) { + this.crypto = crypto; + discoInfoResponder = new DiscoInfoResponder(iqRouter); + discoInfoResponder.start(); + this.presenceSender = new PayloadAddingPresenceSender(presenceSender); + } + + void delete() { + discoInfoResponder.stop(); + } + + /** + * Needs to be called before calling setDiscoInfo(). + */ + public void setCapsNode(final String node) { + capsNode = node; + } + + /** + * Sets the capabilities of the client. + */ + public void setDiscoInfo(final DiscoInfo discoInfo) { + capsInfo = new CapsInfoGenerator(capsNode, crypto).generateCapsInfo(discoInfo); + discoInfoResponder.clearDiscoInfo(); + discoInfoResponder.setDiscoInfo(discoInfo); + discoInfoResponder.setDiscoInfo( + capsInfo.getNode() + "#" + capsInfo.getVersion(), discoInfo); + presenceSender.setPayload(capsInfo); + } + + /** + * Returns the presence sender through which all outgoing presence should be + * sent. The manager will add the necessary caps information, and forward it + * to the presence sender passed at construction time. + */ + public PresenceSender getPresenceSender() { + return presenceSender; + } + + /** + * Called when the client is connected. This resets the presence sender, + * such that it assumes initial presence hasn't been sent yet. + */ + void handleConnected() { + presenceSender.reset(); + } + +} |