public static ContentCodeBag ParseCodes(byte[] buffer) { ContentCodeBag bag = new ContentCodeBag(); // add some codes to bootstrap us bag.AddCode("mccr", "dmap.contentcodesresponse", ContentType.Container); bag.AddCode("mdcl", "dmap.dictionary", ContentType.Container); bag.AddCode("mcnm", "dmap.contentcodesnumber", ContentType.Long); bag.AddCode("mcna", "dmap.contentcodesname", ContentType.String); bag.AddCode("mcty", "dmap.contentcodestype", ContentType.Short); bag.AddCode("mstt", "dmap.status", ContentType.Long); // some photo-specific codes bag.AddCode("ppro", "dpap.protocolversion", ContentType.Long); bag.AddCode("pret", "dpap.blah", ContentType.Container); ContentNode node = ContentParser.Parse(bag, buffer); foreach (ContentNode dictNode in (node.Value as ContentNode[])) { if (dictNode.Name != "dmap.dictionary") { continue; } ContentCode code = new ContentCode(); foreach (ContentNode item in (dictNode.Value as ContentNode[])) { switch (item.Name) { case "dmap.contentcodesnumber": code.Number = (int)item.Value; break; case "dmap.contentcodesname": code.Name = (string)item.Value; break; case "dmap.contentcodestype": code.Type = (ContentType)Enum.ToObject(typeof(ContentType), (short)item.Value); break; } } bag.codes[code.Number] = code; } return(bag); }
public static ContentCodeBag ParseCodes(byte[] buffer) { ContentCodeBag bag = new ContentCodeBag (); // add some codes to bootstrap us bag.AddCode ("mccr", "dmap.contentcodesresponse", ContentType.Container); bag.AddCode ("mdcl", "dmap.dictionary", ContentType.Container); bag.AddCode ("mcnm", "dmap.contentcodesnumber", ContentType.Long); bag.AddCode ("mcna", "dmap.contentcodesname", ContentType.String); bag.AddCode ("mcty", "dmap.contentcodestype", ContentType.Short); bag.AddCode ("mstt", "dmap.status", ContentType.Long); // some photo-specific codes bag.AddCode ("ppro", "dpap.protocolversion", ContentType.Long); bag.AddCode ("pret", "dpap.blah", ContentType.Container); ContentNode node = ContentParser.Parse (bag, buffer); foreach (ContentNode dictNode in (node.Value as ContentNode[])) { if (dictNode.Name != "dmap.dictionary") { continue; } ContentCode code = new ContentCode (); foreach (ContentNode item in (dictNode.Value as ContentNode[])) { switch (item.Name) { case "dmap.contentcodesnumber": code.Number = (int) item.Value; break; case "dmap.contentcodesname": code.Name = (string) item.Value; break; case "dmap.contentcodestype": code.Type = (ContentType) Enum.ToObject (typeof (ContentType), (short) item.Value); break; } } bag.codes[code.Number] = code; } return bag; }