public Track AddTrack(string trackName)
        {
            if (!Tracks.TryGetValue(trackName, out Track track))
            {
                track = new Track();
                TrackCreated?.Invoke(track);
                track.ResetVariables();
                Tracks.Add(trackName, track);
            }

            return(track);
        }
Example #2
0
        public string AddTrack(TrackCreateCommand createTrack)
        {
            WithValidation(() => CommandValidator.Validate(createTrack));
            var trackId      = Guid.NewGuid().ToString();
            var trackCreated = new TrackCreated
            {
                Binary    = createTrack.Binary,
                OwnerId   = createTrack.OwnerId,
                Timestamp = createTrack.Timestamp,
                TrackId   = trackId,
            };

            ActorModel.Tell(ActorModel.TrackPapaPath, trackCreated);
            return(trackId);
        }
Example #3
0
        private bool HandleTrackCreated(TrackCreated trackCreatedEvt)
        {
            if (trackCreatedEvt == null || trackCreatedEvt.Binary == null)
            {
                return(false);
            }

            PersistAsync(trackCreatedEvt, c =>
            {
                var state = new TrackState(trackCreatedEvt.TrackId, trackCreatedEvt.Binary, trackCreatedEvt.OwnerId);
                _trackIds = _trackIds.Add(c.TrackId);
                Context.ActorOf(Props.Create(() =>
                                             new TrackActor(state, _readStorageUpdateActor)), trackCreatedEvt.TrackId);
                TellTrackListUpdated();
            });
            return(true);
        }
Example #4
0
        /// <summary>
        /// Adds a track to a conference
        /// </summary>
        /// <param name="trackId">Unique identity of a track</param>
        /// <returns>An instance of <c>TrackId</c></returns>
        public Result <TrackId> AddTrack(TrackId trackId)
        {
            var addTrackResult = Track.Create(trackId);

            if (addTrackResult.IsFailure)
            {
                return(InvalidResult <TrackId> .Create(addTrackResult.Error.Value.Message));
            }

            var addedTrack   = addTrackResult.Data;
            var trackCreated = new TrackCreated(addedTrack.TrackId);

            AddEvent(trackCreated);

            _tracks.Add(addedTrack);
            var trackAddedToConference = new TrackAddedToConference(addedTrack.TrackId, ConferenceId);

            AddEvent(trackAddedToConference);

            return(SuccessResult <TrackId> .Create(addedTrack.TrackId));
        }