/// <summary> /// Adds a logic handler to our list so it will receive IQ and message events /// </summary> /// <param name="log"></param> public void AddLogic(Logic log) { lock (LogicLock) { ActiveServices.Add(log); } }
public XMPPClient() { StreamNegotiationLogic = new StreamNegotiationLogic(this); GenericIQLogic = new GenericIQLogic(this); RosterLogic = new RosterLogic(this); PresenceLogic = new PresenceLogic(this); GenericMessageLogic = new GenericMessageLogic(this); ServiceDiscoveryLogic = new ServiceDiscoveryLogic(this); JingleSessionManager = new Jingle.JingleSessionManager(this); StreamInitiationAndTransferLogic = new StreamInitiationAndTransferLogic(this); PersonalEventingLogic = new PersonalEventingLogic(this); lock (LogicLock) { ActiveServices.Add(StreamNegotiationLogic); /// Handle SASL authentication ActiveServices.Add(GenericMessageLogic); ActiveServices.Add(GenericIQLogic); /// Handle pings and other common messages ActiveServices.Add(RosterLogic); /// Handles getting our roster ActiveServices.Add(PresenceLogic); ActiveServices.Add(ServiceDiscoveryLogic); ActiveServices.Add(JingleSessionManager); ActiveServices.Add(StreamInitiationAndTransferLogic); ActiveServices.Add(PersonalEventingLogic); } this.OurServiceDiscoveryFeatureList.AddFeature(new feature("http://jabber.org/protocol/disco#items")); this.OurServiceDiscoveryFeatureList.AddFeature(new feature("http://jabber.org/protocol/disco#info")); this.OurServiceDiscoveryFeatureList.AddFeature(new feature("jabber:x:data")); // Jingle features this.OurServiceDiscoveryFeatureList.AddFeature(new feature("urn:xmpp:jingle:1")); this.OurServiceDiscoveryFeatureList.AddFeature(new feature("urn:xmpp:jingle:transports:ice-udp:0")); // not sure if we want ICE, makes the simple protocol difficult this.OurServiceDiscoveryFeatureList.AddFeature(new feature("urn:xmpp:jingle:transports:ice-udp:1")); this.OurServiceDiscoveryFeatureList.AddFeature(new feature("urn:xmpp:jingle:transports:raw-udp:0")); // raw udp much simpler this.OurServiceDiscoveryFeatureList.AddFeature(new feature("urn:xmpp:jingle:transports:raw-udp:1")); this.OurServiceDiscoveryFeatureList.AddFeature(new feature("urn:xmpp:jingle:apps:rtp:1")); this.OurServiceDiscoveryFeatureList.AddFeature(new feature("urn:xmpp:jingle:apps:rtp:audio")); this.OurServiceDiscoveryFeatureList.AddFeature(new feature("urn:xmpp:jingle:apps:rtp:video")); /// si features... not sure about these this.OurServiceDiscoveryFeatureList.AddFeature(new feature("http://jabber.org/protocol/si")); this.OurServiceDiscoveryFeatureList.AddFeature(new feature("http://jabber.org/protocol/si/profile/file-transfer")); this.OurServiceDiscoveryFeatureList.AddFeature(new feature("http://jabber.org/protocol/ibb")); this.OurServiceDiscoveryFeatureList.AddFeature(new feature("http://jabber.org/protocol/bytestreams")); this.OurServiceDiscoveryFeatureList.AddFeature(new feature("http://jabber.org/protocol/geoloc")); this.OurServiceDiscoveryFeatureList.AddFeature(new feature("http://jabber.org/protocol/geoloc+notify")); this.OurServiceDiscoveryFeatureList.AddFeature(new feature("http://jabber.org/protocol/tune")); this.OurServiceDiscoveryFeatureList.AddFeature(new feature("http://jabber.org/protocol/tune+notify")); this.OurServiceDiscoveryFeatureList.AddFeature(new feature("urn:xmpp:avatar:data")); this.OurServiceDiscoveryFeatureList.AddFeature(new feature("urn:xmpp:avatar:metadata")); //this.OurServiceDiscoveryFeatureList.AddFeature(new feature("")); FileTransferManager = new FileTransferManager(this); }
public void RegisterService(IService service) { try { Services.Add(service.GetType(), service); IActiveService active = service as IActiveService; if (active != null) { ActiveServices.Add(active.GetType(), active); } } catch (ArgumentException ex) { throw new ArgumentException(string.Format(ErrorMessages.DuplicateServiceMessage, service.GetType().ToString()), ex); } }