public PoshServer(int port) { string location = "ws://localhost:" + port + "/"; FWampHost = new DefaultWampHost(location); FWampHost.Open(); // Use this in order to publish events to subscribers. IWampTopicContainer topicContainer = FWampHost.TopicContainer; FAddTopic = topicContainer.CreateTopicByUri("add", true); FUpdateAttributeTopic = topicContainer.CreateTopicByUri("update-attribute", true); FUpdateContentTopic = topicContainer.CreateTopicByUri("update-content", true); FRemoveTopic = topicContainer.CreateTopicByUri("remove", true); FWampHost.HostService(this, ""); FWampHost.SessionCreated += SessionCreated; FWampHost.SessionClosed += SessionClosed; //FWampHost.Listener.CallInvoked += PublishAll; //create event caller for svg SvgEventCaller = new PoshSvgEventCaller(FWampHost); SvgEventCaller.CallInvoked += SvgEventCaller_CallInvoked; //publish all stuff aufter each call from remote AutoPublishAllAfterRemoteCall = true; }
public SubscriptionDescriptorService(IWampHostedRealm realm) : base(new SubscriptionMetadataSubscriber(realm.TopicContainer), WampErrors.NoSuchSubscription) { IWampTopicContainer topicContainer = realm.TopicContainer; mTopicContainer = topicContainer; IObservable <IWampTopic> removed = GetTopicRemoved(topicContainer); var observable = from topic in GetTopicCreated(topicContainer) let topicRemoved = removed.Where(x => x == topic) let subscriptionAdded = GetSubscriptionAdded(topic, topicRemoved) let subscriptionRemoved = GetSubscriptionRemoved(topic, topicRemoved) select new { topic, subscriptionAdded, subscriptionRemoved }; var addObservable = from item in observable from eventArgs in item.subscriptionAdded select new { Topic = item.topic, EventArgs = eventArgs }; var removeObservable = from item in observable from eventArgs in item.subscriptionRemoved select new { Topic = item.topic, EventArgs = eventArgs }; IDisposable addDisposable = addObservable.Subscribe(x => OnSubscriptionAdded(x.Topic, x.EventArgs)); IDisposable removeDisposable = removeObservable.Subscribe(x => OnSubscriptionRemoved(x.Topic, x.EventArgs)); mDisposable = new CompositeDisposable(addDisposable, removeDisposable); }
public void TopicOnNextCallsSubjectOnNext() { WampPlayground playground = new WampPlayground(); IWampHost host = playground.Host; IWampTopicContainer topicContainer = host.TopicContainer; host.Open(); IWampChannel <MockRaw> channel = playground.CreateNewChannel(); channel.Open(); IWampTopic topic = null; topicContainer.TopicCreated += (sender, args) => topic = args.Topic; object @event = null; string topicUri = "http://example.com/simple"; ISubject <object> subject = channel.GetSubject <object>(topicUri); subject.Subscribe(x => @event = x); Assert.That(topic, Is.Not.Null); Assert.That(topic.TopicUri, Is.EqualTo(topicUri)); string value = "Test :)"; topic.OnNext(value); Assert.That(@event, Is.EqualTo(value)); }
public static long Publish (this IWampTopicContainer container, PublishOptions options, string topicUri, object[] arguments, IDictionary <string, object> argumentKeywords) { if (arguments == null) { return(container.Publish(WampObjectFormatter.Value, options, topicUri)); } else if (argumentKeywords == null) { return(container.Publish(WampObjectFormatter.Value, options, topicUri, arguments)); } else { return(container.Publish(WampObjectFormatter.Value, options, topicUri, arguments, argumentKeywords)); } }
public SubscriptionMetadataSubscriber(IWampTopicContainer topicContainer) { mTopicContainer = topicContainer; mTopicContainer.CreateTopicByUri(mOnCreateTopicUri, true); mTopicContainer.CreateTopicByUri(mOnSubscribeTopicUri, true); mTopicContainer.CreateTopicByUri(mOnUnsubscribeTopicUri, true); mTopicContainer.CreateTopicByUri(mOnDeleteTopicUri, true); }
public RegistrationMetadataSubscriber(IWampTopicContainer topicContainer) { mTopicContainer = topicContainer; mTopicContainer.CreateTopicByUri(mOnCreateTopicUri, true); mTopicContainer.CreateTopicByUri(mOnRegisterTopicUri, true); mTopicContainer.CreateTopicByUri(mOnUnregisterTopicUri, true); mTopicContainer.CreateTopicByUri(mOnDeleteTopicUri, true); }
public static long Publish (this IWampTopicContainer container, PublishOptions options, string topicUri, params object[] arguments) { return(Publish(container, options, topicUri, arguments, null)); }
private static IObservable <IWampTopic> GetTopicCreated(IWampTopicContainer topicContainer) { return(Observable.FromEventPattern <WampTopicCreatedEventArgs> (x => topicContainer.TopicCreated += x, x => topicContainer.TopicCreated -= x) .Select(x => x.EventArgs.Topic) .Where(x => !WampRestrictedUris.IsRestrictedUri(x.TopicUri))); }
public WampRawTopicContainer(IWampTopicContainer topicContainer, IWampEventSerializer eventSerializer, IWampBinding <TMessage> binding) { mTopicContainer = topicContainer; mEventSerializer = eventSerializer; mBinding = binding; }
public WampPubSubServer(IWampTopicContainer topicContainer, IWampEventSerializer eventSerializer, IWampBinding <TMessage> binding, IWampUriValidator uriValidator) { mLogger = LogProvider.GetLogger(this.GetType()); mBinding = binding; mUriValidator = uriValidator; mEventSerializer = eventSerializer; mRawTopicContainer = new WampRawTopicContainer <TMessage>(topicContainer, mEventSerializer, mBinding); }
/// <summary> /// Specialized constructor for use only by derived classes. /// </summary> /// <param name="clientSessionId">Identifier for the client session.</param> /// <param name="formatter">The formatter.</param> /// <param name="metadataCatalog">The metadata catalog.</param> /// <param name="topicContainer">The topic container.</param> protected WampCraAuthenticator(string clientSessionId, IWampFormatter <TMessage> formatter, IWampRpcMetadataCatalog metadataCatalog, IWampTopicContainer topicContainer) { mClientSessionId = clientSessionId; mFormatter = formatter; mMetadataCatalog = metadataCatalog; mTopicContainer = topicContainer; mPermissions = new WampCraPermissionsMapper(); }
private static IDisposable ServerCode(WampHost host) { IWampHostedRealm realm = host.RealmContainer.GetRealmByName("realm1"); IWampTopicContainer topicContainer = realm.TopicContainer; IWampTopic topic = topicContainer.GetOrCreateTopicByUri("com.myapp.topic1"); IDisposable disposable = realm.Services.GetSubject <int>("com.myapp.topic1") .Subscribe(x => GetValue(x)); return(disposable); }
static void Main(string[] args) { // http://autobahn.ws/static/file/autobahnjs.html const string location = "ws://127.0.0.1:9000/"; using (IWampHost host = new DefaultWampHost(location)) { host.Open(); // Use this in order to publish events to subscribers. IWampTopicContainer topicContainer = host.TopicContainer; Console.WriteLine("Server is running on " + location); Console.ReadLine(); } }
public SampleWampCraAuthenticator(string clientSessionId, IWampFormatter <TMessage> formatter, IWampRpcMetadataCatalog metadataCatalog, IWampTopicContainer topicContainer) : base(clientSessionId, formatter, metadataCatalog, topicContainer) { }
public WampRealm(string name, IWampRpcOperationCatalog catalog, IWampTopicContainer topicContainer) { Name = name; RpcCatalog = catalog; TopicContainer = topicContainer; }
public WampTestamentService(IWampHostedRealm realm) { mRealm = realm; mTopicContainer = realm.TopicContainer; realm.SessionClosed += OnSessionClosed; }
public SessionMetadataSubscriber(IWampTopicContainer topicContainer) { mTopicContainer = topicContainer; mTopicContainer.CreateTopicByUri(mOnJoinUri, true); mTopicContainer.CreateTopicByUri(mOnLeaveUri, true); }