Beispiel #1
0
        internal Yield PublishEvent(DreamContext context, DreamMessage request, Result <DreamMessage> response)
        {
            DispatcherEvent ev;

            try {
                ev = new DispatcherEvent(request);
                _log.DebugFormat("{0} received event '{1}'", this.Self.Uri, ev.Id);
                if (ev.Channel.Scheme == "pubsub")
                {
                    response.Return(DreamMessage.Forbidden("events published into this service cannot be of scheme 'pubsub'"));
                    yield break;
                }
                _dispatcher.Dispatch(ev);
                response.Return(DreamMessage.Ok(ev.GetEventEnvelope()));
            } catch (Exception e) {
                response.Return(DreamMessage.BadRequest(e.Message));
            }
            yield break;
        }