public IEnumerable<Activity> LoadStream(byte[] streamId, ActivityStreamOptions options)
{
options = options ?? ActivityStreamOptions.Default;
var statement = LoadActivityStreamQueryTemplateDesc;
SortedSet<Activity> activities = new SortedSet<Activity>(Activity.ComparerDesc);
var sortOrder = options.SortOrder;
var paging = options.Paging;
if (sortOrder == SortOrder.Ascending)
{
statement = LoadActivityStreamQueryTemplateAsc;
activities = new SortedSet<Activity>(Activity.ComparerAsc);
}
var streamIdQuery = Convert.ToBase64String(streamId);
var prepared = session
.Prepare(statement)
.Bind(streamIdQuery, paging.Timestamp)
.SetAutoPage(false)
.SetPageSize(paging.Take);
var rowSet = session.Execute(prepared);
foreach (var row in rowSet.GetRows())
{
using (var stream = new MemoryStream(row.GetValue<byte[]>("data")))
{
var storedActivity = (Activity)serializer.Deserialize(stream);
activities.Add(storedActivity);
}
}
return activities;
}