public void TestWriteReadStream() { Journal journal = Journal.Open("test"); journal.Write("name123", 1, EntryBatch.Of("type1", "type1_instance1")); journal.Write("name456", 1, EntryBatch.Of("type2", "type2_instance1")); journal.Write("name123", 2, EntryBatch.Of("type1-1", "type1-1_instance1")); journal.Write("name123", 3, EntryBatch.Of("type1-2", "type1-2_instance1")); journal.Write("name456", 2, EntryBatch.Of("type2-1", "type2-1_instance1")); EntryStreamReader streamReader = journal.StreamReader(); EntryStream eventStream123 = streamReader.StreamFor("name123"); Assert.AreEqual(3, eventStream123.StreamVersion); Assert.AreEqual(3, eventStream123.Stream.Count); Assert.AreEqual(new EntryValue("name123", 1, "type1", "type1_instance1", ""), eventStream123.Stream[0]); Assert.AreEqual(new EntryValue("name123", 2, "type1-1", "type1-1_instance1", ""), eventStream123.Stream[1]); Assert.AreEqual(new EntryValue("name123", 3, "type1-2", "type1-2_instance1", ""), eventStream123.Stream[2]); EntryStream eventStream456 = streamReader.StreamFor("name456"); Assert.AreEqual(2, eventStream456.StreamVersion); Assert.AreEqual(2, eventStream456.Stream.Count); Assert.AreEqual(new EntryValue("name456", 1, "type2", "type2_instance1", ""), eventStream456.Stream[0]); Assert.AreEqual(new EntryValue("name456", 2, "type2-1", "type2-1_instance1", ""), eventStream456.Stream[1]); journal.Close(); }
public void TestWriteReadStreamSnapshot() { Journal journal = Journal.Open("test"); journal.Write("name123", 1, EntryBatch.Of("type1", "type1_instance1", "SNAPSHOT123-1")); journal.Write("name456", 1, EntryBatch.Of("type2", "type2_instance1", "SNAPSHOT456-1")); journal.Write("name123", 2, EntryBatch.Of("type1-1", "type1-1_instance1", "SNAPSHOT123-2")); journal.Write("name123", 3, EntryBatch.Of("type1-2", "type1-2_instance1")); journal.Write("name456", 2, EntryBatch.Of("type2-1", "type2-1_instance1", "SNAPSHOT456-2")); EntryStreamReader streamReader = journal.StreamReader(); EntryStream eventStream123 = streamReader.StreamFor("name123"); Assert.AreEqual("name123", eventStream123.StreamName); Assert.AreEqual(3, eventStream123.StreamVersion); Assert.AreEqual(1, eventStream123.Stream.Count); Assert.AreEqual("SNAPSHOT123-2", eventStream123.Snapshot); EntryStream eventStream456 = streamReader.StreamFor("name456"); Assert.AreEqual("name456", eventStream456.StreamName); Assert.AreEqual(2, eventStream456.StreamVersion); Assert.AreEqual(0, eventStream456.Stream.Count); Assert.AreEqual("SNAPSHOT456-2", eventStream456.Snapshot); journal.Close(); }
internal PersonRepository() { journal = Journal.Open("repo-test"); reader = journal.StreamReader(); }
static int Main(string[] args) { if (args.Length != 1) { printUsage(Environment.GetCommandLineArgs()[0]); return(-1); } string pstFile = args[0]; // Check if the file exists if (!File.Exists(pstFile)) { Console.WriteLine( "The specified PST file argument is incorrect. " + "Either it is not a file or the file does not exist"); return(-1); } IPst pst = new Pst(pstFile); var nameIdMap = pst.NameIDMap; var nameIdMapObject = nameIdMap.PropertyBag; Console.WriteLine("Bucket Count: {0}", nameIdMap.BucketCount); Console.WriteLine(Environment.NewLine); //Dump out all the Guids using (var guids = new GuidStreamReader(nameIdMapObject.OpenPropertyStream(PropId.KnownValue.PidTagNameidStreamGuid))) { Console.WriteLine("GUID Stream: (* indicates predefined guid)"); Console.WriteLine("\t [000] {0}*", Guid.Empty); Console.WriteLine("\t [001] {0}*", GuidStreamReader.MapiGuid); Console.WriteLine("\t [002] {0}*", GuidStreamReader.PublicStringsGuid); for (int i = 3; i < nameIdMap.PropertyCount; i++) { Console.WriteLine("\t [{0:D3}] {1}", i, guids.ReadGuid(i)); } } Console.WriteLine(Environment.NewLine); //Dump out the Entry Stream); using (var entries = new EntryStreamReader(nameIdMapObject.OpenPropertyStream(PropId.KnownValue.PidTagNameidStreamEntry))) { Console.WriteLine("Entry Stream: "); for (int i = 0; i < nameIdMap.PropertyCount; i++) { Console.WriteLine("\t [{0:D3}] {1}", i, entries.ReadEntry(i)); } } Console.WriteLine(Environment.NewLine); using (var strings = new BinaryReader(nameIdMapObject.OpenPropertyStream(PropId.KnownValue.PidTagNameidStreamString))) { Console.WriteLine("String Stream: "); var streamLength = strings.BaseStream.Length; while (strings.BaseStream.Position < streamLength) { var stringLength = strings.ReadInt32(); var stringBytes = strings.ReadBytes(stringLength); Console.WriteLine(Encoding.Unicode.GetString(stringBytes)); //seek to nearest 4-byte boundary var offset = stringLength % 4; if (offset != 0) { strings.BaseStream.Seek((4 - offset), SeekOrigin.Current); } } } Console.WriteLine("Hash Buckets:"); for (int i = 0; i < nameIdMap.BucketCount; i++) { var bucketProperty = i + 0x1000; if (nameIdMapObject.PropertyExists((PropId)bucketProperty)) { var bytes = nameIdMapObject.ReadProperty((PropId)bucketProperty); var nameIdbytes = new byte[8]; for (int x = 0; x < bytes.Length; x += 8) { Array.Copy(bytes, x, nameIdbytes, 0, 8); var nameId = new NameId(nameIdbytes); Console.WriteLine("[{0:D3}] Hash: 0x{1:X8}, Guid Index: {2}, \r\n\tProperty Index: 0x{3:X4}, Is String? {4}", i, nameId.Id, nameId.GuidIndex, (nameId.PropertyIndex + 0x8000), nameId.IsString); Console.WriteLine(); } } } foreach (var np in nameIdMap.NamedProperties) { Console.WriteLine(); Console.WriteLine(np.ToString()); Console.WriteLine(); } Console.ReadKey(true); return(0); }
internal ProductRepository(string journalName) { journal = Journal.Open(journalName); reader = journal.StreamReader(); }
internal PersonRepository() { this.journal = Journal.Open("repo-test"); this.reader = this.journal.StreamReader(); }