/// <summary> /// /// </summary> /// <param name="bufferSize">size of each buffer</param> /// <param name="startPoolSize">how many buffers to create at start</param> /// <param name="maxPoolSize">max number of buffers in pool</param> /// <param name="logger"></param> public Pool(CreateNewItem createNew, int bufferSize, int startPoolSize, int maxPoolSize, ILogger logger = null) { if (startPoolSize > maxPoolSize) { throw new ArgumentException("Start size must be less than max size", nameof(startPoolSize)); } this.createNew = createNew ?? throw new ArgumentNullException(nameof(createNew)); this.bufferSize = bufferSize; this.maxPoolSize = maxPoolSize; this.logger = logger; pool = new T[maxPoolSize]; for (int i = 0; i < startPoolSize; i++) { Put(CreateNewBuffer()); } }
public CompareOption(Dictionary <string, string> columnsToCompare, CreateNewItem <T1, T2> createNewItem, ModifyItem <T1, T2> modifyItem, RemoveItem <T1> removeItem, GetSrcId <T1> getSrcId, GetDstId <T2> getDstId, string columnNameOfRemove = "IsDeleted") { if (columnsToCompare == null || columnsToCompare.Count == 0) { throw new Exception("No compare columns are specified."); } this.ColumnNameOfRemove = columnNameOfRemove; this.ColumnsToCompare = columnsToCompare; this.CreateNewItem = new CreateNewItem <T1, T2>(createNewItem); this.ModifyItem = new ModifyItem <T1, T2>(modifyItem); this.RemoveItem = new RemoveItem <T1>(removeItem); this.GetSrcId = new GetSrcId <T1>(getSrcId); this.GetDstId = new GetDstId <T2>(getDstId); }
public void AddListenerToCreate(CreateNewItem listener) { CreateEvent += listener; }
public IMessageHandling Handle(CreateNewItem command) { return(base.FromNewStream(command.ItemId, state => state.Update(new NewItemNeedsToBeAcceptedByTheServer(command.ItemId, command.Name)))); }