Example #1
0
        public static void AddTask(ITask task, string name, TaskPosition type)
        {
            bool added = false;

            switch (type)
            {
            case TaskPosition.Before:
                added = TaskManager.AddBefore(task, name);
                break;

            case TaskPosition.After:
                added = TaskManager.AddAfter(task, name);
                break;

            case TaskPosition.Replace:
                added = TaskManager.Replace(name, task);
                break;

            default:
                GlobalLog.Error($"[BotStructure] Unknown task add type \"{type}\".");
                break;
            }
            if (!added)
            {
                GlobalLog.Error($"[BotStructure] Fail to add \"{name}\".");
                BotManager.Stop();
            }
        }
Example #2
0
        public async Task StartAsync(CancellationToken cancellationToken)
        {
            //eventler arasından en son kayıt getirilir.
            var lastTaskContentPosition = await _taskPositionRepository.FindAsync("TaskContent");

            var settings = new CatchUpSubscriptionSettings(
                maxLiveQueueSize: 10000,
                readBatchSize: 500,
                verboseLogging: false,
                resolveLinkTos: false,
                subscriptionName: "TaskContent");

            //ilgili event store'a subscribe olup eventler dinlenir, verilen son position değeri ile tekrar tekrar proje ayağa kalktığında eventleri gezmesini engelledik.
            _subscription = _eventStoreConnection.SubscribeToAllFrom(
                lastCheckpoint: lastTaskContentPosition?.Position,
                settings: settings,
                eventAppeared: async(sub, @event) =>
            {
                //Event Store’un kendine ait event‘leri ile ilgili işlem yapmamak için pas geçiyoruz.
                if (@event.OriginalEvent.EventType.StartsWith("$"))
                {
                    return;
                }

                try
                {
                    var eventType = Type.GetType(Encoding.UTF8.GetString(@event.OriginalEvent.Metadata));
                    var eventData = JsonSerializer.Deserialize(Encoding.UTF8.GetString(@event.OriginalEvent.Data), eventType);

                    if (eventType != typeof(AssignTaskModel) && eventType != typeof(ChangeTaskStatusModel) && eventType != typeof(CreateTaskModel))
                    {
                        return;
                    }

                    Save(eventData);

                    var doc = new TaskPosition
                    {
                        Id       = "TaskContent",
                        Key      = "TaskContent",
                        Position = @event.OriginalPosition.GetValueOrDefault()
                    };

                    await _taskPositionRepository.UpsertAsync(doc);
                }
                catch (Exception exception)
                {
                    _logger.LogError(exception, exception.Message);
                }
            });
        }
Example #3
0
 public override string ToString()
 {
     return("Attack: " + (TaskEntity != null ? TaskEntity.ToString() : TaskPosition.ToString(1)));
 }