private MemoryMappedFile GetWritableFile() { if (this.mappedFile != null) { return(this.mappedFile); } this.mappedFile = AgentSubscription.GetMemoryMappedFile(this.name, true); return(this.mappedFile); }
public static AgentSubscription Load(string name) { MemoryMappedFile readOnlyFile = AgentSubscription.GetReadOnlyFile(name); if (readOnlyFile == null) { return(null); } AgentSubscription result; try { int num = 24; int num2 = 50; do { Thread.Sleep(10); result = null; using (MapFileStream mapFileStream = readOnlyFile.CreateView(0, num)) { byte[] array = new byte[24L]; int num3 = mapFileStream.Read(array, 0, num); if (num3 == num) { AgentSubscription.Header header = new AgentSubscription.Header(array); if (header.Magic == 96101745125713L && header.PayloadSize > 0L && header.PayloadSize <= 1048576L) { using (MapFileStream mapFileStream2 = readOnlyFile.CreateView(0, num + (int)header.PayloadSize)) { mapFileStream2.Seek((long)num, SeekOrigin.Begin); BinaryFormatter binaryFormatter = new BinaryFormatter(); try { result = (AgentSubscription)binaryFormatter.Deserialize(mapFileStream2); } catch (SerializationException) { goto IL_137; } } mapFileStream.Seek(0L, SeekOrigin.Begin); num3 = mapFileStream.Read(array, 0, num); if (num3 == num) { AgentSubscription.Header header2 = new AgentSubscription.Header(array); if (header.Magic == header2.Magic && header.PayloadSize == header2.PayloadSize && header.Ticks == header2.Ticks) { break; } } } } } IL_137 :; }while (num2-- > 0); } finally { readOnlyFile.Close(); } return(result); }
private static MemoryMappedFile GetReadOnlyFile(string name) { return(AgentSubscription.GetMemoryMappedFile(name, false)); }