/// <summary> /// Gets the events. /// </summary> protected void GetEvents(ConnectedClient client, DataPacket request) { byte[] buffer = request.Buffer; int index = ArgumentIndex; TimeRange timeRange = GetTimeRange(buffer, ref index); long dataFilterID = GetInt64(buffer, ref index); DataFilter dataFilter = null; if (dataFilterID > 0) { dataFilter = serverCache.DataFilterCache.Get(dataFilterID); if (dataFilter == null) { dataFilterID = 0; } } else { bool useCache = GetBool(buffer, ref index); dataFilter = GetDataFilter(typeof(Event), buffer, ref index); if (useCache) { dataFilterID = serverCache.GetNextID(); serverCache.DataFilterCache.Add(dataFilterID, dataFilter); } } int archiveBit = GetByte(buffer, ref index); List <Event> events = dataFilter == null ? new List <Event>() : archiveHolder.GetEvents(timeRange, dataFilter, archiveBit); int totalEventCount = events.Count; int blockCount = totalEventCount > 0 ? (int)Math.Ceiling((double)totalEventCount / EventBlockCapacity) : 1; int eventIndex = 0; buffer = client.OutBuf; for (int blockNumber = 1; blockNumber <= blockCount; blockNumber++) { ResponsePacket response = new ResponsePacket(request, buffer); index = ArgumentIndex; CopyInt32(blockNumber, buffer, ref index); CopyInt32(blockCount, buffer, ref index); CopyInt64(dataFilterID, buffer, ref index); CopyInt32(totalEventCount, buffer, ref index); int eventCount = Math.Min(totalEventCount - eventIndex, EventBlockCapacity); // events in this block CopyInt32(eventCount, buffer, ref index); for (int i = 0; i < eventCount; i++) { CopyEvent(events[eventIndex], buffer, ref index); eventIndex++; } response.BufferLength = index; client.SendResponse(response); } }
/// <summary> /// Gets the events. /// </summary> public List <Event> GetEvents(TimeRange timeRange, DataFilter filter, int archiveBit) { return(archiveHolder.GetEvents(timeRange, filter, archiveBit)); }
/// <summary> /// Gets the events. /// </summary> public List <Event> GetEvents(int archiveBit, TimeRange timeRange, DataFilter filter) { return(archiveHolder.GetEvents(archiveBit, timeRange, filter)); }