Skip to content

Commit f1fe877

Browse files
mnoman09Michael Ng
authored andcommitted
chore: Updated change log and readme (#194)
1 parent 44272fa commit f1fe877

File tree

2 files changed

+52
-1
lines changed

2 files changed

+52
-1
lines changed

CHANGELOG.md

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,23 @@
1+
# Optimizely C# SDK Changelog
2+
3+
## 3.3.0
4+
September 26th, 2019
5+
6+
### New Features:
7+
- Configuration manager is set to PollingProjectConfigManager and for datafile will be started by default. Requests to download and update datafile are made in a separate thread and are scheduled with fixed delay.
8+
- Added support for event batching via the event processor.
9+
- Events generated by methods like `Activate`, `Track`, and `IsFeatureEnabled` will be held in a queue until the configured batch size is reached, or the configured flush interval has elapsed. Then, they will be combined into a request and sent to the event dispatcher.
10+
- To configure event batching, set the `MaxEventBatchSize` and `MaxEventFlushInterval` properties in the `OptimizelyFactory` using `OptimizelyFactory.SetBatchSize(int batchSize)` and `OptimizelyFactory.SetFlushInterval(TimeSpan flushInterval)` and then creating using `OptimizelyFactory.NewDefaultInstance`.
11+
- Event batching is enabled by default. `eventBatchSize` defaults to `10`. `eventFlushInterval` defaults to `30000` milliseconds.
12+
- Updated the `Dispose` method representing the process of closing the instance. When `Dispose` is called, any events waiting to be sent as part of a batched event request will be immediately batched and sent to the event dispatcher.
13+
- If any such requests were sent to the event dispatcher, `Stop` waits for provided `TimeoutInterval` before stoping, so that events get successfully dispatched.
14+
- `OptimizelyFactory` now provides support of setting configuration variables from ***App.config***, User will now be able to provide configuration variables of `HttpConfigManager` and `BatchEventProcessor` in ***App.config***. Steps of usage are provided in [README.md](https://github.com/optimizely/csharp-sdk#using-appconfig-in-optimizelyfactory).
15+
16+
### Deprecated
17+
- `EventBuilder` was deprecated and now we will be using `UserEventFactory` and `EventFactory` to create LogEvent Object.
18+
- Deprecated `Track` notifications in favor of explicit `LogEvent` notification.
19+
- New features will no longer be supported on `.net standard 1.6` and `.net 3.5`
20+
121
## 3.2.0
222
July 22nd, 2019
323

README.md

Lines changed: 32 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -68,7 +68,7 @@ The Optimizely client object accepts the following plug-ins:
6868
2. `ILogger` exposes a single method, Log, to record activity in the SDK. An example of a class to bridge the SDK's Log to Log4Net is provided in the Demo Application.
6969
3. `IErrorHandler` allows you to implement custom logic when Exceptions are thrown. Note that Exception information is already included in the Log.
7070
4. `ProjectConfigManager` exposes method for retrieving ProjectConfig instance. Examples include `FallbackProjectConfigManager` and `HttpProjectConfigManager`.
71-
71+
5. `EventProcessor` provides an intermediary processing stage within event production. It's assumed that the EventProcessor dispatches events via a provided EventDispatcher. Examples include `ForwardingEventProcessor` and `BatchEventProcessor`.
7272
These are optional plug-ins and default behavior is implement if none are provided.
7373

7474
#### OptimizelyFactory
@@ -127,6 +127,37 @@ User can provide variables using following procedure:
127127
Optimizely optimizely = OptimizelyFactory.newDefaultInstance();
128128
```
129129

130+
#### BatchEventProcessor
131+
[BatchEventProcessor](https://github.com/optimizely/csharp-sdk/blob/master/OptimizelySDK/Event/BatchEventProcessor.cs) is a batched implementation of the [EventProcessor](https://github.com/optimizely/csharp-sdk/blob/master/OptimizelySDK/Event/EventProcessor.cs)
132+
* Events passed to the BatchEventProcessor are immediately added to a BlockingQueue.
133+
* The BatchEventProcessor maintains a single consumer thread that pulls events off of the BlockingQueue and buffers them for either a configured batch size or for a maximum duration before the resulting LogEvent is sent to the NotificationManager.
134+
##### Use BatchEventProcessor
135+
136+
```
137+
EventProcessor eventProcessor = new BatchEventProcessor.Builder()
138+
.WithMaxBatchSize(MaxEventBatchSize)
139+
.WithFlushInterval(MaxEventFlushInterval)
140+
.WithEventDispatcher(eventDispatcher)
141+
.WithNotificationCenter(notificationCenter)
142+
.Build();
143+
```
144+
145+
##### Max Event Batch Size
146+
147+
The Max event batch size is used to limit eventQueue batch size and events will be dispatched when limit reaches.
148+
149+
##### Flush Interval
150+
151+
The FlushInterval is used to specify a delay between consecutive flush events call. Event batch will be dispatched after meeting this specified timeSpan.
152+
153+
##### Event Dispatcher
154+
155+
Custom EventDispatcher can be passed.
156+
157+
##### Notification Center
158+
159+
Custom NotificationCenter can be passed.
160+
130161
#### HttpProjectConfigManager
131162

132163
[`HttpProjectConfigManager`](https://github.com/optimizely/csharp-sdk/blob/master/OptimizelySDK/Config/HttpProjectConfigManager.cs)

0 commit comments

Comments
 (0)