diff --git a/ArchiSteamFarm.sln b/ArchiSteamFarm.sln
new file mode 100644
index 000000000..38d3f9215
--- /dev/null
+++ b/ArchiSteamFarm.sln
@@ -0,0 +1,22 @@
+
+Microsoft Visual Studio Solution File, Format Version 12.00
+# Visual Studio 14
+VisualStudioVersion = 14.0.23107.0
+MinimumVisualStudioVersion = 10.0.40219.1
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ArchiSteamFarm", "ArchiSteamFarm\ArchiSteamFarm.csproj", "{35AF7887-08B9-40E8-A5EA-797D8B60B30C}"
+EndProject
+Global
+ GlobalSection(SolutionConfigurationPlatforms) = preSolution
+ Debug|Any CPU = Debug|Any CPU
+ Release|Any CPU = Release|Any CPU
+ EndGlobalSection
+ GlobalSection(ProjectConfigurationPlatforms) = postSolution
+ {35AF7887-08B9-40E8-A5EA-797D8B60B30C}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {35AF7887-08B9-40E8-A5EA-797D8B60B30C}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {35AF7887-08B9-40E8-A5EA-797D8B60B30C}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {35AF7887-08B9-40E8-A5EA-797D8B60B30C}.Release|Any CPU.Build.0 = Release|Any CPU
+ EndGlobalSection
+ GlobalSection(SolutionProperties) = preSolution
+ HideSolutionNode = FALSE
+ EndGlobalSection
+EndGlobal
diff --git a/ArchiSteamFarm/App.config b/ArchiSteamFarm/App.config
new file mode 100644
index 000000000..8e1564635
--- /dev/null
+++ b/ArchiSteamFarm/App.config
@@ -0,0 +1,6 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git a/ArchiSteamFarm/ArchiHandler.cs b/ArchiSteamFarm/ArchiHandler.cs
new file mode 100644
index 000000000..260bf03ae
--- /dev/null
+++ b/ArchiSteamFarm/ArchiHandler.cs
@@ -0,0 +1,114 @@
+using SteamKit2;
+using SteamKit2.Internal;
+
+namespace ArchiSteamFarm {
+ internal sealed class ArchiHandler : ClientMsgHandler {
+
+ internal sealed class PurchaseResponseCallback : CallbackMsg {
+ internal enum EPurchaseResult {
+ Unknown,
+ OK,
+ AlreadyOwned = 9,
+ InvalidKey = 14,
+ DuplicatedKey = 15,
+ OnCooldown = 53
+ }
+
+ internal EResult Result { get; private set; }
+ internal EPurchaseResult PurchaseResult { get; private set; }
+ internal int ErrorCode { get; private set; }
+ internal byte[] ReceiptInfo { get; private set; }
+
+ internal PurchaseResponseCallback(CMsgClientPurchaseResponse body) {
+ Result = (EResult) body.eresult;
+ ErrorCode = body.purchase_result_details;
+ ReceiptInfo = body.purchase_receipt_info;
+
+ if (Result == EResult.OK) {
+ PurchaseResult = EPurchaseResult.OK;
+ } else {
+ PurchaseResult = (EPurchaseResult) ErrorCode;
+ }
+ }
+ }
+
+ internal sealed class NotificationCallback : CallbackMsg {
+ internal enum ENotificationType {
+ Unknown = 0,
+ Trading = 1,
+ }
+
+ internal ENotificationType NotificationType { get; private set; }
+
+ internal NotificationCallback(CMsgClientUserNotifications.Notification body) {
+ uint notificationType = body.user_notification_type;
+ switch (notificationType) {
+ case 1:
+ NotificationType = (ENotificationType) notificationType;
+ break;
+ default:
+ NotificationType = ENotificationType.Unknown;
+ break;
+ }
+ }
+ }
+
+ internal void AcceptClanInvite(ulong clanID) {
+ var request = new ClientMsg((int) EMsg.ClientAcknowledgeClanInvite);
+ request.Body.GroupID = clanID;
+ request.Body.AcceptInvite = true;
+ Client.Send(request);
+ }
+
+ internal void DeclineClanInvite(ulong clanID) {
+ var request = new ClientMsg((int) EMsg.ClientAcknowledgeClanInvite);
+ request.Body.GroupID = clanID;
+ request.Body.AcceptInvite = false;
+ Client.Send(request);
+ }
+
+ internal void PlayGames(params ulong[] gameIDs) {
+ var request = new ClientMsgProtobuf(EMsg.ClientGamesPlayed);
+ foreach (ulong gameID in gameIDs) {
+ if (gameID != 0) {
+ request.Body.games_played.Add(new CMsgClientGamesPlayed.GamePlayed {
+ game_id = new GameID(gameID),
+ });
+ }
+ }
+ Client.Send(request);
+ }
+
+ // Will provide result in ClientPurchaseResponse, regardless if success or not
+ internal void RedeemKey(string key) {
+ var request = new ClientMsgProtobuf(EMsg.ClientRegisterKey);
+ request.Body.key = key;
+ Client.Send(request);
+ }
+
+ public sealed override void HandleMsg(IPacketMsg packetMsg) {
+ if (packetMsg != null) {
+ switch (packetMsg.MsgType) {
+ case EMsg.ClientPurchaseResponse:
+ HandlePurchaseResponse(packetMsg);
+ break;
+ case EMsg.ClientUserNotifications:
+ HandleUserNotifications(packetMsg);
+ break;
+ }
+ }
+ }
+
+ private void HandlePurchaseResponse(IPacketMsg packetMsg) {
+ var response = new ClientMsgProtobuf(packetMsg);
+ Client.PostCallback(new PurchaseResponseCallback(response.Body));
+ }
+
+ private void HandleUserNotifications(IPacketMsg packetMsg) {
+ var response = new ClientMsgProtobuf(packetMsg);
+ foreach (var notification in response.Body.notifications) {
+ Client.PostCallback(new NotificationCallback(notification));
+ }
+ }
+ }
+}
\ No newline at end of file
diff --git a/ArchiSteamFarm/ArchiSteamFarm.csproj b/ArchiSteamFarm/ArchiSteamFarm.csproj
new file mode 100644
index 000000000..1ca6df779
--- /dev/null
+++ b/ArchiSteamFarm/ArchiSteamFarm.csproj
@@ -0,0 +1,82 @@
+
+
+
+
+ Debug
+ AnyCPU
+ {35AF7887-08B9-40E8-A5EA-797D8B60B30C}
+ Exe
+ Properties
+ ArchiSteamFarm
+ ArchiSteamFarm
+ v4.5
+ 512
+
+
+ AnyCPU
+ true
+ full
+ false
+ bin\Debug\
+ DEBUG;TRACE
+ prompt
+ 4
+
+
+ AnyCPU
+ pdbonly
+ true
+ bin\Release\
+ TRACE
+ prompt
+ 4
+
+
+
+ ..\packages\HtmlAgilityPack.1.4.9\lib\Net45\HtmlAgilityPack.dll
+ True
+
+
+ ..\packages\protobuf-net.2.0.0.668\lib\net40\protobuf-net.dll
+ True
+
+
+ ..\packages\SteamKit2.1.6.5\lib\net40\SteamKit2.dll
+ True
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/ArchiSteamFarm/ArchiWebHandler.cs b/ArchiSteamFarm/ArchiWebHandler.cs
new file mode 100644
index 000000000..736c4c54d
--- /dev/null
+++ b/ArchiSteamFarm/ArchiWebHandler.cs
@@ -0,0 +1,251 @@
+using HtmlAgilityPack;
+using SteamKit2;
+using System;
+using System.Collections.Generic;
+using System.Globalization;
+using System.Net;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace ArchiSteamFarm {
+ internal class ArchiWebHandler {
+ private const int Timeout = 1000 * 15; // In miliseconds
+ private readonly Bot Bot;
+ private readonly string ApiKey;
+
+ private ulong SteamID;
+ private string VanityURL;
+ private readonly Dictionary SteamCookieDictionary = new Dictionary();
+
+ // This is required because home_process request must be done on final URL
+ private string GetHomeProcess() {
+ if (!string.IsNullOrEmpty(VanityURL)) {
+ return "http://steamcommunity.com/id/" + VanityURL + "/home_process";
+ } else if (SteamID != 0) {
+ return "http://steamcommunity.com/profiles/" + SteamID + "/home_process";
+ }
+ return null;
+ }
+
+ internal ArchiWebHandler(Bot bot, string apiKey) {
+ Bot = bot;
+ ApiKey = apiKey;
+ }
+
+ internal void Init(SteamClient steamClient, string webAPIUserNonce, string vanityURL) {
+ if (steamClient == null || steamClient.SteamID == null || string.IsNullOrEmpty(webAPIUserNonce) || string.IsNullOrEmpty(vanityURL)) {
+ return;
+ }
+
+ SteamID = steamClient.SteamID;
+ VanityURL = vanityURL;
+
+ string sessionID = Convert.ToBase64String(Encoding.UTF8.GetBytes(SteamID.ToString(CultureInfo.InvariantCulture)));
+
+ // Generate an AES session key
+ byte[] sessionKey = CryptoHelper.GenerateRandomBlock(32);
+
+ // RSA encrypt it with the public key for the universe we're on
+ byte[] cryptedSessionKey = null;
+ using (RSACrypto rsa = new RSACrypto(KeyDictionary.GetPublicKey(steamClient.ConnectedUniverse))) {
+ cryptedSessionKey = rsa.Encrypt(sessionKey);
+ }
+
+ // Copy our login key
+ byte[] loginKey = new byte[20];
+ Array.Copy(Encoding.ASCII.GetBytes(webAPIUserNonce), loginKey, webAPIUserNonce.Length);
+
+ // AES encrypt the loginkey with our session key
+ byte[] cryptedLoginKey = CryptoHelper.SymmetricEncrypt(loginKey, sessionKey);
+
+ // Send the magic
+ KeyValue authResult;
+ Logging.LogGenericInfo(Bot.BotName, "Logging in to ISteamUserAuth...");
+ using (dynamic iSteamUserAuth = WebAPI.GetInterface("ISteamUserAuth")) {
+ iSteamUserAuth.Timeout = Timeout;
+
+ try {
+ authResult = iSteamUserAuth.AuthenticateUser(
+ steamid: SteamID,
+ sessionkey: Encoding.ASCII.GetString(WebUtility.UrlEncodeToBytes(cryptedSessionKey, 0, cryptedSessionKey.Length)),
+ encrypted_loginkey: Encoding.ASCII.GetString(WebUtility.UrlEncodeToBytes(cryptedLoginKey, 0, cryptedLoginKey.Length)),
+ method: WebRequestMethods.Http.Post,
+ secure: true
+ );
+ } catch (Exception e) {
+ Logging.LogGenericException(Bot.BotName, e);
+ steamClient.Disconnect(); // We may get 403 if we use the same webAPIUserNonce twice
+ return;
+ }
+ }
+
+ if (authResult == null) {
+ steamClient.Disconnect(); // Try again
+ return;
+ }
+
+ Logging.LogGenericInfo(Bot.BotName, "Success!");
+
+ string steamLogin = authResult["token"].AsString();
+ string steamLoginSecure = authResult["tokensecure"].AsString();
+
+ SteamCookieDictionary.Clear();
+ SteamCookieDictionary.Add("sessionid", sessionID);
+ SteamCookieDictionary.Add("steamLogin", steamLogin);
+ SteamCookieDictionary.Add("steamLoginSecure", steamLoginSecure);
+ SteamCookieDictionary.Add("birthtime", "-473356799"); // ( ͡° ͜ʖ ͡°)
+
+ Bot.Trading.CheckTrades();
+ }
+
+ internal List GetTradeOffers() {
+ KeyValue response;
+ using (dynamic iEconService = WebAPI.GetInterface("IEconService")) {
+ // Timeout
+ iEconService.Timeout = Timeout;
+
+ try {
+ response = iEconService.GetTradeOffers(
+ key: ApiKey,
+ get_received_offers: 1,
+ active_only: 1,
+ secure: true
+ );
+ } catch (Exception e) {
+ Logging.LogGenericException(Bot.BotName, e);
+ return null;
+ }
+ }
+
+ if (response == null) {
+ return null;
+ }
+
+ List result = new List();
+ foreach (KeyValue trade in response["trade_offers_received"].Children) {
+ SteamTradeOffer tradeOffer = new SteamTradeOffer {
+ tradeofferid = trade["tradeofferid"].AsString(),
+ accountid_other = trade["accountid_other"].AsInteger(),
+ message = trade["message"].AsString(),
+ expiration_time = trade["expiration_time"].AsInteger(),
+ trade_offer_state = (SteamTradeOffer.ETradeOfferState) trade["trade_offer_state"].AsInteger(),
+ items_to_give = new List(),
+ items_to_receive = new List(),
+ is_our_offer = trade["is_our_offer"].AsBoolean(),
+ time_created = trade["time_created"].AsInteger(),
+ time_updated = trade["time_updated"].AsInteger(),
+ from_real_time_trade = trade["from_real_time_trade"].AsBoolean()
+ };
+ foreach (KeyValue item in trade["items_to_give"].Children) {
+ tradeOffer.items_to_give.Add(new SteamItem {
+ appid = item["appid"].AsString(),
+ contextid = item["contextid"].AsString(),
+ assetid = item["assetid"].AsString(),
+ currencyid = item["currencyid"].AsString(),
+ classid = item["classid"].AsString(),
+ instanceid = item["instanceid"].AsString(),
+ amount = item["amount"].AsString(),
+ missing = item["missing"].AsBoolean()
+ });
+ }
+ foreach (KeyValue item in trade["items_to_receive"].Children) {
+ tradeOffer.items_to_receive.Add(new SteamItem {
+ appid = item["appid"].AsString(),
+ contextid = item["contextid"].AsString(),
+ assetid = item["assetid"].AsString(),
+ currencyid = item["currencyid"].AsString(),
+ classid = item["classid"].AsString(),
+ instanceid = item["instanceid"].AsString(),
+ amount = item["amount"].AsString(),
+ missing = item["missing"].AsBoolean()
+ });
+ }
+ result.Add(tradeOffer);
+ }
+ return result;
+ }
+
+ internal async Task AcceptTradeOffer(ulong tradeID) {
+ if (tradeID == 0) {
+ return false;
+ }
+
+ string sessionID;
+ if (!SteamCookieDictionary.TryGetValue("sessionid", out sessionID)) {
+ return false;
+ }
+
+ string referer = "https://steamcommunity.com/tradeoffer/" + tradeID + "/";
+ string request = referer + "accept";
+
+ Dictionary postData = new Dictionary() {
+ {"sessionid", sessionID},
+ {"serverid", "1"},
+ {"tradeofferid", tradeID.ToString()}
+ };
+
+ return await Utilities.UrlPostRequest(request, postData, SteamCookieDictionary, referer).ConfigureAwait(false);
+ }
+
+ internal bool DeclineTradeOffer(ulong tradeID) {
+ if (tradeID == 0) {
+ return false;
+ }
+
+ KeyValue response;
+ using (dynamic iEconService = WebAPI.GetInterface("IEconService")) {
+ // Timeout
+ iEconService.Timeout = Timeout;
+
+ try {
+ response = iEconService.DeclineTradeOffer(
+ key: ApiKey,
+ tradeofferid: tradeID.ToString(),
+ method: WebRequestMethods.Http.Post,
+ secure: true
+ );
+ } catch (Exception e) {
+ Logging.LogGenericException(Bot.BotName, e);
+ return false;
+ }
+ }
+
+ return response != null; // Steam API doesn't respond with any error code, assume any response is a success
+ }
+
+ internal async Task LeaveClan(ulong clanID) {
+ if (clanID == 0) {
+ return;
+ }
+
+ string sessionID;
+ if (!SteamCookieDictionary.TryGetValue("sessionid", out sessionID)) {
+ return;
+ }
+
+ string request = GetHomeProcess();
+ Dictionary postData = new Dictionary() {
+ {"sessionID", sessionID},
+ {"action", "leaveGroup"},
+ {"groupId", clanID.ToString()}
+ };
+ await Utilities.UrlPostRequest(request, postData, SteamCookieDictionary).ConfigureAwait(false);
+ }
+
+ internal async Task GetBadgePage(int page) {
+ HtmlDocument result = null;
+ if (SteamID != 0 && page != 0) {
+ result = await Utilities.UrlToHtmlDocument("http://steamcommunity.com/profiles/" + SteamID + "/badges?p=" + page, SteamCookieDictionary).ConfigureAwait(false);
+ }
+ return result;
+ }
+
+ internal async Task GetGameCardsPage(ulong appID) {
+ HtmlDocument result = null;
+ if (SteamID != 0 && appID != 0) {
+ result = await Utilities.UrlToHtmlDocument("http://steamcommunity.com/profiles/" + SteamID + "/gamecards/" + appID, SteamCookieDictionary).ConfigureAwait(false);
+ }
+ return result;
+ }
+ }
+}
diff --git a/ArchiSteamFarm/Bot.cs b/ArchiSteamFarm/Bot.cs
new file mode 100644
index 000000000..a9024ea63
--- /dev/null
+++ b/ArchiSteamFarm/Bot.cs
@@ -0,0 +1,336 @@
+using SteamKit2;
+using System;
+using System.Collections.Generic;
+using System.IO;
+using System.Security.Cryptography;
+using System.Threading;
+using System.Threading.Tasks;
+using System.Xml;
+
+namespace ArchiSteamFarm {
+ internal class Bot {
+ private const byte CallbackSleep = 100; // In miliseconds
+
+ private readonly Dictionary Config = new Dictionary();
+
+ internal readonly string BotName;
+ private readonly string ConfigFile;
+ private readonly string SentryFile;
+
+ private readonly CardsFarmer CardsFarmer;
+
+ internal ulong BotID { get; private set; }
+ private string AuthCode, TwoFactorAuth;
+
+ internal ArchiHandler ArchiHandler { get; private set; }
+ internal ArchiWebHandler ArchiWebHandler { get; private set; }
+ internal CallbackManager CallbackManager { get; private set; }
+ internal SteamClient SteamClient { get; private set; }
+ internal SteamFriends SteamFriends { get; private set; }
+ internal SteamUser SteamUser { get; private set; }
+ internal Trading Trading { get; private set; }
+
+ // Config variables
+ private bool Enabled { get { return bool.Parse(Config["Enabled"]); } }
+ private string SteamLogin { get { return Config["SteamLogin"]; } }
+ private string SteamPassword { get { return Config["SteamPassword"]; } }
+ private string SteamNickname { get { return Config["SteamNickname"]; } }
+ private string SteamApiKey { get { return Config["SteamApiKey"]; } }
+ internal ulong SteamMasterID { get { return ulong.Parse(Config["SteamMasterID"]); } }
+ internal ulong SteamMasterClanID { get { return ulong.Parse(Config["SteamMasterClanID"]); } }
+
+ internal Bot (string botName) {
+ BotName = botName;
+ CardsFarmer = new CardsFarmer(this);
+
+ ConfigFile = Path.Combine(Program.ConfigDirectoryPath, BotName + ".xml");
+ SentryFile = Path.Combine(Program.ConfigDirectoryPath, BotName + ".bin");
+
+ ReadConfig();
+
+ if (!Enabled) {
+ return;
+ }
+ Start();
+ }
+
+ private void ReadConfig() {
+ using (XmlReader reader = XmlReader.Create(ConfigFile)) {
+ while (reader.Read()) {
+ if (reader.NodeType != XmlNodeType.Element) {
+ continue;
+ }
+
+ string key = reader.Name;
+ if (string.IsNullOrEmpty(key)) {
+ continue;
+ }
+
+ string value = reader.GetAttribute("value");
+ if (string.IsNullOrEmpty(value)) {
+ continue;
+ }
+
+ Config.Add(key, value);
+ }
+ }
+ }
+
+ internal void Start() {
+ if (SteamClient != null) {
+ return;
+ }
+
+ SteamClient = new SteamClient();
+
+ ArchiHandler = new ArchiHandler();
+ SteamClient.AddHandler(ArchiHandler);
+
+ CallbackManager = new CallbackManager(SteamClient);
+ CallbackManager.Subscribe(OnConnected);
+ CallbackManager.Subscribe(OnDisconnected);
+
+ SteamFriends = SteamClient.GetHandler();
+ CallbackManager.Subscribe(OnFriendsList);
+ CallbackManager.Subscribe(OnFriendMsg);
+
+ SteamUser = SteamClient.GetHandler();
+ CallbackManager.Subscribe(OnAccountInfo);
+ CallbackManager.Subscribe(OnLoggedOff);
+ CallbackManager.Subscribe(OnLoggedOn);
+ CallbackManager.Subscribe(OnMachineAuth);
+
+ CallbackManager.Subscribe(OnNotification);
+ CallbackManager.Subscribe(OnPurchaseResponse);
+
+ ArchiWebHandler = new ArchiWebHandler(this, SteamApiKey);
+ Trading = new Trading(this);
+
+ SteamClient.Connect();
+ Task.Run(() => HandleCallbacks());
+ }
+
+ internal void Stop() {
+ if (SteamClient == null) {
+ return;
+ }
+
+ SteamClient.Disconnect();
+ SteamClient = null;
+ CallbackManager = null;
+ }
+
+ internal void PlayGame(params ulong[] gameIDs) {
+ ArchiHandler.PlayGames(gameIDs);
+ }
+
+ private void HandleCallbacks() {
+ TimeSpan timeSpan = TimeSpan.FromMilliseconds(CallbackSleep);
+ while (CallbackManager != null) {
+ CallbackManager.RunWaitCallbacks(timeSpan);
+ }
+ }
+
+ private void OnConnected(SteamClient.ConnectedCallback callback) {
+ if (callback == null) {
+ return;
+ }
+
+ if (callback.Result != EResult.OK) {
+ Logging.LogGenericError(BotName, "Unable to connect to Steam: " + callback.Result);
+ return;
+ }
+
+ Logging.LogGenericInfo(BotName, "Connected to Steam!");
+
+ byte[] sentryHash = null;
+ if (File.Exists(SentryFile)) {
+ byte[] sentryFileContent = File.ReadAllBytes(SentryFile);
+ sentryHash = CryptoHelper.SHAHash(sentryFileContent);
+ }
+
+ SteamUser.LogOn(new SteamUser.LogOnDetails {
+ Username = SteamLogin,
+ Password = SteamPassword,
+ AuthCode = AuthCode,
+ TwoFactorCode = TwoFactorAuth,
+ SentryFileHash = sentryHash
+ });
+ }
+
+ private void OnDisconnected(SteamClient.DisconnectedCallback callback) {
+ if (callback == null) {
+ return;
+ }
+
+ Logging.LogGenericWarning(BotName, "Disconnected from Steam, reconnecting...");
+ Thread.Sleep(TimeSpan.FromMilliseconds(CallbackSleep));
+ SteamClient.Connect();
+ }
+
+ private void OnFriendsList(SteamFriends.FriendsListCallback callback) {
+ if (callback == null) {
+ return;
+ }
+
+ foreach (var friend in callback.FriendList) {
+ if (friend.Relationship != EFriendRelationship.RequestRecipient) {
+ continue;
+ }
+
+ SteamID steamID = friend.SteamID;
+ switch (steamID.AccountType) {
+ case EAccountType.Clan:
+ //ArchiHandler.AcceptClanInvite(steamID);
+ break;
+ default:
+ if (steamID == SteamMasterID) {
+ SteamFriends.AddFriend(steamID);
+ } else {
+ SteamFriends.RemoveFriend(steamID);
+ }
+ break;
+ }
+ }
+ }
+
+ private void OnFriendMsg(SteamFriends.FriendMsgCallback callback) {
+ if (callback == null) {
+ return;
+ }
+
+ if (callback.EntryType != EChatEntryType.ChatMsg) {
+ return;
+ }
+
+ ulong steamID = callback.Sender;
+ if (steamID != SteamMasterID) {
+ return;
+ }
+
+ string message = callback.Message;
+ if (string.IsNullOrEmpty(message)) {
+ return;
+ }
+
+ if (message.Length == 17 && message[5] == '-' && message[11] == '-') {
+ ArchiHandler.RedeemKey(message);
+ }
+ }
+
+ private void OnAccountInfo(SteamUser.AccountInfoCallback callback) {
+ if (callback == null) {
+ return;
+ }
+
+ SteamFriends.SetPersonaState(EPersonaState.Online);
+ }
+
+ private void OnLoggedOff(SteamUser.LoggedOffCallback callback) {
+ if (callback == null) {
+ return;
+ }
+
+ Logging.LogGenericInfo(BotName, "Logged off of Steam: " + callback.Result);
+ }
+
+ private async void OnLoggedOn(SteamUser.LoggedOnCallback callback) {
+ if (callback == null) {
+ return;
+ }
+
+ if (callback.ClientSteamID != 0) {
+ BotID = callback.ClientSteamID;
+ }
+
+ EResult result = callback.Result;
+ switch (result) {
+ case EResult.AccountLogonDenied:
+ AuthCode = Program.GetSteamGuardCode(SteamLogin, false);
+ break;
+ case EResult.AccountLoginDeniedNeedTwoFactor:
+ TwoFactorAuth = Program.GetSteamGuardCode(SteamLogin, true);
+ break;
+ case EResult.OK:
+ Logging.LogGenericInfo(BotName, "Successfully logged on!");
+ SteamFriends.SetPersonaName(SteamNickname);
+ ArchiWebHandler.Init(SteamClient, callback.WebAPIUserNonce, callback.VanityURL);
+
+ ulong clanID = SteamMasterClanID;
+ if (clanID != 0) {
+ SteamFriends.JoinChat(clanID);
+ }
+
+ await CardsFarmer.StartFarming().ConfigureAwait(false);
+ break;
+ default:
+ Logging.LogGenericWarning(BotName, "Unable to login to Steam: " + callback.Result + " / " + callback.ExtendedResult + ", retrying...");
+ Stop();
+ Thread.Sleep(5000);
+ Start();
+ break;
+ }
+ }
+
+ private void OnMachineAuth(SteamUser.UpdateMachineAuthCallback callback) {
+ if (callback == null) {
+ return;
+ }
+
+ Logging.LogGenericInfo(BotName, "Updating sentryfile...");
+
+ int fileSize;
+ byte[] sentryHash;
+
+ using (FileStream fileStream = File.Open(SentryFile, FileMode.OpenOrCreate, FileAccess.ReadWrite)) {
+ fileStream.Seek(callback.Offset, SeekOrigin.Begin);
+ fileStream.Write(callback.Data, 0, callback.BytesToWrite);
+ fileSize = (int) fileStream.Length;
+
+ fileStream.Seek(0, SeekOrigin.Begin);
+ using (SHA1CryptoServiceProvider sha = new SHA1CryptoServiceProvider()) {
+ sentryHash = sha.ComputeHash(fileStream);
+ }
+ }
+
+
+ // Inform the steam servers that we're accepting this sentry file
+ SteamUser.SendMachineAuthResponse(new SteamUser.MachineAuthDetails {
+ JobID = callback.JobID,
+ FileName = callback.FileName,
+ BytesWritten = callback.BytesToWrite,
+ FileSize = fileSize,
+ Offset = callback.Offset,
+ Result = EResult.OK,
+ LastError = 0,
+ OneTimePassword = callback.OneTimePassword,
+ SentryFileHash = sentryHash,
+ });
+ }
+
+ private void OnNotification(ArchiHandler.NotificationCallback callback) {
+ if (callback == null) {
+ return;
+ }
+
+ switch (callback.NotificationType) {
+ case ArchiHandler.NotificationCallback.ENotificationType.Trading:
+ Trading.CheckTrades();
+ break;
+ }
+ }
+
+ private async void OnPurchaseResponse(ArchiHandler.PurchaseResponseCallback callback) {
+ if (callback == null) {
+ return;
+ }
+
+ var purchaseResult = callback.PurchaseResult;
+ SteamFriends.SendChatMessage(SteamMasterID, EChatEntryType.ChatMsg, "Status: " + purchaseResult);
+
+ if (purchaseResult == ArchiHandler.PurchaseResponseCallback.EPurchaseResult.OK) {
+ await CardsFarmer.StartFarming().ConfigureAwait(false);
+ }
+ }
+ }
+}
diff --git a/ArchiSteamFarm/CMsgClientClanInviteAction.cs b/ArchiSteamFarm/CMsgClientClanInviteAction.cs
new file mode 100644
index 000000000..360dd5582
--- /dev/null
+++ b/ArchiSteamFarm/CMsgClientClanInviteAction.cs
@@ -0,0 +1,47 @@
+using SteamKit2;
+using SteamKit2.Internal;
+using System.IO;
+
+namespace ArchiSteamFarm {
+ ///
+ /// Message used to Accept or Decline a group(clan) invite.
+ ///
+ internal sealed class CMsgClientClanInviteAction : ISteamSerializableMessage, ISteamSerializable {
+ EMsg ISteamSerializableMessage.GetEMsg() {
+ return EMsg.ClientAcknowledgeClanInvite;
+ }
+
+ public CMsgClientClanInviteAction() {
+ }
+
+ ///
+ /// Group invited to.
+ ///
+ internal ulong GroupID = 0;
+
+ ///
+ /// To accept or decline the invite.
+ ///
+ internal bool AcceptInvite = true;
+
+ void ISteamSerializable.Serialize(Stream stream) {
+ try {
+ BinaryWriter binaryWriter = new BinaryWriter(stream);
+ binaryWriter.Write(GroupID);
+ binaryWriter.Write(AcceptInvite);
+ } catch {
+ throw new IOException();
+ }
+ }
+
+ void ISteamSerializable.Deserialize(Stream stream) {
+ try {
+ BinaryReader binaryReader = new BinaryReader(stream);
+ GroupID = binaryReader.ReadUInt64();
+ AcceptInvite = binaryReader.ReadBoolean();
+ } catch {
+ throw new IOException();
+ }
+ }
+ }
+}
diff --git a/ArchiSteamFarm/CardsFarmer.cs b/ArchiSteamFarm/CardsFarmer.cs
new file mode 100644
index 000000000..257c96b83
--- /dev/null
+++ b/ArchiSteamFarm/CardsFarmer.cs
@@ -0,0 +1,109 @@
+using HtmlAgilityPack;
+using System.Collections.Generic;
+using System.Threading;
+using System.Threading.Tasks;
+
+namespace ArchiSteamFarm {
+ internal class CardsFarmer {
+ private readonly Bot Bot;
+ private bool NowFarming;
+ private readonly AutoResetEvent AutoResetEvent = new AutoResetEvent(false);
+
+ internal CardsFarmer(Bot bot) {
+ Bot = bot;
+ }
+
+ internal async Task StartFarming() {
+ // Find the number of badge pages
+ HtmlDocument badgesDocument = await Bot.ArchiWebHandler.GetBadgePage(1).ConfigureAwait(false);
+ if (badgesDocument == null) {
+ return;
+ }
+
+ var maxPages = 1;
+ HtmlNodeCollection badgesPagesNodeCollection = badgesDocument.DocumentNode.SelectNodes("//a[@class='pagelink']");
+ if (badgesPagesNodeCollection != null) {
+ maxPages = (byte) (badgesPagesNodeCollection.Count / 2 + 1); // Don't do this at home
+ }
+
+ // Find APPIDs we need to farm
+ List appIDs = new List();
+ for (var page = 1; page <= maxPages; page++) {
+ if (page > 1) { // Because we fetched page number 1 already
+ badgesDocument = await Bot.ArchiWebHandler.GetBadgePage(page).ConfigureAwait(false);
+ if (badgesDocument == null) {
+ break;
+ }
+ }
+
+ HtmlNodeCollection badgesPageNodes = badgesDocument.DocumentNode.SelectNodes("//a[@class='btn_green_white_innerfade btn_small_thin']");
+ if (badgesPageNodes == null) {
+ break;
+ }
+
+ foreach (HtmlNode badgesPageNode in badgesPageNodes) {
+ string steamLink = badgesPageNode.GetAttributeValue("href", null);
+ if (steamLink == null) {
+ page = maxPages; // Break from outer loop
+ break;
+ }
+
+ uint appID = (uint) Utilities.OnlyNumbers(steamLink);
+ if (appID == 0) {
+ page = maxPages; // Break from outer loop
+ break;
+ }
+
+ appIDs.Add(appID);
+ }
+ }
+
+ // Start farming
+ while (appIDs.Count > 0) {
+ uint appID = appIDs[0];
+ if (await Farm(appID).ConfigureAwait(false)) {
+ appIDs.Remove(appID);
+ } else {
+ break;
+ }
+ }
+ }
+
+ private async Task ShouldFarm(ulong appID) {
+ bool? result = null;
+ HtmlDocument gamePageDocument = await Bot.ArchiWebHandler.GetGameCardsPage(appID).ConfigureAwait(false);
+ if (gamePageDocument != null) {
+ HtmlNode gamePageNode = gamePageDocument.DocumentNode.SelectSingleNode("//span[@class='progress_info_bold']");
+ if (gamePageNode != null) {
+ result = !gamePageNode.InnerText.Contains("No card drops");
+ }
+ }
+ return result;
+ }
+
+ private async Task Farm(ulong appID) {
+ if (NowFarming) {
+ AutoResetEvent.Set();
+ Thread.Sleep(1000);
+ AutoResetEvent.Reset();
+ }
+
+ bool success = true;
+ bool? keepFarming = await ShouldFarm(appID).ConfigureAwait(false);
+ while (keepFarming == null || keepFarming.Value) {
+ if (!NowFarming) {
+ NowFarming = true;
+ Bot.PlayGame(appID);
+ }
+ if (AutoResetEvent.WaitOne(1000 * 60 * 5)) {
+ success = false;
+ break;
+ }
+ keepFarming = await ShouldFarm(appID).ConfigureAwait(false);
+ }
+ Bot.PlayGame(0);
+ NowFarming = false;
+ return success;
+ }
+ }
+}
diff --git a/ArchiSteamFarm/Logging.cs b/ArchiSteamFarm/Logging.cs
new file mode 100644
index 000000000..ed66f43b3
--- /dev/null
+++ b/ArchiSteamFarm/Logging.cs
@@ -0,0 +1,38 @@
+using System;
+using System.Runtime.CompilerServices;
+
+namespace ArchiSteamFarm {
+ internal static class Logging {
+ private static void Log(string message) {
+ Console.WriteLine(DateTime.Now + " " + message);
+ }
+
+ internal static void LogGenericError(string botName, string message, [CallerMemberName] string previousMethodName = "") {
+ Log("[!!] ERROR: " + previousMethodName + "() <" + botName + "> " + message);
+ }
+
+ internal static void LogGenericException(string botName, Exception exception, [CallerMemberName] string previousMethodName = "") {
+ Log("[!] EXCEPTION: " + previousMethodName + "() <" + botName + "> " + exception.Message);
+ }
+
+ internal static void LogGenericWarning(string botName, string message, [CallerMemberName] string previousMethodName = "") {
+ Log("[!] WARNING: " + previousMethodName + "() <" + botName + "> " + message);
+ }
+
+ internal static void LogGenericInfo(string botName, string message, [CallerMemberName] string previousMethodName = "") {
+ Log("[*] INFO: " + previousMethodName + "() <" + botName + "> " + message);
+ }
+
+ internal static void LogGenericDebug(string botName, string message, [CallerMemberName] string previousMethodName = "") {
+ Log("[#] DEBUG: " + previousMethodName + "() <" + botName + "> " + message);
+ }
+
+ internal static void LogGenericDebug(string message, [CallerMemberName] string previousMethodName = "") {
+ LogGenericDebug("DEBUG", message, previousMethodName);
+ }
+
+ internal static void LogNullError(string nullObjectName, [CallerMemberName] string previousMethodName = "") {
+ LogGenericError(nullObjectName + " is null!", previousMethodName);
+ }
+ }
+}
diff --git a/ArchiSteamFarm/Program.cs b/ArchiSteamFarm/Program.cs
new file mode 100644
index 000000000..08e4bb70b
--- /dev/null
+++ b/ArchiSteamFarm/Program.cs
@@ -0,0 +1,58 @@
+using System;
+using System.Collections.Generic;
+using System.IO;
+using System.Threading;
+
+namespace ArchiSteamFarm {
+ internal static class Program {
+ internal const string ConfigDirectoryPath = "config";
+ private static readonly HashSet Bots = new HashSet();
+ internal static readonly object ConsoleLock = new object();
+
+ internal static void Exit(int exitCode = 0) {
+ ShutdownAllBots();
+ Environment.Exit(exitCode);
+ }
+
+ internal static string GetSteamGuardCode(string botLogin, bool twoFactorAuthentication) {
+ lock (ConsoleLock) {
+ if (twoFactorAuthentication) {
+ Console.Write("<" + botLogin + "> Please enter your 2 factor auth code from your authenticator app: ");
+ } else {
+ Console.Write("<" + botLogin + "> Please enter the auth code sent to your email : ");
+ }
+ return Console.ReadLine();
+ }
+ }
+
+ private static void ShutdownAllBots() {
+ lock (Bots) {
+ foreach (Bot bot in Bots) {
+ bot.Stop();
+ }
+ Bots.Clear();
+ }
+ }
+
+ private static void Main(string[] args) {
+ for (var i = 0; i < 4 && !Directory.Exists(ConfigDirectoryPath); i++) {
+ Directory.SetCurrentDirectory("..");
+ }
+
+ if (!Directory.Exists(ConfigDirectoryPath)) {
+ Logging.LogGenericError("Main", "Config directory doesn't exist!");
+ Console.ReadLine();
+ Exit(1);
+ }
+
+ lock (Bots) {
+ foreach (var configFile in Directory.EnumerateFiles(ConfigDirectoryPath, "*.xml")) {
+ string botName = Path.GetFileNameWithoutExtension(configFile);
+ Bots.Add(new Bot(botName));
+ }
+ }
+
+ Thread.Sleep(Timeout.Infinite);
+ }
+ }
+}
diff --git a/ArchiSteamFarm/Properties/AssemblyInfo.cs b/ArchiSteamFarm/Properties/AssemblyInfo.cs
new file mode 100644
index 000000000..da9c5820d
--- /dev/null
+++ b/ArchiSteamFarm/Properties/AssemblyInfo.cs
@@ -0,0 +1,36 @@
+using System.Reflection;
+using System.Runtime.CompilerServices;
+using System.Runtime.InteropServices;
+
+// General Information about an assembly is controlled through the following
+// set of attributes. Change these attribute values to modify the information
+// associated with an assembly.
+[assembly: AssemblyTitle("ArchiSteamFarm")]
+[assembly: AssemblyDescription("")]
+[assembly: AssemblyConfiguration("")]
+[assembly: AssemblyCompany("")]
+[assembly: AssemblyProduct("ArchiSteamFarm")]
+[assembly: AssemblyCopyright("Copyright © 2015")]
+[assembly: AssemblyTrademark("")]
+[assembly: AssemblyCulture("")]
+
+// Setting ComVisible to false makes the types in this assembly not visible
+// to COM components. If you need to access a type in this assembly from
+// COM, set the ComVisible attribute to true on that type.
+[assembly: ComVisible(false)]
+
+// The following GUID is for the ID of the typelib if this project is exposed to COM
+[assembly: Guid("35af7887-08b9-40e8-a5ea-797d8b60b30c")]
+
+// Version information for an assembly consists of the following four values:
+//
+// Major Version
+// Minor Version
+// Build Number
+// Revision
+//
+// You can specify all the values or you can default the Build and Revision Numbers
+// by using the '*' as shown below:
+// [assembly: AssemblyVersion("1.0.*")]
+[assembly: AssemblyVersion("1.0.0.0")]
+[assembly: AssemblyFileVersion("1.0.0.0")]
diff --git a/ArchiSteamFarm/SteamItem.cs b/ArchiSteamFarm/SteamItem.cs
new file mode 100644
index 000000000..26aae05bd
--- /dev/null
+++ b/ArchiSteamFarm/SteamItem.cs
@@ -0,0 +1,13 @@
+namespace ArchiSteamFarm {
+ internal sealed class SteamItem {
+ // REF: https://developer.valvesoftware.com/wiki/Steam_Web_API/IEconService
+ internal string appid { get; set; }
+ internal string contextid { get; set; }
+ internal string assetid { get; set; }
+ internal string currencyid { get; set; }
+ internal string classid { get; set; }
+ internal string instanceid { get; set; }
+ internal string amount { get; set; }
+ internal bool missing { get; set; }
+ }
+}
diff --git a/ArchiSteamFarm/SteamTradeOffer.cs b/ArchiSteamFarm/SteamTradeOffer.cs
new file mode 100644
index 000000000..9f2c1d1da
--- /dev/null
+++ b/ArchiSteamFarm/SteamTradeOffer.cs
@@ -0,0 +1,41 @@
+using SteamKit2;
+using System.Collections.Generic;
+
+namespace ArchiSteamFarm {
+ internal sealed class SteamTradeOffer {
+ // REF: https://developer.valvesoftware.com/wiki/Steam_Web_API/IEconService
+ internal enum ETradeOfferState {
+ Unknown,
+ Invalid,
+ Active,
+ Accepted,
+ Countered,
+ Expired,
+ Canceled,
+ Declined,
+ InvalidItems,
+ EmailPending,
+ EmailCanceled
+ }
+
+ internal string tradeofferid { get; set; }
+ internal int accountid_other { get; set; }
+ internal string message { get; set; }
+ internal int expiration_time { get; set; }
+ internal ETradeOfferState trade_offer_state { get; set; }
+ internal List items_to_give { get; set; }
+ internal List items_to_receive { get; set; }
+ internal bool is_our_offer { get; set; }
+ internal int time_created { get; set; }
+ internal int time_updated { get; set; }
+ internal bool from_real_time_trade { get; set; }
+
+ // Extra
+ internal ulong OtherSteamID64 {
+ get {
+ return new SteamID((uint) accountid_other, EUniverse.Public, EAccountType.Individual).ConvertToUInt64();
+ }
+ private set { }
+ }
+ }
+}
diff --git a/ArchiSteamFarm/Trading.cs b/ArchiSteamFarm/Trading.cs
new file mode 100644
index 000000000..d21989e01
--- /dev/null
+++ b/ArchiSteamFarm/Trading.cs
@@ -0,0 +1,74 @@
+using System.Collections.Generic;
+using System.Threading;
+using System.Threading.Tasks;
+
+namespace ArchiSteamFarm {
+ internal sealed class Trading {
+ private Bot Bot;
+ private volatile byte ParsingTasks = 0;
+ private SemaphoreSlim semaphore = new SemaphoreSlim(1);
+
+ internal Trading(Bot bot) {
+ Bot = bot;
+ }
+
+ internal void CheckTrades() {
+ if (ParsingTasks < 2) {
+ ParsingTasks++;
+ Task.Run(() => ParseActiveTrades());
+ }
+ }
+
+ private async Task ParseActiveTrades() {
+ await semaphore.WaitAsync().ConfigureAwait(false);
+
+ List tradeOffers = Bot.ArchiWebHandler.GetTradeOffers();
+ if (tradeOffers != null) {
+ List tasks = new List();
+ foreach (SteamTradeOffer tradeOffer in tradeOffers) {
+ if (tradeOffer.trade_offer_state == SteamTradeOffer.ETradeOfferState.Active) {
+ Task task = Task.Run(async () => {
+ await ParseTrade(tradeOffer).ConfigureAwait(false);
+ });
+ tasks.Add(task);
+ }
+ }
+
+ await Task.WhenAll(tasks).ConfigureAwait(false);
+ }
+
+ ParsingTasks--;
+ semaphore.Release();
+ }
+
+ private async Task ParseTrade(SteamTradeOffer tradeOffer) {
+ if (tradeOffer == null) {
+ return;
+ }
+
+ ulong tradeID;
+ if (!ulong.TryParse(tradeOffer.tradeofferid, out tradeID)) {
+ return;
+ }
+
+ ulong steamID = tradeOffer.OtherSteamID64;
+ bool success = false;
+ bool tradeAccepted = false;
+
+ if (tradeOffer.items_to_give.Count == 0 || steamID == Bot.SteamMasterID) {
+ tradeAccepted = true;
+ success = await Bot.ArchiWebHandler.AcceptTradeOffer(tradeID).ConfigureAwait(false);
+ } else {
+ success = Bot.ArchiWebHandler.DeclineTradeOffer(tradeID);
+ }
+
+ if (!success) {
+ Logging.LogGenericWarning(Bot.BotName, "Response to trade " + tradeID + " failed!");
+ }
+
+ if (tradeAccepted && success) {
+ // Do whatever we want with success
+ }
+ }
+ }
+}
diff --git a/ArchiSteamFarm/Utilities.cs b/ArchiSteamFarm/Utilities.cs
new file mode 100644
index 000000000..3c40e463e
--- /dev/null
+++ b/ArchiSteamFarm/Utilities.cs
@@ -0,0 +1,117 @@
+using HtmlAgilityPack;
+using System;
+using System.Collections.Generic;
+using System.Globalization;
+using System.Net;
+using System.Net.Http;
+using System.Text;
+using System.Text.RegularExpressions;
+using System.Threading.Tasks;
+
+namespace ArchiSteamFarm {
+ internal static class Utilities {
+ internal static ulong OnlyNumbers(string inputString) {
+ if (string.IsNullOrEmpty(inputString)) {
+ return 0;
+ }
+
+ string resultString;
+ try {
+ Regex regexObj = new Regex(@"[^\d]");
+ resultString = regexObj.Replace(inputString, "");
+ } catch (ArgumentException e) {
+ Logging.LogGenericException("Utilities", e);
+ return 0;
+ }
+
+ ulong result = ulong.Parse(resultString, CultureInfo.InvariantCulture);
+ return result;
+ }
+
+ internal static async Task UrlToHttpResponse(string websiteAddress, Dictionary cookieVariables) {
+ HttpResponseMessage result = null;
+ if (!string.IsNullOrEmpty(websiteAddress)) {
+ try {
+ using (HttpClientHandler clientHandler = new HttpClientHandler { UseCookies = false }) {
+ using (HttpClient client = new HttpClient(clientHandler)) {
+ client.Timeout = TimeSpan.FromSeconds(10);
+ HttpRequestMessage requestMessage = new HttpRequestMessage(HttpMethod.Get, websiteAddress);
+ if (cookieVariables != null) {
+ StringBuilder cookie = new StringBuilder();
+ foreach (KeyValuePair cookieVariable in cookieVariables) {
+ cookie.Append(cookieVariable.Key + "=" + cookieVariable.Value + ";");
+ }
+ requestMessage.Headers.Add("Cookie", cookie.ToString());
+ }
+ HttpResponseMessage responseMessage = await client.SendAsync(requestMessage).ConfigureAwait(false);
+ if (responseMessage != null) {
+ responseMessage.EnsureSuccessStatusCode();
+ result = responseMessage;
+ }
+ }
+ }
+ } catch {
+ }
+ }
+ return result;
+ }
+
+ internal static async Task UrlToHttpResponse(string websiteAddress) {
+ return await UrlToHttpResponse(websiteAddress, null).ConfigureAwait(false);
+ }
+
+ internal static async Task UrlToHtmlDocument(string websiteAddress, Dictionary cookieVariables) {
+ HtmlDocument result = null;
+ if (!string.IsNullOrEmpty(websiteAddress)) {
+ try {
+ HttpResponseMessage responseMessage = await UrlToHttpResponse(websiteAddress, cookieVariables).ConfigureAwait(false);
+ if (responseMessage != null) {
+ string source = await responseMessage.Content.ReadAsStringAsync().ConfigureAwait(false);
+ if (!string.IsNullOrEmpty(source)) {
+ source = WebUtility.HtmlDecode(source);
+ result = new HtmlDocument();
+ result.LoadHtml(source);
+ }
+ }
+ } catch {
+ }
+ }
+ return result;
+ }
+
+ internal static async Task UrlToHtmlDocument(string websiteAddress) {
+ return await UrlToHtmlDocument(websiteAddress, null).ConfigureAwait(false);
+ }
+
+ internal static async Task UrlPostRequest(string request, Dictionary postData, Dictionary cookieVariables, string referer = null) {
+ bool result = false;
+ if (!string.IsNullOrEmpty(request)) {
+ try {
+ using (HttpClientHandler clientHandler = new HttpClientHandler { UseCookies = false }) {
+ using (HttpClient client = new HttpClient(clientHandler)) {
+ client.Timeout = TimeSpan.FromSeconds(15);
+ HttpRequestMessage requestMessage = new HttpRequestMessage(HttpMethod.Post, request);
+ requestMessage.Content = new FormUrlEncodedContent(postData);
+ if (cookieVariables != null && cookieVariables.Count > 0) {
+ StringBuilder cookie = new StringBuilder();
+ foreach (KeyValuePair cookieVariable in cookieVariables) {
+ cookie.Append(cookieVariable.Key + "=" + cookieVariable.Value + ";");
+ }
+ requestMessage.Headers.Add("Cookie", cookie.ToString());
+ }
+ if (referer != null) {
+ requestMessage.Headers.Referrer = new Uri(referer);
+ }
+ HttpResponseMessage responseMessage = await client.SendAsync(requestMessage).ConfigureAwait(false);
+ if (responseMessage != null) {
+ result = responseMessage.IsSuccessStatusCode;
+ }
+ }
+ }
+ } catch {
+ }
+ }
+ return result;
+ }
+ }
+}
diff --git a/ArchiSteamFarm/config/example.xml b/ArchiSteamFarm/config/example.xml
new file mode 100644
index 000000000..ffe2fe288
--- /dev/null
+++ b/ArchiSteamFarm/config/example.xml
@@ -0,0 +1,16 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/ArchiSteamFarm/packages.config b/ArchiSteamFarm/packages.config
new file mode 100644
index 000000000..a99239a9c
--- /dev/null
+++ b/ArchiSteamFarm/packages.config
@@ -0,0 +1,6 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git a/packages/HtmlAgilityPack.1.4.9/HAPIcon.png b/packages/HtmlAgilityPack.1.4.9/HAPIcon.png
new file mode 100644
index 000000000..544267ae0
Binary files /dev/null and b/packages/HtmlAgilityPack.1.4.9/HAPIcon.png differ
diff --git a/packages/HtmlAgilityPack.1.4.9/HtmlAgilityPack.1.4.9.nupkg b/packages/HtmlAgilityPack.1.4.9/HtmlAgilityPack.1.4.9.nupkg
new file mode 100644
index 000000000..b745490e2
Binary files /dev/null and b/packages/HtmlAgilityPack.1.4.9/HtmlAgilityPack.1.4.9.nupkg differ
diff --git a/packages/HtmlAgilityPack.1.4.9/lib/Net20/HtmlAgilityPack.dll b/packages/HtmlAgilityPack.1.4.9/lib/Net20/HtmlAgilityPack.dll
new file mode 100644
index 000000000..f6bfacf4e
Binary files /dev/null and b/packages/HtmlAgilityPack.1.4.9/lib/Net20/HtmlAgilityPack.dll differ
diff --git a/packages/HtmlAgilityPack.1.4.9/lib/Net20/HtmlAgilityPack.xml b/packages/HtmlAgilityPack.1.4.9/lib/Net20/HtmlAgilityPack.xml
new file mode 100644
index 000000000..4c2a44582
--- /dev/null
+++ b/packages/HtmlAgilityPack.1.4.9/lib/Net20/HtmlAgilityPack.xml
@@ -0,0 +1,2468 @@
+
+
+
+ HtmlAgilityPack
+
+
+
+
+ Represents an HTML node.
+
+
+
+
+ Creates a new XPathNavigator object for navigating this HTML node.
+
+ An XPathNavigator object. The XPathNavigator is positioned on the node from which the method was called. It is not positioned on the root of the document.
+
+
+
+ Creates an XPathNavigator using the root of this document.
+
+
+
+
+
+ Selects a list of nodes matching the expression.
+
+ The XPath expression.
+ An containing a collection of nodes matching the query, or null if no node matched the XPath expression.
+
+
+
+ Selects the first XmlNode that matches the XPath expression.
+
+ The XPath expression. May not be null.
+ The first that matches the XPath query or a null reference if no matching node was found.
+
+
+
+ Gets the name of a comment node. It is actually defined as '#comment'.
+
+
+
+
+ Gets the name of the document node. It is actually defined as '#document'.
+
+
+
+
+ Gets the name of a text node. It is actually defined as '#text'.
+
+
+
+
+ Gets a collection of flags that define specific behaviors for specific element nodes.
+ The table contains a DictionaryEntry list with the lowercase tag name as the Key, and a combination of HtmlElementFlags as the Value.
+
+
+
+
+ Initialize HtmlNode. Builds a list of all tags that have special allowances
+
+
+
+
+ Initializes HtmlNode, providing type, owner and where it exists in a collection
+
+
+
+
+
+
+
+ Determines if an element node can be kept overlapped.
+
+ The name of the element node to check. May not be null.
+ true if the name is the name of an element node that can be kept overlapped, false otherwise.
+
+
+
+ Creates an HTML node from a string representing literal HTML.
+
+ The HTML text.
+ The newly created node instance.
+
+
+
+ Determines if an element node is a CDATA element node.
+
+ The name of the element node to check. May not be null.
+ true if the name is the name of a CDATA element node, false otherwise.
+
+
+
+ Determines if an element node is closed.
+
+ The name of the element node to check. May not be null.
+ true if the name is the name of a closed element node, false otherwise.
+
+
+
+ Determines if an element node is defined as empty.
+
+ The name of the element node to check. May not be null.
+ true if the name is the name of an empty element node, false otherwise.
+
+
+
+ Determines if a text corresponds to the closing tag of an node that can be kept overlapped.
+
+ The text to check. May not be null.
+ true or false.
+
+
+
+ Returns a collection of all ancestor nodes of this element.
+
+
+
+
+
+ Get Ancestors with matching name
+
+
+
+
+
+
+ Returns a collection of all ancestor nodes of this element.
+
+
+
+
+
+ Gets all anscestor nodes and the current node
+
+
+
+
+
+
+ Adds the specified node to the end of the list of children of this node.
+
+ The node to add. May not be null.
+ The node added.
+
+
+
+ Adds the specified node to the end of the list of children of this node.
+
+ The node list to add. May not be null.
+
+
+
+ Gets all Attributes with name
+
+
+
+
+
+
+ Creates a duplicate of the node
+
+
+
+
+
+ Creates a duplicate of the node and changes its name at the same time.
+
+ The new name of the cloned node. May not be null.
+ The cloned node.
+
+
+
+ Creates a duplicate of the node and changes its name at the same time.
+
+ The new name of the cloned node. May not be null.
+ true to recursively clone the subtree under the specified node; false to clone only the node itself.
+ The cloned node.
+
+
+
+ Creates a duplicate of the node.
+
+ true to recursively clone the subtree under the specified node; false to clone only the node itself.
+ The cloned node.
+
+
+
+ Creates a duplicate of the node and the subtree under it.
+
+ The node to duplicate. May not be null.
+
+
+
+ Creates a duplicate of the node.
+
+ The node to duplicate. May not be null.
+ true to recursively clone the subtree under the specified node, false to clone only the node itself.
+
+
+
+ Gets all Descendant nodes for this node and each of child nodes
+
+
+
+
+
+ Returns a collection of all descendant nodes of this element, in document order
+
+
+
+
+
+ Gets all Descendant nodes in enumerated list
+
+
+
+
+
+ Get all descendant nodes with matching name
+
+
+
+
+
+
+ Returns a collection of all descendant nodes of this element, in document order
+
+
+
+
+
+ Gets all descendant nodes including this node
+
+
+
+
+
+
+ Gets first generation child node matching name
+
+
+
+
+
+
+ Gets matching first generation child nodes matching name
+
+
+
+
+
+
+ Helper method to get the value of an attribute of this node. If the attribute is not found, the default value will be returned.
+
+ The name of the attribute to get. May not be null.
+ The default value to return if not found.
+ The value of the attribute if found, the default value if not found.
+
+
+
+ Helper method to get the value of an attribute of this node. If the attribute is not found, the default value will be returned.
+
+ The name of the attribute to get. May not be null.
+ The default value to return if not found.
+ The value of the attribute if found, the default value if not found.
+
+
+
+ Helper method to get the value of an attribute of this node. If the attribute is not found, the default value will be returned.
+
+ The name of the attribute to get. May not be null.
+ The default value to return if not found.
+ The value of the attribute if found, the default value if not found.
+
+
+
+ Inserts the specified node immediately after the specified reference node.
+
+ The node to insert. May not be null.
+ The node that is the reference node. The newNode is placed after the refNode.
+ The node being inserted.
+
+
+
+ Inserts the specified node immediately before the specified reference node.
+
+ The node to insert. May not be null.
+ The node that is the reference node. The newChild is placed before this node.
+ The node being inserted.
+
+
+
+ Adds the specified node to the beginning of the list of children of this node.
+
+ The node to add. May not be null.
+ The node added.
+
+
+
+ Adds the specified node list to the beginning of the list of children of this node.
+
+ The node list to add. May not be null.
+
+
+
+ Removes node from parent collection
+
+
+
+
+ Removes all the children and/or attributes of the current node.
+
+
+
+
+ Removes all the children of the current node.
+
+
+
+
+ Removes the specified child node.
+
+ The node being removed. May not be null.
+ The node removed.
+
+
+
+ Removes the specified child node.
+
+ The node being removed. May not be null.
+ true to keep grand children of the node, false otherwise.
+ The node removed.
+
+
+
+ Replaces the child node oldChild with newChild node.
+
+ The new node to put in the child list.
+ The node being replaced in the list.
+ The node replaced.
+
+
+
+ Helper method to set the value of an attribute of this node. If the attribute is not found, it will be created automatically.
+
+ The name of the attribute to set. May not be null.
+ The value for the attribute.
+ The corresponding attribute instance.
+
+
+
+ Saves all the children of the node to the specified TextWriter.
+
+ The TextWriter to which you want to save.
+
+
+
+ Saves all the children of the node to a string.
+
+ The saved string.
+
+
+
+ Saves the current node to the specified TextWriter.
+
+ The TextWriter to which you want to save.
+
+
+
+ Saves the current node to the specified XmlWriter.
+
+ The XmlWriter to which you want to save.
+
+
+
+ Saves the current node to a string.
+
+ The saved string.
+
+
+
+ Gets the collection of HTML attributes for this node. May not be null.
+
+
+
+
+ Gets all the children of the node.
+
+
+
+
+ Gets a value indicating if this node has been closed or not.
+
+
+
+
+ Gets the collection of HTML attributes for the closing tag. May not be null.
+
+
+
+
+ Gets the first child of the node.
+
+
+
+
+ Gets a value indicating whether the current node has any attributes.
+
+
+
+
+ Gets a value indicating whether this node has any child nodes.
+
+
+
+
+ Gets a value indicating whether the current node has any attributes on the closing tag.
+
+
+
+
+ Gets or sets the value of the 'id' HTML attribute. The document must have been parsed using the OptionUseIdAttribute set to true.
+
+
+
+
+ Gets or Sets the HTML between the start and end tags of the object.
+
+
+
+
+ Gets or Sets the text between the start and end tags of the object.
+
+
+
+
+ Gets the last child of the node.
+
+
+
+
+ Gets the line number of this node in the document.
+
+
+
+
+ Gets the column number of this node in the document.
+
+
+
+
+ Gets or sets this node's name.
+
+
+
+
+ Gets the HTML node immediately following this element.
+
+
+
+
+ Gets the type of this node.
+
+
+
+
+ The original unaltered name of the tag
+
+
+
+
+ Gets or Sets the object and its content in HTML.
+
+
+
+
+ Gets the to which this node belongs.
+
+
+
+
+ Gets the parent of this node (for nodes that can have parents).
+
+
+
+
+ Gets the node immediately preceding this node.
+
+
+
+
+ Gets the stream position of this node in the document, relative to the start of the document.
+
+
+
+
+ Gets a valid XPath string that points to this node
+
+
+
+
+ Represents an HTML attribute.
+
+
+
+
+ Compares the current instance with another attribute. Comparison is based on attributes' name.
+
+ An attribute to compare with this instance.
+ A 32-bit signed integer that indicates the relative order of the names comparison.
+
+
+
+ Creates a duplicate of this attribute.
+
+ The cloned attribute.
+
+
+
+ Removes this attribute from it's parents collection
+
+
+
+
+ Gets the line number of this attribute in the document.
+
+
+
+
+ Gets the column number of this attribute in the document.
+
+
+
+
+ Gets the qualified name of the attribute.
+
+
+
+
+ Name of attribute with original case
+
+
+
+
+ Gets the HTML document to which this attribute belongs.
+
+
+
+
+ Gets the HTML node to which this attribute belongs.
+
+
+
+
+ Specifies what type of quote the data should be wrapped in
+
+
+
+
+ Gets the stream position of this attribute in the document, relative to the start of the document.
+
+
+
+
+ Gets or sets the value of the attribute.
+
+
+
+
+ Gets a valid XPath string that points to this Attribute
+
+
+
+
+ An Enum representing different types of Quotes used for surrounding attribute values
+
+
+
+
+ A single quote mark '
+
+
+
+
+ A double quote mark "
+
+
+
+
+ Represents a fragment of text in a mixed code document.
+
+
+
+
+ Represents a base class for fragments in a mixed code document.
+
+
+
+
+ Gets the fragement text.
+
+
+
+
+ Gets the type of fragment.
+
+
+
+
+ Gets the line number of the fragment.
+
+
+
+
+ Gets the line position (column) of the fragment.
+
+
+
+
+ Gets the fragment position in the document's stream.
+
+
+
+
+ Gets the fragment text.
+
+
+
+
+ Represents an HTML comment.
+
+
+
+
+ Gets or Sets the comment text of the node.
+
+
+
+
+ Gets or Sets the HTML between the start and end tags of the object. In the case of a text node, it is equals to OuterHtml.
+
+
+
+
+ Gets or Sets the object and its content in HTML.
+
+
+
+
+ Represents a document with mixed code and text. ASP, ASPX, JSP, are good example of such documents.
+
+
+
+
+ Gets or sets the token representing code end.
+
+
+
+
+ Gets or sets the token representing code start.
+
+
+
+
+ Gets or sets the token representing code directive.
+
+
+
+
+ Gets or sets the token representing response write directive.
+
+
+
+
+ Creates a mixed code document instance.
+
+
+
+
+ Create a code fragment instances.
+
+ The newly created code fragment instance.
+
+
+
+ Create a text fragment instances.
+
+ The newly created text fragment instance.
+
+
+
+ Loads a mixed code document from a stream.
+
+ The input stream.
+
+
+
+ Loads a mixed code document from a stream.
+
+ The input stream.
+ Indicates whether to look for byte order marks at the beginning of the file.
+
+
+
+ Loads a mixed code document from a stream.
+
+ The input stream.
+ The character encoding to use.
+
+
+
+ Loads a mixed code document from a stream.
+
+ The input stream.
+ The character encoding to use.
+ Indicates whether to look for byte order marks at the beginning of the file.
+
+
+
+ Loads a mixed code document from a stream.
+
+ The input stream.
+ The character encoding to use.
+ Indicates whether to look for byte order marks at the beginning of the file.
+ The minimum buffer size.
+
+
+
+ Loads a mixed code document from a file.
+
+ The complete file path to be read.
+
+
+
+ Loads a mixed code document from a file.
+
+ The complete file path to be read.
+ Indicates whether to look for byte order marks at the beginning of the file.
+
+
+
+ Loads a mixed code document from a file.
+
+ The complete file path to be read.
+ The character encoding to use.
+
+
+
+ Loads a mixed code document from a file.
+
+ The complete file path to be read.
+ The character encoding to use.
+ Indicates whether to look for byte order marks at the beginning of the file.
+
+
+
+ Loads a mixed code document from a file.
+
+ The complete file path to be read.
+ The character encoding to use.
+ Indicates whether to look for byte order marks at the beginning of the file.
+ The minimum buffer size.
+
+
+
+ Loads the mixed code document from the specified TextReader.
+
+ The TextReader used to feed the HTML data into the document.
+
+
+
+ Loads a mixed document from a text
+
+ The text to load.
+
+
+
+ Saves the mixed document to the specified stream.
+
+ The stream to which you want to save.
+
+
+
+ Saves the mixed document to the specified stream.
+
+ The stream to which you want to save.
+ The character encoding to use.
+
+
+
+ Saves the mixed document to the specified file.
+
+ The location of the file where you want to save the document.
+
+
+
+ Saves the mixed document to the specified file.
+
+ The location of the file where you want to save the document.
+ The character encoding to use.
+
+
+
+ Saves the mixed document to the specified StreamWriter.
+
+ The StreamWriter to which you want to save.
+
+
+
+ Saves the mixed document to the specified TextWriter.
+
+ The TextWriter to which you want to save.
+
+
+
+ Gets the code represented by the mixed code document seen as a template.
+
+
+
+
+ Gets the list of code fragments in the document.
+
+
+
+
+ Gets the list of all fragments in the document.
+
+
+
+
+ Gets the encoding of the stream used to read the document.
+
+
+
+
+ Gets the list of text fragments in the document.
+
+
+
+
+ Represents a fragment of code in a mixed code document.
+
+
+
+
+ Gets the fragment code text.
+
+
+
+
+ Represents a combined list and collection of HTML nodes.
+
+
+
+
+ Adds supplied item to collection
+
+
+
+
+
+ Explicit clear
+
+
+
+
+ Retreives existence of supplied item
+
+
+
+
+
+
+ Copies collection to array
+
+
+
+
+
+
+ Get Explicit enumerator
+
+
+
+
+
+ Explicit non-generic enumerator
+
+
+
+
+
+ Retrieves the index for the supplied item, -1 if not found
+
+
+
+
+
+
+ Inserts given item into collection at supplied index
+
+
+
+
+
+
+ Explicit collection remove
+
+
+
+
+
+
+ Removes the attribute at the specified index.
+
+ The index of the attribute to remove.
+
+
+
+ Adds a new attribute to the collection with the given values
+
+
+
+
+
+
+ Inserts the specified attribute as the last attribute in the collection.
+
+ The attribute to insert. May not be null.
+ The appended attribute.
+
+
+
+ Creates and inserts a new attribute as the last attribute in the collection.
+
+ The name of the attribute to insert.
+ The appended attribute.
+
+
+
+ Creates and inserts a new attribute as the last attribute in the collection.
+
+ The name of the attribute to insert.
+ The value of the attribute to insert.
+ The appended attribute.
+
+
+
+ Checks for existance of attribute with given name
+
+
+
+
+
+
+ Inserts the specified attribute as the first node in the collection.
+
+ The attribute to insert. May not be null.
+ The prepended attribute.
+
+
+
+ Removes a given attribute from the list.
+
+ The attribute to remove. May not be null.
+
+
+
+ Removes an attribute from the list, using its name. If there are more than one attributes with this name, they will all be removed.
+
+ The attribute's name. May not be null.
+
+
+
+ Remove all attributes in the list.
+
+
+
+
+ Returns all attributes with specified name. Handles case insentivity
+
+ Name of the attribute
+
+
+
+
+ Removes all attributes from the collection
+
+
+
+
+ Clears the attribute collection
+
+
+
+
+ Gets a given attribute from the list using its name.
+
+
+
+
+ Gets the number of elements actually contained in the list.
+
+
+
+
+ Gets readonly status of colelction
+
+
+
+
+ Gets the attribute at the specified index.
+
+
+
+
+ A utility class to get HTML document from HTTP.
+
+
+
+
+ Occurs after an HTTP request has been executed.
+
+
+
+
+ Occurs before an HTML document is handled.
+
+
+
+
+ Occurs before an HTTP request is executed.
+
+
+
+
+ Gets the MIME content type for a given path extension.
+
+ The input path extension.
+ The default content type to return if any error occurs.
+ The path extension's MIME content type.
+
+
+
+ Gets the path extension for a given MIME content type.
+
+ The input MIME content type.
+ The default path extension to return if any error occurs.
+ The MIME content type's path extension.
+
+
+
+ Creates an instance of the given type from the specified Internet resource.
+
+ The requested URL, such as "http://Myserver/Mypath/Myfile.asp".
+ The requested type.
+ An newly created instance.
+
+
+
+ Gets an HTML document from an Internet resource and saves it to the specified file.
+
+ The requested URL, such as "http://Myserver/Mypath/Myfile.asp".
+ The location of the file where you want to save the document.
+
+
+
+ Gets an HTML document from an Internet resource and saves it to the specified file. - Proxy aware
+
+ The requested URL, such as "http://Myserver/Mypath/Myfile.asp".
+ The location of the file where you want to save the document.
+
+
+
+
+
+ Gets an HTML document from an Internet resource and saves it to the specified file.
+
+ The requested URL, such as "http://Myserver/Mypath/Myfile.asp".
+ The location of the file where you want to save the document.
+ The HTTP method used to open the connection, such as GET, POST, PUT, or PROPFIND.
+
+
+
+ Gets an HTML document from an Internet resource and saves it to the specified file. Understands Proxies
+
+ The requested URL, such as "http://Myserver/Mypath/Myfile.asp".
+ The location of the file where you want to save the document.
+
+ The HTTP method used to open the connection, such as GET, POST, PUT, or PROPFIND.
+
+
+
+
+ Gets the cache file path for a specified url.
+
+ The url fo which to retrieve the cache path. May not be null.
+ The cache file path.
+
+
+
+ Gets an HTML document from an Internet resource.
+
+ The requested URL, such as "http://Myserver/Mypath/Myfile.asp".
+ A new HTML document.
+
+
+
+ Gets an HTML document from an Internet resource.
+
+ The requested URL, such as "http://Myserver/Mypath/Myfile.asp".
+ Host to use for Proxy
+ Port the Proxy is on
+ User Id for Authentication
+ Password for Authentication
+ A new HTML document.
+
+
+
+ Loads an HTML document from an Internet resource.
+
+ The requested URL, such as "http://Myserver/Mypath/Myfile.asp".
+ The HTTP method used to open the connection, such as GET, POST, PUT, or PROPFIND.
+ A new HTML document.
+
+
+
+ Loads an HTML document from an Internet resource.
+
+ The requested URL, such as "http://Myserver/Mypath/Myfile.asp".
+ The HTTP method used to open the connection, such as GET, POST, PUT, or PROPFIND.
+ Proxy to use with this request
+ Credentials to use when authenticating
+ A new HTML document.
+
+
+
+ Loads an HTML document from an Internet resource and saves it to the specified XmlTextWriter.
+
+ The requested URL, such as "http://Myserver/Mypath/Myfile.asp".
+ The XmlTextWriter to which you want to save to.
+
+
+
+ Creates an instance of the given type from the specified Internet resource.
+
+ The requested URL, such as "http://Myserver/Mypath/Myfile.asp".
+ The URL that specifies the XSLT stylesheet to load.
+ An containing the namespace-qualified arguments used as input to the transform.
+ The requested type.
+ An newly created instance.
+
+
+
+ Creates an instance of the given type from the specified Internet resource.
+
+ The requested URL, such as "http://Myserver/Mypath/Myfile.asp".
+ The URL that specifies the XSLT stylesheet to load.
+ An containing the namespace-qualified arguments used as input to the transform.
+ The requested type.
+ A file path where the temporary XML before transformation will be saved. Mostly used for debugging purposes.
+ An newly created instance.
+
+
+
+ Loads an HTML document from an Internet resource and saves it to the specified XmlTextWriter, after an XSLT transformation.
+
+ The requested URL, such as "http://Myserver/Mypath/Myfile.asp".
+ The URL that specifies the XSLT stylesheet to load.
+ An XsltArgumentList containing the namespace-qualified arguments used as input to the transform.
+ The XmlTextWriter to which you want to save.
+
+
+
+ Loads an HTML document from an Internet resource and saves it to the specified XmlTextWriter, after an XSLT transformation.
+
+ The requested URL, such as "http://Myserver/Mypath/Myfile.asp". May not be null.
+ The URL that specifies the XSLT stylesheet to load.
+ An XsltArgumentList containing the namespace-qualified arguments used as input to the transform.
+ The XmlTextWriter to which you want to save.
+ A file path where the temporary XML before transformation will be saved. Mostly used for debugging purposes.
+
+
+
+ Gets or Sets a value indicating if document encoding must be automatically detected.
+
+
+
+
+ Gets or sets the Encoding used to override the response stream from any web request
+
+
+
+
+ Gets or Sets a value indicating whether to get document only from the cache.
+ If this is set to true and document is not found in the cache, nothing will be loaded.
+
+
+
+
+ Gets or Sets the cache path. If null, no caching mechanism will be used.
+
+
+
+
+ Gets a value indicating if the last document was retrieved from the cache.
+
+
+
+
+ Gets the last request duration in milliseconds.
+
+
+
+
+ Gets the URI of the Internet resource that actually responded to the request.
+
+
+
+
+ Gets the last request status.
+
+
+
+
+ Gets or Sets the size of the buffer used for memory operations.
+
+
+
+
+ Gets or Sets a value indicating if cookies will be stored.
+
+
+
+
+ Gets or Sets the User Agent HTTP 1.1 header sent on any webrequest
+
+
+
+
+ Gets or Sets a value indicating whether the caching mechanisms should be used or not.
+
+
+
+
+ Represents the method that will handle the PostResponse event.
+
+
+
+
+ Represents the method that will handle the PreHandleDocument event.
+
+
+
+
+ Represents the method that will handle the PreRequest event.
+
+
+
+
+ Wraps getting AppDomain permissions
+
+
+
+
+ An interface for getting permissions of the running application
+
+
+
+
+ Checks to see if Registry access is available to the caller
+
+
+
+
+
+ Checks to see if DNS information is available to the caller
+
+
+
+
+
+ Checks to see if Registry access is available to the caller
+
+
+
+
+
+ Checks to see if DNS information is available to the caller
+
+
+
+
+
+ Represents a list of mixed code fragments.
+
+
+
+
+ Gets an enumerator that can iterate through the fragment list.
+
+
+
+
+ Appends a fragment to the list of fragments.
+
+ The fragment to append. May not be null.
+
+
+
+ Gets an enumerator that can iterate through the fragment list.
+
+
+
+
+ Prepends a fragment to the list of fragments.
+
+ The fragment to append. May not be null.
+
+
+
+ Remove a fragment from the list of fragments. If this fragment was not in the list, an exception will be raised.
+
+ The fragment to remove. May not be null.
+
+
+
+ Remove all fragments from the list.
+
+
+
+
+ Remove a fragment from the list of fragments, using its index in the list.
+
+ The index of the fragment to remove.
+
+
+
+ Gets the Document
+
+
+
+
+ Gets the number of fragments contained in the list.
+
+
+
+
+ Gets a fragment from the list using its index.
+
+
+
+
+ Represents a fragment enumerator.
+
+
+
+
+ Advances the enumerator to the next element of the collection.
+
+ true if the enumerator was successfully advanced to the next element; false if the enumerator has passed the end of the collection.
+
+
+
+ Sets the enumerator to its initial position, which is before the first element in the collection.
+
+
+
+
+ Gets the current element in the collection.
+
+
+
+
+ Gets the current element in the collection.
+
+
+
+
+ Represents a combined list and collection of HTML nodes.
+
+
+
+
+ Initialize the HtmlNodeCollection with the base parent node
+
+ The base node of the collection
+
+
+
+ Add node to the collection
+
+
+
+
+
+ Clears out the collection of HtmlNodes. Removes each nodes reference to parentnode, nextnode and prevnode
+
+
+
+
+ Gets existence of node in collection
+
+
+
+
+
+
+ Copy collection to array
+
+
+
+
+
+
+ Get Enumerator
+
+
+
+
+
+ Get Explicit Enumerator
+
+
+
+
+
+ Get index of node
+
+
+
+
+
+
+ Insert node at index
+
+
+
+
+
+
+ Remove node
+
+
+
+
+
+
+ Remove at index
+
+
+
+
+
+ Get first instance of node in supplied collection
+
+
+
+
+
+
+
+ Add node to the end of the collection
+
+
+
+
+
+ Get first instance of node with name
+
+
+
+
+
+
+ Get index of node
+
+
+
+
+
+
+ Add node to the beginning of the collection
+
+
+
+
+
+ Remove node at index
+
+
+
+
+
+
+ Replace node at index
+
+
+
+
+
+
+ Get all node descended from this collection
+
+
+
+
+
+ Get all node descended from this collection with matching name
+
+
+
+
+
+ Gets all first generation elements in collection
+
+
+
+
+
+ Gets all first generation elements matching name
+
+
+
+
+
+
+ All first generation nodes in collection
+
+
+
+
+
+ Gets a given node from the list.
+
+
+
+
+ Get node with tag name
+
+
+
+
+
+
+ Gets the number of elements actually contained in the list.
+
+
+
+
+ Is collection read only
+
+
+
+
+ Gets the node at the specified index.
+
+
+
+
+ Represents an HTML navigator on an HTML document seen as a data store.
+
+
+
+
+ Initializes a new instance of the HtmlNavigator and loads an HTML document from a stream.
+
+ The input stream.
+
+
+
+ Initializes a new instance of the HtmlNavigator and loads an HTML document from a stream.
+
+ The input stream.
+ Indicates whether to look for byte order marks at the beginning of the stream.
+
+
+
+ Initializes a new instance of the HtmlNavigator and loads an HTML document from a stream.
+
+ The input stream.
+ The character encoding to use.
+
+
+
+ Initializes a new instance of the HtmlNavigator and loads an HTML document from a stream.
+
+ The input stream.
+ The character encoding to use.
+ Indicates whether to look for byte order marks at the beginning of the stream.
+
+
+
+ Initializes a new instance of the HtmlNavigator and loads an HTML document from a stream.
+
+ The input stream.
+ The character encoding to use.
+ Indicates whether to look for byte order marks at the beginning of the stream.
+ The minimum buffer size.
+
+
+
+ Initializes a new instance of the HtmlNavigator and loads an HTML document from a TextReader.
+
+ The TextReader used to feed the HTML data into the document.
+
+
+
+ Initializes a new instance of the HtmlNavigator and loads an HTML document from a file.
+
+ The complete file path to be read.
+
+
+
+ Initializes a new instance of the HtmlNavigator and loads an HTML document from a file.
+
+ The complete file path to be read.
+ Indicates whether to look for byte order marks at the beginning of the file.
+
+
+
+ Initializes a new instance of the HtmlNavigator and loads an HTML document from a file.
+
+ The complete file path to be read.
+ The character encoding to use.
+
+
+
+ Initializes a new instance of the HtmlNavigator and loads an HTML document from a file.
+
+ The complete file path to be read.
+ The character encoding to use.
+ Indicates whether to look for byte order marks at the beginning of the file.
+
+
+
+ Initializes a new instance of the HtmlNavigator and loads an HTML document from a file.
+
+ The complete file path to be read.
+ The character encoding to use.
+ Indicates whether to look for byte order marks at the beginning of the file.
+ The minimum buffer size.
+
+
+
+ Creates a new HtmlNavigator positioned at the same node as this HtmlNavigator.
+
+ A new HtmlNavigator object positioned at the same node as the original HtmlNavigator.
+
+
+
+ Gets the value of the HTML attribute with the specified LocalName and NamespaceURI.
+
+ The local name of the HTML attribute.
+ The namespace URI of the attribute. Unsupported with the HtmlNavigator implementation.
+ The value of the specified HTML attribute. String.Empty or null if a matching attribute is not found or if the navigator is not positioned on an element node.
+
+
+
+ Returns the value of the namespace node corresponding to the specified local name.
+ Always returns string.Empty for the HtmlNavigator implementation.
+
+ The local name of the namespace node.
+ Always returns string.Empty for the HtmlNavigator implementation.
+
+
+
+ Determines whether the current HtmlNavigator is at the same position as the specified HtmlNavigator.
+
+ The HtmlNavigator that you want to compare against.
+ true if the two navigators have the same position, otherwise, false.
+
+
+
+ Moves to the same position as the specified HtmlNavigator.
+
+ The HtmlNavigator positioned on the node that you want to move to.
+ true if successful, otherwise false. If false, the position of the navigator is unchanged.
+
+
+
+ Moves to the HTML attribute with matching LocalName and NamespaceURI.
+
+ The local name of the HTML attribute.
+ The namespace URI of the attribute. Unsupported with the HtmlNavigator implementation.
+ true if the HTML attribute is found, otherwise, false. If false, the position of the navigator does not change.
+
+
+
+ Moves to the first sibling of the current node.
+
+ true if the navigator is successful moving to the first sibling node, false if there is no first sibling or if the navigator is currently positioned on an attribute node.
+
+
+
+ Moves to the first HTML attribute.
+
+ true if the navigator is successful moving to the first HTML attribute, otherwise, false.
+
+
+
+ Moves to the first child of the current node.
+
+ true if there is a first child node, otherwise false.
+
+
+
+ Moves the XPathNavigator to the first namespace node of the current element.
+ Always returns false for the HtmlNavigator implementation.
+
+ An XPathNamespaceScope value describing the namespace scope.
+ Always returns false for the HtmlNavigator implementation.
+
+
+
+ Moves to the node that has an attribute of type ID whose value matches the specified string.
+
+ A string representing the ID value of the node to which you want to move. This argument does not need to be atomized.
+ true if the move was successful, otherwise false. If false, the position of the navigator is unchanged.
+
+
+
+ Moves the XPathNavigator to the namespace node with the specified local name.
+ Always returns false for the HtmlNavigator implementation.
+
+ The local name of the namespace node.
+ Always returns false for the HtmlNavigator implementation.
+
+
+
+ Moves to the next sibling of the current node.
+
+ true if the navigator is successful moving to the next sibling node, false if there are no more siblings or if the navigator is currently positioned on an attribute node. If false, the position of the navigator is unchanged.
+
+
+
+ Moves to the next HTML attribute.
+
+
+
+
+
+ Moves the XPathNavigator to the next namespace node.
+ Always returns falsefor the HtmlNavigator implementation.
+
+ An XPathNamespaceScope value describing the namespace scope.
+ Always returns false for the HtmlNavigator implementation.
+
+
+
+ Moves to the parent of the current node.
+
+ true if there is a parent node, otherwise false.
+
+
+
+ Moves to the previous sibling of the current node.
+
+ true if the navigator is successful moving to the previous sibling node, false if there is no previous sibling or if the navigator is currently positioned on an attribute node.
+
+
+
+ Moves to the root node to which the current node belongs.
+
+
+
+
+ Gets the base URI for the current node.
+ Always returns string.Empty in the case of HtmlNavigator implementation.
+
+
+
+
+ Gets the current HTML document.
+
+
+
+
+ Gets the current HTML node.
+
+
+
+
+ Gets a value indicating whether the current node has child nodes.
+
+
+
+
+ Gets a value indicating whether the current node has child nodes.
+
+
+
+
+ Gets a value indicating whether the current node is an empty element.
+
+
+
+
+ Gets the name of the current HTML node without the namespace prefix.
+
+
+
+
+ Gets the qualified name of the current node.
+
+
+
+
+ Gets the namespace URI (as defined in the W3C Namespace Specification) of the current node.
+ Always returns string.Empty in the case of HtmlNavigator implementation.
+
+
+
+
+ Gets the associated with this implementation.
+
+
+
+
+ Gets the type of the current node.
+
+
+
+
+ Gets the prefix associated with the current node.
+ Always returns string.Empty in the case of HtmlNavigator implementation.
+
+
+
+
+ Gets the text value of the current node.
+
+
+
+
+ Gets the xml:lang scope for the current node.
+ Always returns string.Empty in the case of HtmlNavigator implementation.
+
+
+
+
+ A utility class to compute CRC32.
+
+
+
+
+ Compute a checksum for a given array of bytes.
+
+ The array of bytes to compute the checksum for.
+ The computed checksum.
+
+
+
+ Compute a checksum for a given string.
+
+ The string to compute the checksum for.
+ The computed checksum.
+
+
+
+ Represents the type of fragment in a mixed code document.
+
+
+
+
+ The fragment contains code.
+
+
+
+
+ The fragment contains text.
+
+
+
+
+ Flags that describe the behavior of an Element node.
+
+
+
+
+ The node is a CDATA node.
+
+
+
+
+ The node is empty. META or IMG are example of such nodes.
+
+
+
+
+ The node will automatically be closed during parsing.
+
+
+
+
+ The node can overlap.
+
+
+
+
+ Represents a complete HTML document.
+
+
+
+
+ Detects the encoding of an HTML document from a file first, and then loads the file.
+
+ The complete file path to be read.
+
+
+
+ Detects the encoding of an HTML document from a file first, and then loads the file.
+
+ The complete file path to be read. May not be null.
+ true to detect encoding, false otherwise.
+
+
+
+ Detects the encoding of an HTML file.
+
+ Path for the file containing the HTML document to detect. May not be null.
+ The detected encoding.
+
+
+
+ Loads an HTML document from a file.
+
+ The complete file path to be read. May not be null.
+
+
+
+ Loads an HTML document from a file.
+
+ The complete file path to be read. May not be null.
+ Indicates whether to look for byte order marks at the beginning of the file.
+
+
+
+ Loads an HTML document from a file.
+
+ The complete file path to be read. May not be null.
+ The character encoding to use. May not be null.
+
+
+
+ Loads an HTML document from a file.
+
+ The complete file path to be read. May not be null.
+ The character encoding to use. May not be null.
+ Indicates whether to look for byte order marks at the beginning of the file.
+
+
+
+ Loads an HTML document from a file.
+
+ The complete file path to be read. May not be null.
+ The character encoding to use. May not be null.
+ Indicates whether to look for byte order marks at the beginning of the file.
+ The minimum buffer size.
+
+
+
+ Saves the mixed document to the specified file.
+
+ The location of the file where you want to save the document.
+
+
+
+ Saves the mixed document to the specified file.
+
+ The location of the file where you want to save the document. May not be null.
+ The character encoding to use. May not be null.
+
+
+
+ Creates a new XPathNavigator object for navigating this HTML document.
+
+ An XPathNavigator object. The XPathNavigator is positioned on the root of the document.
+
+
+
+ Adds Debugging attributes to node. Default is false.
+
+
+
+
+ Defines if closing for non closed nodes must be done at the end or directly in the document.
+ Setting this to true can actually change how browsers render the page. Default is false.
+
+
+
+
+ Defines if non closed nodes will be checked at the end of parsing. Default is true.
+
+
+
+
+ Defines if a checksum must be computed for the document while parsing. Default is false.
+
+
+
+
+ Defines the default stream encoding to use. Default is System.Text.Encoding.Default.
+
+
+
+
+ Defines if source text must be extracted while parsing errors.
+ If the document has a lot of errors, or cascading errors, parsing performance can be dramatically affected if set to true.
+ Default is false.
+
+
+
+
+ Defines the maximum length of source text or parse errors. Default is 100.
+
+
+
+
+ Defines if LI, TR, TH, TD tags must be partially fixed when nesting errors are detected. Default is false.
+
+
+
+
+ Defines if output must conform to XML, instead of HTML.
+
+
+
+
+ Defines if attribute value output must be optimized (not bound with double quotes if it is possible). Default is false.
+
+
+
+
+ Defines if name must be output with it's original case. Useful for asp.net tags and attributes
+
+
+
+
+ Defines if name must be output in uppercase. Default is false.
+
+
+
+
+ Defines if declared encoding must be read from the document.
+ Declared encoding is determined using the meta http-equiv="content-type" content="text/html;charset=XXXXX" html node.
+ Default is true.
+
+
+
+
+ Defines the name of a node that will throw the StopperNodeException when found as an end node. Default is null.
+
+
+
+
+ Defines if the 'id' attribute must be specifically used. Default is true.
+
+
+
+
+ Defines if empty nodes must be written as closed during output. Default is false.
+
+
+
+
+ Creates an instance of an HTML document.
+
+
+
+
+ Gets a valid XML name.
+
+ Any text.
+ A string that is a valid XML name.
+
+
+
+ Applies HTML encoding to a specified string.
+
+ The input string to encode. May not be null.
+ The encoded string.
+
+
+
+ Determines if the specified character is considered as a whitespace character.
+
+ The character to check.
+ true if if the specified character is considered as a whitespace character.
+
+
+
+ Creates an HTML attribute with the specified name.
+
+ The name of the attribute. May not be null.
+ The new HTML attribute.
+
+
+
+ Creates an HTML attribute with the specified name.
+
+ The name of the attribute. May not be null.
+ The value of the attribute.
+ The new HTML attribute.
+
+
+
+ Creates an HTML comment node.
+
+ The new HTML comment node.
+
+
+
+ Creates an HTML comment node with the specified comment text.
+
+ The comment text. May not be null.
+ The new HTML comment node.
+
+
+
+ Creates an HTML element node with the specified name.
+
+ The qualified name of the element. May not be null.
+ The new HTML node.
+
+
+
+ Creates an HTML text node.
+
+ The new HTML text node.
+
+
+
+ Creates an HTML text node with the specified text.
+
+ The text of the node. May not be null.
+ The new HTML text node.
+
+
+
+ Detects the encoding of an HTML stream.
+
+ The input stream. May not be null.
+ The detected encoding.
+
+
+
+ Detects the encoding of an HTML text provided on a TextReader.
+
+ The TextReader used to feed the HTML. May not be null.
+ The detected encoding.
+
+
+
+ Detects the encoding of an HTML text.
+
+ The input html text. May not be null.
+ The detected encoding.
+
+
+
+ Gets the HTML node with the specified 'id' attribute value.
+
+ The attribute id to match. May not be null.
+ The HTML node with the matching id or null if not found.
+
+
+
+ Loads an HTML document from a stream.
+
+ The input stream.
+
+
+
+ Loads an HTML document from a stream.
+
+ The input stream.
+ Indicates whether to look for byte order marks at the beginning of the stream.
+
+
+
+ Loads an HTML document from a stream.
+
+ The input stream.
+ The character encoding to use.
+
+
+
+ Loads an HTML document from a stream.
+
+ The input stream.
+ The character encoding to use.
+ Indicates whether to look for byte order marks at the beginning of the stream.
+
+
+
+ Loads an HTML document from a stream.
+
+ The input stream.
+ The character encoding to use.
+ Indicates whether to look for byte order marks at the beginning of the stream.
+ The minimum buffer size.
+
+
+
+ Loads the HTML document from the specified TextReader.
+
+ The TextReader used to feed the HTML data into the document. May not be null.
+
+
+
+ Loads the HTML document from the specified string.
+
+ String containing the HTML document to load. May not be null.
+
+
+
+ Saves the HTML document to the specified stream.
+
+ The stream to which you want to save.
+
+
+
+ Saves the HTML document to the specified stream.
+
+ The stream to which you want to save. May not be null.
+ The character encoding to use. May not be null.
+
+
+
+ Saves the HTML document to the specified StreamWriter.
+
+ The StreamWriter to which you want to save.
+
+
+
+ Saves the HTML document to the specified TextWriter.
+
+ The TextWriter to which you want to save. May not be null.
+
+
+
+ Saves the HTML document to the specified XmlWriter.
+
+ The XmlWriter to which you want to save.
+
+
+
+ Gets the document CRC32 checksum if OptionComputeChecksum was set to true before parsing, 0 otherwise.
+
+
+
+
+ Gets the document's declared encoding.
+ Declared encoding is determined using the meta http-equiv="content-type" content="text/html;charset=XXXXX" html node.
+
+
+
+
+ Gets the root node of the document.
+
+
+
+
+ Gets the document's output encoding.
+
+
+
+
+ Gets a list of parse errors found in the document.
+
+
+
+
+ Gets the remaining text.
+ Will always be null if OptionStopperNodeName is null.
+
+
+
+
+ Gets the offset of Remainder in the original Html text.
+ If OptionStopperNodeName is null, this will return the length of the original Html text.
+
+
+
+
+ Gets the document's stream encoding.
+
+
+
+
+ A utility class to replace special characters by entities and vice-versa.
+ Follows HTML 4.0 specification found at http://www.w3.org/TR/html4/sgml/entities.html
+
+
+
+
+ Replace known entities by characters.
+
+ The source text.
+ The result text.
+
+
+
+ Clone and entitize an HtmlNode. This will affect attribute values and nodes' text. It will also entitize all child nodes.
+
+ The node to entitize.
+ An entitized cloned node.
+
+
+
+ Replace characters above 127 by entities.
+
+ The source text.
+ The result text.
+
+
+
+ Replace characters above 127 by entities.
+
+ The source text.
+ If set to false, the function will not use known entities name. Default is true.
+ The result text.
+
+
+
+ Replace characters above 127 by entities.
+
+ The source text.
+ If set to false, the function will not use known entities name. Default is true.
+ If set to true, the [quote], [ampersand], [lower than] and [greather than] characters will be entitized.
+ The result text
+
+
+
+ A collection of entities indexed by name.
+
+
+
+
+ A collection of entities indexed by value.
+
+
+
+
+ Represents a parsing error found during document parsing.
+
+
+
+
+ Gets the type of error.
+
+
+
+
+ Gets the line number of this error in the document.
+
+
+
+
+ Gets the column number of this error in the document.
+
+
+
+
+ Gets a description for the error.
+
+
+
+
+ Gets the the full text of the line containing the error.
+
+
+
+
+ Gets the absolute stream position of this error in the document, relative to the start of the document.
+
+
+
+
+ Represents an exception thrown by the HtmlWeb utility class.
+
+
+
+
+ Creates an instance of the HtmlWebException.
+
+ The exception's message.
+
+
+
+ Represents the type of parsing error.
+
+
+
+
+ A tag was not closed.
+
+
+
+
+ A tag was not opened.
+
+
+
+
+ There is a charset mismatch between stream and declared (META) encoding.
+
+
+
+
+ An end tag was not required.
+
+
+
+
+ An end tag is invalid at this position.
+
+
+
+
+ Represents an HTML text node.
+
+
+
+
+ Gets or Sets the HTML between the start and end tags of the object. In the case of a text node, it is equals to OuterHtml.
+
+
+
+
+ Gets or Sets the object and its content in HTML.
+
+
+
+
+ Gets or Sets the text of the node.
+
+
+
+
+ Represents the type of a node.
+
+
+
+
+ The root of a document.
+
+
+
+
+ An HTML element.
+
+
+
+
+ An HTML comment.
+
+
+
+
+ A text node is always the child of an element or a document node.
+
+
+
+
diff --git a/packages/HtmlAgilityPack.1.4.9/lib/Net40-client/HtmlAgilityPack.dll b/packages/HtmlAgilityPack.1.4.9/lib/Net40-client/HtmlAgilityPack.dll
new file mode 100644
index 000000000..e25d7937b
Binary files /dev/null and b/packages/HtmlAgilityPack.1.4.9/lib/Net40-client/HtmlAgilityPack.dll differ
diff --git a/packages/HtmlAgilityPack.1.4.9/lib/Net40-client/HtmlAgilityPack.xml b/packages/HtmlAgilityPack.1.4.9/lib/Net40-client/HtmlAgilityPack.xml
new file mode 100644
index 000000000..4c2a44582
--- /dev/null
+++ b/packages/HtmlAgilityPack.1.4.9/lib/Net40-client/HtmlAgilityPack.xml
@@ -0,0 +1,2468 @@
+
+
+
+ HtmlAgilityPack
+
+
+
+
+ Represents an HTML node.
+
+
+
+
+ Creates a new XPathNavigator object for navigating this HTML node.
+
+ An XPathNavigator object. The XPathNavigator is positioned on the node from which the method was called. It is not positioned on the root of the document.
+
+
+
+ Creates an XPathNavigator using the root of this document.
+
+
+
+
+
+ Selects a list of nodes matching the expression.
+
+ The XPath expression.
+ An containing a collection of nodes matching the query, or null if no node matched the XPath expression.
+
+
+
+ Selects the first XmlNode that matches the XPath expression.
+
+ The XPath expression. May not be null.
+ The first that matches the XPath query or a null reference if no matching node was found.
+
+
+
+ Gets the name of a comment node. It is actually defined as '#comment'.
+
+
+
+
+ Gets the name of the document node. It is actually defined as '#document'.
+
+
+
+
+ Gets the name of a text node. It is actually defined as '#text'.
+
+
+
+
+ Gets a collection of flags that define specific behaviors for specific element nodes.
+ The table contains a DictionaryEntry list with the lowercase tag name as the Key, and a combination of HtmlElementFlags as the Value.
+
+
+
+
+ Initialize HtmlNode. Builds a list of all tags that have special allowances
+
+
+
+
+ Initializes HtmlNode, providing type, owner and where it exists in a collection
+
+
+
+
+
+
+
+ Determines if an element node can be kept overlapped.
+
+ The name of the element node to check. May not be null.
+ true if the name is the name of an element node that can be kept overlapped, false otherwise.
+
+
+
+ Creates an HTML node from a string representing literal HTML.
+
+ The HTML text.
+ The newly created node instance.
+
+
+
+ Determines if an element node is a CDATA element node.
+
+ The name of the element node to check. May not be null.
+ true if the name is the name of a CDATA element node, false otherwise.
+
+
+
+ Determines if an element node is closed.
+
+ The name of the element node to check. May not be null.
+ true if the name is the name of a closed element node, false otherwise.
+
+
+
+ Determines if an element node is defined as empty.
+
+ The name of the element node to check. May not be null.
+ true if the name is the name of an empty element node, false otherwise.
+
+
+
+ Determines if a text corresponds to the closing tag of an node that can be kept overlapped.
+
+ The text to check. May not be null.
+ true or false.
+
+
+
+ Returns a collection of all ancestor nodes of this element.
+
+
+
+
+
+ Get Ancestors with matching name
+
+
+
+
+
+
+ Returns a collection of all ancestor nodes of this element.
+
+
+
+
+
+ Gets all anscestor nodes and the current node
+
+
+
+
+
+
+ Adds the specified node to the end of the list of children of this node.
+
+ The node to add. May not be null.
+ The node added.
+
+
+
+ Adds the specified node to the end of the list of children of this node.
+
+ The node list to add. May not be null.
+
+
+
+ Gets all Attributes with name
+
+
+
+
+
+
+ Creates a duplicate of the node
+
+
+
+
+
+ Creates a duplicate of the node and changes its name at the same time.
+
+ The new name of the cloned node. May not be null.
+ The cloned node.
+
+
+
+ Creates a duplicate of the node and changes its name at the same time.
+
+ The new name of the cloned node. May not be null.
+ true to recursively clone the subtree under the specified node; false to clone only the node itself.
+ The cloned node.
+
+
+
+ Creates a duplicate of the node.
+
+ true to recursively clone the subtree under the specified node; false to clone only the node itself.
+ The cloned node.
+
+
+
+ Creates a duplicate of the node and the subtree under it.
+
+ The node to duplicate. May not be null.
+
+
+
+ Creates a duplicate of the node.
+
+ The node to duplicate. May not be null.
+ true to recursively clone the subtree under the specified node, false to clone only the node itself.
+
+
+
+ Gets all Descendant nodes for this node and each of child nodes
+
+
+
+
+
+ Returns a collection of all descendant nodes of this element, in document order
+
+
+
+
+
+ Gets all Descendant nodes in enumerated list
+
+
+
+
+
+ Get all descendant nodes with matching name
+
+
+
+
+
+
+ Returns a collection of all descendant nodes of this element, in document order
+
+
+
+
+
+ Gets all descendant nodes including this node
+
+
+
+
+
+
+ Gets first generation child node matching name
+
+
+
+
+
+
+ Gets matching first generation child nodes matching name
+
+
+
+
+
+
+ Helper method to get the value of an attribute of this node. If the attribute is not found, the default value will be returned.
+
+ The name of the attribute to get. May not be null.
+ The default value to return if not found.
+ The value of the attribute if found, the default value if not found.
+
+
+
+ Helper method to get the value of an attribute of this node. If the attribute is not found, the default value will be returned.
+
+ The name of the attribute to get. May not be null.
+ The default value to return if not found.
+ The value of the attribute if found, the default value if not found.
+
+
+
+ Helper method to get the value of an attribute of this node. If the attribute is not found, the default value will be returned.
+
+ The name of the attribute to get. May not be null.
+ The default value to return if not found.
+ The value of the attribute if found, the default value if not found.
+
+
+
+ Inserts the specified node immediately after the specified reference node.
+
+ The node to insert. May not be null.
+ The node that is the reference node. The newNode is placed after the refNode.
+ The node being inserted.
+
+
+
+ Inserts the specified node immediately before the specified reference node.
+
+ The node to insert. May not be null.
+ The node that is the reference node. The newChild is placed before this node.
+ The node being inserted.
+
+
+
+ Adds the specified node to the beginning of the list of children of this node.
+
+ The node to add. May not be null.
+ The node added.
+
+
+
+ Adds the specified node list to the beginning of the list of children of this node.
+
+ The node list to add. May not be null.
+
+
+
+ Removes node from parent collection
+
+
+
+
+ Removes all the children and/or attributes of the current node.
+
+
+
+
+ Removes all the children of the current node.
+
+
+
+
+ Removes the specified child node.
+
+ The node being removed. May not be null.
+ The node removed.
+
+
+
+ Removes the specified child node.
+
+ The node being removed. May not be null.
+ true to keep grand children of the node, false otherwise.
+ The node removed.
+
+
+
+ Replaces the child node oldChild with newChild node.
+
+ The new node to put in the child list.
+ The node being replaced in the list.
+ The node replaced.
+
+
+
+ Helper method to set the value of an attribute of this node. If the attribute is not found, it will be created automatically.
+
+ The name of the attribute to set. May not be null.
+ The value for the attribute.
+ The corresponding attribute instance.
+
+
+
+ Saves all the children of the node to the specified TextWriter.
+
+ The TextWriter to which you want to save.
+
+
+
+ Saves all the children of the node to a string.
+
+ The saved string.
+
+
+
+ Saves the current node to the specified TextWriter.
+
+ The TextWriter to which you want to save.
+
+
+
+ Saves the current node to the specified XmlWriter.
+
+ The XmlWriter to which you want to save.
+
+
+
+ Saves the current node to a string.
+
+ The saved string.
+
+
+
+ Gets the collection of HTML attributes for this node. May not be null.
+
+
+
+
+ Gets all the children of the node.
+
+
+
+
+ Gets a value indicating if this node has been closed or not.
+
+
+
+
+ Gets the collection of HTML attributes for the closing tag. May not be null.
+
+
+
+
+ Gets the first child of the node.
+
+
+
+
+ Gets a value indicating whether the current node has any attributes.
+
+
+
+
+ Gets a value indicating whether this node has any child nodes.
+
+
+
+
+ Gets a value indicating whether the current node has any attributes on the closing tag.
+
+
+
+
+ Gets or sets the value of the 'id' HTML attribute. The document must have been parsed using the OptionUseIdAttribute set to true.
+
+
+
+
+ Gets or Sets the HTML between the start and end tags of the object.
+
+
+
+
+ Gets or Sets the text between the start and end tags of the object.
+
+
+
+
+ Gets the last child of the node.
+
+
+
+
+ Gets the line number of this node in the document.
+
+
+
+
+ Gets the column number of this node in the document.
+
+
+
+
+ Gets or sets this node's name.
+
+
+
+
+ Gets the HTML node immediately following this element.
+
+
+
+
+ Gets the type of this node.
+
+
+
+
+ The original unaltered name of the tag
+
+
+
+
+ Gets or Sets the object and its content in HTML.
+
+
+
+
+ Gets the to which this node belongs.
+
+
+
+
+ Gets the parent of this node (for nodes that can have parents).
+
+
+
+
+ Gets the node immediately preceding this node.
+
+
+
+
+ Gets the stream position of this node in the document, relative to the start of the document.
+
+
+
+
+ Gets a valid XPath string that points to this node
+
+
+
+
+ Represents an HTML attribute.
+
+
+
+
+ Compares the current instance with another attribute. Comparison is based on attributes' name.
+
+ An attribute to compare with this instance.
+ A 32-bit signed integer that indicates the relative order of the names comparison.
+
+
+
+ Creates a duplicate of this attribute.
+
+ The cloned attribute.
+
+
+
+ Removes this attribute from it's parents collection
+
+
+
+
+ Gets the line number of this attribute in the document.
+
+
+
+
+ Gets the column number of this attribute in the document.
+
+
+
+
+ Gets the qualified name of the attribute.
+
+
+
+
+ Name of attribute with original case
+
+
+
+
+ Gets the HTML document to which this attribute belongs.
+
+
+
+
+ Gets the HTML node to which this attribute belongs.
+
+
+
+
+ Specifies what type of quote the data should be wrapped in
+
+
+
+
+ Gets the stream position of this attribute in the document, relative to the start of the document.
+
+
+
+
+ Gets or sets the value of the attribute.
+
+
+
+
+ Gets a valid XPath string that points to this Attribute
+
+
+
+
+ An Enum representing different types of Quotes used for surrounding attribute values
+
+
+
+
+ A single quote mark '
+
+
+
+
+ A double quote mark "
+
+
+
+
+ Represents a fragment of text in a mixed code document.
+
+
+
+
+ Represents a base class for fragments in a mixed code document.
+
+
+
+
+ Gets the fragement text.
+
+
+
+
+ Gets the type of fragment.
+
+
+
+
+ Gets the line number of the fragment.
+
+
+
+
+ Gets the line position (column) of the fragment.
+
+
+
+
+ Gets the fragment position in the document's stream.
+
+
+
+
+ Gets the fragment text.
+
+
+
+
+ Represents an HTML comment.
+
+
+
+
+ Gets or Sets the comment text of the node.
+
+
+
+
+ Gets or Sets the HTML between the start and end tags of the object. In the case of a text node, it is equals to OuterHtml.
+
+
+
+
+ Gets or Sets the object and its content in HTML.
+
+
+
+
+ Represents a document with mixed code and text. ASP, ASPX, JSP, are good example of such documents.
+
+
+
+
+ Gets or sets the token representing code end.
+
+
+
+
+ Gets or sets the token representing code start.
+
+
+
+
+ Gets or sets the token representing code directive.
+
+
+
+
+ Gets or sets the token representing response write directive.
+
+
+
+
+ Creates a mixed code document instance.
+
+
+
+
+ Create a code fragment instances.
+
+ The newly created code fragment instance.
+
+
+
+ Create a text fragment instances.
+
+ The newly created text fragment instance.
+
+
+
+ Loads a mixed code document from a stream.
+
+ The input stream.
+
+
+
+ Loads a mixed code document from a stream.
+
+ The input stream.
+ Indicates whether to look for byte order marks at the beginning of the file.
+
+
+
+ Loads a mixed code document from a stream.
+
+ The input stream.
+ The character encoding to use.
+
+
+
+ Loads a mixed code document from a stream.
+
+ The input stream.
+ The character encoding to use.
+ Indicates whether to look for byte order marks at the beginning of the file.
+
+
+
+ Loads a mixed code document from a stream.
+
+ The input stream.
+ The character encoding to use.
+ Indicates whether to look for byte order marks at the beginning of the file.
+ The minimum buffer size.
+
+
+
+ Loads a mixed code document from a file.
+
+ The complete file path to be read.
+
+
+
+ Loads a mixed code document from a file.
+
+ The complete file path to be read.
+ Indicates whether to look for byte order marks at the beginning of the file.
+
+
+
+ Loads a mixed code document from a file.
+
+ The complete file path to be read.
+ The character encoding to use.
+
+
+
+ Loads a mixed code document from a file.
+
+ The complete file path to be read.
+ The character encoding to use.
+ Indicates whether to look for byte order marks at the beginning of the file.
+
+
+
+ Loads a mixed code document from a file.
+
+ The complete file path to be read.
+ The character encoding to use.
+ Indicates whether to look for byte order marks at the beginning of the file.
+ The minimum buffer size.
+
+
+
+ Loads the mixed code document from the specified TextReader.
+
+ The TextReader used to feed the HTML data into the document.
+
+
+
+ Loads a mixed document from a text
+
+ The text to load.
+
+
+
+ Saves the mixed document to the specified stream.
+
+ The stream to which you want to save.
+
+
+
+ Saves the mixed document to the specified stream.
+
+ The stream to which you want to save.
+ The character encoding to use.
+
+
+
+ Saves the mixed document to the specified file.
+
+ The location of the file where you want to save the document.
+
+
+
+ Saves the mixed document to the specified file.
+
+ The location of the file where you want to save the document.
+ The character encoding to use.
+
+
+
+ Saves the mixed document to the specified StreamWriter.
+
+ The StreamWriter to which you want to save.
+
+
+
+ Saves the mixed document to the specified TextWriter.
+
+ The TextWriter to which you want to save.
+
+
+
+ Gets the code represented by the mixed code document seen as a template.
+
+
+
+
+ Gets the list of code fragments in the document.
+
+
+
+
+ Gets the list of all fragments in the document.
+
+
+
+
+ Gets the encoding of the stream used to read the document.
+
+
+
+
+ Gets the list of text fragments in the document.
+
+
+
+
+ Represents a fragment of code in a mixed code document.
+
+
+
+
+ Gets the fragment code text.
+
+
+
+
+ Represents a combined list and collection of HTML nodes.
+
+
+
+
+ Adds supplied item to collection
+
+
+
+
+
+ Explicit clear
+
+
+
+
+ Retreives existence of supplied item
+
+
+
+
+
+
+ Copies collection to array
+
+
+
+
+
+
+ Get Explicit enumerator
+
+
+
+
+
+ Explicit non-generic enumerator
+
+
+
+
+
+ Retrieves the index for the supplied item, -1 if not found
+
+
+
+
+
+
+ Inserts given item into collection at supplied index
+
+
+
+
+
+
+ Explicit collection remove
+
+
+
+
+
+
+ Removes the attribute at the specified index.
+
+ The index of the attribute to remove.
+
+
+
+ Adds a new attribute to the collection with the given values
+
+
+
+
+
+
+ Inserts the specified attribute as the last attribute in the collection.
+
+ The attribute to insert. May not be null.
+ The appended attribute.
+
+
+
+ Creates and inserts a new attribute as the last attribute in the collection.
+
+ The name of the attribute to insert.
+ The appended attribute.
+
+
+
+ Creates and inserts a new attribute as the last attribute in the collection.
+
+ The name of the attribute to insert.
+ The value of the attribute to insert.
+ The appended attribute.
+
+
+
+ Checks for existance of attribute with given name
+
+
+
+
+
+
+ Inserts the specified attribute as the first node in the collection.
+
+ The attribute to insert. May not be null.
+ The prepended attribute.
+
+
+
+ Removes a given attribute from the list.
+
+ The attribute to remove. May not be null.
+
+
+
+ Removes an attribute from the list, using its name. If there are more than one attributes with this name, they will all be removed.
+
+ The attribute's name. May not be null.
+
+
+
+ Remove all attributes in the list.
+
+
+
+
+ Returns all attributes with specified name. Handles case insentivity
+
+ Name of the attribute
+
+
+
+
+ Removes all attributes from the collection
+
+
+
+
+ Clears the attribute collection
+
+
+
+
+ Gets a given attribute from the list using its name.
+
+
+
+
+ Gets the number of elements actually contained in the list.
+
+
+
+
+ Gets readonly status of colelction
+
+
+
+
+ Gets the attribute at the specified index.
+
+
+
+
+ A utility class to get HTML document from HTTP.
+
+
+
+
+ Occurs after an HTTP request has been executed.
+
+
+
+
+ Occurs before an HTML document is handled.
+
+
+
+
+ Occurs before an HTTP request is executed.
+
+
+
+
+ Gets the MIME content type for a given path extension.
+
+ The input path extension.
+ The default content type to return if any error occurs.
+ The path extension's MIME content type.
+
+
+
+ Gets the path extension for a given MIME content type.
+
+ The input MIME content type.
+ The default path extension to return if any error occurs.
+ The MIME content type's path extension.
+
+
+
+ Creates an instance of the given type from the specified Internet resource.
+
+ The requested URL, such as "http://Myserver/Mypath/Myfile.asp".
+ The requested type.
+ An newly created instance.
+
+
+
+ Gets an HTML document from an Internet resource and saves it to the specified file.
+
+ The requested URL, such as "http://Myserver/Mypath/Myfile.asp".
+ The location of the file where you want to save the document.
+
+
+
+ Gets an HTML document from an Internet resource and saves it to the specified file. - Proxy aware
+
+ The requested URL, such as "http://Myserver/Mypath/Myfile.asp".
+ The location of the file where you want to save the document.
+
+
+
+
+
+ Gets an HTML document from an Internet resource and saves it to the specified file.
+
+ The requested URL, such as "http://Myserver/Mypath/Myfile.asp".
+ The location of the file where you want to save the document.
+ The HTTP method used to open the connection, such as GET, POST, PUT, or PROPFIND.
+
+
+
+ Gets an HTML document from an Internet resource and saves it to the specified file. Understands Proxies
+
+ The requested URL, such as "http://Myserver/Mypath/Myfile.asp".
+ The location of the file where you want to save the document.
+
+ The HTTP method used to open the connection, such as GET, POST, PUT, or PROPFIND.
+
+
+
+
+ Gets the cache file path for a specified url.
+
+ The url fo which to retrieve the cache path. May not be null.
+ The cache file path.
+
+
+
+ Gets an HTML document from an Internet resource.
+
+ The requested URL, such as "http://Myserver/Mypath/Myfile.asp".
+ A new HTML document.
+
+
+
+ Gets an HTML document from an Internet resource.
+
+ The requested URL, such as "http://Myserver/Mypath/Myfile.asp".
+ Host to use for Proxy
+ Port the Proxy is on
+ User Id for Authentication
+ Password for Authentication
+ A new HTML document.
+
+
+
+ Loads an HTML document from an Internet resource.
+
+ The requested URL, such as "http://Myserver/Mypath/Myfile.asp".
+ The HTTP method used to open the connection, such as GET, POST, PUT, or PROPFIND.
+ A new HTML document.
+
+
+
+ Loads an HTML document from an Internet resource.
+
+ The requested URL, such as "http://Myserver/Mypath/Myfile.asp".
+ The HTTP method used to open the connection, such as GET, POST, PUT, or PROPFIND.
+ Proxy to use with this request
+ Credentials to use when authenticating
+ A new HTML document.
+
+
+
+ Loads an HTML document from an Internet resource and saves it to the specified XmlTextWriter.
+
+ The requested URL, such as "http://Myserver/Mypath/Myfile.asp".
+ The XmlTextWriter to which you want to save to.
+
+
+
+ Creates an instance of the given type from the specified Internet resource.
+
+ The requested URL, such as "http://Myserver/Mypath/Myfile.asp".
+ The URL that specifies the XSLT stylesheet to load.
+ An containing the namespace-qualified arguments used as input to the transform.
+ The requested type.
+ An newly created instance.
+
+
+
+ Creates an instance of the given type from the specified Internet resource.
+
+ The requested URL, such as "http://Myserver/Mypath/Myfile.asp".
+ The URL that specifies the XSLT stylesheet to load.
+ An containing the namespace-qualified arguments used as input to the transform.
+ The requested type.
+ A file path where the temporary XML before transformation will be saved. Mostly used for debugging purposes.
+ An newly created instance.
+
+
+
+ Loads an HTML document from an Internet resource and saves it to the specified XmlTextWriter, after an XSLT transformation.
+
+ The requested URL, such as "http://Myserver/Mypath/Myfile.asp".
+ The URL that specifies the XSLT stylesheet to load.
+ An XsltArgumentList containing the namespace-qualified arguments used as input to the transform.
+ The XmlTextWriter to which you want to save.
+
+
+
+ Loads an HTML document from an Internet resource and saves it to the specified XmlTextWriter, after an XSLT transformation.
+
+ The requested URL, such as "http://Myserver/Mypath/Myfile.asp". May not be null.
+ The URL that specifies the XSLT stylesheet to load.
+ An XsltArgumentList containing the namespace-qualified arguments used as input to the transform.
+ The XmlTextWriter to which you want to save.
+ A file path where the temporary XML before transformation will be saved. Mostly used for debugging purposes.
+
+
+
+ Gets or Sets a value indicating if document encoding must be automatically detected.
+
+
+
+
+ Gets or sets the Encoding used to override the response stream from any web request
+
+
+
+
+ Gets or Sets a value indicating whether to get document only from the cache.
+ If this is set to true and document is not found in the cache, nothing will be loaded.
+
+
+
+
+ Gets or Sets the cache path. If null, no caching mechanism will be used.
+
+
+
+
+ Gets a value indicating if the last document was retrieved from the cache.
+
+
+
+
+ Gets the last request duration in milliseconds.
+
+
+
+
+ Gets the URI of the Internet resource that actually responded to the request.
+
+
+
+
+ Gets the last request status.
+
+
+
+
+ Gets or Sets the size of the buffer used for memory operations.
+
+
+
+
+ Gets or Sets a value indicating if cookies will be stored.
+
+
+
+
+ Gets or Sets the User Agent HTTP 1.1 header sent on any webrequest
+
+
+
+
+ Gets or Sets a value indicating whether the caching mechanisms should be used or not.
+
+
+
+
+ Represents the method that will handle the PostResponse event.
+
+
+
+
+ Represents the method that will handle the PreHandleDocument event.
+
+
+
+
+ Represents the method that will handle the PreRequest event.
+
+
+
+
+ Wraps getting AppDomain permissions
+
+
+
+
+ An interface for getting permissions of the running application
+
+
+
+
+ Checks to see if Registry access is available to the caller
+
+
+
+
+
+ Checks to see if DNS information is available to the caller
+
+
+
+
+
+ Checks to see if Registry access is available to the caller
+
+
+
+
+
+ Checks to see if DNS information is available to the caller
+
+
+
+
+
+ Represents a list of mixed code fragments.
+
+
+
+
+ Gets an enumerator that can iterate through the fragment list.
+
+
+
+
+ Appends a fragment to the list of fragments.
+
+ The fragment to append. May not be null.
+
+
+
+ Gets an enumerator that can iterate through the fragment list.
+
+
+
+
+ Prepends a fragment to the list of fragments.
+
+ The fragment to append. May not be null.
+
+
+
+ Remove a fragment from the list of fragments. If this fragment was not in the list, an exception will be raised.
+
+ The fragment to remove. May not be null.
+
+
+
+ Remove all fragments from the list.
+
+
+
+
+ Remove a fragment from the list of fragments, using its index in the list.
+
+ The index of the fragment to remove.
+
+
+
+ Gets the Document
+
+
+
+
+ Gets the number of fragments contained in the list.
+
+
+
+
+ Gets a fragment from the list using its index.
+
+
+
+
+ Represents a fragment enumerator.
+
+
+
+
+ Advances the enumerator to the next element of the collection.
+
+ true if the enumerator was successfully advanced to the next element; false if the enumerator has passed the end of the collection.
+
+
+
+ Sets the enumerator to its initial position, which is before the first element in the collection.
+
+
+
+
+ Gets the current element in the collection.
+
+
+
+
+ Gets the current element in the collection.
+
+
+
+
+ Represents a combined list and collection of HTML nodes.
+
+
+
+
+ Initialize the HtmlNodeCollection with the base parent node
+
+ The base node of the collection
+
+
+
+ Add node to the collection
+
+
+
+
+
+ Clears out the collection of HtmlNodes. Removes each nodes reference to parentnode, nextnode and prevnode
+
+
+
+
+ Gets existence of node in collection
+
+
+
+
+
+
+ Copy collection to array
+
+
+
+
+
+
+ Get Enumerator
+
+
+
+
+
+ Get Explicit Enumerator
+
+
+
+
+
+ Get index of node
+
+
+
+
+
+
+ Insert node at index
+
+
+
+
+
+
+ Remove node
+
+
+
+
+
+
+ Remove at index
+
+
+
+
+
+ Get first instance of node in supplied collection
+
+
+
+
+
+
+
+ Add node to the end of the collection
+
+
+
+
+
+ Get first instance of node with name
+
+
+
+
+
+
+ Get index of node
+
+
+
+
+
+
+ Add node to the beginning of the collection
+
+
+
+
+
+ Remove node at index
+
+
+
+
+
+
+ Replace node at index
+
+
+
+
+
+
+ Get all node descended from this collection
+
+
+
+
+
+ Get all node descended from this collection with matching name
+
+
+
+
+
+ Gets all first generation elements in collection
+
+
+
+
+
+ Gets all first generation elements matching name
+
+
+
+
+
+
+ All first generation nodes in collection
+
+
+
+
+
+ Gets a given node from the list.
+
+
+
+
+ Get node with tag name
+
+
+
+
+
+
+ Gets the number of elements actually contained in the list.
+
+
+
+
+ Is collection read only
+
+
+
+
+ Gets the node at the specified index.
+
+
+
+
+ Represents an HTML navigator on an HTML document seen as a data store.
+
+
+
+
+ Initializes a new instance of the HtmlNavigator and loads an HTML document from a stream.
+
+ The input stream.
+
+
+
+ Initializes a new instance of the HtmlNavigator and loads an HTML document from a stream.
+
+ The input stream.
+ Indicates whether to look for byte order marks at the beginning of the stream.
+
+
+
+ Initializes a new instance of the HtmlNavigator and loads an HTML document from a stream.
+
+ The input stream.
+ The character encoding to use.
+
+
+
+ Initializes a new instance of the HtmlNavigator and loads an HTML document from a stream.
+
+ The input stream.
+ The character encoding to use.
+ Indicates whether to look for byte order marks at the beginning of the stream.
+
+
+
+ Initializes a new instance of the HtmlNavigator and loads an HTML document from a stream.
+
+ The input stream.
+ The character encoding to use.
+ Indicates whether to look for byte order marks at the beginning of the stream.
+ The minimum buffer size.
+
+
+
+ Initializes a new instance of the HtmlNavigator and loads an HTML document from a TextReader.
+
+ The TextReader used to feed the HTML data into the document.
+
+
+
+ Initializes a new instance of the HtmlNavigator and loads an HTML document from a file.
+
+ The complete file path to be read.
+
+
+
+ Initializes a new instance of the HtmlNavigator and loads an HTML document from a file.
+
+ The complete file path to be read.
+ Indicates whether to look for byte order marks at the beginning of the file.
+
+
+
+ Initializes a new instance of the HtmlNavigator and loads an HTML document from a file.
+
+ The complete file path to be read.
+ The character encoding to use.
+
+
+
+ Initializes a new instance of the HtmlNavigator and loads an HTML document from a file.
+
+ The complete file path to be read.
+ The character encoding to use.
+ Indicates whether to look for byte order marks at the beginning of the file.
+
+
+
+ Initializes a new instance of the HtmlNavigator and loads an HTML document from a file.
+
+ The complete file path to be read.
+ The character encoding to use.
+ Indicates whether to look for byte order marks at the beginning of the file.
+ The minimum buffer size.
+
+
+
+ Creates a new HtmlNavigator positioned at the same node as this HtmlNavigator.
+
+ A new HtmlNavigator object positioned at the same node as the original HtmlNavigator.
+
+
+
+ Gets the value of the HTML attribute with the specified LocalName and NamespaceURI.
+
+ The local name of the HTML attribute.
+ The namespace URI of the attribute. Unsupported with the HtmlNavigator implementation.
+ The value of the specified HTML attribute. String.Empty or null if a matching attribute is not found or if the navigator is not positioned on an element node.
+
+
+
+ Returns the value of the namespace node corresponding to the specified local name.
+ Always returns string.Empty for the HtmlNavigator implementation.
+
+ The local name of the namespace node.
+ Always returns string.Empty for the HtmlNavigator implementation.
+
+
+
+ Determines whether the current HtmlNavigator is at the same position as the specified HtmlNavigator.
+
+ The HtmlNavigator that you want to compare against.
+ true if the two navigators have the same position, otherwise, false.
+
+
+
+ Moves to the same position as the specified HtmlNavigator.
+
+ The HtmlNavigator positioned on the node that you want to move to.
+ true if successful, otherwise false. If false, the position of the navigator is unchanged.
+
+
+
+ Moves to the HTML attribute with matching LocalName and NamespaceURI.
+
+ The local name of the HTML attribute.
+ The namespace URI of the attribute. Unsupported with the HtmlNavigator implementation.
+ true if the HTML attribute is found, otherwise, false. If false, the position of the navigator does not change.
+
+
+
+ Moves to the first sibling of the current node.
+
+ true if the navigator is successful moving to the first sibling node, false if there is no first sibling or if the navigator is currently positioned on an attribute node.
+
+
+
+ Moves to the first HTML attribute.
+
+ true if the navigator is successful moving to the first HTML attribute, otherwise, false.
+
+
+
+ Moves to the first child of the current node.
+
+ true if there is a first child node, otherwise false.
+
+
+
+ Moves the XPathNavigator to the first namespace node of the current element.
+ Always returns false for the HtmlNavigator implementation.
+
+ An XPathNamespaceScope value describing the namespace scope.
+ Always returns false for the HtmlNavigator implementation.
+
+
+
+ Moves to the node that has an attribute of type ID whose value matches the specified string.
+
+ A string representing the ID value of the node to which you want to move. This argument does not need to be atomized.
+ true if the move was successful, otherwise false. If false, the position of the navigator is unchanged.
+
+
+
+ Moves the XPathNavigator to the namespace node with the specified local name.
+ Always returns false for the HtmlNavigator implementation.
+
+ The local name of the namespace node.
+ Always returns false for the HtmlNavigator implementation.
+
+
+
+ Moves to the next sibling of the current node.
+
+ true if the navigator is successful moving to the next sibling node, false if there are no more siblings or if the navigator is currently positioned on an attribute node. If false, the position of the navigator is unchanged.
+
+
+
+ Moves to the next HTML attribute.
+
+
+
+
+
+ Moves the XPathNavigator to the next namespace node.
+ Always returns falsefor the HtmlNavigator implementation.
+
+ An XPathNamespaceScope value describing the namespace scope.
+ Always returns false for the HtmlNavigator implementation.
+
+
+
+ Moves to the parent of the current node.
+
+ true if there is a parent node, otherwise false.
+
+
+
+ Moves to the previous sibling of the current node.
+
+ true if the navigator is successful moving to the previous sibling node, false if there is no previous sibling or if the navigator is currently positioned on an attribute node.
+
+
+
+ Moves to the root node to which the current node belongs.
+
+
+
+
+ Gets the base URI for the current node.
+ Always returns string.Empty in the case of HtmlNavigator implementation.
+
+
+
+
+ Gets the current HTML document.
+
+
+
+
+ Gets the current HTML node.
+
+
+
+
+ Gets a value indicating whether the current node has child nodes.
+
+
+
+
+ Gets a value indicating whether the current node has child nodes.
+
+
+
+
+ Gets a value indicating whether the current node is an empty element.
+
+
+
+
+ Gets the name of the current HTML node without the namespace prefix.
+
+
+
+
+ Gets the qualified name of the current node.
+
+
+
+
+ Gets the namespace URI (as defined in the W3C Namespace Specification) of the current node.
+ Always returns string.Empty in the case of HtmlNavigator implementation.
+
+
+
+
+ Gets the associated with this implementation.
+
+
+
+
+ Gets the type of the current node.
+
+
+
+
+ Gets the prefix associated with the current node.
+ Always returns string.Empty in the case of HtmlNavigator implementation.
+
+
+
+
+ Gets the text value of the current node.
+
+
+
+
+ Gets the xml:lang scope for the current node.
+ Always returns string.Empty in the case of HtmlNavigator implementation.
+
+
+
+
+ A utility class to compute CRC32.
+
+
+
+
+ Compute a checksum for a given array of bytes.
+
+ The array of bytes to compute the checksum for.
+ The computed checksum.
+
+
+
+ Compute a checksum for a given string.
+
+ The string to compute the checksum for.
+ The computed checksum.
+
+
+
+ Represents the type of fragment in a mixed code document.
+
+
+
+
+ The fragment contains code.
+
+
+
+
+ The fragment contains text.
+
+
+
+
+ Flags that describe the behavior of an Element node.
+
+
+
+
+ The node is a CDATA node.
+
+
+
+
+ The node is empty. META or IMG are example of such nodes.
+
+
+
+
+ The node will automatically be closed during parsing.
+
+
+
+
+ The node can overlap.
+
+
+
+
+ Represents a complete HTML document.
+
+
+
+
+ Detects the encoding of an HTML document from a file first, and then loads the file.
+
+ The complete file path to be read.
+
+
+
+ Detects the encoding of an HTML document from a file first, and then loads the file.
+
+ The complete file path to be read. May not be null.
+ true to detect encoding, false otherwise.
+
+
+
+ Detects the encoding of an HTML file.
+
+ Path for the file containing the HTML document to detect. May not be null.
+ The detected encoding.
+
+
+
+ Loads an HTML document from a file.
+
+ The complete file path to be read. May not be null.
+
+
+
+ Loads an HTML document from a file.
+
+ The complete file path to be read. May not be null.
+ Indicates whether to look for byte order marks at the beginning of the file.
+
+
+
+ Loads an HTML document from a file.
+
+ The complete file path to be read. May not be null.
+ The character encoding to use. May not be null.
+
+
+
+ Loads an HTML document from a file.
+
+ The complete file path to be read. May not be null.
+ The character encoding to use. May not be null.
+ Indicates whether to look for byte order marks at the beginning of the file.
+
+
+
+ Loads an HTML document from a file.
+
+ The complete file path to be read. May not be null.
+ The character encoding to use. May not be null.
+ Indicates whether to look for byte order marks at the beginning of the file.
+ The minimum buffer size.
+
+
+
+ Saves the mixed document to the specified file.
+
+ The location of the file where you want to save the document.
+
+
+
+ Saves the mixed document to the specified file.
+
+ The location of the file where you want to save the document. May not be null.
+ The character encoding to use. May not be null.
+
+
+
+ Creates a new XPathNavigator object for navigating this HTML document.
+
+ An XPathNavigator object. The XPathNavigator is positioned on the root of the document.
+
+
+
+ Adds Debugging attributes to node. Default is false.
+
+
+
+
+ Defines if closing for non closed nodes must be done at the end or directly in the document.
+ Setting this to true can actually change how browsers render the page. Default is false.
+
+
+
+
+ Defines if non closed nodes will be checked at the end of parsing. Default is true.
+
+
+
+
+ Defines if a checksum must be computed for the document while parsing. Default is false.
+
+
+
+
+ Defines the default stream encoding to use. Default is System.Text.Encoding.Default.
+
+
+
+
+ Defines if source text must be extracted while parsing errors.
+ If the document has a lot of errors, or cascading errors, parsing performance can be dramatically affected if set to true.
+ Default is false.
+
+
+
+
+ Defines the maximum length of source text or parse errors. Default is 100.
+
+
+
+
+ Defines if LI, TR, TH, TD tags must be partially fixed when nesting errors are detected. Default is false.
+
+
+
+
+ Defines if output must conform to XML, instead of HTML.
+
+
+
+
+ Defines if attribute value output must be optimized (not bound with double quotes if it is possible). Default is false.
+
+
+
+
+ Defines if name must be output with it's original case. Useful for asp.net tags and attributes
+
+
+
+
+ Defines if name must be output in uppercase. Default is false.
+
+
+
+
+ Defines if declared encoding must be read from the document.
+ Declared encoding is determined using the meta http-equiv="content-type" content="text/html;charset=XXXXX" html node.
+ Default is true.
+
+
+
+
+ Defines the name of a node that will throw the StopperNodeException when found as an end node. Default is null.
+
+
+
+
+ Defines if the 'id' attribute must be specifically used. Default is true.
+
+
+
+
+ Defines if empty nodes must be written as closed during output. Default is false.
+
+
+
+
+ Creates an instance of an HTML document.
+
+
+
+
+ Gets a valid XML name.
+
+ Any text.
+ A string that is a valid XML name.
+
+
+
+ Applies HTML encoding to a specified string.
+
+ The input string to encode. May not be null.
+ The encoded string.
+
+
+
+ Determines if the specified character is considered as a whitespace character.
+
+ The character to check.
+ true if if the specified character is considered as a whitespace character.
+
+
+
+ Creates an HTML attribute with the specified name.
+
+ The name of the attribute. May not be null.
+ The new HTML attribute.
+
+
+
+ Creates an HTML attribute with the specified name.
+
+ The name of the attribute. May not be null.
+ The value of the attribute.
+ The new HTML attribute.
+
+
+
+ Creates an HTML comment node.
+
+ The new HTML comment node.
+
+
+
+ Creates an HTML comment node with the specified comment text.
+
+ The comment text. May not be null.
+ The new HTML comment node.
+
+
+
+ Creates an HTML element node with the specified name.
+
+ The qualified name of the element. May not be null.
+ The new HTML node.
+
+
+
+ Creates an HTML text node.
+
+ The new HTML text node.
+
+
+
+ Creates an HTML text node with the specified text.
+
+ The text of the node. May not be null.
+ The new HTML text node.
+
+
+
+ Detects the encoding of an HTML stream.
+
+ The input stream. May not be null.
+ The detected encoding.
+
+
+
+ Detects the encoding of an HTML text provided on a TextReader.
+
+ The TextReader used to feed the HTML. May not be null.
+ The detected encoding.
+
+
+
+ Detects the encoding of an HTML text.
+
+ The input html text. May not be null.
+ The detected encoding.
+
+
+
+ Gets the HTML node with the specified 'id' attribute value.
+
+ The attribute id to match. May not be null.
+ The HTML node with the matching id or null if not found.
+
+
+
+ Loads an HTML document from a stream.
+
+ The input stream.
+
+
+
+ Loads an HTML document from a stream.
+
+ The input stream.
+ Indicates whether to look for byte order marks at the beginning of the stream.
+
+
+
+ Loads an HTML document from a stream.
+
+ The input stream.
+ The character encoding to use.
+
+
+
+ Loads an HTML document from a stream.
+
+ The input stream.
+ The character encoding to use.
+ Indicates whether to look for byte order marks at the beginning of the stream.
+
+
+
+ Loads an HTML document from a stream.
+
+ The input stream.
+ The character encoding to use.
+ Indicates whether to look for byte order marks at the beginning of the stream.
+ The minimum buffer size.
+
+
+
+ Loads the HTML document from the specified TextReader.
+
+ The TextReader used to feed the HTML data into the document. May not be null.
+
+
+
+ Loads the HTML document from the specified string.
+
+ String containing the HTML document to load. May not be null.
+
+
+
+ Saves the HTML document to the specified stream.
+
+ The stream to which you want to save.
+
+
+
+ Saves the HTML document to the specified stream.
+
+ The stream to which you want to save. May not be null.
+ The character encoding to use. May not be null.
+
+
+
+ Saves the HTML document to the specified StreamWriter.
+
+ The StreamWriter to which you want to save.
+
+
+
+ Saves the HTML document to the specified TextWriter.
+
+ The TextWriter to which you want to save. May not be null.
+
+
+
+ Saves the HTML document to the specified XmlWriter.
+
+ The XmlWriter to which you want to save.
+
+
+
+ Gets the document CRC32 checksum if OptionComputeChecksum was set to true before parsing, 0 otherwise.
+
+
+
+
+ Gets the document's declared encoding.
+ Declared encoding is determined using the meta http-equiv="content-type" content="text/html;charset=XXXXX" html node.
+
+
+
+
+ Gets the root node of the document.
+
+
+
+
+ Gets the document's output encoding.
+
+
+
+
+ Gets a list of parse errors found in the document.
+
+
+
+
+ Gets the remaining text.
+ Will always be null if OptionStopperNodeName is null.
+
+
+
+
+ Gets the offset of Remainder in the original Html text.
+ If OptionStopperNodeName is null, this will return the length of the original Html text.
+
+
+
+
+ Gets the document's stream encoding.
+
+
+
+
+ A utility class to replace special characters by entities and vice-versa.
+ Follows HTML 4.0 specification found at http://www.w3.org/TR/html4/sgml/entities.html
+
+
+
+
+ Replace known entities by characters.
+
+ The source text.
+ The result text.
+
+
+
+ Clone and entitize an HtmlNode. This will affect attribute values and nodes' text. It will also entitize all child nodes.
+
+ The node to entitize.
+ An entitized cloned node.
+
+
+
+ Replace characters above 127 by entities.
+
+ The source text.
+ The result text.
+
+
+
+ Replace characters above 127 by entities.
+
+ The source text.
+ If set to false, the function will not use known entities name. Default is true.
+ The result text.
+
+
+
+ Replace characters above 127 by entities.
+
+ The source text.
+ If set to false, the function will not use known entities name. Default is true.
+ If set to true, the [quote], [ampersand], [lower than] and [greather than] characters will be entitized.
+ The result text
+
+
+
+ A collection of entities indexed by name.
+
+
+
+
+ A collection of entities indexed by value.
+
+
+
+
+ Represents a parsing error found during document parsing.
+
+
+
+
+ Gets the type of error.
+
+
+
+
+ Gets the line number of this error in the document.
+
+
+
+
+ Gets the column number of this error in the document.
+
+
+
+
+ Gets a description for the error.
+
+
+
+
+ Gets the the full text of the line containing the error.
+
+
+
+
+ Gets the absolute stream position of this error in the document, relative to the start of the document.
+
+
+
+
+ Represents an exception thrown by the HtmlWeb utility class.
+
+
+
+
+ Creates an instance of the HtmlWebException.
+
+ The exception's message.
+
+
+
+ Represents the type of parsing error.
+
+
+
+
+ A tag was not closed.
+
+
+
+
+ A tag was not opened.
+
+
+
+
+ There is a charset mismatch between stream and declared (META) encoding.
+
+
+
+
+ An end tag was not required.
+
+
+
+
+ An end tag is invalid at this position.
+
+
+
+
+ Represents an HTML text node.
+
+
+
+
+ Gets or Sets the HTML between the start and end tags of the object. In the case of a text node, it is equals to OuterHtml.
+
+
+
+
+ Gets or Sets the object and its content in HTML.
+
+
+
+
+ Gets or Sets the text of the node.
+
+
+
+
+ Represents the type of a node.
+
+
+
+
+ The root of a document.
+
+
+
+
+ An HTML element.
+
+
+
+
+ An HTML comment.
+
+
+
+
+ A text node is always the child of an element or a document node.
+
+
+
+
diff --git a/packages/HtmlAgilityPack.1.4.9/lib/Net40/HtmlAgilityPack.XML b/packages/HtmlAgilityPack.1.4.9/lib/Net40/HtmlAgilityPack.XML
new file mode 100644
index 000000000..4c2a44582
--- /dev/null
+++ b/packages/HtmlAgilityPack.1.4.9/lib/Net40/HtmlAgilityPack.XML
@@ -0,0 +1,2468 @@
+
+
+
+ HtmlAgilityPack
+
+
+
+
+ Represents an HTML node.
+
+
+
+
+ Creates a new XPathNavigator object for navigating this HTML node.
+
+ An XPathNavigator object. The XPathNavigator is positioned on the node from which the method was called. It is not positioned on the root of the document.
+
+
+
+ Creates an XPathNavigator using the root of this document.
+
+
+
+
+
+ Selects a list of nodes matching the expression.
+
+ The XPath expression.
+ An containing a collection of nodes matching the query, or null if no node matched the XPath expression.
+
+
+
+ Selects the first XmlNode that matches the XPath expression.
+
+ The XPath expression. May not be null.
+ The first that matches the XPath query or a null reference if no matching node was found.
+
+
+
+ Gets the name of a comment node. It is actually defined as '#comment'.
+
+
+
+
+ Gets the name of the document node. It is actually defined as '#document'.
+
+
+
+
+ Gets the name of a text node. It is actually defined as '#text'.
+
+
+
+
+ Gets a collection of flags that define specific behaviors for specific element nodes.
+ The table contains a DictionaryEntry list with the lowercase tag name as the Key, and a combination of HtmlElementFlags as the Value.
+
+
+
+
+ Initialize HtmlNode. Builds a list of all tags that have special allowances
+
+
+
+
+ Initializes HtmlNode, providing type, owner and where it exists in a collection
+
+
+
+
+
+
+
+ Determines if an element node can be kept overlapped.
+
+ The name of the element node to check. May not be null.
+ true if the name is the name of an element node that can be kept overlapped, false otherwise.
+
+
+
+ Creates an HTML node from a string representing literal HTML.
+
+ The HTML text.
+ The newly created node instance.
+
+
+
+ Determines if an element node is a CDATA element node.
+
+ The name of the element node to check. May not be null.
+ true if the name is the name of a CDATA element node, false otherwise.
+
+
+
+ Determines if an element node is closed.
+
+ The name of the element node to check. May not be null.
+ true if the name is the name of a closed element node, false otherwise.
+
+
+
+ Determines if an element node is defined as empty.
+
+ The name of the element node to check. May not be null.
+ true if the name is the name of an empty element node, false otherwise.
+
+
+
+ Determines if a text corresponds to the closing tag of an node that can be kept overlapped.
+
+ The text to check. May not be null.
+ true or false.
+
+
+
+ Returns a collection of all ancestor nodes of this element.
+
+
+
+
+
+ Get Ancestors with matching name
+
+
+
+
+
+
+ Returns a collection of all ancestor nodes of this element.
+
+
+
+
+
+ Gets all anscestor nodes and the current node
+
+
+
+
+
+
+ Adds the specified node to the end of the list of children of this node.
+
+ The node to add. May not be null.
+ The node added.
+
+
+
+ Adds the specified node to the end of the list of children of this node.
+
+ The node list to add. May not be null.
+
+
+
+ Gets all Attributes with name
+
+
+
+
+
+
+ Creates a duplicate of the node
+
+
+
+
+
+ Creates a duplicate of the node and changes its name at the same time.
+
+ The new name of the cloned node. May not be null.
+ The cloned node.
+
+
+
+ Creates a duplicate of the node and changes its name at the same time.
+
+ The new name of the cloned node. May not be null.
+ true to recursively clone the subtree under the specified node; false to clone only the node itself.
+ The cloned node.
+
+
+
+ Creates a duplicate of the node.
+
+ true to recursively clone the subtree under the specified node; false to clone only the node itself.
+ The cloned node.
+
+
+
+ Creates a duplicate of the node and the subtree under it.
+
+ The node to duplicate. May not be null.
+
+
+
+ Creates a duplicate of the node.
+
+ The node to duplicate. May not be null.
+ true to recursively clone the subtree under the specified node, false to clone only the node itself.
+
+
+
+ Gets all Descendant nodes for this node and each of child nodes
+
+
+
+
+
+ Returns a collection of all descendant nodes of this element, in document order
+
+
+
+
+
+ Gets all Descendant nodes in enumerated list
+
+
+
+
+
+ Get all descendant nodes with matching name
+
+
+
+
+
+
+ Returns a collection of all descendant nodes of this element, in document order
+
+
+
+
+
+ Gets all descendant nodes including this node
+
+
+
+
+
+
+ Gets first generation child node matching name
+
+
+
+
+
+
+ Gets matching first generation child nodes matching name
+
+
+
+
+
+
+ Helper method to get the value of an attribute of this node. If the attribute is not found, the default value will be returned.
+
+ The name of the attribute to get. May not be null.
+ The default value to return if not found.
+ The value of the attribute if found, the default value if not found.
+
+
+
+ Helper method to get the value of an attribute of this node. If the attribute is not found, the default value will be returned.
+
+ The name of the attribute to get. May not be null.
+ The default value to return if not found.
+ The value of the attribute if found, the default value if not found.
+
+
+
+ Helper method to get the value of an attribute of this node. If the attribute is not found, the default value will be returned.
+
+ The name of the attribute to get. May not be null.
+ The default value to return if not found.
+ The value of the attribute if found, the default value if not found.
+
+
+
+ Inserts the specified node immediately after the specified reference node.
+
+ The node to insert. May not be null.
+ The node that is the reference node. The newNode is placed after the refNode.
+ The node being inserted.
+
+
+
+ Inserts the specified node immediately before the specified reference node.
+
+ The node to insert. May not be null.
+ The node that is the reference node. The newChild is placed before this node.
+ The node being inserted.
+
+
+
+ Adds the specified node to the beginning of the list of children of this node.
+
+ The node to add. May not be null.
+ The node added.
+
+
+
+ Adds the specified node list to the beginning of the list of children of this node.
+
+ The node list to add. May not be null.
+
+
+
+ Removes node from parent collection
+
+
+
+
+ Removes all the children and/or attributes of the current node.
+
+
+
+
+ Removes all the children of the current node.
+
+
+
+
+ Removes the specified child node.
+
+ The node being removed. May not be null.
+ The node removed.
+
+
+
+ Removes the specified child node.
+
+ The node being removed. May not be null.
+ true to keep grand children of the node, false otherwise.
+ The node removed.
+
+
+
+ Replaces the child node oldChild with newChild node.
+
+ The new node to put in the child list.
+ The node being replaced in the list.
+ The node replaced.
+
+
+
+ Helper method to set the value of an attribute of this node. If the attribute is not found, it will be created automatically.
+
+ The name of the attribute to set. May not be null.
+ The value for the attribute.
+ The corresponding attribute instance.
+
+
+
+ Saves all the children of the node to the specified TextWriter.
+
+ The TextWriter to which you want to save.
+
+
+
+ Saves all the children of the node to a string.
+
+ The saved string.
+
+
+
+ Saves the current node to the specified TextWriter.
+
+ The TextWriter to which you want to save.
+
+
+
+ Saves the current node to the specified XmlWriter.
+
+ The XmlWriter to which you want to save.
+
+
+
+ Saves the current node to a string.
+
+ The saved string.
+
+
+
+ Gets the collection of HTML attributes for this node. May not be null.
+
+
+
+
+ Gets all the children of the node.
+
+
+
+
+ Gets a value indicating if this node has been closed or not.
+
+
+
+
+ Gets the collection of HTML attributes for the closing tag. May not be null.
+
+
+
+
+ Gets the first child of the node.
+
+
+
+
+ Gets a value indicating whether the current node has any attributes.
+
+
+
+
+ Gets a value indicating whether this node has any child nodes.
+
+
+
+
+ Gets a value indicating whether the current node has any attributes on the closing tag.
+
+
+
+
+ Gets or sets the value of the 'id' HTML attribute. The document must have been parsed using the OptionUseIdAttribute set to true.
+
+
+
+
+ Gets or Sets the HTML between the start and end tags of the object.
+
+
+
+
+ Gets or Sets the text between the start and end tags of the object.
+
+
+
+
+ Gets the last child of the node.
+
+
+
+
+ Gets the line number of this node in the document.
+
+
+
+
+ Gets the column number of this node in the document.
+
+
+
+
+ Gets or sets this node's name.
+
+
+
+
+ Gets the HTML node immediately following this element.
+
+
+
+
+ Gets the type of this node.
+
+
+
+
+ The original unaltered name of the tag
+
+
+
+
+ Gets or Sets the object and its content in HTML.
+
+
+
+
+ Gets the to which this node belongs.
+
+
+
+
+ Gets the parent of this node (for nodes that can have parents).
+
+
+
+
+ Gets the node immediately preceding this node.
+
+
+
+
+ Gets the stream position of this node in the document, relative to the start of the document.
+
+
+
+
+ Gets a valid XPath string that points to this node
+
+
+
+
+ Represents an HTML attribute.
+
+
+
+
+ Compares the current instance with another attribute. Comparison is based on attributes' name.
+
+ An attribute to compare with this instance.
+ A 32-bit signed integer that indicates the relative order of the names comparison.
+
+
+
+ Creates a duplicate of this attribute.
+
+ The cloned attribute.
+
+
+
+ Removes this attribute from it's parents collection
+
+
+
+
+ Gets the line number of this attribute in the document.
+
+
+
+
+ Gets the column number of this attribute in the document.
+
+
+
+
+ Gets the qualified name of the attribute.
+
+
+
+
+ Name of attribute with original case
+
+
+
+
+ Gets the HTML document to which this attribute belongs.
+
+
+
+
+ Gets the HTML node to which this attribute belongs.
+
+
+
+
+ Specifies what type of quote the data should be wrapped in
+
+
+
+
+ Gets the stream position of this attribute in the document, relative to the start of the document.
+
+
+
+
+ Gets or sets the value of the attribute.
+
+
+
+
+ Gets a valid XPath string that points to this Attribute
+
+
+
+
+ An Enum representing different types of Quotes used for surrounding attribute values
+
+
+
+
+ A single quote mark '
+
+
+
+
+ A double quote mark "
+
+
+
+
+ Represents a fragment of text in a mixed code document.
+
+
+
+
+ Represents a base class for fragments in a mixed code document.
+
+
+
+
+ Gets the fragement text.
+
+
+
+
+ Gets the type of fragment.
+
+
+
+
+ Gets the line number of the fragment.
+
+
+
+
+ Gets the line position (column) of the fragment.
+
+
+
+
+ Gets the fragment position in the document's stream.
+
+
+
+
+ Gets the fragment text.
+
+
+
+
+ Represents an HTML comment.
+
+
+
+
+ Gets or Sets the comment text of the node.
+
+
+
+
+ Gets or Sets the HTML between the start and end tags of the object. In the case of a text node, it is equals to OuterHtml.
+
+
+
+
+ Gets or Sets the object and its content in HTML.
+
+
+
+
+ Represents a document with mixed code and text. ASP, ASPX, JSP, are good example of such documents.
+
+
+
+
+ Gets or sets the token representing code end.
+
+
+
+
+ Gets or sets the token representing code start.
+
+
+
+
+ Gets or sets the token representing code directive.
+
+
+
+
+ Gets or sets the token representing response write directive.
+
+
+
+
+ Creates a mixed code document instance.
+
+
+
+
+ Create a code fragment instances.
+
+ The newly created code fragment instance.
+
+
+
+ Create a text fragment instances.
+
+ The newly created text fragment instance.
+
+
+
+ Loads a mixed code document from a stream.
+
+ The input stream.
+
+
+
+ Loads a mixed code document from a stream.
+
+ The input stream.
+ Indicates whether to look for byte order marks at the beginning of the file.
+
+
+
+ Loads a mixed code document from a stream.
+
+ The input stream.
+ The character encoding to use.
+
+
+
+ Loads a mixed code document from a stream.
+
+ The input stream.
+ The character encoding to use.
+ Indicates whether to look for byte order marks at the beginning of the file.
+
+
+
+ Loads a mixed code document from a stream.
+
+ The input stream.
+ The character encoding to use.
+ Indicates whether to look for byte order marks at the beginning of the file.
+ The minimum buffer size.
+
+
+
+ Loads a mixed code document from a file.
+
+ The complete file path to be read.
+
+
+
+ Loads a mixed code document from a file.
+
+ The complete file path to be read.
+ Indicates whether to look for byte order marks at the beginning of the file.
+
+
+
+ Loads a mixed code document from a file.
+
+ The complete file path to be read.
+ The character encoding to use.
+
+
+
+ Loads a mixed code document from a file.
+
+ The complete file path to be read.
+ The character encoding to use.
+ Indicates whether to look for byte order marks at the beginning of the file.
+
+
+
+ Loads a mixed code document from a file.
+
+ The complete file path to be read.
+ The character encoding to use.
+ Indicates whether to look for byte order marks at the beginning of the file.
+ The minimum buffer size.
+
+
+
+ Loads the mixed code document from the specified TextReader.
+
+ The TextReader used to feed the HTML data into the document.
+
+
+
+ Loads a mixed document from a text
+
+ The text to load.
+
+
+
+ Saves the mixed document to the specified stream.
+
+ The stream to which you want to save.
+
+
+
+ Saves the mixed document to the specified stream.
+
+ The stream to which you want to save.
+ The character encoding to use.
+
+
+
+ Saves the mixed document to the specified file.
+
+ The location of the file where you want to save the document.
+
+
+
+ Saves the mixed document to the specified file.
+
+ The location of the file where you want to save the document.
+ The character encoding to use.
+
+
+
+ Saves the mixed document to the specified StreamWriter.
+
+ The StreamWriter to which you want to save.
+
+
+
+ Saves the mixed document to the specified TextWriter.
+
+ The TextWriter to which you want to save.
+
+
+
+ Gets the code represented by the mixed code document seen as a template.
+
+
+
+
+ Gets the list of code fragments in the document.
+
+
+
+
+ Gets the list of all fragments in the document.
+
+
+
+
+ Gets the encoding of the stream used to read the document.
+
+
+
+
+ Gets the list of text fragments in the document.
+
+
+
+
+ Represents a fragment of code in a mixed code document.
+
+
+
+
+ Gets the fragment code text.
+
+
+
+
+ Represents a combined list and collection of HTML nodes.
+
+
+
+
+ Adds supplied item to collection
+
+
+
+
+
+ Explicit clear
+
+
+
+
+ Retreives existence of supplied item
+
+
+
+
+
+
+ Copies collection to array
+
+
+
+
+
+
+ Get Explicit enumerator
+
+
+
+
+
+ Explicit non-generic enumerator
+
+
+
+
+
+ Retrieves the index for the supplied item, -1 if not found
+
+
+
+
+
+
+ Inserts given item into collection at supplied index
+
+
+
+
+
+
+ Explicit collection remove
+
+
+
+
+
+
+ Removes the attribute at the specified index.
+
+ The index of the attribute to remove.
+
+
+
+ Adds a new attribute to the collection with the given values
+
+
+
+
+
+
+ Inserts the specified attribute as the last attribute in the collection.
+
+ The attribute to insert. May not be null.
+ The appended attribute.
+
+
+
+ Creates and inserts a new attribute as the last attribute in the collection.
+
+ The name of the attribute to insert.
+ The appended attribute.
+
+
+
+ Creates and inserts a new attribute as the last attribute in the collection.
+
+ The name of the attribute to insert.
+ The value of the attribute to insert.
+ The appended attribute.
+
+
+
+ Checks for existance of attribute with given name
+
+
+
+
+
+
+ Inserts the specified attribute as the first node in the collection.
+
+ The attribute to insert. May not be null.
+ The prepended attribute.
+
+
+
+ Removes a given attribute from the list.
+
+ The attribute to remove. May not be null.
+
+
+
+ Removes an attribute from the list, using its name. If there are more than one attributes with this name, they will all be removed.
+
+ The attribute's name. May not be null.
+
+
+
+ Remove all attributes in the list.
+
+
+
+
+ Returns all attributes with specified name. Handles case insentivity
+
+ Name of the attribute
+
+
+
+
+ Removes all attributes from the collection
+
+
+
+
+ Clears the attribute collection
+
+
+
+
+ Gets a given attribute from the list using its name.
+
+
+
+
+ Gets the number of elements actually contained in the list.
+
+
+
+
+ Gets readonly status of colelction
+
+
+
+
+ Gets the attribute at the specified index.
+
+
+
+
+ A utility class to get HTML document from HTTP.
+
+
+
+
+ Occurs after an HTTP request has been executed.
+
+
+
+
+ Occurs before an HTML document is handled.
+
+
+
+
+ Occurs before an HTTP request is executed.
+
+
+
+
+ Gets the MIME content type for a given path extension.
+
+ The input path extension.
+ The default content type to return if any error occurs.
+ The path extension's MIME content type.
+
+
+
+ Gets the path extension for a given MIME content type.
+
+ The input MIME content type.
+ The default path extension to return if any error occurs.
+ The MIME content type's path extension.
+
+
+
+ Creates an instance of the given type from the specified Internet resource.
+
+ The requested URL, such as "http://Myserver/Mypath/Myfile.asp".
+ The requested type.
+ An newly created instance.
+
+
+
+ Gets an HTML document from an Internet resource and saves it to the specified file.
+
+ The requested URL, such as "http://Myserver/Mypath/Myfile.asp".
+ The location of the file where you want to save the document.
+
+
+
+ Gets an HTML document from an Internet resource and saves it to the specified file. - Proxy aware
+
+ The requested URL, such as "http://Myserver/Mypath/Myfile.asp".
+ The location of the file where you want to save the document.
+
+
+
+
+
+ Gets an HTML document from an Internet resource and saves it to the specified file.
+
+ The requested URL, such as "http://Myserver/Mypath/Myfile.asp".
+ The location of the file where you want to save the document.
+ The HTTP method used to open the connection, such as GET, POST, PUT, or PROPFIND.
+
+
+
+ Gets an HTML document from an Internet resource and saves it to the specified file. Understands Proxies
+
+ The requested URL, such as "http://Myserver/Mypath/Myfile.asp".
+ The location of the file where you want to save the document.
+
+ The HTTP method used to open the connection, such as GET, POST, PUT, or PROPFIND.
+
+
+
+
+ Gets the cache file path for a specified url.
+
+ The url fo which to retrieve the cache path. May not be null.
+ The cache file path.
+
+
+
+ Gets an HTML document from an Internet resource.
+
+ The requested URL, such as "http://Myserver/Mypath/Myfile.asp".
+ A new HTML document.
+
+
+
+ Gets an HTML document from an Internet resource.
+
+ The requested URL, such as "http://Myserver/Mypath/Myfile.asp".
+ Host to use for Proxy
+ Port the Proxy is on
+ User Id for Authentication
+ Password for Authentication
+ A new HTML document.
+
+
+
+ Loads an HTML document from an Internet resource.
+
+ The requested URL, such as "http://Myserver/Mypath/Myfile.asp".
+ The HTTP method used to open the connection, such as GET, POST, PUT, or PROPFIND.
+ A new HTML document.
+
+
+
+ Loads an HTML document from an Internet resource.
+
+ The requested URL, such as "http://Myserver/Mypath/Myfile.asp".
+ The HTTP method used to open the connection, such as GET, POST, PUT, or PROPFIND.
+ Proxy to use with this request
+ Credentials to use when authenticating
+ A new HTML document.
+
+
+
+ Loads an HTML document from an Internet resource and saves it to the specified XmlTextWriter.
+
+ The requested URL, such as "http://Myserver/Mypath/Myfile.asp".
+ The XmlTextWriter to which you want to save to.
+
+
+
+ Creates an instance of the given type from the specified Internet resource.
+
+ The requested URL, such as "http://Myserver/Mypath/Myfile.asp".
+ The URL that specifies the XSLT stylesheet to load.
+ An containing the namespace-qualified arguments used as input to the transform.
+ The requested type.
+ An newly created instance.
+
+
+
+ Creates an instance of the given type from the specified Internet resource.
+
+ The requested URL, such as "http://Myserver/Mypath/Myfile.asp".
+ The URL that specifies the XSLT stylesheet to load.
+ An containing the namespace-qualified arguments used as input to the transform.
+ The requested type.
+ A file path where the temporary XML before transformation will be saved. Mostly used for debugging purposes.
+ An newly created instance.
+
+
+
+ Loads an HTML document from an Internet resource and saves it to the specified XmlTextWriter, after an XSLT transformation.
+
+ The requested URL, such as "http://Myserver/Mypath/Myfile.asp".
+ The URL that specifies the XSLT stylesheet to load.
+ An XsltArgumentList containing the namespace-qualified arguments used as input to the transform.
+ The XmlTextWriter to which you want to save.
+
+
+
+ Loads an HTML document from an Internet resource and saves it to the specified XmlTextWriter, after an XSLT transformation.
+
+ The requested URL, such as "http://Myserver/Mypath/Myfile.asp". May not be null.
+ The URL that specifies the XSLT stylesheet to load.
+ An XsltArgumentList containing the namespace-qualified arguments used as input to the transform.
+ The XmlTextWriter to which you want to save.
+ A file path where the temporary XML before transformation will be saved. Mostly used for debugging purposes.
+
+
+
+ Gets or Sets a value indicating if document encoding must be automatically detected.
+
+
+
+
+ Gets or sets the Encoding used to override the response stream from any web request
+
+
+
+
+ Gets or Sets a value indicating whether to get document only from the cache.
+ If this is set to true and document is not found in the cache, nothing will be loaded.
+
+
+
+
+ Gets or Sets the cache path. If null, no caching mechanism will be used.
+
+
+
+
+ Gets a value indicating if the last document was retrieved from the cache.
+
+
+
+
+ Gets the last request duration in milliseconds.
+
+
+
+
+ Gets the URI of the Internet resource that actually responded to the request.
+
+
+
+
+ Gets the last request status.
+
+
+
+
+ Gets or Sets the size of the buffer used for memory operations.
+
+
+
+
+ Gets or Sets a value indicating if cookies will be stored.
+
+
+
+
+ Gets or Sets the User Agent HTTP 1.1 header sent on any webrequest
+
+
+
+
+ Gets or Sets a value indicating whether the caching mechanisms should be used or not.
+
+
+
+
+ Represents the method that will handle the PostResponse event.
+
+
+
+
+ Represents the method that will handle the PreHandleDocument event.
+
+
+
+
+ Represents the method that will handle the PreRequest event.
+
+
+
+
+ Wraps getting AppDomain permissions
+
+
+
+
+ An interface for getting permissions of the running application
+
+
+
+
+ Checks to see if Registry access is available to the caller
+
+
+
+
+
+ Checks to see if DNS information is available to the caller
+
+
+
+
+
+ Checks to see if Registry access is available to the caller
+
+
+
+
+
+ Checks to see if DNS information is available to the caller
+
+
+
+
+
+ Represents a list of mixed code fragments.
+
+
+
+
+ Gets an enumerator that can iterate through the fragment list.
+
+
+
+
+ Appends a fragment to the list of fragments.
+
+ The fragment to append. May not be null.
+
+
+
+ Gets an enumerator that can iterate through the fragment list.
+
+
+
+
+ Prepends a fragment to the list of fragments.
+
+ The fragment to append. May not be null.
+
+
+
+ Remove a fragment from the list of fragments. If this fragment was not in the list, an exception will be raised.
+
+ The fragment to remove. May not be null.
+
+
+
+ Remove all fragments from the list.
+
+
+
+
+ Remove a fragment from the list of fragments, using its index in the list.
+
+ The index of the fragment to remove.
+
+
+
+ Gets the Document
+
+
+
+
+ Gets the number of fragments contained in the list.
+
+
+
+
+ Gets a fragment from the list using its index.
+
+
+
+
+ Represents a fragment enumerator.
+
+
+
+
+ Advances the enumerator to the next element of the collection.
+
+ true if the enumerator was successfully advanced to the next element; false if the enumerator has passed the end of the collection.
+
+
+
+ Sets the enumerator to its initial position, which is before the first element in the collection.
+
+
+
+
+ Gets the current element in the collection.
+
+
+
+
+ Gets the current element in the collection.
+
+
+
+
+ Represents a combined list and collection of HTML nodes.
+
+
+
+
+ Initialize the HtmlNodeCollection with the base parent node
+
+ The base node of the collection
+
+
+
+ Add node to the collection
+
+
+
+
+
+ Clears out the collection of HtmlNodes. Removes each nodes reference to parentnode, nextnode and prevnode
+
+
+
+
+ Gets existence of node in collection
+
+
+
+
+
+
+ Copy collection to array
+
+
+
+
+
+
+ Get Enumerator
+
+
+
+
+
+ Get Explicit Enumerator
+
+
+
+
+
+ Get index of node
+
+
+
+
+
+
+ Insert node at index
+
+
+
+
+
+
+ Remove node
+
+
+
+
+
+
+ Remove at index
+
+
+
+
+
+ Get first instance of node in supplied collection
+
+
+
+
+
+
+
+ Add node to the end of the collection
+
+
+
+
+
+ Get first instance of node with name
+
+
+
+
+
+
+ Get index of node
+
+
+
+
+
+
+ Add node to the beginning of the collection
+
+
+
+
+
+ Remove node at index
+
+
+
+
+
+
+ Replace node at index
+
+
+
+
+
+
+ Get all node descended from this collection
+
+
+
+
+
+ Get all node descended from this collection with matching name
+
+
+
+
+
+ Gets all first generation elements in collection
+
+
+
+
+
+ Gets all first generation elements matching name
+
+
+
+
+
+
+ All first generation nodes in collection
+
+
+
+
+
+ Gets a given node from the list.
+
+
+
+
+ Get node with tag name
+
+
+
+
+
+
+ Gets the number of elements actually contained in the list.
+
+
+
+
+ Is collection read only
+
+
+
+
+ Gets the node at the specified index.
+
+
+
+
+ Represents an HTML navigator on an HTML document seen as a data store.
+
+
+
+
+ Initializes a new instance of the HtmlNavigator and loads an HTML document from a stream.
+
+ The input stream.
+
+
+
+ Initializes a new instance of the HtmlNavigator and loads an HTML document from a stream.
+
+ The input stream.
+ Indicates whether to look for byte order marks at the beginning of the stream.
+
+
+
+ Initializes a new instance of the HtmlNavigator and loads an HTML document from a stream.
+
+ The input stream.
+ The character encoding to use.
+
+
+
+ Initializes a new instance of the HtmlNavigator and loads an HTML document from a stream.
+
+ The input stream.
+ The character encoding to use.
+ Indicates whether to look for byte order marks at the beginning of the stream.
+
+
+
+ Initializes a new instance of the HtmlNavigator and loads an HTML document from a stream.
+
+ The input stream.
+ The character encoding to use.
+ Indicates whether to look for byte order marks at the beginning of the stream.
+ The minimum buffer size.
+
+
+
+ Initializes a new instance of the HtmlNavigator and loads an HTML document from a TextReader.
+
+ The TextReader used to feed the HTML data into the document.
+
+
+
+ Initializes a new instance of the HtmlNavigator and loads an HTML document from a file.
+
+ The complete file path to be read.
+
+
+
+ Initializes a new instance of the HtmlNavigator and loads an HTML document from a file.
+
+ The complete file path to be read.
+ Indicates whether to look for byte order marks at the beginning of the file.
+
+
+
+ Initializes a new instance of the HtmlNavigator and loads an HTML document from a file.
+
+ The complete file path to be read.
+ The character encoding to use.
+
+
+
+ Initializes a new instance of the HtmlNavigator and loads an HTML document from a file.
+
+ The complete file path to be read.
+ The character encoding to use.
+ Indicates whether to look for byte order marks at the beginning of the file.
+
+
+
+ Initializes a new instance of the HtmlNavigator and loads an HTML document from a file.
+
+ The complete file path to be read.
+ The character encoding to use.
+ Indicates whether to look for byte order marks at the beginning of the file.
+ The minimum buffer size.
+
+
+
+ Creates a new HtmlNavigator positioned at the same node as this HtmlNavigator.
+
+ A new HtmlNavigator object positioned at the same node as the original HtmlNavigator.
+
+
+
+ Gets the value of the HTML attribute with the specified LocalName and NamespaceURI.
+
+ The local name of the HTML attribute.
+ The namespace URI of the attribute. Unsupported with the HtmlNavigator implementation.
+ The value of the specified HTML attribute. String.Empty or null if a matching attribute is not found or if the navigator is not positioned on an element node.
+
+
+
+ Returns the value of the namespace node corresponding to the specified local name.
+ Always returns string.Empty for the HtmlNavigator implementation.
+
+ The local name of the namespace node.
+ Always returns string.Empty for the HtmlNavigator implementation.
+
+
+
+ Determines whether the current HtmlNavigator is at the same position as the specified HtmlNavigator.
+
+ The HtmlNavigator that you want to compare against.
+ true if the two navigators have the same position, otherwise, false.
+
+
+
+ Moves to the same position as the specified HtmlNavigator.
+
+ The HtmlNavigator positioned on the node that you want to move to.
+ true if successful, otherwise false. If false, the position of the navigator is unchanged.
+
+
+
+ Moves to the HTML attribute with matching LocalName and NamespaceURI.
+
+ The local name of the HTML attribute.
+ The namespace URI of the attribute. Unsupported with the HtmlNavigator implementation.
+ true if the HTML attribute is found, otherwise, false. If false, the position of the navigator does not change.
+
+
+
+ Moves to the first sibling of the current node.
+
+ true if the navigator is successful moving to the first sibling node, false if there is no first sibling or if the navigator is currently positioned on an attribute node.
+
+
+
+ Moves to the first HTML attribute.
+
+ true if the navigator is successful moving to the first HTML attribute, otherwise, false.
+
+
+
+ Moves to the first child of the current node.
+
+ true if there is a first child node, otherwise false.
+
+
+
+ Moves the XPathNavigator to the first namespace node of the current element.
+ Always returns false for the HtmlNavigator implementation.
+
+ An XPathNamespaceScope value describing the namespace scope.
+ Always returns false for the HtmlNavigator implementation.
+
+
+
+ Moves to the node that has an attribute of type ID whose value matches the specified string.
+
+ A string representing the ID value of the node to which you want to move. This argument does not need to be atomized.
+ true if the move was successful, otherwise false. If false, the position of the navigator is unchanged.
+
+
+
+ Moves the XPathNavigator to the namespace node with the specified local name.
+ Always returns false for the HtmlNavigator implementation.
+
+ The local name of the namespace node.
+ Always returns false for the HtmlNavigator implementation.
+
+
+
+ Moves to the next sibling of the current node.
+
+ true if the navigator is successful moving to the next sibling node, false if there are no more siblings or if the navigator is currently positioned on an attribute node. If false, the position of the navigator is unchanged.
+
+
+
+ Moves to the next HTML attribute.
+
+
+
+
+
+ Moves the XPathNavigator to the next namespace node.
+ Always returns falsefor the HtmlNavigator implementation.
+
+ An XPathNamespaceScope value describing the namespace scope.
+ Always returns false for the HtmlNavigator implementation.
+
+
+
+ Moves to the parent of the current node.
+
+ true if there is a parent node, otherwise false.
+
+
+
+ Moves to the previous sibling of the current node.
+
+ true if the navigator is successful moving to the previous sibling node, false if there is no previous sibling or if the navigator is currently positioned on an attribute node.
+
+
+
+ Moves to the root node to which the current node belongs.
+
+
+
+
+ Gets the base URI for the current node.
+ Always returns string.Empty in the case of HtmlNavigator implementation.
+
+
+
+
+ Gets the current HTML document.
+
+
+
+
+ Gets the current HTML node.
+
+
+
+
+ Gets a value indicating whether the current node has child nodes.
+
+
+
+
+ Gets a value indicating whether the current node has child nodes.
+
+
+
+
+ Gets a value indicating whether the current node is an empty element.
+
+
+
+
+ Gets the name of the current HTML node without the namespace prefix.
+
+
+
+
+ Gets the qualified name of the current node.
+
+
+
+
+ Gets the namespace URI (as defined in the W3C Namespace Specification) of the current node.
+ Always returns string.Empty in the case of HtmlNavigator implementation.
+
+
+
+
+ Gets the associated with this implementation.
+
+
+
+
+ Gets the type of the current node.
+
+
+
+
+ Gets the prefix associated with the current node.
+ Always returns string.Empty in the case of HtmlNavigator implementation.
+
+
+
+
+ Gets the text value of the current node.
+
+
+
+
+ Gets the xml:lang scope for the current node.
+ Always returns string.Empty in the case of HtmlNavigator implementation.
+
+
+
+
+ A utility class to compute CRC32.
+
+
+
+
+ Compute a checksum for a given array of bytes.
+
+ The array of bytes to compute the checksum for.
+ The computed checksum.
+
+
+
+ Compute a checksum for a given string.
+
+ The string to compute the checksum for.
+ The computed checksum.
+
+
+
+ Represents the type of fragment in a mixed code document.
+
+
+
+
+ The fragment contains code.
+
+
+
+
+ The fragment contains text.
+
+
+
+
+ Flags that describe the behavior of an Element node.
+
+
+
+
+ The node is a CDATA node.
+
+
+
+
+ The node is empty. META or IMG are example of such nodes.
+
+
+
+
+ The node will automatically be closed during parsing.
+
+
+
+
+ The node can overlap.
+
+
+
+
+ Represents a complete HTML document.
+
+
+
+
+ Detects the encoding of an HTML document from a file first, and then loads the file.
+
+ The complete file path to be read.
+
+
+
+ Detects the encoding of an HTML document from a file first, and then loads the file.
+
+ The complete file path to be read. May not be null.
+ true to detect encoding, false otherwise.
+
+
+
+ Detects the encoding of an HTML file.
+
+ Path for the file containing the HTML document to detect. May not be null.
+ The detected encoding.
+
+
+
+ Loads an HTML document from a file.
+
+ The complete file path to be read. May not be null.
+
+
+
+ Loads an HTML document from a file.
+
+ The complete file path to be read. May not be null.
+ Indicates whether to look for byte order marks at the beginning of the file.
+
+
+
+ Loads an HTML document from a file.
+
+ The complete file path to be read. May not be null.
+ The character encoding to use. May not be null.
+
+
+
+ Loads an HTML document from a file.
+
+ The complete file path to be read. May not be null.
+ The character encoding to use. May not be null.
+ Indicates whether to look for byte order marks at the beginning of the file.
+
+
+
+ Loads an HTML document from a file.
+
+ The complete file path to be read. May not be null.
+ The character encoding to use. May not be null.
+ Indicates whether to look for byte order marks at the beginning of the file.
+ The minimum buffer size.
+
+
+
+ Saves the mixed document to the specified file.
+
+ The location of the file where you want to save the document.
+
+
+
+ Saves the mixed document to the specified file.
+
+ The location of the file where you want to save the document. May not be null.
+ The character encoding to use. May not be null.
+
+
+
+ Creates a new XPathNavigator object for navigating this HTML document.
+
+ An XPathNavigator object. The XPathNavigator is positioned on the root of the document.
+
+
+
+ Adds Debugging attributes to node. Default is false.
+
+
+
+
+ Defines if closing for non closed nodes must be done at the end or directly in the document.
+ Setting this to true can actually change how browsers render the page. Default is false.
+
+
+
+
+ Defines if non closed nodes will be checked at the end of parsing. Default is true.
+
+
+
+
+ Defines if a checksum must be computed for the document while parsing. Default is false.
+
+
+
+
+ Defines the default stream encoding to use. Default is System.Text.Encoding.Default.
+
+
+
+
+ Defines if source text must be extracted while parsing errors.
+ If the document has a lot of errors, or cascading errors, parsing performance can be dramatically affected if set to true.
+ Default is false.
+
+
+
+
+ Defines the maximum length of source text or parse errors. Default is 100.
+
+
+
+
+ Defines if LI, TR, TH, TD tags must be partially fixed when nesting errors are detected. Default is false.
+
+
+
+
+ Defines if output must conform to XML, instead of HTML.
+
+
+
+
+ Defines if attribute value output must be optimized (not bound with double quotes if it is possible). Default is false.
+
+
+
+
+ Defines if name must be output with it's original case. Useful for asp.net tags and attributes
+
+
+
+
+ Defines if name must be output in uppercase. Default is false.
+
+
+
+
+ Defines if declared encoding must be read from the document.
+ Declared encoding is determined using the meta http-equiv="content-type" content="text/html;charset=XXXXX" html node.
+ Default is true.
+
+
+
+
+ Defines the name of a node that will throw the StopperNodeException when found as an end node. Default is null.
+
+
+
+
+ Defines if the 'id' attribute must be specifically used. Default is true.
+
+
+
+
+ Defines if empty nodes must be written as closed during output. Default is false.
+
+
+
+
+ Creates an instance of an HTML document.
+
+
+
+
+ Gets a valid XML name.
+
+ Any text.
+ A string that is a valid XML name.
+
+
+
+ Applies HTML encoding to a specified string.
+
+ The input string to encode. May not be null.
+ The encoded string.
+
+
+
+ Determines if the specified character is considered as a whitespace character.
+
+ The character to check.
+ true if if the specified character is considered as a whitespace character.
+
+
+
+ Creates an HTML attribute with the specified name.
+
+ The name of the attribute. May not be null.
+ The new HTML attribute.
+
+
+
+ Creates an HTML attribute with the specified name.
+
+ The name of the attribute. May not be null.
+ The value of the attribute.
+ The new HTML attribute.
+
+
+
+ Creates an HTML comment node.
+
+ The new HTML comment node.
+
+
+
+ Creates an HTML comment node with the specified comment text.
+
+ The comment text. May not be null.
+ The new HTML comment node.
+
+
+
+ Creates an HTML element node with the specified name.
+
+ The qualified name of the element. May not be null.
+ The new HTML node.
+
+
+
+ Creates an HTML text node.
+
+ The new HTML text node.
+
+
+
+ Creates an HTML text node with the specified text.
+
+ The text of the node. May not be null.
+ The new HTML text node.
+
+
+
+ Detects the encoding of an HTML stream.
+
+ The input stream. May not be null.
+ The detected encoding.
+
+
+
+ Detects the encoding of an HTML text provided on a TextReader.
+
+ The TextReader used to feed the HTML. May not be null.
+ The detected encoding.
+
+
+
+ Detects the encoding of an HTML text.
+
+ The input html text. May not be null.
+ The detected encoding.
+
+
+
+ Gets the HTML node with the specified 'id' attribute value.
+
+ The attribute id to match. May not be null.
+ The HTML node with the matching id or null if not found.
+
+
+
+ Loads an HTML document from a stream.
+
+ The input stream.
+
+
+
+ Loads an HTML document from a stream.
+
+ The input stream.
+ Indicates whether to look for byte order marks at the beginning of the stream.
+
+
+
+ Loads an HTML document from a stream.
+
+ The input stream.
+ The character encoding to use.
+
+
+
+ Loads an HTML document from a stream.
+
+ The input stream.
+ The character encoding to use.
+ Indicates whether to look for byte order marks at the beginning of the stream.
+
+
+
+ Loads an HTML document from a stream.
+
+ The input stream.
+ The character encoding to use.
+ Indicates whether to look for byte order marks at the beginning of the stream.
+ The minimum buffer size.
+
+
+
+ Loads the HTML document from the specified TextReader.
+
+ The TextReader used to feed the HTML data into the document. May not be null.
+
+
+
+ Loads the HTML document from the specified string.
+
+ String containing the HTML document to load. May not be null.
+
+
+
+ Saves the HTML document to the specified stream.
+
+ The stream to which you want to save.
+
+
+
+ Saves the HTML document to the specified stream.
+
+ The stream to which you want to save. May not be null.
+ The character encoding to use. May not be null.
+
+
+
+ Saves the HTML document to the specified StreamWriter.
+
+ The StreamWriter to which you want to save.
+
+
+
+ Saves the HTML document to the specified TextWriter.
+
+ The TextWriter to which you want to save. May not be null.
+
+
+
+ Saves the HTML document to the specified XmlWriter.
+
+ The XmlWriter to which you want to save.
+
+
+
+ Gets the document CRC32 checksum if OptionComputeChecksum was set to true before parsing, 0 otherwise.
+
+
+
+
+ Gets the document's declared encoding.
+ Declared encoding is determined using the meta http-equiv="content-type" content="text/html;charset=XXXXX" html node.
+
+
+
+
+ Gets the root node of the document.
+
+
+
+
+ Gets the document's output encoding.
+
+
+
+
+ Gets a list of parse errors found in the document.
+
+
+
+
+ Gets the remaining text.
+ Will always be null if OptionStopperNodeName is null.
+
+
+
+
+ Gets the offset of Remainder in the original Html text.
+ If OptionStopperNodeName is null, this will return the length of the original Html text.
+
+
+
+
+ Gets the document's stream encoding.
+
+
+
+
+ A utility class to replace special characters by entities and vice-versa.
+ Follows HTML 4.0 specification found at http://www.w3.org/TR/html4/sgml/entities.html
+
+
+
+
+ Replace known entities by characters.
+
+ The source text.
+ The result text.
+
+
+
+ Clone and entitize an HtmlNode. This will affect attribute values and nodes' text. It will also entitize all child nodes.
+
+ The node to entitize.
+ An entitized cloned node.
+
+
+
+ Replace characters above 127 by entities.
+
+ The source text.
+ The result text.
+
+
+
+ Replace characters above 127 by entities.
+
+ The source text.
+ If set to false, the function will not use known entities name. Default is true.
+ The result text.
+
+
+
+ Replace characters above 127 by entities.
+
+ The source text.
+ If set to false, the function will not use known entities name. Default is true.
+ If set to true, the [quote], [ampersand], [lower than] and [greather than] characters will be entitized.
+ The result text
+
+
+
+ A collection of entities indexed by name.
+
+
+
+
+ A collection of entities indexed by value.
+
+
+
+
+ Represents a parsing error found during document parsing.
+
+
+
+
+ Gets the type of error.
+
+
+
+
+ Gets the line number of this error in the document.
+
+
+
+
+ Gets the column number of this error in the document.
+
+
+
+
+ Gets a description for the error.
+
+
+
+
+ Gets the the full text of the line containing the error.
+
+
+
+
+ Gets the absolute stream position of this error in the document, relative to the start of the document.
+
+
+
+
+ Represents an exception thrown by the HtmlWeb utility class.
+
+
+
+
+ Creates an instance of the HtmlWebException.
+
+ The exception's message.
+
+
+
+ Represents the type of parsing error.
+
+
+
+
+ A tag was not closed.
+
+
+
+
+ A tag was not opened.
+
+
+
+
+ There is a charset mismatch between stream and declared (META) encoding.
+
+
+
+
+ An end tag was not required.
+
+
+
+
+ An end tag is invalid at this position.
+
+
+
+
+ Represents an HTML text node.
+
+
+
+
+ Gets or Sets the HTML between the start and end tags of the object. In the case of a text node, it is equals to OuterHtml.
+
+
+
+
+ Gets or Sets the object and its content in HTML.
+
+
+
+
+ Gets or Sets the text of the node.
+
+
+
+
+ Represents the type of a node.
+
+
+
+
+ The root of a document.
+
+
+
+
+ An HTML element.
+
+
+
+
+ An HTML comment.
+
+
+
+
+ A text node is always the child of an element or a document node.
+
+
+
+
diff --git a/packages/HtmlAgilityPack.1.4.9/lib/Net40/HtmlAgilityPack.dll b/packages/HtmlAgilityPack.1.4.9/lib/Net40/HtmlAgilityPack.dll
new file mode 100644
index 000000000..6554e1075
Binary files /dev/null and b/packages/HtmlAgilityPack.1.4.9/lib/Net40/HtmlAgilityPack.dll differ
diff --git a/packages/HtmlAgilityPack.1.4.9/lib/Net45/HtmlAgilityPack.XML b/packages/HtmlAgilityPack.1.4.9/lib/Net45/HtmlAgilityPack.XML
new file mode 100644
index 000000000..15c8c7dae
--- /dev/null
+++ b/packages/HtmlAgilityPack.1.4.9/lib/Net45/HtmlAgilityPack.XML
@@ -0,0 +1,2468 @@
+
+
+
+ HtmlAgilityPack
+
+
+
+
+ Represents a combined list and collection of HTML nodes.
+
+
+
+
+ Adds supplied item to collection
+
+
+
+
+
+ Explicit clear
+
+
+
+
+ Retreives existence of supplied item
+
+
+
+
+
+
+ Copies collection to array
+
+
+
+
+
+
+ Get Explicit enumerator
+
+
+
+
+
+ Explicit non-generic enumerator
+
+
+
+
+
+ Retrieves the index for the supplied item, -1 if not found
+
+
+
+
+
+
+ Inserts given item into collection at supplied index
+
+
+
+
+
+
+ Explicit collection remove
+
+
+
+
+
+
+ Removes the attribute at the specified index.
+
+ The index of the attribute to remove.
+
+
+
+ Adds a new attribute to the collection with the given values
+
+
+
+
+
+
+ Inserts the specified attribute as the last attribute in the collection.
+
+ The attribute to insert. May not be null.
+ The appended attribute.
+
+
+
+ Creates and inserts a new attribute as the last attribute in the collection.
+
+ The name of the attribute to insert.
+ The appended attribute.
+
+
+
+ Creates and inserts a new attribute as the last attribute in the collection.
+
+ The name of the attribute to insert.
+ The value of the attribute to insert.
+ The appended attribute.
+
+
+
+ Checks for existance of attribute with given name
+
+
+
+
+
+
+ Inserts the specified attribute as the first node in the collection.
+
+ The attribute to insert. May not be null.
+ The prepended attribute.
+
+
+
+ Removes a given attribute from the list.
+
+ The attribute to remove. May not be null.
+
+
+
+ Removes an attribute from the list, using its name. If there are more than one attributes with this name, they will all be removed.
+
+ The attribute's name. May not be null.
+
+
+
+ Remove all attributes in the list.
+
+
+
+
+ Returns all attributes with specified name. Handles case insentivity
+
+ Name of the attribute
+
+
+
+
+ Removes all attributes from the collection
+
+
+
+
+ Clears the attribute collection
+
+
+
+
+ Gets a given attribute from the list using its name.
+
+
+
+
+ Gets the number of elements actually contained in the list.
+
+
+
+
+ Gets readonly status of colelction
+
+
+
+
+ Gets the attribute at the specified index.
+
+
+
+
+ Represents an HTML comment.
+
+
+
+
+ Represents an HTML node.
+
+
+
+
+ Creates a new XPathNavigator object for navigating this HTML node.
+
+ An XPathNavigator object. The XPathNavigator is positioned on the node from which the method was called. It is not positioned on the root of the document.
+
+
+
+ Creates an XPathNavigator using the root of this document.
+
+
+
+
+
+ Selects a list of nodes matching the expression.
+
+ The XPath expression.
+ An containing a collection of nodes matching the query, or null if no node matched the XPath expression.
+
+
+
+ Selects the first XmlNode that matches the XPath expression.
+
+ The XPath expression. May not be null.
+ The first that matches the XPath query or a null reference if no matching node was found.
+
+
+
+ Gets the name of a comment node. It is actually defined as '#comment'.
+
+
+
+
+ Gets the name of the document node. It is actually defined as '#document'.
+
+
+
+
+ Gets the name of a text node. It is actually defined as '#text'.
+
+
+
+
+ Gets a collection of flags that define specific behaviors for specific element nodes.
+ The table contains a DictionaryEntry list with the lowercase tag name as the Key, and a combination of HtmlElementFlags as the Value.
+
+
+
+
+ Initialize HtmlNode. Builds a list of all tags that have special allowances
+
+
+
+
+ Initializes HtmlNode, providing type, owner and where it exists in a collection
+
+
+
+
+
+
+
+ Determines if an element node can be kept overlapped.
+
+ The name of the element node to check. May not be null.
+ true if the name is the name of an element node that can be kept overlapped, false otherwise.
+
+
+
+ Creates an HTML node from a string representing literal HTML.
+
+ The HTML text.
+ The newly created node instance.
+
+
+
+ Determines if an element node is a CDATA element node.
+
+ The name of the element node to check. May not be null.
+ true if the name is the name of a CDATA element node, false otherwise.
+
+
+
+ Determines if an element node is closed.
+
+ The name of the element node to check. May not be null.
+ true if the name is the name of a closed element node, false otherwise.
+
+
+
+ Determines if an element node is defined as empty.
+
+ The name of the element node to check. May not be null.
+ true if the name is the name of an empty element node, false otherwise.
+
+
+
+ Determines if a text corresponds to the closing tag of an node that can be kept overlapped.
+
+ The text to check. May not be null.
+ true or false.
+
+
+
+ Returns a collection of all ancestor nodes of this element.
+
+
+
+
+
+ Get Ancestors with matching name
+
+
+
+
+
+
+ Returns a collection of all ancestor nodes of this element.
+
+
+
+
+
+ Gets all anscestor nodes and the current node
+
+
+
+
+
+
+ Adds the specified node to the end of the list of children of this node.
+
+ The node to add. May not be null.
+ The node added.
+
+
+
+ Adds the specified node to the end of the list of children of this node.
+
+ The node list to add. May not be null.
+
+
+
+ Gets all Attributes with name
+
+
+
+
+
+
+ Creates a duplicate of the node
+
+
+
+
+
+ Creates a duplicate of the node and changes its name at the same time.
+
+ The new name of the cloned node. May not be null.
+ The cloned node.
+
+
+
+ Creates a duplicate of the node and changes its name at the same time.
+
+ The new name of the cloned node. May not be null.
+ true to recursively clone the subtree under the specified node; false to clone only the node itself.
+ The cloned node.
+
+
+
+ Creates a duplicate of the node.
+
+ true to recursively clone the subtree under the specified node; false to clone only the node itself.
+ The cloned node.
+
+
+
+ Creates a duplicate of the node and the subtree under it.
+
+ The node to duplicate. May not be null.
+
+
+
+ Creates a duplicate of the node.
+
+ The node to duplicate. May not be null.
+ true to recursively clone the subtree under the specified node, false to clone only the node itself.
+
+
+
+ Gets all Descendant nodes for this node and each of child nodes
+
+
+
+
+
+ Returns a collection of all descendant nodes of this element, in document order
+
+
+
+
+
+ Gets all Descendant nodes in enumerated list
+
+
+
+
+
+ Get all descendant nodes with matching name
+
+
+
+
+
+
+ Returns a collection of all descendant nodes of this element, in document order
+
+
+
+
+
+ Gets all descendant nodes including this node
+
+
+
+
+
+
+ Gets first generation child node matching name
+
+
+
+
+
+
+ Gets matching first generation child nodes matching name
+
+
+
+
+
+
+ Helper method to get the value of an attribute of this node. If the attribute is not found, the default value will be returned.
+
+ The name of the attribute to get. May not be null.
+ The default value to return if not found.
+ The value of the attribute if found, the default value if not found.
+
+
+
+ Helper method to get the value of an attribute of this node. If the attribute is not found, the default value will be returned.
+
+ The name of the attribute to get. May not be null.
+ The default value to return if not found.
+ The value of the attribute if found, the default value if not found.
+
+
+
+ Helper method to get the value of an attribute of this node. If the attribute is not found, the default value will be returned.
+
+ The name of the attribute to get. May not be null.
+ The default value to return if not found.
+ The value of the attribute if found, the default value if not found.
+
+
+
+ Inserts the specified node immediately after the specified reference node.
+
+ The node to insert. May not be null.
+ The node that is the reference node. The newNode is placed after the refNode.
+ The node being inserted.
+
+
+
+ Inserts the specified node immediately before the specified reference node.
+
+ The node to insert. May not be null.
+ The node that is the reference node. The newChild is placed before this node.
+ The node being inserted.
+
+
+
+ Adds the specified node to the beginning of the list of children of this node.
+
+ The node to add. May not be null.
+ The node added.
+
+
+
+ Adds the specified node list to the beginning of the list of children of this node.
+
+ The node list to add. May not be null.
+
+
+
+ Removes node from parent collection
+
+
+
+
+ Removes all the children and/or attributes of the current node.
+
+
+
+
+ Removes all the children of the current node.
+
+
+
+
+ Removes the specified child node.
+
+ The node being removed. May not be null.
+ The node removed.
+
+
+
+ Removes the specified child node.
+
+ The node being removed. May not be null.
+ true to keep grand children of the node, false otherwise.
+ The node removed.
+
+
+
+ Replaces the child node oldChild with newChild node.
+
+ The new node to put in the child list.
+ The node being replaced in the list.
+ The node replaced.
+
+
+
+ Helper method to set the value of an attribute of this node. If the attribute is not found, it will be created automatically.
+
+ The name of the attribute to set. May not be null.
+ The value for the attribute.
+ The corresponding attribute instance.
+
+
+
+ Saves all the children of the node to the specified TextWriter.
+
+ The TextWriter to which you want to save.
+
+
+
+ Saves all the children of the node to a string.
+
+ The saved string.
+
+
+
+ Saves the current node to the specified TextWriter.
+
+ The TextWriter to which you want to save.
+
+
+
+ Saves the current node to the specified XmlWriter.
+
+ The XmlWriter to which you want to save.
+
+
+
+ Saves the current node to a string.
+
+ The saved string.
+
+
+
+ Gets the collection of HTML attributes for this node. May not be null.
+
+
+
+
+ Gets all the children of the node.
+
+
+
+
+ Gets a value indicating if this node has been closed or not.
+
+
+
+
+ Gets the collection of HTML attributes for the closing tag. May not be null.
+
+
+
+
+ Gets the first child of the node.
+
+
+
+
+ Gets a value indicating whether the current node has any attributes.
+
+
+
+
+ Gets a value indicating whether this node has any child nodes.
+
+
+
+
+ Gets a value indicating whether the current node has any attributes on the closing tag.
+
+
+
+
+ Gets or sets the value of the 'id' HTML attribute. The document must have been parsed using the OptionUseIdAttribute set to true.
+
+
+
+
+ Gets or Sets the HTML between the start and end tags of the object.
+
+
+
+
+ Gets or Sets the text between the start and end tags of the object.
+
+
+
+
+ Gets the last child of the node.
+
+
+
+
+ Gets the line number of this node in the document.
+
+
+
+
+ Gets the column number of this node in the document.
+
+
+
+
+ Gets or sets this node's name.
+
+
+
+
+ Gets the HTML node immediately following this element.
+
+
+
+
+ Gets the type of this node.
+
+
+
+
+ The original unaltered name of the tag
+
+
+
+
+ Gets or Sets the object and its content in HTML.
+
+
+
+
+ Gets the to which this node belongs.
+
+
+
+
+ Gets the parent of this node (for nodes that can have parents).
+
+
+
+
+ Gets the node immediately preceding this node.
+
+
+
+
+ Gets the stream position of this node in the document, relative to the start of the document.
+
+
+
+
+ Gets a valid XPath string that points to this node
+
+
+
+
+ Gets or Sets the comment text of the node.
+
+
+
+
+ Gets or Sets the HTML between the start and end tags of the object. In the case of a text node, it is equals to OuterHtml.
+
+
+
+
+ Gets or Sets the object and its content in HTML.
+
+
+
+
+ Represents a complete HTML document.
+
+
+
+
+ Detects the encoding of an HTML document from a file first, and then loads the file.
+
+ The complete file path to be read.
+
+
+
+ Detects the encoding of an HTML document from a file first, and then loads the file.
+
+ The complete file path to be read. May not be null.
+ true to detect encoding, false otherwise.
+
+
+
+ Detects the encoding of an HTML file.
+
+ Path for the file containing the HTML document to detect. May not be null.
+ The detected encoding.
+
+
+
+ Loads an HTML document from a file.
+
+ The complete file path to be read. May not be null.
+
+
+
+ Loads an HTML document from a file.
+
+ The complete file path to be read. May not be null.
+ Indicates whether to look for byte order marks at the beginning of the file.
+
+
+
+ Loads an HTML document from a file.
+
+ The complete file path to be read. May not be null.
+ The character encoding to use. May not be null.
+
+
+
+ Loads an HTML document from a file.
+
+ The complete file path to be read. May not be null.
+ The character encoding to use. May not be null.
+ Indicates whether to look for byte order marks at the beginning of the file.
+
+
+
+ Loads an HTML document from a file.
+
+ The complete file path to be read. May not be null.
+ The character encoding to use. May not be null.
+ Indicates whether to look for byte order marks at the beginning of the file.
+ The minimum buffer size.
+
+
+
+ Saves the mixed document to the specified file.
+
+ The location of the file where you want to save the document.
+
+
+
+ Saves the mixed document to the specified file.
+
+ The location of the file where you want to save the document. May not be null.
+ The character encoding to use. May not be null.
+
+
+
+ Creates a new XPathNavigator object for navigating this HTML document.
+
+ An XPathNavigator object. The XPathNavigator is positioned on the root of the document.
+
+
+
+ Adds Debugging attributes to node. Default is false.
+
+
+
+
+ Defines if closing for non closed nodes must be done at the end or directly in the document.
+ Setting this to true can actually change how browsers render the page. Default is false.
+
+
+
+
+ Defines if non closed nodes will be checked at the end of parsing. Default is true.
+
+
+
+
+ Defines if a checksum must be computed for the document while parsing. Default is false.
+
+
+
+
+ Defines the default stream encoding to use. Default is System.Text.Encoding.Default.
+
+
+
+
+ Defines if source text must be extracted while parsing errors.
+ If the document has a lot of errors, or cascading errors, parsing performance can be dramatically affected if set to true.
+ Default is false.
+
+
+
+
+ Defines the maximum length of source text or parse errors. Default is 100.
+
+
+
+
+ Defines if LI, TR, TH, TD tags must be partially fixed when nesting errors are detected. Default is false.
+
+
+
+
+ Defines if output must conform to XML, instead of HTML.
+
+
+
+
+ Defines if attribute value output must be optimized (not bound with double quotes if it is possible). Default is false.
+
+
+
+
+ Defines if name must be output with it's original case. Useful for asp.net tags and attributes
+
+
+
+
+ Defines if name must be output in uppercase. Default is false.
+
+
+
+
+ Defines if declared encoding must be read from the document.
+ Declared encoding is determined using the meta http-equiv="content-type" content="text/html;charset=XXXXX" html node.
+ Default is true.
+
+
+
+
+ Defines the name of a node that will throw the StopperNodeException when found as an end node. Default is null.
+
+
+
+
+ Defines if the 'id' attribute must be specifically used. Default is true.
+
+
+
+
+ Defines if empty nodes must be written as closed during output. Default is false.
+
+
+
+
+ Creates an instance of an HTML document.
+
+
+
+
+ Gets a valid XML name.
+
+ Any text.
+ A string that is a valid XML name.
+
+
+
+ Applies HTML encoding to a specified string.
+
+ The input string to encode. May not be null.
+ The encoded string.
+
+
+
+ Determines if the specified character is considered as a whitespace character.
+
+ The character to check.
+ true if if the specified character is considered as a whitespace character.
+
+
+
+ Creates an HTML attribute with the specified name.
+
+ The name of the attribute. May not be null.
+ The new HTML attribute.
+
+
+
+ Creates an HTML attribute with the specified name.
+
+ The name of the attribute. May not be null.
+ The value of the attribute.
+ The new HTML attribute.
+
+
+
+ Creates an HTML comment node.
+
+ The new HTML comment node.
+
+
+
+ Creates an HTML comment node with the specified comment text.
+
+ The comment text. May not be null.
+ The new HTML comment node.
+
+
+
+ Creates an HTML element node with the specified name.
+
+ The qualified name of the element. May not be null.
+ The new HTML node.
+
+
+
+ Creates an HTML text node.
+
+ The new HTML text node.
+
+
+
+ Creates an HTML text node with the specified text.
+
+ The text of the node. May not be null.
+ The new HTML text node.
+
+
+
+ Detects the encoding of an HTML stream.
+
+ The input stream. May not be null.
+ The detected encoding.
+
+
+
+ Detects the encoding of an HTML text provided on a TextReader.
+
+ The TextReader used to feed the HTML. May not be null.
+ The detected encoding.
+
+
+
+ Detects the encoding of an HTML text.
+
+ The input html text. May not be null.
+ The detected encoding.
+
+
+
+ Gets the HTML node with the specified 'id' attribute value.
+
+ The attribute id to match. May not be null.
+ The HTML node with the matching id or null if not found.
+
+
+
+ Loads an HTML document from a stream.
+
+ The input stream.
+
+
+
+ Loads an HTML document from a stream.
+
+ The input stream.
+ Indicates whether to look for byte order marks at the beginning of the stream.
+
+
+
+ Loads an HTML document from a stream.
+
+ The input stream.
+ The character encoding to use.
+
+
+
+ Loads an HTML document from a stream.
+
+ The input stream.
+ The character encoding to use.
+ Indicates whether to look for byte order marks at the beginning of the stream.
+
+
+
+ Loads an HTML document from a stream.
+
+ The input stream.
+ The character encoding to use.
+ Indicates whether to look for byte order marks at the beginning of the stream.
+ The minimum buffer size.
+
+
+
+ Loads the HTML document from the specified TextReader.
+
+ The TextReader used to feed the HTML data into the document. May not be null.
+
+
+
+ Loads the HTML document from the specified string.
+
+ String containing the HTML document to load. May not be null.
+
+
+
+ Saves the HTML document to the specified stream.
+
+ The stream to which you want to save.
+
+
+
+ Saves the HTML document to the specified stream.
+
+ The stream to which you want to save. May not be null.
+ The character encoding to use. May not be null.
+
+
+
+ Saves the HTML document to the specified StreamWriter.
+
+ The StreamWriter to which you want to save.
+
+
+
+ Saves the HTML document to the specified TextWriter.
+
+ The TextWriter to which you want to save. May not be null.
+
+
+
+ Saves the HTML document to the specified XmlWriter.
+
+ The XmlWriter to which you want to save.
+
+
+
+ Gets the document CRC32 checksum if OptionComputeChecksum was set to true before parsing, 0 otherwise.
+
+
+
+
+ Gets the document's declared encoding.
+ Declared encoding is determined using the meta http-equiv="content-type" content="text/html;charset=XXXXX" html node.
+
+
+
+
+ Gets the root node of the document.
+
+
+
+
+ Gets the document's output encoding.
+
+
+
+
+ Gets a list of parse errors found in the document.
+
+
+
+
+ Gets the remaining text.
+ Will always be null if OptionStopperNodeName is null.
+
+
+
+
+ Gets the offset of Remainder in the original Html text.
+ If OptionStopperNodeName is null, this will return the length of the original Html text.
+
+
+
+
+ Gets the document's stream encoding.
+
+
+
+
+ Flags that describe the behavior of an Element node.
+
+
+
+
+ The node is a CDATA node.
+
+
+
+
+ The node is empty. META or IMG are example of such nodes.
+
+
+
+
+ The node will automatically be closed during parsing.
+
+
+
+
+ The node can overlap.
+
+
+
+
+ Represents a combined list and collection of HTML nodes.
+
+
+
+
+ Initialize the HtmlNodeCollection with the base parent node
+
+ The base node of the collection
+
+
+
+ Add node to the collection
+
+
+
+
+
+ Clears out the collection of HtmlNodes. Removes each nodes reference to parentnode, nextnode and prevnode
+
+
+
+
+ Gets existence of node in collection
+
+
+
+
+
+
+ Copy collection to array
+
+
+
+
+
+
+ Get Enumerator
+
+
+
+
+
+ Get Explicit Enumerator
+
+
+
+
+
+ Get index of node
+
+
+
+
+
+
+ Insert node at index
+
+
+
+
+
+
+ Remove node
+
+
+
+
+
+
+ Remove at index
+
+
+
+
+
+ Get first instance of node in supplied collection
+
+
+
+
+
+
+
+ Add node to the end of the collection
+
+
+
+
+
+ Get first instance of node with name
+
+
+
+
+
+
+ Get index of node
+
+
+
+
+
+
+ Add node to the beginning of the collection
+
+
+
+
+
+ Remove node at index
+
+
+
+
+
+
+ Replace node at index
+
+
+
+
+
+
+ Get all node descended from this collection
+
+
+
+
+
+ Get all node descended from this collection with matching name
+
+
+
+
+
+ Gets all first generation elements in collection
+
+
+
+
+
+ Gets all first generation elements matching name
+
+
+
+
+
+
+ All first generation nodes in collection
+
+
+
+
+
+ Gets a given node from the list.
+
+
+
+
+ Get node with tag name
+
+
+
+
+
+
+ Gets the number of elements actually contained in the list.
+
+
+
+
+ Is collection read only
+
+
+
+
+ Gets the node at the specified index.
+
+
+
+
+ Represents the type of a node.
+
+
+
+
+ The root of a document.
+
+
+
+
+ An HTML element.
+
+
+
+
+ An HTML comment.
+
+
+
+
+ A text node is always the child of an element or a document node.
+
+
+
+
+ Represents a parsing error found during document parsing.
+
+
+
+
+ Gets the type of error.
+
+
+
+
+ Gets the line number of this error in the document.
+
+
+
+
+ Gets the column number of this error in the document.
+
+
+
+
+ Gets a description for the error.
+
+
+
+
+ Gets the the full text of the line containing the error.
+
+
+
+
+ Gets the absolute stream position of this error in the document, relative to the start of the document.
+
+
+
+
+ Represents the type of parsing error.
+
+
+
+
+ A tag was not closed.
+
+
+
+
+ A tag was not opened.
+
+
+
+
+ There is a charset mismatch between stream and declared (META) encoding.
+
+
+
+
+ An end tag was not required.
+
+
+
+
+ An end tag is invalid at this position.
+
+
+
+
+ Represents an HTML text node.
+
+
+
+
+ Gets or Sets the HTML between the start and end tags of the object. In the case of a text node, it is equals to OuterHtml.
+
+
+
+
+ Gets or Sets the object and its content in HTML.
+
+
+
+
+ Gets or Sets the text of the node.
+
+
+
+
+ A utility class to get HTML document from HTTP.
+
+
+
+
+ Creates an instance of the given type from the specified Internet resource.
+
+ The requested URL, such as "http://Myserver/Mypath/Myfile.asp".
+ The URL that specifies the XSLT stylesheet to load.
+ An containing the namespace-qualified arguments used as input to the transform.
+ The requested type.
+ An newly created instance.
+
+
+
+ Creates an instance of the given type from the specified Internet resource.
+
+ The requested URL, such as "http://Myserver/Mypath/Myfile.asp".
+ The URL that specifies the XSLT stylesheet to load.
+ An containing the namespace-qualified arguments used as input to the transform.
+ The requested type.
+ A file path where the temporary XML before transformation will be saved. Mostly used for debugging purposes.
+ An newly created instance.
+
+
+
+ Loads an HTML document from an Internet resource and saves it to the specified XmlTextWriter, after an XSLT transformation.
+
+ The requested URL, such as "http://Myserver/Mypath/Myfile.asp".
+ The URL that specifies the XSLT stylesheet to load.
+ An XsltArgumentList containing the namespace-qualified arguments used as input to the transform.
+ The XmlTextWriter to which you want to save.
+
+
+
+ Loads an HTML document from an Internet resource and saves it to the specified XmlTextWriter, after an XSLT transformation.
+
+ The requested URL, such as "http://Myserver/Mypath/Myfile.asp". May not be null.
+ The URL that specifies the XSLT stylesheet to load.
+ An XsltArgumentList containing the namespace-qualified arguments used as input to the transform.
+ The XmlTextWriter to which you want to save.
+ A file path where the temporary XML before transformation will be saved. Mostly used for debugging purposes.
+
+
+
+ Occurs after an HTTP request has been executed.
+
+
+
+
+ Occurs before an HTML document is handled.
+
+
+
+
+ Occurs before an HTTP request is executed.
+
+
+
+
+ Gets the MIME content type for a given path extension.
+
+ The input path extension.
+ The default content type to return if any error occurs.
+ The path extension's MIME content type.
+
+
+
+ Gets the path extension for a given MIME content type.
+
+ The input MIME content type.
+ The default path extension to return if any error occurs.
+ The MIME content type's path extension.
+
+
+
+ Creates an instance of the given type from the specified Internet resource.
+
+ The requested URL, such as "http://Myserver/Mypath/Myfile.asp".
+ The requested type.
+ An newly created instance.
+
+
+
+ Gets an HTML document from an Internet resource and saves it to the specified file.
+
+ The requested URL, such as "http://Myserver/Mypath/Myfile.asp".
+ The location of the file where you want to save the document.
+
+
+
+ Gets an HTML document from an Internet resource and saves it to the specified file. - Proxy aware
+
+ The requested URL, such as "http://Myserver/Mypath/Myfile.asp".
+ The location of the file where you want to save the document.
+
+
+
+
+
+ Gets an HTML document from an Internet resource and saves it to the specified file.
+
+ The requested URL, such as "http://Myserver/Mypath/Myfile.asp".
+ The location of the file where you want to save the document.
+ The HTTP method used to open the connection, such as GET, POST, PUT, or PROPFIND.
+
+
+
+ Gets an HTML document from an Internet resource and saves it to the specified file. Understands Proxies
+
+ The requested URL, such as "http://Myserver/Mypath/Myfile.asp".
+ The location of the file where you want to save the document.
+
+ The HTTP method used to open the connection, such as GET, POST, PUT, or PROPFIND.
+
+
+
+
+ Gets the cache file path for a specified url.
+
+ The url fo which to retrieve the cache path. May not be null.
+ The cache file path.
+
+
+
+ Gets an HTML document from an Internet resource.
+
+ The requested URL, such as "http://Myserver/Mypath/Myfile.asp".
+ A new HTML document.
+
+
+
+ Gets an HTML document from an Internet resource.
+
+ The requested URL, such as "http://Myserver/Mypath/Myfile.asp".
+ Host to use for Proxy
+ Port the Proxy is on
+ User Id for Authentication
+ Password for Authentication
+ A new HTML document.
+
+
+
+ Loads an HTML document from an Internet resource.
+
+ The requested URL, such as "http://Myserver/Mypath/Myfile.asp".
+ The HTTP method used to open the connection, such as GET, POST, PUT, or PROPFIND.
+ A new HTML document.
+
+
+
+ Loads an HTML document from an Internet resource.
+
+ The requested URL, such as "http://Myserver/Mypath/Myfile.asp".
+ The HTTP method used to open the connection, such as GET, POST, PUT, or PROPFIND.
+ Proxy to use with this request
+ Credentials to use when authenticating
+ A new HTML document.
+
+
+
+ Loads an HTML document from an Internet resource and saves it to the specified XmlTextWriter.
+
+ The requested URL, such as "http://Myserver/Mypath/Myfile.asp".
+ The XmlTextWriter to which you want to save to.
+
+
+
+ Gets or Sets a value indicating if document encoding must be automatically detected.
+
+
+
+
+ Gets or sets the Encoding used to override the response stream from any web request
+
+
+
+
+ Gets or Sets a value indicating whether to get document only from the cache.
+ If this is set to true and document is not found in the cache, nothing will be loaded.
+
+
+
+
+ Gets or Sets the cache path. If null, no caching mechanism will be used.
+
+
+
+
+ Gets a value indicating if the last document was retrieved from the cache.
+
+
+
+
+ Gets the last request duration in milliseconds.
+
+
+
+
+ Gets the URI of the Internet resource that actually responded to the request.
+
+
+
+
+ Gets the last request status.
+
+
+
+
+ Gets or Sets the size of the buffer used for memory operations.
+
+
+
+
+ Gets or Sets a value indicating if cookies will be stored.
+
+
+
+
+ Gets or Sets the User Agent HTTP 1.1 header sent on any webrequest
+
+
+
+
+ Gets or Sets a value indicating whether the caching mechanisms should be used or not.
+
+
+
+
+ Represents the method that will handle the PostResponse event.
+
+
+
+
+ Represents the method that will handle the PreHandleDocument event.
+
+
+
+
+ Represents the method that will handle the PreRequest event.
+
+
+
+
+ Represents an exception thrown by the HtmlWeb utility class.
+
+
+
+
+ Creates an instance of the HtmlWebException.
+
+ The exception's message.
+
+
+
+ Represents a fragment of code in a mixed code document.
+
+
+
+
+ Represents a base class for fragments in a mixed code document.
+
+
+
+
+ Gets the fragement text.
+
+
+
+
+ Gets the type of fragment.
+
+
+
+
+ Gets the line number of the fragment.
+
+
+
+
+ Gets the line position (column) of the fragment.
+
+
+
+
+ Gets the fragment position in the document's stream.
+
+
+
+
+ Gets the fragment code text.
+
+
+
+
+ Represents a list of mixed code fragments.
+
+
+
+
+ Gets an enumerator that can iterate through the fragment list.
+
+
+
+
+ Appends a fragment to the list of fragments.
+
+ The fragment to append. May not be null.
+
+
+
+ Gets an enumerator that can iterate through the fragment list.
+
+
+
+
+ Prepends a fragment to the list of fragments.
+
+ The fragment to append. May not be null.
+
+
+
+ Remove a fragment from the list of fragments. If this fragment was not in the list, an exception will be raised.
+
+ The fragment to remove. May not be null.
+
+
+
+ Remove all fragments from the list.
+
+
+
+
+ Remove a fragment from the list of fragments, using its index in the list.
+
+ The index of the fragment to remove.
+
+
+
+ Gets the Document
+
+
+
+
+ Gets the number of fragments contained in the list.
+
+
+
+
+ Gets a fragment from the list using its index.
+
+
+
+
+ Represents a fragment enumerator.
+
+
+
+
+ Advances the enumerator to the next element of the collection.
+
+ true if the enumerator was successfully advanced to the next element; false if the enumerator has passed the end of the collection.
+
+
+
+ Sets the enumerator to its initial position, which is before the first element in the collection.
+
+
+
+
+ Gets the current element in the collection.
+
+
+
+
+ Gets the current element in the collection.
+
+
+
+
+ Represents the type of fragment in a mixed code document.
+
+
+
+
+ The fragment contains code.
+
+
+
+
+ The fragment contains text.
+
+
+
+
+ Represents a fragment of text in a mixed code document.
+
+
+
+
+ Gets the fragment text.
+
+
+
+
+ A utility class to compute CRC32.
+
+
+
+
+ Compute a checksum for a given array of bytes.
+
+ The array of bytes to compute the checksum for.
+ The computed checksum.
+
+
+
+ Compute a checksum for a given string.
+
+ The string to compute the checksum for.
+ The computed checksum.
+
+
+
+ Represents an HTML attribute.
+
+
+
+
+ Compares the current instance with another attribute. Comparison is based on attributes' name.
+
+ An attribute to compare with this instance.
+ A 32-bit signed integer that indicates the relative order of the names comparison.
+
+
+
+ Creates a duplicate of this attribute.
+
+ The cloned attribute.
+
+
+
+ Removes this attribute from it's parents collection
+
+
+
+
+ Gets the line number of this attribute in the document.
+
+
+
+
+ Gets the column number of this attribute in the document.
+
+
+
+
+ Gets the qualified name of the attribute.
+
+
+
+
+ Name of attribute with original case
+
+
+
+
+ Gets the HTML document to which this attribute belongs.
+
+
+
+
+ Gets the HTML node to which this attribute belongs.
+
+
+
+
+ Specifies what type of quote the data should be wrapped in
+
+
+
+
+ Gets the stream position of this attribute in the document, relative to the start of the document.
+
+
+
+
+ Gets or sets the value of the attribute.
+
+
+
+
+ Gets a valid XPath string that points to this Attribute
+
+
+
+
+ An Enum representing different types of Quotes used for surrounding attribute values
+
+
+
+
+ A single quote mark '
+
+
+
+
+ A double quote mark "
+
+
+
+
+ A utility class to replace special characters by entities and vice-versa.
+ Follows HTML 4.0 specification found at http://www.w3.org/TR/html4/sgml/entities.html
+
+
+
+
+ Replace known entities by characters.
+
+ The source text.
+ The result text.
+
+
+
+ Clone and entitize an HtmlNode. This will affect attribute values and nodes' text. It will also entitize all child nodes.
+
+ The node to entitize.
+ An entitized cloned node.
+
+
+
+ Replace characters above 127 by entities.
+
+ The source text.
+ The result text.
+
+
+
+ Replace characters above 127 by entities.
+
+ The source text.
+ If set to false, the function will not use known entities name. Default is true.
+ The result text.
+
+
+
+ Replace characters above 127 by entities.
+
+ The source text.
+ If set to false, the function will not use known entities name. Default is true.
+ If set to true, the [quote], [ampersand], [lower than] and [greather than] characters will be entitized.
+ The result text
+
+
+
+ A collection of entities indexed by name.
+
+
+
+
+ A collection of entities indexed by value.
+
+
+
+
+ Represents an HTML navigator on an HTML document seen as a data store.
+
+
+
+
+ Initializes a new instance of the HtmlNavigator and loads an HTML document from a stream.
+
+ The input stream.
+
+
+
+ Initializes a new instance of the HtmlNavigator and loads an HTML document from a stream.
+
+ The input stream.
+ Indicates whether to look for byte order marks at the beginning of the stream.
+
+
+
+ Initializes a new instance of the HtmlNavigator and loads an HTML document from a stream.
+
+ The input stream.
+ The character encoding to use.
+
+
+
+ Initializes a new instance of the HtmlNavigator and loads an HTML document from a stream.
+
+ The input stream.
+ The character encoding to use.
+ Indicates whether to look for byte order marks at the beginning of the stream.
+
+
+
+ Initializes a new instance of the HtmlNavigator and loads an HTML document from a stream.
+
+ The input stream.
+ The character encoding to use.
+ Indicates whether to look for byte order marks at the beginning of the stream.
+ The minimum buffer size.
+
+
+
+ Initializes a new instance of the HtmlNavigator and loads an HTML document from a TextReader.
+
+ The TextReader used to feed the HTML data into the document.
+
+
+
+ Initializes a new instance of the HtmlNavigator and loads an HTML document from a file.
+
+ The complete file path to be read.
+
+
+
+ Initializes a new instance of the HtmlNavigator and loads an HTML document from a file.
+
+ The complete file path to be read.
+ Indicates whether to look for byte order marks at the beginning of the file.
+
+
+
+ Initializes a new instance of the HtmlNavigator and loads an HTML document from a file.
+
+ The complete file path to be read.
+ The character encoding to use.
+
+
+
+ Initializes a new instance of the HtmlNavigator and loads an HTML document from a file.
+
+ The complete file path to be read.
+ The character encoding to use.
+ Indicates whether to look for byte order marks at the beginning of the file.
+
+
+
+ Initializes a new instance of the HtmlNavigator and loads an HTML document from a file.
+
+ The complete file path to be read.
+ The character encoding to use.
+ Indicates whether to look for byte order marks at the beginning of the file.
+ The minimum buffer size.
+
+
+
+ Creates a new HtmlNavigator positioned at the same node as this HtmlNavigator.
+
+ A new HtmlNavigator object positioned at the same node as the original HtmlNavigator.
+
+
+
+ Gets the value of the HTML attribute with the specified LocalName and NamespaceURI.
+
+ The local name of the HTML attribute.
+ The namespace URI of the attribute. Unsupported with the HtmlNavigator implementation.
+ The value of the specified HTML attribute. String.Empty or null if a matching attribute is not found or if the navigator is not positioned on an element node.
+
+
+
+ Returns the value of the namespace node corresponding to the specified local name.
+ Always returns string.Empty for the HtmlNavigator implementation.
+
+ The local name of the namespace node.
+ Always returns string.Empty for the HtmlNavigator implementation.
+
+
+
+ Determines whether the current HtmlNavigator is at the same position as the specified HtmlNavigator.
+
+ The HtmlNavigator that you want to compare against.
+ true if the two navigators have the same position, otherwise, false.
+
+
+
+ Moves to the same position as the specified HtmlNavigator.
+
+ The HtmlNavigator positioned on the node that you want to move to.
+ true if successful, otherwise false. If false, the position of the navigator is unchanged.
+
+
+
+ Moves to the HTML attribute with matching LocalName and NamespaceURI.
+
+ The local name of the HTML attribute.
+ The namespace URI of the attribute. Unsupported with the HtmlNavigator implementation.
+ true if the HTML attribute is found, otherwise, false. If false, the position of the navigator does not change.
+
+
+
+ Moves to the first sibling of the current node.
+
+ true if the navigator is successful moving to the first sibling node, false if there is no first sibling or if the navigator is currently positioned on an attribute node.
+
+
+
+ Moves to the first HTML attribute.
+
+ true if the navigator is successful moving to the first HTML attribute, otherwise, false.
+
+
+
+ Moves to the first child of the current node.
+
+ true if there is a first child node, otherwise false.
+
+
+
+ Moves the XPathNavigator to the first namespace node of the current element.
+ Always returns false for the HtmlNavigator implementation.
+
+ An XPathNamespaceScope value describing the namespace scope.
+ Always returns false for the HtmlNavigator implementation.
+
+
+
+ Moves to the node that has an attribute of type ID whose value matches the specified string.
+
+ A string representing the ID value of the node to which you want to move. This argument does not need to be atomized.
+ true if the move was successful, otherwise false. If false, the position of the navigator is unchanged.
+
+
+
+ Moves the XPathNavigator to the namespace node with the specified local name.
+ Always returns false for the HtmlNavigator implementation.
+
+ The local name of the namespace node.
+ Always returns false for the HtmlNavigator implementation.
+
+
+
+ Moves to the next sibling of the current node.
+
+ true if the navigator is successful moving to the next sibling node, false if there are no more siblings or if the navigator is currently positioned on an attribute node. If false, the position of the navigator is unchanged.
+
+
+
+ Moves to the next HTML attribute.
+
+
+
+
+
+ Moves the XPathNavigator to the next namespace node.
+ Always returns falsefor the HtmlNavigator implementation.
+
+ An XPathNamespaceScope value describing the namespace scope.
+ Always returns false for the HtmlNavigator implementation.
+
+
+
+ Moves to the parent of the current node.
+
+ true if there is a parent node, otherwise false.
+
+
+
+ Moves to the previous sibling of the current node.
+
+ true if the navigator is successful moving to the previous sibling node, false if there is no previous sibling or if the navigator is currently positioned on an attribute node.
+
+
+
+ Moves to the root node to which the current node belongs.
+
+
+
+
+ Gets the base URI for the current node.
+ Always returns string.Empty in the case of HtmlNavigator implementation.
+
+
+
+
+ Gets the current HTML document.
+
+
+
+
+ Gets the current HTML node.
+
+
+
+
+ Gets a value indicating whether the current node has child nodes.
+
+
+
+
+ Gets a value indicating whether the current node has child nodes.
+
+
+
+
+ Gets a value indicating whether the current node is an empty element.
+
+
+
+
+ Gets the name of the current HTML node without the namespace prefix.
+
+
+
+
+ Gets the qualified name of the current node.
+
+
+
+
+ Gets the namespace URI (as defined in the W3C Namespace Specification) of the current node.
+ Always returns string.Empty in the case of HtmlNavigator implementation.
+
+
+
+
+ Gets the associated with this implementation.
+
+
+
+
+ Gets the type of the current node.
+
+
+
+
+ Gets the prefix associated with the current node.
+ Always returns string.Empty in the case of HtmlNavigator implementation.
+
+
+
+
+ Gets the text value of the current node.
+
+
+
+
+ Gets the xml:lang scope for the current node.
+ Always returns string.Empty in the case of HtmlNavigator implementation.
+
+
+
+
+ Wraps getting AppDomain permissions
+
+
+
+
+ An interface for getting permissions of the running application
+
+
+
+
+ Checks to see if Registry access is available to the caller
+
+
+
+
+
+ Checks to see if DNS information is available to the caller
+
+
+
+
+
+ Checks to see if Registry access is available to the caller
+
+
+
+
+
+ Checks to see if DNS information is available to the caller
+
+
+
+
+
+ Represents a document with mixed code and text. ASP, ASPX, JSP, are good example of such documents.
+
+
+
+
+ Gets or sets the token representing code end.
+
+
+
+
+ Gets or sets the token representing code start.
+
+
+
+
+ Gets or sets the token representing code directive.
+
+
+
+
+ Gets or sets the token representing response write directive.
+
+
+
+
+ Creates a mixed code document instance.
+
+
+
+
+ Create a code fragment instances.
+
+ The newly created code fragment instance.
+
+
+
+ Create a text fragment instances.
+
+ The newly created text fragment instance.
+
+
+
+ Loads a mixed code document from a stream.
+
+ The input stream.
+
+
+
+ Loads a mixed code document from a stream.
+
+ The input stream.
+ Indicates whether to look for byte order marks at the beginning of the file.
+
+
+
+ Loads a mixed code document from a stream.
+
+ The input stream.
+ The character encoding to use.
+
+
+
+ Loads a mixed code document from a stream.
+
+ The input stream.
+ The character encoding to use.
+ Indicates whether to look for byte order marks at the beginning of the file.
+
+
+
+ Loads a mixed code document from a stream.
+
+ The input stream.
+ The character encoding to use.
+ Indicates whether to look for byte order marks at the beginning of the file.
+ The minimum buffer size.
+
+
+
+ Loads a mixed code document from a file.
+
+ The complete file path to be read.
+
+
+
+ Loads a mixed code document from a file.
+
+ The complete file path to be read.
+ Indicates whether to look for byte order marks at the beginning of the file.
+
+
+
+ Loads a mixed code document from a file.
+
+ The complete file path to be read.
+ The character encoding to use.
+
+
+
+ Loads a mixed code document from a file.
+
+ The complete file path to be read.
+ The character encoding to use.
+ Indicates whether to look for byte order marks at the beginning of the file.
+
+
+
+ Loads a mixed code document from a file.
+
+ The complete file path to be read.
+ The character encoding to use.
+ Indicates whether to look for byte order marks at the beginning of the file.
+ The minimum buffer size.
+
+
+
+ Loads the mixed code document from the specified TextReader.
+
+ The TextReader used to feed the HTML data into the document.
+
+
+
+ Loads a mixed document from a text
+
+ The text to load.
+
+
+
+ Saves the mixed document to the specified stream.
+
+ The stream to which you want to save.
+
+
+
+ Saves the mixed document to the specified stream.
+
+ The stream to which you want to save.
+ The character encoding to use.
+
+
+
+ Saves the mixed document to the specified file.
+
+ The location of the file where you want to save the document.
+
+
+
+ Saves the mixed document to the specified file.
+
+ The location of the file where you want to save the document.
+ The character encoding to use.
+
+
+
+ Saves the mixed document to the specified StreamWriter.
+
+ The StreamWriter to which you want to save.
+
+
+
+ Saves the mixed document to the specified TextWriter.
+
+ The TextWriter to which you want to save.
+
+
+
+ Gets the code represented by the mixed code document seen as a template.
+
+
+
+
+ Gets the list of code fragments in the document.
+
+
+
+
+ Gets the list of all fragments in the document.
+
+
+
+
+ Gets the encoding of the stream used to read the document.
+
+
+
+
+ Gets the list of text fragments in the document.
+
+
+
+
diff --git a/packages/HtmlAgilityPack.1.4.9/lib/Net45/HtmlAgilityPack.dll b/packages/HtmlAgilityPack.1.4.9/lib/Net45/HtmlAgilityPack.dll
new file mode 100644
index 000000000..0d67049a7
Binary files /dev/null and b/packages/HtmlAgilityPack.1.4.9/lib/Net45/HtmlAgilityPack.dll differ
diff --git a/packages/HtmlAgilityPack.1.4.9/lib/NetCore45/HtmlAgilityPack.dll b/packages/HtmlAgilityPack.1.4.9/lib/NetCore45/HtmlAgilityPack.dll
new file mode 100644
index 000000000..5b3dfaf19
Binary files /dev/null and b/packages/HtmlAgilityPack.1.4.9/lib/NetCore45/HtmlAgilityPack.dll differ
diff --git a/packages/HtmlAgilityPack.1.4.9/lib/NetCore45/HtmlAgilityPack.pri b/packages/HtmlAgilityPack.1.4.9/lib/NetCore45/HtmlAgilityPack.pri
new file mode 100644
index 000000000..c06135faa
Binary files /dev/null and b/packages/HtmlAgilityPack.1.4.9/lib/NetCore45/HtmlAgilityPack.pri differ
diff --git a/packages/HtmlAgilityPack.1.4.9/lib/NetCore45/HtmlAgilityPack.xml b/packages/HtmlAgilityPack.1.4.9/lib/NetCore45/HtmlAgilityPack.xml
new file mode 100644
index 000000000..840ff8721
--- /dev/null
+++ b/packages/HtmlAgilityPack.1.4.9/lib/NetCore45/HtmlAgilityPack.xml
@@ -0,0 +1,1555 @@
+
+
+
+ HtmlAgilityPack
+
+
+
+
+ Happens when a document has been loaded
+
+
+
+
+ If an error occured when loading the document, null if not
+
+
+
+
+ The document that has been loaded
+
+
+
+
+ A utility class to compute CRC32.
+
+
+
+
+ Compute a checksum for a given array of bytes.
+
+ The array of bytes to compute the checksum for.
+ The computed checksum.
+
+
+
+ Compute a checksum for a given string.
+
+ The string to compute the checksum for.
+ The computed checksum.
+
+
+
+ Represents an HTML attribute.
+
+
+
+
+ Compares the current instance with another attribute. Comparison is based on attributes' name.
+
+ An attribute to compare with this instance.
+ A 32-bit signed integer that indicates the relative order of the names comparison.
+
+
+
+ Creates a duplicate of this attribute.
+
+ The cloned attribute.
+
+
+
+ Removes this attribute from it's parents collection
+
+
+
+
+ Gets the line number of this attribute in the document.
+
+
+
+
+ Gets the column number of this attribute in the document.
+
+
+
+
+ Gets the qualified name of the attribute.
+
+
+
+
+ Name of attribute with original case
+
+
+
+
+ Gets the HTML document to which this attribute belongs.
+
+
+
+
+ Gets the HTML node to which this attribute belongs.
+
+
+
+
+ Specifies what type of quote the data should be wrapped in
+
+
+
+
+ Gets the stream position of this attribute in the document, relative to the start of the document.
+
+
+
+
+ Gets or sets the value of the attribute.
+
+
+
+
+ Gets a valid XPath string that points to this Attribute
+
+
+
+
+ An Enum representing different types of Quotes used for surrounding attribute values
+
+
+
+
+ A single quote mark '
+
+
+
+
+ A double quote mark "
+
+
+
+
+ Represents a combined list and collection of HTML nodes.
+
+
+
+
+ Adds supplied item to collection
+
+
+
+
+
+ Explicit clear
+
+
+
+
+ Retreives existence of supplied item
+
+
+
+
+
+
+ Copies collection to array
+
+
+
+
+
+
+ Get Explicit enumerator
+
+
+
+
+
+ Explicit non-generic enumerator
+
+
+
+
+
+ Retrieves the index for the supplied item, -1 if not found
+
+
+
+
+
+
+ Inserts given item into collection at supplied index
+
+
+
+
+
+
+ Explicit collection remove
+
+
+
+
+
+
+ Removes the attribute at the specified index.
+
+ The index of the attribute to remove.
+
+
+
+ Adds a new attribute to the collection with the given values
+
+
+
+
+
+
+ Inserts the specified attribute as the last attribute in the collection.
+
+ The attribute to insert. May not be null.
+ The appended attribute.
+
+
+
+ Creates and inserts a new attribute as the last attribute in the collection.
+
+ The name of the attribute to insert.
+ The appended attribute.
+
+
+
+ Creates and inserts a new attribute as the last attribute in the collection.
+
+ The name of the attribute to insert.
+ The value of the attribute to insert.
+ The appended attribute.
+
+
+
+ Checks for existance of attribute with given name
+
+
+
+
+
+
+ Inserts the specified attribute as the first node in the collection.
+
+ The attribute to insert. May not be null.
+ The prepended attribute.
+
+
+
+ Removes a given attribute from the list.
+
+ The attribute to remove. May not be null.
+
+
+
+ Removes an attribute from the list, using its name. If there are more than one attributes with this name, they will all be removed.
+
+ The attribute's name. May not be null.
+
+
+
+ Remove all attributes in the list.
+
+
+
+
+ Returns all attributes with specified name. Handles case insentivity
+
+ Name of the attribute
+
+
+
+
+ Removes all attributes from the collection
+
+
+
+
+ Clears the attribute collection
+
+
+
+
+ Gets a given attribute from the list using its name.
+
+
+
+
+ Gets the number of elements actually contained in the list.
+
+
+
+
+ Gets readonly status of colelction
+
+
+
+
+ Gets the attribute at the specified index.
+
+
+
+
+ Represents an HTML comment.
+
+
+
+
+ Represents an HTML node.
+
+
+
+
+ Gets the name of a comment node. It is actually defined as '#comment'.
+
+
+
+
+ Gets the name of the document node. It is actually defined as '#document'.
+
+
+
+
+ Gets the name of a text node. It is actually defined as '#text'.
+
+
+
+
+ Gets a collection of flags that define specific behaviors for specific element nodes.
+ The table contains a DictionaryEntry list with the lowercase tag name as the Key, and a combination of HtmlElementFlags as the Value.
+
+
+
+
+ Initialize HtmlNode. Builds a list of all tags that have special allowances
+
+
+
+
+ Initializes HtmlNode, providing type, owner and where it exists in a collection
+
+
+
+
+
+
+
+ Determines if an element node can be kept overlapped.
+
+ The name of the element node to check. May not be null.
+ true if the name is the name of an element node that can be kept overlapped, false otherwise.
+
+
+
+ Creates an HTML node from a string representing literal HTML.
+
+ The HTML text.
+ The newly created node instance.
+
+
+
+ Determines if an element node is a CDATA element node.
+
+ The name of the element node to check. May not be null.
+ true if the name is the name of a CDATA element node, false otherwise.
+
+
+
+ Determines if an element node is closed.
+
+ The name of the element node to check. May not be null.
+ true if the name is the name of a closed element node, false otherwise.
+
+
+
+ Determines if an element node is defined as empty.
+
+ The name of the element node to check. May not be null.
+ true if the name is the name of an empty element node, false otherwise.
+
+
+
+ Determines if a text corresponds to the closing tag of an node that can be kept overlapped.
+
+ The text to check. May not be null.
+ true or false.
+
+
+
+ Returns a collection of all ancestor nodes of this element.
+
+
+
+
+
+ Get Ancestors with matching name
+
+
+
+
+
+
+ Returns a collection of all ancestor nodes of this element.
+
+
+
+
+
+ Gets all anscestor nodes and the current node
+
+
+
+
+
+
+ Adds the specified node to the end of the list of children of this node.
+
+ The node to add. May not be null.
+ The node added.
+
+
+
+ Adds the specified node to the end of the list of children of this node.
+
+ The node list to add. May not be null.
+
+
+
+ Gets all Attributes with name
+
+
+
+
+
+
+ Creates a duplicate of the node
+
+
+
+
+
+ Creates a duplicate of the node and changes its name at the same time.
+
+ The new name of the cloned node. May not be null.
+ The cloned node.
+
+
+
+ Creates a duplicate of the node and changes its name at the same time.
+
+ The new name of the cloned node. May not be null.
+ true to recursively clone the subtree under the specified node; false to clone only the node itself.
+ The cloned node.
+
+
+
+ Creates a duplicate of the node.
+
+ true to recursively clone the subtree under the specified node; false to clone only the node itself.
+ The cloned node.
+
+
+
+ Creates a duplicate of the node and the subtree under it.
+
+ The node to duplicate. May not be null.
+
+
+
+ Creates a duplicate of the node.
+
+ The node to duplicate. May not be null.
+ true to recursively clone the subtree under the specified node, false to clone only the node itself.
+
+
+
+ Gets all Descendant nodes for this node and each of child nodes
+
+
+
+
+
+ Returns a collection of all descendant nodes of this element, in document order
+
+
+
+
+
+ Gets all Descendant nodes in enumerated list
+
+
+
+
+
+ Get all descendant nodes with matching name
+
+
+
+
+
+
+ Returns a collection of all descendant nodes of this element, in document order
+
+
+
+
+
+ Gets all descendant nodes including this node
+
+
+
+
+
+
+ Gets first generation child node matching name
+
+
+
+
+
+
+ Gets matching first generation child nodes matching name
+
+
+
+
+
+
+ Helper method to get the value of an attribute of this node. If the attribute is not found, the default value will be returned.
+
+ The name of the attribute to get. May not be null.
+ The default value to return if not found.
+ The value of the attribute if found, the default value if not found.
+
+
+
+ Helper method to get the value of an attribute of this node. If the attribute is not found, the default value will be returned.
+
+ The name of the attribute to get. May not be null.
+ The default value to return if not found.
+ The value of the attribute if found, the default value if not found.
+
+
+
+ Helper method to get the value of an attribute of this node. If the attribute is not found, the default value will be returned.
+
+ The name of the attribute to get. May not be null.
+ The default value to return if not found.
+ The value of the attribute if found, the default value if not found.
+
+
+
+ Inserts the specified node immediately after the specified reference node.
+
+ The node to insert. May not be null.
+ The node that is the reference node. The newNode is placed after the refNode.
+ The node being inserted.
+
+
+
+ Inserts the specified node immediately before the specified reference node.
+
+ The node to insert. May not be null.
+ The node that is the reference node. The newChild is placed before this node.
+ The node being inserted.
+
+
+
+ Adds the specified node to the beginning of the list of children of this node.
+
+ The node to add. May not be null.
+ The node added.
+
+
+
+ Adds the specified node list to the beginning of the list of children of this node.
+
+ The node list to add. May not be null.
+
+
+
+ Removes node from parent collection
+
+
+
+
+ Removes all the children and/or attributes of the current node.
+
+
+
+
+ Removes all the children of the current node.
+
+
+
+
+ Removes the specified child node.
+
+ The node being removed. May not be null.
+ The node removed.
+
+
+
+ Removes the specified child node.
+
+ The node being removed. May not be null.
+ true to keep grand children of the node, false otherwise.
+ The node removed.
+
+
+
+ Replaces the child node oldChild with newChild node.
+
+ The new node to put in the child list.
+ The node being replaced in the list.
+ The node replaced.
+
+
+
+ Helper method to set the value of an attribute of this node. If the attribute is not found, it will be created automatically.
+
+ The name of the attribute to set. May not be null.
+ The value for the attribute.
+ The corresponding attribute instance.
+
+
+
+ Saves all the children of the node to the specified TextWriter.
+
+ The TextWriter to which you want to save.
+
+
+
+ Saves all the children of the node to a string.
+
+ The saved string.
+
+
+
+ Saves the current node to the specified TextWriter.
+
+ The TextWriter to which you want to save.
+
+
+
+ Saves the current node to the specified XmlWriter.
+
+ The XmlWriter to which you want to save.
+
+
+
+ Saves the current node to a string.
+
+ The saved string.
+
+
+
+ Gets the collection of HTML attributes for this node. May not be null.
+
+
+
+
+ Gets all the children of the node.
+
+
+
+
+ Gets a value indicating if this node has been closed or not.
+
+
+
+
+ Gets the collection of HTML attributes for the closing tag. May not be null.
+
+
+
+
+ Gets the first child of the node.
+
+
+
+
+ Gets a value indicating whether the current node has any attributes.
+
+
+
+
+ Gets a value indicating whether this node has any child nodes.
+
+
+
+
+ Gets a value indicating whether the current node has any attributes on the closing tag.
+
+
+
+
+ Gets or sets the value of the 'id' HTML attribute. The document must have been parsed using the OptionUseIdAttribute set to true.
+
+
+
+
+ Gets or Sets the HTML between the start and end tags of the object.
+
+
+
+
+ Gets or Sets the text between the start and end tags of the object.
+
+
+
+
+ Gets the last child of the node.
+
+
+
+
+ Gets the line number of this node in the document.
+
+
+
+
+ Gets the column number of this node in the document.
+
+
+
+
+ Gets or sets this node's name.
+
+
+
+
+ Gets the HTML node immediately following this element.
+
+
+
+
+ Gets the type of this node.
+
+
+
+
+ The original unaltered name of the tag
+
+
+
+
+ Gets or Sets the object and its content in HTML.
+
+
+
+
+ Gets the to which this node belongs.
+
+
+
+
+ Gets the parent of this node (for nodes that can have parents).
+
+
+
+
+ Gets the node immediately preceding this node.
+
+
+
+
+ Gets the stream position of this node in the document, relative to the start of the document.
+
+
+
+
+ Gets a valid XPath string that points to this node
+
+
+
+
+ Gets or Sets the comment text of the node.
+
+
+
+
+ Gets or Sets the HTML between the start and end tags of the object. In the case of a text node, it is equals to OuterHtml.
+
+
+
+
+ Gets or Sets the object and its content in HTML.
+
+
+
+
+ Represents a complete HTML document.
+
+
+
+
+ Adds Debugging attributes to node. Default is false.
+
+
+
+
+ Defines if closing for non closed nodes must be done at the end or directly in the document.
+ Setting this to true can actually change how browsers render the page. Default is false.
+
+
+
+
+ Defines if non closed nodes will be checked at the end of parsing. Default is true.
+
+
+
+
+ Defines if a checksum must be computed for the document while parsing. Default is false.
+
+
+
+
+ Defines the default stream encoding to use. Default is System.Text.Encoding.Default.
+
+
+
+
+ Defines if source text must be extracted while parsing errors.
+ If the document has a lot of errors, or cascading errors, parsing performance can be dramatically affected if set to true.
+ Default is false.
+
+
+
+
+ Defines the maximum length of source text or parse errors. Default is 100.
+
+
+
+
+ Defines if LI, TR, TH, TD tags must be partially fixed when nesting errors are detected. Default is false.
+
+
+
+
+ Defines if output must conform to XML, instead of HTML.
+
+
+
+
+ Defines if attribute value output must be optimized (not bound with double quotes if it is possible). Default is false.
+
+
+
+
+ Defines if name must be output with it's original case. Useful for asp.net tags and attributes
+
+
+
+
+ Defines if name must be output in uppercase. Default is false.
+
+
+
+
+ Defines if declared encoding must be read from the document.
+ Declared encoding is determined using the meta http-equiv="content-type" content="text/html;charset=XXXXX" html node.
+ Default is true.
+
+
+
+
+ Defines the name of a node that will throw the StopperNodeException when found as an end node. Default is null.
+
+
+
+
+ Defines if the 'id' attribute must be specifically used. Default is true.
+
+
+
+
+ Defines if empty nodes must be written as closed during output. Default is false.
+
+
+
+
+ Creates an instance of an HTML document.
+
+
+
+
+ Gets a valid XML name.
+
+ Any text.
+ A string that is a valid XML name.
+
+
+
+ Applies HTML encoding to a specified string.
+
+ The input string to encode. May not be null.
+ The encoded string.
+
+
+
+ Determines if the specified character is considered as a whitespace character.
+
+ The character to check.
+ true if if the specified character is considered as a whitespace character.
+
+
+
+ Creates an HTML attribute with the specified name.
+
+ The name of the attribute. May not be null.
+ The new HTML attribute.
+
+
+
+ Creates an HTML attribute with the specified name.
+
+ The name of the attribute. May not be null.
+ The value of the attribute.
+ The new HTML attribute.
+
+
+
+ Creates an HTML comment node.
+
+ The new HTML comment node.
+
+
+
+ Creates an HTML comment node with the specified comment text.
+
+ The comment text. May not be null.
+ The new HTML comment node.
+
+
+
+ Creates an HTML element node with the specified name.
+
+ The qualified name of the element. May not be null.
+ The new HTML node.
+
+
+
+ Creates an HTML text node.
+
+ The new HTML text node.
+
+
+
+ Creates an HTML text node with the specified text.
+
+ The text of the node. May not be null.
+ The new HTML text node.
+
+
+
+ Detects the encoding of an HTML stream.
+
+ The input stream. May not be null.
+ The detected encoding.
+
+
+
+ Detects the encoding of an HTML text provided on a TextReader.
+
+ The TextReader used to feed the HTML. May not be null.
+ The detected encoding.
+
+
+
+ Detects the encoding of an HTML text.
+
+ The input html text. May not be null.
+ The detected encoding.
+
+
+
+ Gets the HTML node with the specified 'id' attribute value.
+
+ The attribute id to match. May not be null.
+ The HTML node with the matching id or null if not found.
+
+
+
+ Loads an HTML document from a stream.
+
+ The input stream.
+
+
+
+ Loads an HTML document from a stream.
+
+ The input stream.
+ Indicates whether to look for byte order marks at the beginning of the stream.
+
+
+
+ Loads an HTML document from a stream.
+
+ The input stream.
+ The character encoding to use.
+
+
+
+ Loads an HTML document from a stream.
+
+ The input stream.
+ The character encoding to use.
+ Indicates whether to look for byte order marks at the beginning of the stream.
+
+
+
+ Loads an HTML document from a stream.
+
+ The input stream.
+ The character encoding to use.
+ Indicates whether to look for byte order marks at the beginning of the stream.
+ The minimum buffer size.
+
+
+
+ Loads the HTML document from the specified TextReader.
+
+ The TextReader used to feed the HTML data into the document. May not be null.
+
+
+
+ Loads the HTML document from the specified string.
+
+ String containing the HTML document to load. May not be null.
+
+
+
+ Saves the HTML document to the specified stream.
+
+ The stream to which you want to save.
+
+
+
+ Saves the HTML document to the specified stream.
+
+ The stream to which you want to save. May not be null.
+ The character encoding to use. May not be null.
+
+
+
+ Saves the HTML document to the specified StreamWriter.
+
+ The StreamWriter to which you want to save.
+
+
+
+ Saves the HTML document to the specified TextWriter.
+
+ The TextWriter to which you want to save. May not be null.
+
+
+
+ Saves the HTML document to the specified XmlWriter.
+
+ The XmlWriter to which you want to save.
+
+
+
+ Gets the document CRC32 checksum if OptionComputeChecksum was set to true before parsing, 0 otherwise.
+
+
+
+
+ Gets the document's declared encoding.
+ Declared encoding is determined using the meta http-equiv="content-type" content="text/html;charset=XXXXX" html node.
+
+
+
+
+ Gets the root node of the document.
+
+
+
+
+ Gets the document's output encoding.
+
+
+
+
+ Gets a list of parse errors found in the document.
+
+
+
+
+ Gets the remaining text.
+ Will always be null if OptionStopperNodeName is null.
+
+
+
+
+ Gets the offset of Remainder in the original Html text.
+ If OptionStopperNodeName is null, this will return the length of the original Html text.
+
+
+
+
+ Gets the document's stream encoding.
+
+
+
+
+ Flags that describe the behavior of an Element node.
+
+
+
+
+ The node is a CDATA node.
+
+
+
+
+ The node is empty. META or IMG are example of such nodes.
+
+
+
+
+ The node will automatically be closed during parsing.
+
+
+
+
+ The node can overlap.
+
+
+
+
+ A utility class to replace special characters by entities and vice-versa.
+ Follows HTML 4.0 specification found at http://www.w3.org/TR/html4/sgml/entities.html
+
+
+
+
+ Replace known entities by characters.
+
+ The source text.
+ The result text.
+
+
+
+ Clone and entitize an HtmlNode. This will affect attribute values and nodes' text. It will also entitize all child nodes.
+
+ The node to entitize.
+ An entitized cloned node.
+
+
+
+ Replace characters above 127 by entities.
+
+ The source text.
+ The result text.
+
+
+
+ Replace characters above 127 by entities.
+
+ The source text.
+ If set to false, the function will not use known entities name. Default is true.
+ The result text.
+
+
+
+ Replace characters above 127 by entities.
+
+ The source text.
+ If set to false, the function will not use known entities name. Default is true.
+ If set to true, the [quote], [ampersand], [lower than] and [greather than] characters will be entitized.
+ The result text
+
+
+
+ A collection of entities indexed by name.
+
+
+
+
+ A collection of entities indexed by value.
+
+
+
+
+ Represents a combined list and collection of HTML nodes.
+
+
+
+
+ Initialize the HtmlNodeCollection with the base parent node
+
+ The base node of the collection
+
+
+
+ Add node to the collection
+
+
+
+
+
+ Clears out the collection of HtmlNodes. Removes each nodes reference to parentnode, nextnode and prevnode
+
+
+
+
+ Gets existence of node in collection
+
+
+
+
+
+
+ Copy collection to array
+
+
+
+
+
+
+ Get Enumerator
+
+
+
+
+
+ Get Explicit Enumerator
+
+
+
+
+
+ Get index of node
+
+
+
+
+
+
+ Insert node at index
+
+
+
+
+
+
+ Remove node
+
+
+
+
+
+
+ Remove at index
+
+
+
+
+
+ Get first instance of node in supplied collection
+
+
+
+
+
+
+
+ Add node to the end of the collection
+
+
+
+
+
+ Get first instance of node with name
+
+
+
+
+
+
+ Get index of node
+
+
+
+
+
+
+ Add node to the beginning of the collection
+
+
+
+
+
+ Remove node at index
+
+
+
+
+
+
+ Replace node at index
+
+
+
+
+
+
+ Get all node descended from this collection
+
+
+
+
+
+ Get all node descended from this collection with matching name
+
+
+
+
+
+ Gets all first generation elements in collection
+
+
+
+
+
+ Gets all first generation elements matching name
+
+
+
+
+
+
+ All first generation nodes in collection
+
+
+
+
+
+ Gets a given node from the list.
+
+
+
+
+ Get node with tag name
+
+
+
+
+
+
+ Gets the number of elements actually contained in the list.
+
+
+
+
+ Is collection read only
+
+
+
+
+ Gets the node at the specified index.
+
+
+
+
+ Represents the type of a node.
+
+
+
+
+ The root of a document.
+
+
+
+
+ An HTML element.
+
+
+
+
+ An HTML comment.
+
+
+
+
+ A text node is always the child of an element or a document node.
+
+
+
+
+ Represents a parsing error found during document parsing.
+
+
+
+
+ Gets the type of error.
+
+
+
+
+ Gets the line number of this error in the document.
+
+
+
+
+ Gets the column number of this error in the document.
+
+
+
+
+ Gets a description for the error.
+
+
+
+
+ Gets the the full text of the line containing the error.
+
+
+
+
+ Gets the absolute stream position of this error in the document, relative to the start of the document.
+
+
+
+
+ Represents the type of parsing error.
+
+
+
+
+ A tag was not closed.
+
+
+
+
+ A tag was not opened.
+
+
+
+
+ There is a charset mismatch between stream and declared (META) encoding.
+
+
+
+
+ An end tag was not required.
+
+
+
+
+ An end tag is invalid at this position.
+
+
+
+
+ Represents an HTML text node.
+
+
+
+
+ Gets or Sets the HTML between the start and end tags of the object. In the case of a text node, it is equals to OuterHtml.
+
+
+
+
+ Gets or Sets the object and its content in HTML.
+
+
+
+
+ Gets or Sets the text of the node.
+
+
+
+
+ Represents an exception thrown by the HtmlWeb utility class.
+
+
+
+
+ Creates an instance of the HtmlWebException.
+
+ The exception's message.
+
+
+
+ Used for downloading and parsing html from the internet
+
+
+
+
+ Begins the process of downloading an internet resource
+
+ Url to the html document
+
+
+
+ Begins the process of downloading an internet resource
+
+ Url to the html document
+ The encoding to use while downloading the document
+
+
+
+ Begins the process of downloading an internet resource
+
+ Url to the html document
+ The encoding to use while downloading the document
+ Username to use for credentials in the web request
+ Password to use for credentials in the web request
+
+
+
+ Begins the process of downloading an internet resource
+
+ Url to the html document
+ The encoding to use while downloading the document
+ Username to use for credentials in the web request
+ Password to use for credentials in the web request
+ Domain to use for credentials in the web request
+
+
+
+ Begins the process of downloading an internet resource
+
+ Url to the html document
+ Username to use for credentials in the web request
+ Password to use for credentials in the web request
+ Domain to use for credentials in the web request
+
+
+
+ Begins the process of downloading an internet resource
+
+ Url to the html document
+ Username to use for credentials in the web request
+ Password to use for credentials in the web request
+
+
+
+ Begins the process of downloading an internet resource
+
+ Url to the html document
+ The credentials to use for authenticating the web request
+
+
+
+ Begins the process of downloading an internet resource
+
+ Url to the html document
+ The encoding to use while downloading the document
+ The credentials to use for authenticating the web request
+
+
+
+ Allows for setting document defaults before loading
+
+
+
+
diff --git a/packages/HtmlAgilityPack.1.4.9/lib/portable-net45+netcore45+wp8+MonoAndroid+MonoTouch/HtmlAgilityPack.dll b/packages/HtmlAgilityPack.1.4.9/lib/portable-net45+netcore45+wp8+MonoAndroid+MonoTouch/HtmlAgilityPack.dll
new file mode 100644
index 000000000..208356ff0
Binary files /dev/null and b/packages/HtmlAgilityPack.1.4.9/lib/portable-net45+netcore45+wp8+MonoAndroid+MonoTouch/HtmlAgilityPack.dll differ
diff --git a/packages/HtmlAgilityPack.1.4.9/lib/portable-net45+netcore45+wpa81+wp8+MonoAndroid+MonoTouch/HtmlAgilityPack.dll b/packages/HtmlAgilityPack.1.4.9/lib/portable-net45+netcore45+wpa81+wp8+MonoAndroid+MonoTouch/HtmlAgilityPack.dll
new file mode 100644
index 000000000..208356ff0
Binary files /dev/null and b/packages/HtmlAgilityPack.1.4.9/lib/portable-net45+netcore45+wpa81+wp8+MonoAndroid+MonoTouch/HtmlAgilityPack.dll differ
diff --git a/packages/HtmlAgilityPack.1.4.9/lib/sl3-wp/_._ b/packages/HtmlAgilityPack.1.4.9/lib/sl3-wp/_._
new file mode 100644
index 000000000..15294a501
Binary files /dev/null and b/packages/HtmlAgilityPack.1.4.9/lib/sl3-wp/_._ differ
diff --git a/packages/HtmlAgilityPack.1.4.9/lib/sl4/HtmlAgilityPack.XML b/packages/HtmlAgilityPack.1.4.9/lib/sl4/HtmlAgilityPack.XML
new file mode 100644
index 000000000..6f6c93073
--- /dev/null
+++ b/packages/HtmlAgilityPack.1.4.9/lib/sl4/HtmlAgilityPack.XML
@@ -0,0 +1,2299 @@
+
+
+
+ HtmlAgilityPack
+
+
+
+
+ Happens when a document has been loaded
+
+
+
+
+ If an error occured when loading the document, null if not
+
+
+
+
+ The document that has been loaded
+
+
+
+
+ Represents an HTML node.
+
+
+
+
+ Creates a new XPathNavigator object for navigating this HTML node.
+
+ An XPathNavigator object. The XPathNavigator is positioned on the node from which the method was called. It is not positioned on the root of the document.
+
+
+
+ Creates an XPathNavigator using the root of this document.
+
+
+
+
+
+ Selects a list of nodes matching the expression.
+
+ The XPath expression.
+ An containing a collection of nodes matching the query, or null if no node matched the XPath expression.
+
+
+
+ Selects the first XmlNode that matches the XPath expression.
+
+ The XPath expression. May not be null.
+ The first that matches the XPath query or a null reference if no matching node was found.
+
+
+
+ Gets the name of a comment node. It is actually defined as '#comment'.
+
+
+
+
+ Gets the name of the document node. It is actually defined as '#document'.
+
+
+
+
+ Gets the name of a text node. It is actually defined as '#text'.
+
+
+
+
+ Gets a collection of flags that define specific behaviors for specific element nodes.
+ The table contains a DictionaryEntry list with the lowercase tag name as the Key, and a combination of HtmlElementFlags as the Value.
+
+
+
+
+ Initialize HtmlNode. Builds a list of all tags that have special allowances
+
+
+
+
+ Initializes HtmlNode, providing type, owner and where it exists in a collection
+
+
+
+
+
+
+
+ Determines if an element node can be kept overlapped.
+
+ The name of the element node to check. May not be null.
+ true if the name is the name of an element node that can be kept overlapped, false otherwise.
+
+
+
+ Creates an HTML node from a string representing literal HTML.
+
+ The HTML text.
+ The newly created node instance.
+
+
+
+ Determines if an element node is a CDATA element node.
+
+ The name of the element node to check. May not be null.
+ true if the name is the name of a CDATA element node, false otherwise.
+
+
+
+ Determines if an element node is closed.
+
+ The name of the element node to check. May not be null.
+ true if the name is the name of a closed element node, false otherwise.
+
+
+
+ Determines if an element node is defined as empty.
+
+ The name of the element node to check. May not be null.
+ true if the name is the name of an empty element node, false otherwise.
+
+
+
+ Determines if a text corresponds to the closing tag of an node that can be kept overlapped.
+
+ The text to check. May not be null.
+ true or false.
+
+
+
+ Returns a collection of all ancestor nodes of this element.
+
+
+
+
+
+ Get Ancestors with matching name
+
+
+
+
+
+
+ Returns a collection of all ancestor nodes of this element.
+
+
+
+
+
+ Gets all anscestor nodes and the current node
+
+
+
+
+
+
+ Adds the specified node to the end of the list of children of this node.
+
+ The node to add. May not be null.
+ The node added.
+
+
+
+ Adds the specified node to the end of the list of children of this node.
+
+ The node list to add. May not be null.
+
+
+
+ Gets all Attributes with name
+
+
+
+
+
+
+ Creates a duplicate of the node
+
+
+
+
+
+ Creates a duplicate of the node and changes its name at the same time.
+
+ The new name of the cloned node. May not be null.
+ The cloned node.
+
+
+
+ Creates a duplicate of the node and changes its name at the same time.
+
+ The new name of the cloned node. May not be null.
+ true to recursively clone the subtree under the specified node; false to clone only the node itself.
+ The cloned node.
+
+
+
+ Creates a duplicate of the node.
+
+ true to recursively clone the subtree under the specified node; false to clone only the node itself.
+ The cloned node.
+
+
+
+ Creates a duplicate of the node and the subtree under it.
+
+ The node to duplicate. May not be null.
+
+
+
+ Creates a duplicate of the node.
+
+ The node to duplicate. May not be null.
+ true to recursively clone the subtree under the specified node, false to clone only the node itself.
+
+
+
+ Gets all Descendant nodes for this node and each of child nodes
+
+
+
+
+
+ Returns a collection of all descendant nodes of this element, in document order
+
+
+
+
+
+ Gets all Descendant nodes in enumerated list
+
+
+
+
+
+ Get all descendant nodes with matching name
+
+
+
+
+
+
+ Returns a collection of all descendant nodes of this element, in document order
+
+
+
+
+
+ Gets all descendant nodes including this node
+
+
+
+
+
+
+ Gets first generation child node matching name
+
+
+
+
+
+
+ Gets matching first generation child nodes matching name
+
+
+
+
+
+
+ Helper method to get the value of an attribute of this node. If the attribute is not found, the default value will be returned.
+
+ The name of the attribute to get. May not be null.
+ The default value to return if not found.
+ The value of the attribute if found, the default value if not found.
+
+
+
+ Helper method to get the value of an attribute of this node. If the attribute is not found, the default value will be returned.
+
+ The name of the attribute to get. May not be null.
+ The default value to return if not found.
+ The value of the attribute if found, the default value if not found.
+
+
+
+ Helper method to get the value of an attribute of this node. If the attribute is not found, the default value will be returned.
+
+ The name of the attribute to get. May not be null.
+ The default value to return if not found.
+ The value of the attribute if found, the default value if not found.
+
+
+
+ Inserts the specified node immediately after the specified reference node.
+
+ The node to insert. May not be null.
+ The node that is the reference node. The newNode is placed after the refNode.
+ The node being inserted.
+
+
+
+ Inserts the specified node immediately before the specified reference node.
+
+ The node to insert. May not be null.
+ The node that is the reference node. The newChild is placed before this node.
+ The node being inserted.
+
+
+
+ Adds the specified node to the beginning of the list of children of this node.
+
+ The node to add. May not be null.
+ The node added.
+
+
+
+ Adds the specified node list to the beginning of the list of children of this node.
+
+ The node list to add. May not be null.
+
+
+
+ Removes node from parent collection
+
+
+
+
+ Removes all the children and/or attributes of the current node.
+
+
+
+
+ Removes all the children of the current node.
+
+
+
+
+ Removes the specified child node.
+
+ The node being removed. May not be null.
+ The node removed.
+
+
+
+ Removes the specified child node.
+
+ The node being removed. May not be null.
+ true to keep grand children of the node, false otherwise.
+ The node removed.
+
+
+
+ Replaces the child node oldChild with newChild node.
+
+ The new node to put in the child list.
+ The node being replaced in the list.
+ The node replaced.
+
+
+
+ Helper method to set the value of an attribute of this node. If the attribute is not found, it will be created automatically.
+
+ The name of the attribute to set. May not be null.
+ The value for the attribute.
+ The corresponding attribute instance.
+
+
+
+ Saves all the children of the node to the specified TextWriter.
+
+ The TextWriter to which you want to save.
+
+
+
+ Saves all the children of the node to a string.
+
+ The saved string.
+
+
+
+ Saves the current node to the specified TextWriter.
+
+ The TextWriter to which you want to save.
+
+
+
+ Saves the current node to the specified XmlWriter.
+
+ The XmlWriter to which you want to save.
+
+
+
+ Saves the current node to a string.
+
+ The saved string.
+
+
+
+ Gets the collection of HTML attributes for this node. May not be null.
+
+
+
+
+ Gets all the children of the node.
+
+
+
+
+ Gets a value indicating if this node has been closed or not.
+
+
+
+
+ Gets the collection of HTML attributes for the closing tag. May not be null.
+
+
+
+
+ Gets the first child of the node.
+
+
+
+
+ Gets a value indicating whether the current node has any attributes.
+
+
+
+
+ Gets a value indicating whether this node has any child nodes.
+
+
+
+
+ Gets a value indicating whether the current node has any attributes on the closing tag.
+
+
+
+
+ Gets or sets the value of the 'id' HTML attribute. The document must have been parsed using the OptionUseIdAttribute set to true.
+
+
+
+
+ Gets or Sets the HTML between the start and end tags of the object.
+
+
+
+
+ Gets or Sets the text between the start and end tags of the object.
+
+
+
+
+ Gets the last child of the node.
+
+
+
+
+ Gets the line number of this node in the document.
+
+
+
+
+ Gets the column number of this node in the document.
+
+
+
+
+ Gets or sets this node's name.
+
+
+
+
+ Gets the HTML node immediately following this element.
+
+
+
+
+ Gets the type of this node.
+
+
+
+
+ The original unaltered name of the tag
+
+
+
+
+ Gets or Sets the object and its content in HTML.
+
+
+
+
+ Gets the to which this node belongs.
+
+
+
+
+ Gets the parent of this node (for nodes that can have parents).
+
+
+
+
+ Gets the node immediately preceding this node.
+
+
+
+
+ Gets the stream position of this node in the document, relative to the start of the document.
+
+
+
+
+ Gets a valid XPath string that points to this node
+
+
+
+
+ Represents a fragment of text in a mixed code document.
+
+
+
+
+ Represents a base class for fragments in a mixed code document.
+
+
+
+
+ Gets the fragement text.
+
+
+
+
+ Gets the type of fragment.
+
+
+
+
+ Gets the line number of the fragment.
+
+
+
+
+ Gets the line position (column) of the fragment.
+
+
+
+
+ Gets the fragment position in the document's stream.
+
+
+
+
+ Gets the fragment text.
+
+
+
+
+ Represents an HTML comment.
+
+
+
+
+ Gets or Sets the comment text of the node.
+
+
+
+
+ Gets or Sets the HTML between the start and end tags of the object. In the case of a text node, it is equals to OuterHtml.
+
+
+
+
+ Gets or Sets the object and its content in HTML.
+
+
+
+
+ Represents an HTML attribute.
+
+
+
+
+ Compares the current instance with another attribute. Comparison is based on attributes' name.
+
+ An attribute to compare with this instance.
+ A 32-bit signed integer that indicates the relative order of the names comparison.
+
+
+
+ Creates a duplicate of this attribute.
+
+ The cloned attribute.
+
+
+
+ Removes this attribute from it's parents collection
+
+
+
+
+ Gets the line number of this attribute in the document.
+
+
+
+
+ Gets the column number of this attribute in the document.
+
+
+
+
+ Gets the qualified name of the attribute.
+
+
+
+
+ Name of attribute with original case
+
+
+
+
+ Gets the HTML document to which this attribute belongs.
+
+
+
+
+ Gets the HTML node to which this attribute belongs.
+
+
+
+
+ Specifies what type of quote the data should be wrapped in
+
+
+
+
+ Gets the stream position of this attribute in the document, relative to the start of the document.
+
+
+
+
+ Gets or sets the value of the attribute.
+
+
+
+
+ Gets a valid XPath string that points to this Attribute
+
+
+
+
+ An Enum representing different types of Quotes used for surrounding attribute values
+
+
+
+
+ A single quote mark '
+
+
+
+
+ A double quote mark "
+
+
+
+
+ Extensions used for Silverlight Compatibility
+
+
+
+
+ Splits a string on provided characters and returns an array up to the count provided
+
+ The string to split
+ The list of chars to split on
+ The number of items to retrieve
+
+
+
+
+ Represents a fragment of code in a mixed code document.
+
+
+
+
+ Gets the fragment code text.
+
+
+
+
+ Represents a document with mixed code and text. ASP, ASPX, JSP, are good example of such documents.
+
+
+
+
+ Gets or sets the token representing code end.
+
+
+
+
+ Gets or sets the token representing code start.
+
+
+
+
+ Gets or sets the token representing code directive.
+
+
+
+
+ Gets or sets the token representing response write directive.
+
+
+
+
+ Creates a mixed code document instance.
+
+
+
+
+ Create a code fragment instances.
+
+ The newly created code fragment instance.
+
+
+
+ Create a text fragment instances.
+
+ The newly created text fragment instance.
+
+
+
+ Loads a mixed code document from a stream.
+
+ The input stream.
+
+
+
+ Loads a mixed code document from a stream.
+
+ The input stream.
+ Indicates whether to look for byte order marks at the beginning of the file.
+
+
+
+ Loads a mixed code document from a stream.
+
+ The input stream.
+ The character encoding to use.
+
+
+
+ Loads a mixed code document from a stream.
+
+ The input stream.
+ The character encoding to use.
+ Indicates whether to look for byte order marks at the beginning of the file.
+
+
+
+ Loads a mixed code document from a stream.
+
+ The input stream.
+ The character encoding to use.
+ Indicates whether to look for byte order marks at the beginning of the file.
+ The minimum buffer size.
+
+
+
+ Loads a mixed code document from a file.
+
+ The complete file path to be read.
+
+
+
+ Loads a mixed code document from a file.
+
+ The complete file path to be read.
+ Indicates whether to look for byte order marks at the beginning of the file.
+
+
+
+ Loads a mixed code document from a file.
+
+ The complete file path to be read.
+ The character encoding to use.
+
+
+
+ Loads a mixed code document from a file.
+
+ The complete file path to be read.
+ The character encoding to use.
+ Indicates whether to look for byte order marks at the beginning of the file.
+
+
+
+ Loads a mixed code document from a file.
+
+ The complete file path to be read.
+ The character encoding to use.
+ Indicates whether to look for byte order marks at the beginning of the file.
+ The minimum buffer size.
+
+
+
+ Loads the mixed code document from the specified TextReader.
+
+ The TextReader used to feed the HTML data into the document.
+
+
+
+ Loads a mixed document from a text
+
+ The text to load.
+
+
+
+ Saves the mixed document to the specified stream.
+
+ The stream to which you want to save.
+
+
+
+ Saves the mixed document to the specified stream.
+
+ The stream to which you want to save.
+ The character encoding to use.
+
+
+
+ Saves the mixed document to the specified file.
+
+ The location of the file where you want to save the document.
+
+
+
+ Saves the mixed document to the specified file.
+
+ The location of the file where you want to save the document.
+ The character encoding to use.
+
+
+
+ Saves the mixed document to the specified StreamWriter.
+
+ The StreamWriter to which you want to save.
+
+
+
+ Saves the mixed document to the specified TextWriter.
+
+ The TextWriter to which you want to save.
+
+
+
+ Gets the code represented by the mixed code document seen as a template.
+
+
+
+
+ Gets the list of code fragments in the document.
+
+
+
+
+ Gets the list of all fragments in the document.
+
+
+
+
+ Gets the encoding of the stream used to read the document.
+
+
+
+
+ Gets the list of text fragments in the document.
+
+
+
+
+ Represents a combined list and collection of HTML nodes.
+
+
+
+
+ Adds supplied item to collection
+
+
+
+
+
+ Explicit clear
+
+
+
+
+ Retreives existence of supplied item
+
+
+
+
+
+
+ Copies collection to array
+
+
+
+
+
+
+ Get Explicit enumerator
+
+
+
+
+
+ Explicit non-generic enumerator
+
+
+
+
+
+ Retrieves the index for the supplied item, -1 if not found
+
+
+
+
+
+
+ Inserts given item into collection at supplied index
+
+
+
+
+
+
+ Explicit collection remove
+
+
+
+
+
+
+ Removes the attribute at the specified index.
+
+ The index of the attribute to remove.
+
+
+
+ Adds a new attribute to the collection with the given values
+
+
+
+
+
+
+ Inserts the specified attribute as the last attribute in the collection.
+
+ The attribute to insert. May not be null.
+ The appended attribute.
+
+
+
+ Creates and inserts a new attribute as the last attribute in the collection.
+
+ The name of the attribute to insert.
+ The appended attribute.
+
+
+
+ Creates and inserts a new attribute as the last attribute in the collection.
+
+ The name of the attribute to insert.
+ The value of the attribute to insert.
+ The appended attribute.
+
+
+
+ Checks for existance of attribute with given name
+
+
+
+
+
+
+ Inserts the specified attribute as the first node in the collection.
+
+ The attribute to insert. May not be null.
+ The prepended attribute.
+
+
+
+ Removes a given attribute from the list.
+
+ The attribute to remove. May not be null.
+
+
+
+ Removes an attribute from the list, using its name. If there are more than one attributes with this name, they will all be removed.
+
+ The attribute's name. May not be null.
+
+
+
+ Remove all attributes in the list.
+
+
+
+
+ Returns all attributes with specified name. Handles case insentivity
+
+ Name of the attribute
+
+
+
+
+ Removes all attributes from the collection
+
+
+
+
+ Clears the attribute collection
+
+
+
+
+ Gets a given attribute from the list using its name.
+
+
+
+
+ Gets the number of elements actually contained in the list.
+
+
+
+
+ Gets readonly status of colelction
+
+
+
+
+ Gets the attribute at the specified index.
+
+
+
+
+ Represents a list of mixed code fragments.
+
+
+
+
+ Gets an enumerator that can iterate through the fragment list.
+
+
+
+
+ Appends a fragment to the list of fragments.
+
+ The fragment to append. May not be null.
+
+
+
+ Gets an enumerator that can iterate through the fragment list.
+
+
+
+
+ Prepends a fragment to the list of fragments.
+
+ The fragment to append. May not be null.
+
+
+
+ Remove a fragment from the list of fragments. If this fragment was not in the list, an exception will be raised.
+
+ The fragment to remove. May not be null.
+
+
+
+ Remove all fragments from the list.
+
+
+
+
+ Remove a fragment from the list of fragments, using its index in the list.
+
+ The index of the fragment to remove.
+
+
+
+ Gets the Document
+
+
+
+
+ Gets the number of fragments contained in the list.
+
+
+
+
+ Gets a fragment from the list using its index.
+
+
+
+
+ Represents a fragment enumerator.
+
+
+
+
+ Advances the enumerator to the next element of the collection.
+
+ true if the enumerator was successfully advanced to the next element; false if the enumerator has passed the end of the collection.
+
+
+
+ Sets the enumerator to its initial position, which is before the first element in the collection.
+
+
+
+
+ Gets the current element in the collection.
+
+
+
+
+ Gets the current element in the collection.
+
+
+
+
+ Represents a combined list and collection of HTML nodes.
+
+
+
+
+ Initialize the HtmlNodeCollection with the base parent node
+
+ The base node of the collection
+
+
+
+ Add node to the collection
+
+
+
+
+
+ Clears out the collection of HtmlNodes. Removes each nodes reference to parentnode, nextnode and prevnode
+
+
+
+
+ Gets existence of node in collection
+
+
+
+
+
+
+ Copy collection to array
+
+
+
+
+
+
+ Get Enumerator
+
+
+
+
+
+ Get Explicit Enumerator
+
+
+
+
+
+ Get index of node
+
+
+
+
+
+
+ Insert node at index
+
+
+
+
+
+
+ Remove node
+
+
+
+
+
+
+ Remove at index
+
+
+
+
+
+ Get first instance of node in supplied collection
+
+
+
+
+
+
+
+ Add node to the end of the collection
+
+
+
+
+
+ Get first instance of node with name
+
+
+
+
+
+
+ Get index of node
+
+
+
+
+
+
+ Add node to the beginning of the collection
+
+
+
+
+
+ Remove node at index
+
+
+
+
+
+
+ Replace node at index
+
+
+
+
+
+
+ Get all node descended from this collection
+
+
+
+
+
+ Get all node descended from this collection with matching name
+
+
+
+
+
+ Gets all first generation elements in collection
+
+
+
+
+
+ Gets all first generation elements matching name
+
+
+
+
+
+
+ All first generation nodes in collection
+
+
+
+
+
+ Gets a given node from the list.
+
+
+
+
+ Get node with tag name
+
+
+
+
+
+
+ Gets the number of elements actually contained in the list.
+
+
+
+
+ Is collection read only
+
+
+
+
+ Gets the node at the specified index.
+
+
+
+
+ Represents the type of fragment in a mixed code document.
+
+
+
+
+ The fragment contains code.
+
+
+
+
+ The fragment contains text.
+
+
+
+
+ Represents an HTML navigator on an HTML document seen as a data store.
+
+
+
+
+ Initializes a new instance of the HtmlNavigator and loads an HTML document from a stream.
+
+ The input stream.
+
+
+
+ Initializes a new instance of the HtmlNavigator and loads an HTML document from a stream.
+
+ The input stream.
+ Indicates whether to look for byte order marks at the beginning of the stream.
+
+
+
+ Initializes a new instance of the HtmlNavigator and loads an HTML document from a stream.
+
+ The input stream.
+ The character encoding to use.
+
+
+
+ Initializes a new instance of the HtmlNavigator and loads an HTML document from a stream.
+
+ The input stream.
+ The character encoding to use.
+ Indicates whether to look for byte order marks at the beginning of the stream.
+
+
+
+ Initializes a new instance of the HtmlNavigator and loads an HTML document from a stream.
+
+ The input stream.
+ The character encoding to use.
+ Indicates whether to look for byte order marks at the beginning of the stream.
+ The minimum buffer size.
+
+
+
+ Initializes a new instance of the HtmlNavigator and loads an HTML document from a TextReader.
+
+ The TextReader used to feed the HTML data into the document.
+
+
+
+ Initializes a new instance of the HtmlNavigator and loads an HTML document from a file.
+
+ The complete file path to be read.
+
+
+
+ Initializes a new instance of the HtmlNavigator and loads an HTML document from a file.
+
+ The complete file path to be read.
+ Indicates whether to look for byte order marks at the beginning of the file.
+
+
+
+ Initializes a new instance of the HtmlNavigator and loads an HTML document from a file.
+
+ The complete file path to be read.
+ The character encoding to use.
+
+
+
+ Initializes a new instance of the HtmlNavigator and loads an HTML document from a file.
+
+ The complete file path to be read.
+ The character encoding to use.
+ Indicates whether to look for byte order marks at the beginning of the file.
+
+
+
+ Initializes a new instance of the HtmlNavigator and loads an HTML document from a file.
+
+ The complete file path to be read.
+ The character encoding to use.
+ Indicates whether to look for byte order marks at the beginning of the file.
+ The minimum buffer size.
+
+
+
+ Creates a new HtmlNavigator positioned at the same node as this HtmlNavigator.
+
+ A new HtmlNavigator object positioned at the same node as the original HtmlNavigator.
+
+
+
+ Gets the value of the HTML attribute with the specified LocalName and NamespaceURI.
+
+ The local name of the HTML attribute.
+ The namespace URI of the attribute. Unsupported with the HtmlNavigator implementation.
+ The value of the specified HTML attribute. String.Empty or null if a matching attribute is not found or if the navigator is not positioned on an element node.
+
+
+
+ Returns the value of the namespace node corresponding to the specified local name.
+ Always returns string.Empty for the HtmlNavigator implementation.
+
+ The local name of the namespace node.
+ Always returns string.Empty for the HtmlNavigator implementation.
+
+
+
+ Determines whether the current HtmlNavigator is at the same position as the specified HtmlNavigator.
+
+ The HtmlNavigator that you want to compare against.
+ true if the two navigators have the same position, otherwise, false.
+
+
+
+ Moves to the same position as the specified HtmlNavigator.
+
+ The HtmlNavigator positioned on the node that you want to move to.
+ true if successful, otherwise false. If false, the position of the navigator is unchanged.
+
+
+
+ Moves to the HTML attribute with matching LocalName and NamespaceURI.
+
+ The local name of the HTML attribute.
+ The namespace URI of the attribute. Unsupported with the HtmlNavigator implementation.
+ true if the HTML attribute is found, otherwise, false. If false, the position of the navigator does not change.
+
+
+
+ Moves to the first sibling of the current node.
+
+ true if the navigator is successful moving to the first sibling node, false if there is no first sibling or if the navigator is currently positioned on an attribute node.
+
+
+
+ Moves to the first HTML attribute.
+
+ true if the navigator is successful moving to the first HTML attribute, otherwise, false.
+
+
+
+ Moves to the first child of the current node.
+
+ true if there is a first child node, otherwise false.
+
+
+
+ Moves the XPathNavigator to the first namespace node of the current element.
+ Always returns false for the HtmlNavigator implementation.
+
+ An XPathNamespaceScope value describing the namespace scope.
+ Always returns false for the HtmlNavigator implementation.
+
+
+
+ Moves to the node that has an attribute of type ID whose value matches the specified string.
+
+ A string representing the ID value of the node to which you want to move. This argument does not need to be atomized.
+ true if the move was successful, otherwise false. If false, the position of the navigator is unchanged.
+
+
+
+ Moves the XPathNavigator to the namespace node with the specified local name.
+ Always returns false for the HtmlNavigator implementation.
+
+ The local name of the namespace node.
+ Always returns false for the HtmlNavigator implementation.
+
+
+
+ Moves to the next sibling of the current node.
+
+ true if the navigator is successful moving to the next sibling node, false if there are no more siblings or if the navigator is currently positioned on an attribute node. If false, the position of the navigator is unchanged.
+
+
+
+ Moves to the next HTML attribute.
+
+
+
+
+
+ Moves the XPathNavigator to the next namespace node.
+ Always returns falsefor the HtmlNavigator implementation.
+
+ An XPathNamespaceScope value describing the namespace scope.
+ Always returns false for the HtmlNavigator implementation.
+
+
+
+ Moves to the parent of the current node.
+
+ true if there is a parent node, otherwise false.
+
+
+
+ Moves to the previous sibling of the current node.
+
+ true if the navigator is successful moving to the previous sibling node, false if there is no previous sibling or if the navigator is currently positioned on an attribute node.
+
+
+
+ Moves to the root node to which the current node belongs.
+
+
+
+
+ Gets the base URI for the current node.
+ Always returns string.Empty in the case of HtmlNavigator implementation.
+
+
+
+
+ Gets the current HTML document.
+
+
+
+
+ Gets the current HTML node.
+
+
+
+
+ Gets a value indicating whether the current node has child nodes.
+
+
+
+
+ Gets a value indicating whether the current node has child nodes.
+
+
+
+
+ Gets a value indicating whether the current node is an empty element.
+
+
+
+
+ Gets the name of the current HTML node without the namespace prefix.
+
+
+
+
+ Gets the qualified name of the current node.
+
+
+
+
+ Gets the namespace URI (as defined in the W3C Namespace Specification) of the current node.
+ Always returns string.Empty in the case of HtmlNavigator implementation.
+
+
+
+
+ Gets the associated with this implementation.
+
+
+
+
+ Gets the type of the current node.
+
+
+
+
+ Gets the prefix associated with the current node.
+ Always returns string.Empty in the case of HtmlNavigator implementation.
+
+
+
+
+ Gets the text value of the current node.
+
+
+
+
+ Gets the xml:lang scope for the current node.
+ Always returns string.Empty in the case of HtmlNavigator implementation.
+
+
+
+
+ Flags that describe the behavior of an Element node.
+
+
+
+
+ The node is a CDATA node.
+
+
+
+
+ The node is empty. META or IMG are example of such nodes.
+
+
+
+
+ The node will automatically be closed during parsing.
+
+
+
+
+ The node can overlap.
+
+
+
+
+ Represents a complete HTML document.
+
+
+
+
+ Detects the encoding of an HTML document from a file first, and then loads the file.
+
+ The complete file path to be read.
+
+
+
+ Detects the encoding of an HTML document from a file first, and then loads the file.
+
+ The complete file path to be read. May not be null.
+ true to detect encoding, false otherwise.
+
+
+
+ Detects the encoding of an HTML file.
+
+ Path for the file containing the HTML document to detect. May not be null.
+ The detected encoding.
+
+
+
+ Loads an HTML document from a file.
+
+ The complete file path to be read. May not be null.
+
+
+
+ Loads an HTML document from a file.
+
+ The complete file path to be read. May not be null.
+ Indicates whether to look for byte order marks at the beginning of the file.
+
+
+
+ Loads an HTML document from a file.
+
+ The complete file path to be read. May not be null.
+ The character encoding to use. May not be null.
+
+
+
+ Loads an HTML document from a file.
+
+ The complete file path to be read. May not be null.
+ The character encoding to use. May not be null.
+ Indicates whether to look for byte order marks at the beginning of the file.
+
+
+
+ Loads an HTML document from a file.
+
+ The complete file path to be read. May not be null.
+ The character encoding to use. May not be null.
+ Indicates whether to look for byte order marks at the beginning of the file.
+ The minimum buffer size.
+
+
+
+ Saves the mixed document to the specified file.
+
+ The location of the file where you want to save the document.
+
+
+
+ Saves the mixed document to the specified file.
+
+ The location of the file where you want to save the document. May not be null.
+ The character encoding to use. May not be null.
+
+
+
+ Creates a new XPathNavigator object for navigating this HTML document.
+
+ An XPathNavigator object. The XPathNavigator is positioned on the root of the document.
+
+
+
+ Adds Debugging attributes to node. Default is false.
+
+
+
+
+ Defines if closing for non closed nodes must be done at the end or directly in the document.
+ Setting this to true can actually change how browsers render the page. Default is false.
+
+
+
+
+ Defines if non closed nodes will be checked at the end of parsing. Default is true.
+
+
+
+
+ Defines if a checksum must be computed for the document while parsing. Default is false.
+
+
+
+
+ Defines the default stream encoding to use. Default is System.Text.Encoding.Default.
+
+
+
+
+ Defines if source text must be extracted while parsing errors.
+ If the document has a lot of errors, or cascading errors, parsing performance can be dramatically affected if set to true.
+ Default is false.
+
+
+
+
+ Defines the maximum length of source text or parse errors. Default is 100.
+
+
+
+
+ Defines if LI, TR, TH, TD tags must be partially fixed when nesting errors are detected. Default is false.
+
+
+
+
+ Defines if output must conform to XML, instead of HTML.
+
+
+
+
+ Defines if attribute value output must be optimized (not bound with double quotes if it is possible). Default is false.
+
+
+
+
+ Defines if name must be output with it's original case. Useful for asp.net tags and attributes
+
+
+
+
+ Defines if name must be output in uppercase. Default is false.
+
+
+
+
+ Defines if declared encoding must be read from the document.
+ Declared encoding is determined using the meta http-equiv="content-type" content="text/html;charset=XXXXX" html node.
+ Default is true.
+
+
+
+
+ Defines the name of a node that will throw the StopperNodeException when found as an end node. Default is null.
+
+
+
+
+ Defines if the 'id' attribute must be specifically used. Default is true.
+
+
+
+
+ Defines if empty nodes must be written as closed during output. Default is false.
+
+
+
+
+ Creates an instance of an HTML document.
+
+
+
+
+ Gets a valid XML name.
+
+ Any text.
+ A string that is a valid XML name.
+
+
+
+ Applies HTML encoding to a specified string.
+
+ The input string to encode. May not be null.
+ The encoded string.
+
+
+
+ Determines if the specified character is considered as a whitespace character.
+
+ The character to check.
+ true if if the specified character is considered as a whitespace character.
+
+
+
+ Creates an HTML attribute with the specified name.
+
+ The name of the attribute. May not be null.
+ The new HTML attribute.
+
+
+
+ Creates an HTML attribute with the specified name.
+
+ The name of the attribute. May not be null.
+ The value of the attribute.
+ The new HTML attribute.
+
+
+
+ Creates an HTML comment node.
+
+ The new HTML comment node.
+
+
+
+ Creates an HTML comment node with the specified comment text.
+
+ The comment text. May not be null.
+ The new HTML comment node.
+
+
+
+ Creates an HTML element node with the specified name.
+
+ The qualified name of the element. May not be null.
+ The new HTML node.
+
+
+
+ Creates an HTML text node.
+
+ The new HTML text node.
+
+
+
+ Creates an HTML text node with the specified text.
+
+ The text of the node. May not be null.
+ The new HTML text node.
+
+
+
+ Detects the encoding of an HTML stream.
+
+ The input stream. May not be null.
+ The detected encoding.
+
+
+
+ Detects the encoding of an HTML text provided on a TextReader.
+
+ The TextReader used to feed the HTML. May not be null.
+ The detected encoding.
+
+
+
+ Detects the encoding of an HTML text.
+
+ The input html text. May not be null.
+ The detected encoding.
+
+
+
+ Gets the HTML node with the specified 'id' attribute value.
+
+ The attribute id to match. May not be null.
+ The HTML node with the matching id or null if not found.
+
+
+
+ Loads an HTML document from a stream.
+
+ The input stream.
+
+
+
+ Loads an HTML document from a stream.
+
+ The input stream.
+ Indicates whether to look for byte order marks at the beginning of the stream.
+
+
+
+ Loads an HTML document from a stream.
+
+ The input stream.
+ The character encoding to use.
+
+
+
+ Loads an HTML document from a stream.
+
+ The input stream.
+ The character encoding to use.
+ Indicates whether to look for byte order marks at the beginning of the stream.
+
+
+
+ Loads an HTML document from a stream.
+
+ The input stream.
+ The character encoding to use.
+ Indicates whether to look for byte order marks at the beginning of the stream.
+ The minimum buffer size.
+
+
+
+ Loads the HTML document from the specified TextReader.
+
+ The TextReader used to feed the HTML data into the document. May not be null.
+
+
+
+ Loads the HTML document from the specified string.
+
+ String containing the HTML document to load. May not be null.
+
+
+
+ Saves the HTML document to the specified stream.
+
+ The stream to which you want to save.
+
+
+
+ Saves the HTML document to the specified stream.
+
+ The stream to which you want to save. May not be null.
+ The character encoding to use. May not be null.
+
+
+
+ Saves the HTML document to the specified StreamWriter.
+
+ The StreamWriter to which you want to save.
+
+
+
+ Saves the HTML document to the specified TextWriter.
+
+ The TextWriter to which you want to save. May not be null.
+
+
+
+ Saves the HTML document to the specified XmlWriter.
+
+ The XmlWriter to which you want to save.
+
+
+
+ Gets the document CRC32 checksum if OptionComputeChecksum was set to true before parsing, 0 otherwise.
+
+
+
+
+ Gets the document's declared encoding.
+ Declared encoding is determined using the meta http-equiv="content-type" content="text/html;charset=XXXXX" html node.
+
+
+
+
+ Gets the root node of the document.
+
+
+
+
+ Gets the document's output encoding.
+
+
+
+
+ Gets a list of parse errors found in the document.
+
+
+
+
+ Gets the remaining text.
+ Will always be null if OptionStopperNodeName is null.
+
+
+
+
+ Gets the offset of Remainder in the original Html text.
+ If OptionStopperNodeName is null, this will return the length of the original Html text.
+
+
+
+
+ Gets the document's stream encoding.
+
+
+
+
+ A utility class to compute CRC32.
+
+
+
+
+ Compute a checksum for a given array of bytes.
+
+ The array of bytes to compute the checksum for.
+ The computed checksum.
+
+
+
+ Compute a checksum for a given string.
+
+ The string to compute the checksum for.
+ The computed checksum.
+
+
+
+ Represents a parsing error found during document parsing.
+
+
+
+
+ Gets the type of error.
+
+
+
+
+ Gets the line number of this error in the document.
+
+
+
+
+ Gets the column number of this error in the document.
+
+
+
+
+ Gets a description for the error.
+
+
+
+
+ Gets the the full text of the line containing the error.
+
+
+
+
+ Gets the absolute stream position of this error in the document, relative to the start of the document.
+
+
+
+
+ A utility class to replace special characters by entities and vice-versa.
+ Follows HTML 4.0 specification found at http://www.w3.org/TR/html4/sgml/entities.html
+
+
+
+
+ Replace known entities by characters.
+
+ The source text.
+ The result text.
+
+
+
+ Clone and entitize an HtmlNode. This will affect attribute values and nodes' text. It will also entitize all child nodes.
+
+ The node to entitize.
+ An entitized cloned node.
+
+
+
+ Replace characters above 127 by entities.
+
+ The source text.
+ The result text.
+
+
+
+ Replace characters above 127 by entities.
+
+ The source text.
+ If set to false, the function will not use known entities name. Default is true.
+ The result text.
+
+
+
+ Replace characters above 127 by entities.
+
+ The source text.
+ If set to false, the function will not use known entities name. Default is true.
+ If set to true, the [quote], [ampersand], [lower than] and [greather than] characters will be entitized.
+ The result text
+
+
+
+ A collection of entities indexed by name.
+
+
+
+
+ A collection of entities indexed by value.
+
+
+
+
+ Represents the type of parsing error.
+
+
+
+
+ A tag was not closed.
+
+
+
+
+ A tag was not opened.
+
+
+
+
+ There is a charset mismatch between stream and declared (META) encoding.
+
+
+
+
+ An end tag was not required.
+
+
+
+
+ An end tag is invalid at this position.
+
+
+
+
+ Represents an HTML text node.
+
+
+
+
+ Gets or Sets the HTML between the start and end tags of the object. In the case of a text node, it is equals to OuterHtml.
+
+
+
+
+ Gets or Sets the object and its content in HTML.
+
+
+
+
+ Gets or Sets the text of the node.
+
+
+
+
+ Represents the type of a node.
+
+
+
+
+ The root of a document.
+
+
+
+
+ An HTML element.
+
+
+
+
+ An HTML comment.
+
+
+
+
+ A text node is always the child of an element or a document node.
+
+
+
+
+ Used for downloading and parsing html from the internet
+
+
+
+
+ Occurs before an HTML document is handled.
+
+
+
+
+ Begins the process of downloading an internet resource
+
+ Url to the html document
+
+
+
+ Begins the process of downloading an internet resource
+
+ Url to the html document
+ The encoding to use while downloading the document
+
+
+
+ Begins the process of downloading an internet resource
+
+ Url to the html document
+ The encoding to use while downloading the document
+ Username to use for credentials in the web request
+ Password to use for credentials in the web request
+
+
+
+ Begins the process of downloading an internet resource
+
+ Url to the html document
+ The encoding to use while downloading the document
+ Username to use for credentials in the web request
+ Password to use for credentials in the web request
+ Domain to use for credentials in the web request
+
+
+
+ Begins the process of downloading an internet resource
+
+ Url to the html document
+ Username to use for credentials in the web request
+ Password to use for credentials in the web request
+ Domain to use for credentials in the web request
+
+
+
+ Begins the process of downloading an internet resource
+
+ Url to the html document
+ Username to use for credentials in the web request
+ Password to use for credentials in the web request
+
+
+
+ Begins the process of downloading an internet resource
+
+ Url to the html document
+ The credentials to use for authenticating the web request
+
+
+
+ Begins the process of downloading an internet resource
+
+ Url to the html document
+ The encoding to use while downloading the document
+ The credentials to use for authenticating the web request
+
+
+
+ Retrieves an HtmlDocument using the provided url
+
+ The address to load
+
+
+
+
+ Fired when a web request has finished
+
+
+
+
+ Represents the method that will handle the PreHandleDocument event.
+
+
+
+
diff --git a/packages/HtmlAgilityPack.1.4.9/lib/sl4/HtmlAgilityPack.dll b/packages/HtmlAgilityPack.1.4.9/lib/sl4/HtmlAgilityPack.dll
new file mode 100644
index 000000000..96b443e6a
Binary files /dev/null and b/packages/HtmlAgilityPack.1.4.9/lib/sl4/HtmlAgilityPack.dll differ
diff --git a/packages/HtmlAgilityPack.1.4.9/lib/sl5/HtmlAgilityPack.XML b/packages/HtmlAgilityPack.1.4.9/lib/sl5/HtmlAgilityPack.XML
new file mode 100644
index 000000000..6f6c93073
--- /dev/null
+++ b/packages/HtmlAgilityPack.1.4.9/lib/sl5/HtmlAgilityPack.XML
@@ -0,0 +1,2299 @@
+
+
+
+ HtmlAgilityPack
+
+
+
+
+ Happens when a document has been loaded
+
+
+
+
+ If an error occured when loading the document, null if not
+
+
+
+
+ The document that has been loaded
+
+
+
+
+ Represents an HTML node.
+
+
+
+
+ Creates a new XPathNavigator object for navigating this HTML node.
+
+ An XPathNavigator object. The XPathNavigator is positioned on the node from which the method was called. It is not positioned on the root of the document.
+
+
+
+ Creates an XPathNavigator using the root of this document.
+
+
+
+
+
+ Selects a list of nodes matching the expression.
+
+ The XPath expression.
+ An containing a collection of nodes matching the query, or null if no node matched the XPath expression.
+
+
+
+ Selects the first XmlNode that matches the XPath expression.
+
+ The XPath expression. May not be null.
+ The first that matches the XPath query or a null reference if no matching node was found.
+
+
+
+ Gets the name of a comment node. It is actually defined as '#comment'.
+
+
+
+
+ Gets the name of the document node. It is actually defined as '#document'.
+
+
+
+
+ Gets the name of a text node. It is actually defined as '#text'.
+
+
+
+
+ Gets a collection of flags that define specific behaviors for specific element nodes.
+ The table contains a DictionaryEntry list with the lowercase tag name as the Key, and a combination of HtmlElementFlags as the Value.
+
+
+
+
+ Initialize HtmlNode. Builds a list of all tags that have special allowances
+
+
+
+
+ Initializes HtmlNode, providing type, owner and where it exists in a collection
+
+
+
+
+
+
+
+ Determines if an element node can be kept overlapped.
+
+ The name of the element node to check. May not be null.
+ true if the name is the name of an element node that can be kept overlapped, false otherwise.
+
+
+
+ Creates an HTML node from a string representing literal HTML.
+
+ The HTML text.
+ The newly created node instance.
+
+
+
+ Determines if an element node is a CDATA element node.
+
+ The name of the element node to check. May not be null.
+ true if the name is the name of a CDATA element node, false otherwise.
+
+
+
+ Determines if an element node is closed.
+
+ The name of the element node to check. May not be null.
+ true if the name is the name of a closed element node, false otherwise.
+
+
+
+ Determines if an element node is defined as empty.
+
+ The name of the element node to check. May not be null.
+ true if the name is the name of an empty element node, false otherwise.
+
+
+
+ Determines if a text corresponds to the closing tag of an node that can be kept overlapped.
+
+ The text to check. May not be null.
+ true or false.
+
+
+
+ Returns a collection of all ancestor nodes of this element.
+
+
+
+
+
+ Get Ancestors with matching name
+
+
+
+
+
+
+ Returns a collection of all ancestor nodes of this element.
+
+
+
+
+
+ Gets all anscestor nodes and the current node
+
+
+
+
+
+
+ Adds the specified node to the end of the list of children of this node.
+
+ The node to add. May not be null.
+ The node added.
+
+
+
+ Adds the specified node to the end of the list of children of this node.
+
+ The node list to add. May not be null.
+
+
+
+ Gets all Attributes with name
+
+
+
+
+
+
+ Creates a duplicate of the node
+
+
+
+
+
+ Creates a duplicate of the node and changes its name at the same time.
+
+ The new name of the cloned node. May not be null.
+ The cloned node.
+
+
+
+ Creates a duplicate of the node and changes its name at the same time.
+
+ The new name of the cloned node. May not be null.
+ true to recursively clone the subtree under the specified node; false to clone only the node itself.
+ The cloned node.
+
+
+
+ Creates a duplicate of the node.
+
+ true to recursively clone the subtree under the specified node; false to clone only the node itself.
+ The cloned node.
+
+
+
+ Creates a duplicate of the node and the subtree under it.
+
+ The node to duplicate. May not be null.
+
+
+
+ Creates a duplicate of the node.
+
+ The node to duplicate. May not be null.
+ true to recursively clone the subtree under the specified node, false to clone only the node itself.
+
+
+
+ Gets all Descendant nodes for this node and each of child nodes
+
+
+
+
+
+ Returns a collection of all descendant nodes of this element, in document order
+
+
+
+
+
+ Gets all Descendant nodes in enumerated list
+
+
+
+
+
+ Get all descendant nodes with matching name
+
+
+
+
+
+
+ Returns a collection of all descendant nodes of this element, in document order
+
+
+
+
+
+ Gets all descendant nodes including this node
+
+
+
+
+
+
+ Gets first generation child node matching name
+
+
+
+
+
+
+ Gets matching first generation child nodes matching name
+
+
+
+
+
+
+ Helper method to get the value of an attribute of this node. If the attribute is not found, the default value will be returned.
+
+ The name of the attribute to get. May not be null.
+ The default value to return if not found.
+ The value of the attribute if found, the default value if not found.
+
+
+
+ Helper method to get the value of an attribute of this node. If the attribute is not found, the default value will be returned.
+
+ The name of the attribute to get. May not be null.
+ The default value to return if not found.
+ The value of the attribute if found, the default value if not found.
+
+
+
+ Helper method to get the value of an attribute of this node. If the attribute is not found, the default value will be returned.
+
+ The name of the attribute to get. May not be null.
+ The default value to return if not found.
+ The value of the attribute if found, the default value if not found.
+
+
+
+ Inserts the specified node immediately after the specified reference node.
+
+ The node to insert. May not be null.
+ The node that is the reference node. The newNode is placed after the refNode.
+ The node being inserted.
+
+
+
+ Inserts the specified node immediately before the specified reference node.
+
+ The node to insert. May not be null.
+ The node that is the reference node. The newChild is placed before this node.
+ The node being inserted.
+
+
+
+ Adds the specified node to the beginning of the list of children of this node.
+
+ The node to add. May not be null.
+ The node added.
+
+
+
+ Adds the specified node list to the beginning of the list of children of this node.
+
+ The node list to add. May not be null.
+
+
+
+ Removes node from parent collection
+
+
+
+
+ Removes all the children and/or attributes of the current node.
+
+
+
+
+ Removes all the children of the current node.
+
+
+
+
+ Removes the specified child node.
+
+ The node being removed. May not be null.
+ The node removed.
+
+
+
+ Removes the specified child node.
+
+ The node being removed. May not be null.
+ true to keep grand children of the node, false otherwise.
+ The node removed.
+
+
+
+ Replaces the child node oldChild with newChild node.
+
+ The new node to put in the child list.
+ The node being replaced in the list.
+ The node replaced.
+
+
+
+ Helper method to set the value of an attribute of this node. If the attribute is not found, it will be created automatically.
+
+ The name of the attribute to set. May not be null.
+ The value for the attribute.
+ The corresponding attribute instance.
+
+
+
+ Saves all the children of the node to the specified TextWriter.
+
+ The TextWriter to which you want to save.
+
+
+
+ Saves all the children of the node to a string.
+
+ The saved string.
+
+
+
+ Saves the current node to the specified TextWriter.
+
+ The TextWriter to which you want to save.
+
+
+
+ Saves the current node to the specified XmlWriter.
+
+ The XmlWriter to which you want to save.
+
+
+
+ Saves the current node to a string.
+
+ The saved string.
+
+
+
+ Gets the collection of HTML attributes for this node. May not be null.
+
+
+
+
+ Gets all the children of the node.
+
+
+
+
+ Gets a value indicating if this node has been closed or not.
+
+
+
+
+ Gets the collection of HTML attributes for the closing tag. May not be null.
+
+
+
+
+ Gets the first child of the node.
+
+
+
+
+ Gets a value indicating whether the current node has any attributes.
+
+
+
+
+ Gets a value indicating whether this node has any child nodes.
+
+
+
+
+ Gets a value indicating whether the current node has any attributes on the closing tag.
+
+
+
+
+ Gets or sets the value of the 'id' HTML attribute. The document must have been parsed using the OptionUseIdAttribute set to true.
+
+
+
+
+ Gets or Sets the HTML between the start and end tags of the object.
+
+
+
+
+ Gets or Sets the text between the start and end tags of the object.
+
+
+
+
+ Gets the last child of the node.
+
+
+
+
+ Gets the line number of this node in the document.
+
+
+
+
+ Gets the column number of this node in the document.
+
+
+
+
+ Gets or sets this node's name.
+
+
+
+
+ Gets the HTML node immediately following this element.
+
+
+
+
+ Gets the type of this node.
+
+
+
+
+ The original unaltered name of the tag
+
+
+
+
+ Gets or Sets the object and its content in HTML.
+
+
+
+
+ Gets the to which this node belongs.
+
+
+
+
+ Gets the parent of this node (for nodes that can have parents).
+
+
+
+
+ Gets the node immediately preceding this node.
+
+
+
+
+ Gets the stream position of this node in the document, relative to the start of the document.
+
+
+
+
+ Gets a valid XPath string that points to this node
+
+
+
+
+ Represents a fragment of text in a mixed code document.
+
+
+
+
+ Represents a base class for fragments in a mixed code document.
+
+
+
+
+ Gets the fragement text.
+
+
+
+
+ Gets the type of fragment.
+
+
+
+
+ Gets the line number of the fragment.
+
+
+
+
+ Gets the line position (column) of the fragment.
+
+
+
+
+ Gets the fragment position in the document's stream.
+
+
+
+
+ Gets the fragment text.
+
+
+
+
+ Represents an HTML comment.
+
+
+
+
+ Gets or Sets the comment text of the node.
+
+
+
+
+ Gets or Sets the HTML between the start and end tags of the object. In the case of a text node, it is equals to OuterHtml.
+
+
+
+
+ Gets or Sets the object and its content in HTML.
+
+
+
+
+ Represents an HTML attribute.
+
+
+
+
+ Compares the current instance with another attribute. Comparison is based on attributes' name.
+
+ An attribute to compare with this instance.
+ A 32-bit signed integer that indicates the relative order of the names comparison.
+
+
+
+ Creates a duplicate of this attribute.
+
+ The cloned attribute.
+
+
+
+ Removes this attribute from it's parents collection
+
+
+
+
+ Gets the line number of this attribute in the document.
+
+
+
+
+ Gets the column number of this attribute in the document.
+
+
+
+
+ Gets the qualified name of the attribute.
+
+
+
+
+ Name of attribute with original case
+
+
+
+
+ Gets the HTML document to which this attribute belongs.
+
+
+
+
+ Gets the HTML node to which this attribute belongs.
+
+
+
+
+ Specifies what type of quote the data should be wrapped in
+
+
+
+
+ Gets the stream position of this attribute in the document, relative to the start of the document.
+
+
+
+
+ Gets or sets the value of the attribute.
+
+
+
+
+ Gets a valid XPath string that points to this Attribute
+
+
+
+
+ An Enum representing different types of Quotes used for surrounding attribute values
+
+
+
+
+ A single quote mark '
+
+
+
+
+ A double quote mark "
+
+
+
+
+ Extensions used for Silverlight Compatibility
+
+
+
+
+ Splits a string on provided characters and returns an array up to the count provided
+
+ The string to split
+ The list of chars to split on
+ The number of items to retrieve
+
+
+
+
+ Represents a fragment of code in a mixed code document.
+
+
+
+
+ Gets the fragment code text.
+
+
+
+
+ Represents a document with mixed code and text. ASP, ASPX, JSP, are good example of such documents.
+
+
+
+
+ Gets or sets the token representing code end.
+
+
+
+
+ Gets or sets the token representing code start.
+
+
+
+
+ Gets or sets the token representing code directive.
+
+
+
+
+ Gets or sets the token representing response write directive.
+
+
+
+
+ Creates a mixed code document instance.
+
+
+
+
+ Create a code fragment instances.
+
+ The newly created code fragment instance.
+
+
+
+ Create a text fragment instances.
+
+ The newly created text fragment instance.
+
+
+
+ Loads a mixed code document from a stream.
+
+ The input stream.
+
+
+
+ Loads a mixed code document from a stream.
+
+ The input stream.
+ Indicates whether to look for byte order marks at the beginning of the file.
+
+
+
+ Loads a mixed code document from a stream.
+
+ The input stream.
+ The character encoding to use.
+
+
+
+ Loads a mixed code document from a stream.
+
+ The input stream.
+ The character encoding to use.
+ Indicates whether to look for byte order marks at the beginning of the file.
+
+
+
+ Loads a mixed code document from a stream.
+
+ The input stream.
+ The character encoding to use.
+ Indicates whether to look for byte order marks at the beginning of the file.
+ The minimum buffer size.
+
+
+
+ Loads a mixed code document from a file.
+
+ The complete file path to be read.
+
+
+
+ Loads a mixed code document from a file.
+
+ The complete file path to be read.
+ Indicates whether to look for byte order marks at the beginning of the file.
+
+
+
+ Loads a mixed code document from a file.
+
+ The complete file path to be read.
+ The character encoding to use.
+
+
+
+ Loads a mixed code document from a file.
+
+ The complete file path to be read.
+ The character encoding to use.
+ Indicates whether to look for byte order marks at the beginning of the file.
+
+
+
+ Loads a mixed code document from a file.
+
+ The complete file path to be read.
+ The character encoding to use.
+ Indicates whether to look for byte order marks at the beginning of the file.
+ The minimum buffer size.
+
+
+
+ Loads the mixed code document from the specified TextReader.
+
+ The TextReader used to feed the HTML data into the document.
+
+
+
+ Loads a mixed document from a text
+
+ The text to load.
+
+
+
+ Saves the mixed document to the specified stream.
+
+ The stream to which you want to save.
+
+
+
+ Saves the mixed document to the specified stream.
+
+ The stream to which you want to save.
+ The character encoding to use.
+
+
+
+ Saves the mixed document to the specified file.
+
+ The location of the file where you want to save the document.
+
+
+
+ Saves the mixed document to the specified file.
+
+ The location of the file where you want to save the document.
+ The character encoding to use.
+
+
+
+ Saves the mixed document to the specified StreamWriter.
+
+ The StreamWriter to which you want to save.
+
+
+
+ Saves the mixed document to the specified TextWriter.
+
+ The TextWriter to which you want to save.
+
+
+
+ Gets the code represented by the mixed code document seen as a template.
+
+
+
+
+ Gets the list of code fragments in the document.
+
+
+
+
+ Gets the list of all fragments in the document.
+
+
+
+
+ Gets the encoding of the stream used to read the document.
+
+
+
+
+ Gets the list of text fragments in the document.
+
+
+
+
+ Represents a combined list and collection of HTML nodes.
+
+
+
+
+ Adds supplied item to collection
+
+
+
+
+
+ Explicit clear
+
+
+
+
+ Retreives existence of supplied item
+
+
+
+
+
+
+ Copies collection to array
+
+
+
+
+
+
+ Get Explicit enumerator
+
+
+
+
+
+ Explicit non-generic enumerator
+
+
+
+
+
+ Retrieves the index for the supplied item, -1 if not found
+
+
+
+
+
+
+ Inserts given item into collection at supplied index
+
+
+
+
+
+
+ Explicit collection remove
+
+
+
+
+
+
+ Removes the attribute at the specified index.
+
+ The index of the attribute to remove.
+
+
+
+ Adds a new attribute to the collection with the given values
+
+
+
+
+
+
+ Inserts the specified attribute as the last attribute in the collection.
+
+ The attribute to insert. May not be null.
+ The appended attribute.
+
+
+
+ Creates and inserts a new attribute as the last attribute in the collection.
+
+ The name of the attribute to insert.
+ The appended attribute.
+
+
+
+ Creates and inserts a new attribute as the last attribute in the collection.
+
+ The name of the attribute to insert.
+ The value of the attribute to insert.
+ The appended attribute.
+
+
+
+ Checks for existance of attribute with given name
+
+
+
+
+
+
+ Inserts the specified attribute as the first node in the collection.
+
+ The attribute to insert. May not be null.
+ The prepended attribute.
+
+
+
+ Removes a given attribute from the list.
+
+ The attribute to remove. May not be null.
+
+
+
+ Removes an attribute from the list, using its name. If there are more than one attributes with this name, they will all be removed.
+
+ The attribute's name. May not be null.
+
+
+
+ Remove all attributes in the list.
+
+
+
+
+ Returns all attributes with specified name. Handles case insentivity
+
+ Name of the attribute
+
+
+
+
+ Removes all attributes from the collection
+
+
+
+
+ Clears the attribute collection
+
+
+
+
+ Gets a given attribute from the list using its name.
+
+
+
+
+ Gets the number of elements actually contained in the list.
+
+
+
+
+ Gets readonly status of colelction
+
+
+
+
+ Gets the attribute at the specified index.
+
+
+
+
+ Represents a list of mixed code fragments.
+
+
+
+
+ Gets an enumerator that can iterate through the fragment list.
+
+
+
+
+ Appends a fragment to the list of fragments.
+
+ The fragment to append. May not be null.
+
+
+
+ Gets an enumerator that can iterate through the fragment list.
+
+
+
+
+ Prepends a fragment to the list of fragments.
+
+ The fragment to append. May not be null.
+
+
+
+ Remove a fragment from the list of fragments. If this fragment was not in the list, an exception will be raised.
+
+ The fragment to remove. May not be null.
+
+
+
+ Remove all fragments from the list.
+
+
+
+
+ Remove a fragment from the list of fragments, using its index in the list.
+
+ The index of the fragment to remove.
+
+
+
+ Gets the Document
+
+
+
+
+ Gets the number of fragments contained in the list.
+
+
+
+
+ Gets a fragment from the list using its index.
+
+
+
+
+ Represents a fragment enumerator.
+
+
+
+
+ Advances the enumerator to the next element of the collection.
+
+ true if the enumerator was successfully advanced to the next element; false if the enumerator has passed the end of the collection.
+
+
+
+ Sets the enumerator to its initial position, which is before the first element in the collection.
+
+
+
+
+ Gets the current element in the collection.
+
+
+
+
+ Gets the current element in the collection.
+
+
+
+
+ Represents a combined list and collection of HTML nodes.
+
+
+
+
+ Initialize the HtmlNodeCollection with the base parent node
+
+ The base node of the collection
+
+
+
+ Add node to the collection
+
+
+
+
+
+ Clears out the collection of HtmlNodes. Removes each nodes reference to parentnode, nextnode and prevnode
+
+
+
+
+ Gets existence of node in collection
+
+
+
+
+
+
+ Copy collection to array
+
+
+
+
+
+
+ Get Enumerator
+
+
+
+
+
+ Get Explicit Enumerator
+
+
+
+
+
+ Get index of node
+
+
+
+
+
+
+ Insert node at index
+
+
+
+
+
+
+ Remove node
+
+
+
+
+
+
+ Remove at index
+
+
+
+
+
+ Get first instance of node in supplied collection
+
+
+
+
+
+
+
+ Add node to the end of the collection
+
+
+
+
+
+ Get first instance of node with name
+
+
+
+
+
+
+ Get index of node
+
+
+
+
+
+
+ Add node to the beginning of the collection
+
+
+
+
+
+ Remove node at index
+
+
+
+
+
+
+ Replace node at index
+
+
+
+
+
+
+ Get all node descended from this collection
+
+
+
+
+
+ Get all node descended from this collection with matching name
+
+
+
+
+
+ Gets all first generation elements in collection
+
+
+
+
+
+ Gets all first generation elements matching name
+
+
+
+
+
+
+ All first generation nodes in collection
+
+
+
+
+
+ Gets a given node from the list.
+
+
+
+
+ Get node with tag name
+
+
+
+
+
+
+ Gets the number of elements actually contained in the list.
+
+
+
+
+ Is collection read only
+
+
+
+
+ Gets the node at the specified index.
+
+
+
+
+ Represents the type of fragment in a mixed code document.
+
+
+
+
+ The fragment contains code.
+
+
+
+
+ The fragment contains text.
+
+
+
+
+ Represents an HTML navigator on an HTML document seen as a data store.
+
+
+
+
+ Initializes a new instance of the HtmlNavigator and loads an HTML document from a stream.
+
+ The input stream.
+
+
+
+ Initializes a new instance of the HtmlNavigator and loads an HTML document from a stream.
+
+ The input stream.
+ Indicates whether to look for byte order marks at the beginning of the stream.
+
+
+
+ Initializes a new instance of the HtmlNavigator and loads an HTML document from a stream.
+
+ The input stream.
+ The character encoding to use.
+
+
+
+ Initializes a new instance of the HtmlNavigator and loads an HTML document from a stream.
+
+ The input stream.
+ The character encoding to use.
+ Indicates whether to look for byte order marks at the beginning of the stream.
+
+
+
+ Initializes a new instance of the HtmlNavigator and loads an HTML document from a stream.
+
+ The input stream.
+ The character encoding to use.
+ Indicates whether to look for byte order marks at the beginning of the stream.
+ The minimum buffer size.
+
+
+
+ Initializes a new instance of the HtmlNavigator and loads an HTML document from a TextReader.
+
+ The TextReader used to feed the HTML data into the document.
+
+
+
+ Initializes a new instance of the HtmlNavigator and loads an HTML document from a file.
+
+ The complete file path to be read.
+
+
+
+ Initializes a new instance of the HtmlNavigator and loads an HTML document from a file.
+
+ The complete file path to be read.
+ Indicates whether to look for byte order marks at the beginning of the file.
+
+
+
+ Initializes a new instance of the HtmlNavigator and loads an HTML document from a file.
+
+ The complete file path to be read.
+ The character encoding to use.
+
+
+
+ Initializes a new instance of the HtmlNavigator and loads an HTML document from a file.
+
+ The complete file path to be read.
+ The character encoding to use.
+ Indicates whether to look for byte order marks at the beginning of the file.
+
+
+
+ Initializes a new instance of the HtmlNavigator and loads an HTML document from a file.
+
+ The complete file path to be read.
+ The character encoding to use.
+ Indicates whether to look for byte order marks at the beginning of the file.
+ The minimum buffer size.
+
+
+
+ Creates a new HtmlNavigator positioned at the same node as this HtmlNavigator.
+
+ A new HtmlNavigator object positioned at the same node as the original HtmlNavigator.
+
+
+
+ Gets the value of the HTML attribute with the specified LocalName and NamespaceURI.
+
+ The local name of the HTML attribute.
+ The namespace URI of the attribute. Unsupported with the HtmlNavigator implementation.
+ The value of the specified HTML attribute. String.Empty or null if a matching attribute is not found or if the navigator is not positioned on an element node.
+
+
+
+ Returns the value of the namespace node corresponding to the specified local name.
+ Always returns string.Empty for the HtmlNavigator implementation.
+
+ The local name of the namespace node.
+ Always returns string.Empty for the HtmlNavigator implementation.
+
+
+
+ Determines whether the current HtmlNavigator is at the same position as the specified HtmlNavigator.
+
+ The HtmlNavigator that you want to compare against.
+ true if the two navigators have the same position, otherwise, false.
+
+
+
+ Moves to the same position as the specified HtmlNavigator.
+
+ The HtmlNavigator positioned on the node that you want to move to.
+ true if successful, otherwise false. If false, the position of the navigator is unchanged.
+
+
+
+ Moves to the HTML attribute with matching LocalName and NamespaceURI.
+
+ The local name of the HTML attribute.
+ The namespace URI of the attribute. Unsupported with the HtmlNavigator implementation.
+ true if the HTML attribute is found, otherwise, false. If false, the position of the navigator does not change.
+
+
+
+ Moves to the first sibling of the current node.
+
+ true if the navigator is successful moving to the first sibling node, false if there is no first sibling or if the navigator is currently positioned on an attribute node.
+
+
+
+ Moves to the first HTML attribute.
+
+ true if the navigator is successful moving to the first HTML attribute, otherwise, false.
+
+
+
+ Moves to the first child of the current node.
+
+ true if there is a first child node, otherwise false.
+
+
+
+ Moves the XPathNavigator to the first namespace node of the current element.
+ Always returns false for the HtmlNavigator implementation.
+
+ An XPathNamespaceScope value describing the namespace scope.
+ Always returns false for the HtmlNavigator implementation.
+
+
+
+ Moves to the node that has an attribute of type ID whose value matches the specified string.
+
+ A string representing the ID value of the node to which you want to move. This argument does not need to be atomized.
+ true if the move was successful, otherwise false. If false, the position of the navigator is unchanged.
+
+
+
+ Moves the XPathNavigator to the namespace node with the specified local name.
+ Always returns false for the HtmlNavigator implementation.
+
+ The local name of the namespace node.
+ Always returns false for the HtmlNavigator implementation.
+
+
+
+ Moves to the next sibling of the current node.
+
+ true if the navigator is successful moving to the next sibling node, false if there are no more siblings or if the navigator is currently positioned on an attribute node. If false, the position of the navigator is unchanged.
+
+
+
+ Moves to the next HTML attribute.
+
+
+
+
+
+ Moves the XPathNavigator to the next namespace node.
+ Always returns falsefor the HtmlNavigator implementation.
+
+ An XPathNamespaceScope value describing the namespace scope.
+ Always returns false for the HtmlNavigator implementation.
+
+
+
+ Moves to the parent of the current node.
+
+ true if there is a parent node, otherwise false.
+
+
+
+ Moves to the previous sibling of the current node.
+
+ true if the navigator is successful moving to the previous sibling node, false if there is no previous sibling or if the navigator is currently positioned on an attribute node.
+
+
+
+ Moves to the root node to which the current node belongs.
+
+
+
+
+ Gets the base URI for the current node.
+ Always returns string.Empty in the case of HtmlNavigator implementation.
+
+
+
+
+ Gets the current HTML document.
+
+
+
+
+ Gets the current HTML node.
+
+
+
+
+ Gets a value indicating whether the current node has child nodes.
+
+
+
+
+ Gets a value indicating whether the current node has child nodes.
+
+
+
+
+ Gets a value indicating whether the current node is an empty element.
+
+
+
+
+ Gets the name of the current HTML node without the namespace prefix.
+
+
+
+
+ Gets the qualified name of the current node.
+
+
+
+
+ Gets the namespace URI (as defined in the W3C Namespace Specification) of the current node.
+ Always returns string.Empty in the case of HtmlNavigator implementation.
+
+
+
+
+ Gets the associated with this implementation.
+
+
+
+
+ Gets the type of the current node.
+
+
+
+
+ Gets the prefix associated with the current node.
+ Always returns string.Empty in the case of HtmlNavigator implementation.
+
+
+
+
+ Gets the text value of the current node.
+
+
+
+
+ Gets the xml:lang scope for the current node.
+ Always returns string.Empty in the case of HtmlNavigator implementation.
+
+
+
+
+ Flags that describe the behavior of an Element node.
+
+
+
+
+ The node is a CDATA node.
+
+
+
+
+ The node is empty. META or IMG are example of such nodes.
+
+
+
+
+ The node will automatically be closed during parsing.
+
+
+
+
+ The node can overlap.
+
+
+
+
+ Represents a complete HTML document.
+
+
+
+
+ Detects the encoding of an HTML document from a file first, and then loads the file.
+
+ The complete file path to be read.
+
+
+
+ Detects the encoding of an HTML document from a file first, and then loads the file.
+
+ The complete file path to be read. May not be null.
+ true to detect encoding, false otherwise.
+
+
+
+ Detects the encoding of an HTML file.
+
+ Path for the file containing the HTML document to detect. May not be null.
+ The detected encoding.
+
+
+
+ Loads an HTML document from a file.
+
+ The complete file path to be read. May not be null.
+
+
+
+ Loads an HTML document from a file.
+
+ The complete file path to be read. May not be null.
+ Indicates whether to look for byte order marks at the beginning of the file.
+
+
+
+ Loads an HTML document from a file.
+
+ The complete file path to be read. May not be null.
+ The character encoding to use. May not be null.
+
+
+
+ Loads an HTML document from a file.
+
+ The complete file path to be read. May not be null.
+ The character encoding to use. May not be null.
+ Indicates whether to look for byte order marks at the beginning of the file.
+
+
+
+ Loads an HTML document from a file.
+
+ The complete file path to be read. May not be null.
+ The character encoding to use. May not be null.
+ Indicates whether to look for byte order marks at the beginning of the file.
+ The minimum buffer size.
+
+
+
+ Saves the mixed document to the specified file.
+
+ The location of the file where you want to save the document.
+
+
+
+ Saves the mixed document to the specified file.
+
+ The location of the file where you want to save the document. May not be null.
+ The character encoding to use. May not be null.
+
+
+
+ Creates a new XPathNavigator object for navigating this HTML document.
+
+ An XPathNavigator object. The XPathNavigator is positioned on the root of the document.
+
+
+
+ Adds Debugging attributes to node. Default is false.
+
+
+
+
+ Defines if closing for non closed nodes must be done at the end or directly in the document.
+ Setting this to true can actually change how browsers render the page. Default is false.
+
+
+
+
+ Defines if non closed nodes will be checked at the end of parsing. Default is true.
+
+
+
+
+ Defines if a checksum must be computed for the document while parsing. Default is false.
+
+
+
+
+ Defines the default stream encoding to use. Default is System.Text.Encoding.Default.
+
+
+
+
+ Defines if source text must be extracted while parsing errors.
+ If the document has a lot of errors, or cascading errors, parsing performance can be dramatically affected if set to true.
+ Default is false.
+
+
+
+
+ Defines the maximum length of source text or parse errors. Default is 100.
+
+
+
+
+ Defines if LI, TR, TH, TD tags must be partially fixed when nesting errors are detected. Default is false.
+
+
+
+
+ Defines if output must conform to XML, instead of HTML.
+
+
+
+
+ Defines if attribute value output must be optimized (not bound with double quotes if it is possible). Default is false.
+
+
+
+
+ Defines if name must be output with it's original case. Useful for asp.net tags and attributes
+
+
+
+
+ Defines if name must be output in uppercase. Default is false.
+
+
+
+
+ Defines if declared encoding must be read from the document.
+ Declared encoding is determined using the meta http-equiv="content-type" content="text/html;charset=XXXXX" html node.
+ Default is true.
+
+
+
+
+ Defines the name of a node that will throw the StopperNodeException when found as an end node. Default is null.
+
+
+
+
+ Defines if the 'id' attribute must be specifically used. Default is true.
+
+
+
+
+ Defines if empty nodes must be written as closed during output. Default is false.
+
+
+
+
+ Creates an instance of an HTML document.
+
+
+
+
+ Gets a valid XML name.
+
+ Any text.
+ A string that is a valid XML name.
+
+
+
+ Applies HTML encoding to a specified string.
+
+ The input string to encode. May not be null.
+ The encoded string.
+
+
+
+ Determines if the specified character is considered as a whitespace character.
+
+ The character to check.
+ true if if the specified character is considered as a whitespace character.
+
+
+
+ Creates an HTML attribute with the specified name.
+
+ The name of the attribute. May not be null.
+ The new HTML attribute.
+
+
+
+ Creates an HTML attribute with the specified name.
+
+ The name of the attribute. May not be null.
+ The value of the attribute.
+ The new HTML attribute.
+
+
+
+ Creates an HTML comment node.
+
+ The new HTML comment node.
+
+
+
+ Creates an HTML comment node with the specified comment text.
+
+ The comment text. May not be null.
+ The new HTML comment node.
+
+
+
+ Creates an HTML element node with the specified name.
+
+ The qualified name of the element. May not be null.
+ The new HTML node.
+
+
+
+ Creates an HTML text node.
+
+ The new HTML text node.
+
+
+
+ Creates an HTML text node with the specified text.
+
+ The text of the node. May not be null.
+ The new HTML text node.
+
+
+
+ Detects the encoding of an HTML stream.
+
+ The input stream. May not be null.
+ The detected encoding.
+
+
+
+ Detects the encoding of an HTML text provided on a TextReader.
+
+ The TextReader used to feed the HTML. May not be null.
+ The detected encoding.
+
+
+
+ Detects the encoding of an HTML text.
+
+ The input html text. May not be null.
+ The detected encoding.
+
+
+
+ Gets the HTML node with the specified 'id' attribute value.
+
+ The attribute id to match. May not be null.
+ The HTML node with the matching id or null if not found.
+
+
+
+ Loads an HTML document from a stream.
+
+ The input stream.
+
+
+
+ Loads an HTML document from a stream.
+
+ The input stream.
+ Indicates whether to look for byte order marks at the beginning of the stream.
+
+
+
+ Loads an HTML document from a stream.
+
+ The input stream.
+ The character encoding to use.
+
+
+
+ Loads an HTML document from a stream.
+
+ The input stream.
+ The character encoding to use.
+ Indicates whether to look for byte order marks at the beginning of the stream.
+
+
+
+ Loads an HTML document from a stream.
+
+ The input stream.
+ The character encoding to use.
+ Indicates whether to look for byte order marks at the beginning of the stream.
+ The minimum buffer size.
+
+
+
+ Loads the HTML document from the specified TextReader.
+
+ The TextReader used to feed the HTML data into the document. May not be null.
+
+
+
+ Loads the HTML document from the specified string.
+
+ String containing the HTML document to load. May not be null.
+
+
+
+ Saves the HTML document to the specified stream.
+
+ The stream to which you want to save.
+
+
+
+ Saves the HTML document to the specified stream.
+
+ The stream to which you want to save. May not be null.
+ The character encoding to use. May not be null.
+
+
+
+ Saves the HTML document to the specified StreamWriter.
+
+ The StreamWriter to which you want to save.
+
+
+
+ Saves the HTML document to the specified TextWriter.
+
+ The TextWriter to which you want to save. May not be null.
+
+
+
+ Saves the HTML document to the specified XmlWriter.
+
+ The XmlWriter to which you want to save.
+
+
+
+ Gets the document CRC32 checksum if OptionComputeChecksum was set to true before parsing, 0 otherwise.
+
+
+
+
+ Gets the document's declared encoding.
+ Declared encoding is determined using the meta http-equiv="content-type" content="text/html;charset=XXXXX" html node.
+
+
+
+
+ Gets the root node of the document.
+
+
+
+
+ Gets the document's output encoding.
+
+
+
+
+ Gets a list of parse errors found in the document.
+
+
+
+
+ Gets the remaining text.
+ Will always be null if OptionStopperNodeName is null.
+
+
+
+
+ Gets the offset of Remainder in the original Html text.
+ If OptionStopperNodeName is null, this will return the length of the original Html text.
+
+
+
+
+ Gets the document's stream encoding.
+
+
+
+
+ A utility class to compute CRC32.
+
+
+
+
+ Compute a checksum for a given array of bytes.
+
+ The array of bytes to compute the checksum for.
+ The computed checksum.
+
+
+
+ Compute a checksum for a given string.
+
+ The string to compute the checksum for.
+ The computed checksum.
+
+
+
+ Represents a parsing error found during document parsing.
+
+
+
+
+ Gets the type of error.
+
+
+
+
+ Gets the line number of this error in the document.
+
+
+
+
+ Gets the column number of this error in the document.
+
+
+
+
+ Gets a description for the error.
+
+
+
+
+ Gets the the full text of the line containing the error.
+
+
+
+
+ Gets the absolute stream position of this error in the document, relative to the start of the document.
+
+
+
+
+ A utility class to replace special characters by entities and vice-versa.
+ Follows HTML 4.0 specification found at http://www.w3.org/TR/html4/sgml/entities.html
+
+
+
+
+ Replace known entities by characters.
+
+ The source text.
+ The result text.
+
+
+
+ Clone and entitize an HtmlNode. This will affect attribute values and nodes' text. It will also entitize all child nodes.
+
+ The node to entitize.
+ An entitized cloned node.
+
+
+
+ Replace characters above 127 by entities.
+
+ The source text.
+ The result text.
+
+
+
+ Replace characters above 127 by entities.
+
+ The source text.
+ If set to false, the function will not use known entities name. Default is true.
+ The result text.
+
+
+
+ Replace characters above 127 by entities.
+
+ The source text.
+ If set to false, the function will not use known entities name. Default is true.
+ If set to true, the [quote], [ampersand], [lower than] and [greather than] characters will be entitized.
+ The result text
+
+
+
+ A collection of entities indexed by name.
+
+
+
+
+ A collection of entities indexed by value.
+
+
+
+
+ Represents the type of parsing error.
+
+
+
+
+ A tag was not closed.
+
+
+
+
+ A tag was not opened.
+
+
+
+
+ There is a charset mismatch between stream and declared (META) encoding.
+
+
+
+
+ An end tag was not required.
+
+
+
+
+ An end tag is invalid at this position.
+
+
+
+
+ Represents an HTML text node.
+
+
+
+
+ Gets or Sets the HTML between the start and end tags of the object. In the case of a text node, it is equals to OuterHtml.
+
+
+
+
+ Gets or Sets the object and its content in HTML.
+
+
+
+
+ Gets or Sets the text of the node.
+
+
+
+
+ Represents the type of a node.
+
+
+
+
+ The root of a document.
+
+
+
+
+ An HTML element.
+
+
+
+
+ An HTML comment.
+
+
+
+
+ A text node is always the child of an element or a document node.
+
+
+
+
+ Used for downloading and parsing html from the internet
+
+
+
+
+ Occurs before an HTML document is handled.
+
+
+
+
+ Begins the process of downloading an internet resource
+
+ Url to the html document
+
+
+
+ Begins the process of downloading an internet resource
+
+ Url to the html document
+ The encoding to use while downloading the document
+
+
+
+ Begins the process of downloading an internet resource
+
+ Url to the html document
+ The encoding to use while downloading the document
+ Username to use for credentials in the web request
+ Password to use for credentials in the web request
+
+
+
+ Begins the process of downloading an internet resource
+
+ Url to the html document
+ The encoding to use while downloading the document
+ Username to use for credentials in the web request
+ Password to use for credentials in the web request
+ Domain to use for credentials in the web request
+
+
+
+ Begins the process of downloading an internet resource
+
+ Url to the html document
+ Username to use for credentials in the web request
+ Password to use for credentials in the web request
+ Domain to use for credentials in the web request
+
+
+
+ Begins the process of downloading an internet resource
+
+ Url to the html document
+ Username to use for credentials in the web request
+ Password to use for credentials in the web request
+
+
+
+ Begins the process of downloading an internet resource
+
+ Url to the html document
+ The credentials to use for authenticating the web request
+
+
+
+ Begins the process of downloading an internet resource
+
+ Url to the html document
+ The encoding to use while downloading the document
+ The credentials to use for authenticating the web request
+
+
+
+ Retrieves an HtmlDocument using the provided url
+
+ The address to load
+
+
+
+
+ Fired when a web request has finished
+
+
+
+
+ Represents the method that will handle the PreHandleDocument event.
+
+
+
+
diff --git a/packages/HtmlAgilityPack.1.4.9/lib/sl5/HtmlAgilityPack.dll b/packages/HtmlAgilityPack.1.4.9/lib/sl5/HtmlAgilityPack.dll
new file mode 100644
index 000000000..eefeee019
Binary files /dev/null and b/packages/HtmlAgilityPack.1.4.9/lib/sl5/HtmlAgilityPack.dll differ
diff --git a/packages/HtmlAgilityPack.1.4.9/readme.txt b/packages/HtmlAgilityPack.1.4.9/readme.txt
new file mode 100644
index 000000000..875595b0d
--- /dev/null
+++ b/packages/HtmlAgilityPack.1.4.9/readme.txt
@@ -0,0 +1,17 @@
+----------------------------------------------------
+---------- Html Agility Pack Nuget Readme ----------
+----------------------------------------------------
+
+----Silverlight 4 and Windows Phone 7.1+ projects-----
+To use XPATH features: System.Xml.Xpath.dll from the Silverlight 4 SDK must be referenced.
+This is normally found at
+%ProgramFiles(x86)%\Microsoft SDKs\Microsoft SDKs\Silverlight\v4.0\Libraries\Client
+or
+%ProgramFiles%\Microsoft SDKs\Microsoft SDKs\Silverlight\v4.0\Libraries\Client
+
+----Silverlight 5 projects-----
+To use XPATH features: System.Xml.Xpath.dll from the Silverlight 5 SDK must be referenced.
+This is normally found at
+%ProgramFiles(x86)%\Microsoft SDKs\Microsoft SDKs\Silverlight\v5.0\Libraries\Client
+or
+%ProgramFiles%\Microsoft SDKs\Microsoft SDKs\Silverlight\v5.0\Libraries\Client
diff --git a/packages/SteamKit2.1.6.5/SteamKit2.1.6.5.nupkg b/packages/SteamKit2.1.6.5/SteamKit2.1.6.5.nupkg
new file mode 100644
index 000000000..caceb734b
Binary files /dev/null and b/packages/SteamKit2.1.6.5/SteamKit2.1.6.5.nupkg differ
diff --git a/packages/SteamKit2.1.6.5/lib/net40/SteamKit2.dll b/packages/SteamKit2.1.6.5/lib/net40/SteamKit2.dll
new file mode 100644
index 000000000..993f10663
Binary files /dev/null and b/packages/SteamKit2.1.6.5/lib/net40/SteamKit2.dll differ
diff --git a/packages/SteamKit2.1.6.5/lib/net40/SteamKit2.xml b/packages/SteamKit2.1.6.5/lib/net40/SteamKit2.xml
new file mode 100644
index 000000000..565f6f088
--- /dev/null
+++ b/packages/SteamKit2.1.6.5/lib/net40/SteamKit2.xml
@@ -0,0 +1,7751 @@
+
+
+
+ SteamKit2
+
+
+
+
+ Represents a protobuf backed client message. Only contains the header information.
+
+
+
+
+ Gets a value indicating whether this client message is protobuf backed.
+ Client messages of this type are always protobuf backed.
+
+
+ true if this instance is protobuf backed; otherwise, false.
+
+
+
+
+ Gets the network message type of this client message.
+
+
+ The network message type.
+
+
+
+
+ Gets or sets the session id for this client message.
+
+
+ The session id.
+
+
+
+
+ Gets or sets the for this client message.
+
+
+ The .
+
+
+
+
+ Gets or sets the target job id for this client message.
+
+
+ The target job id.
+
+
+
+
+ Gets or sets the source job id for this client message.
+
+
+ The source job id.
+
+
+
+
+ Shorthand accessor for the protobuf header.
+
+
+
+
+ Initializes a new instance of the class.
+ This is a recieve constructor.
+
+ The packet message to build this client message from.
+
+
+
+ Serializes this client message instance to a byte array.
+
+ This class is for reading Protobuf messages only. If you want to create a protobuf message, use .
+
+
+
+ Initializes this client message by deserializing the specified data.
+
+ The data representing a client message.
+
+
+
+ Represents a protobuf backed client message.
+
+ The body type of this message.
+
+
+
+ Gets the body structure of this message.
+
+
+
+
+ Initializes a new instance of the class.
+ This is a client send constructor.
+
+ The network message type this client message represents.
+ The number of bytes to initialize the payload capacity to.
+
+
+
+ Initializes a new instance of the class.
+ This a reply constructor.
+
+ The network message type this client message represents.
+ The message that this instance is a reply for.
+ The number of bytes to initialize the payload capacity to.
+
+
+
+ Initializes a new instance of the class.
+ This is a recieve constructor.
+
+ The packet message to build this client message from.
+
+
+
+ Serializes this client message instance to a byte array.
+
+
+ Data representing a client message.
+
+
+
+
+ Initializes this client message by deserializing the specified data.
+
+ The data representing a client message.
+
+
+
+ Represents a struct backed client message.
+
+ The body type of this message.
+
+
+
+ Gets a value indicating whether this client message is protobuf backed.
+
+
+ true if this instance is protobuf backed; otherwise, false.
+
+
+
+
+ Gets the network message type of this client message.
+
+
+ The network message type.
+
+
+
+
+ Gets or sets the session id for this client message.
+
+
+ The session id.
+
+
+
+
+ Gets or sets the for this client message.
+
+
+ The .
+
+
+
+
+ Gets or sets the target job id for this client message.
+
+
+ The target job id.
+
+
+
+
+ Gets or sets the source job id for this client message.
+
+
+ The source job id.
+
+
+
+
+ Gets the body structure of this message.
+
+
+
+
+ Initializes a new instance of the class.
+ This is a client send constructor.
+
+ The number of bytes to initialize the payload capacity to.
+
+
+
+ Initializes a new instance of the class.
+ This a reply constructor.
+
+ The message that this instance is a reply for.
+ The number of bytes to initialize the payload capacity to.
+
+
+
+ Initializes a new instance of the class.
+ This is a recieve constructor.
+
+ The packet message to build this client message from.
+
+
+
+ Serializes this client message instance to a byte array.
+
+
+ Data representing a client message.
+
+
+
+
+ Initializes this client message by deserializing the specified data.
+
+ The data representing a client message.
+
+
+
+ Represents a struct backed message without session or client info.
+
+ The body type of this message.
+
+
+
+ Gets a value indicating whether this client message is protobuf backed.
+
+
+ true if this instance is protobuf backed; otherwise, false.
+
+
+
+
+ Gets the network message type of this client message.
+
+
+ The network message type.
+
+
+
+
+ Gets or sets the session id for this client message.
+ This type of client message does not support session ids
+
+
+ The session id.
+
+
+
+
+ Gets or sets the for this client message.
+ This type of client message goes not support SteamIDs.
+
+
+ The .
+
+
+
+
+ Gets or sets the target job id for this client message.
+
+
+ The target job id.
+
+
+
+
+ Gets or sets the source job id for this client message.
+
+
+ The source job id.
+
+
+
+
+ Gets the structure body of the message.
+
+
+
+
+ Initializes a new instance of the class.
+ This is a client send constructor.
+
+ The number of bytes to initialize the payload capacity to.
+
+
+
+ Initializes a new instance of the class.
+ This a reply constructor.
+
+ The message that this instance is a reply for.
+ The number of bytes to initialize the payload capacity to.
+
+
+
+ Initializes a new instance of the class.
+ This is a recieve constructor.
+
+ The packet message to build this client message from.
+
+
+
+ Serializes this client message instance to a byte array.
+
+
+ Data representing a client message.
+
+
+
+
+ Initializes this client message by deserializing the specified data.
+
+ The data representing a client message.
+
+
+
+ Represents a unified interface into client messages.
+
+
+
+
+ Gets a value indicating whether this client message is protobuf backed.
+
+
+ true if this instance is protobuf backed; otherwise, false.
+
+
+
+
+ Gets the network message type of this client message.
+
+
+ The message type.
+
+
+
+
+ Gets or sets the target job id for this client message.
+
+
+ The target job id.
+
+
+
+
+ Gets or sets the source job id for this client message.
+
+
+ The source job id.
+
+
+
+
+ Serializes this client message instance to a byte array.
+
+ Data representing a client message.
+
+
+
+ Initializes this client message by deserializing the specified data.
+
+ The data representing a client message.
+
+
+
+ This is the abstract base class for all available game coordinator messages.
+ It's used to maintain packet payloads and provide a header for all gc messages.
+
+ The header type for this gc message.
+
+
+
+ Gets a value indicating whether this gc message is protobuf backed.
+
+
+ true if this instance is protobuf backed; otherwise, false.
+
+
+
+
+ Gets the network message type of this gc message.
+
+
+ The network message type.
+
+
+
+
+ Gets or sets the target job id for this gc message.
+
+
+ The target job id.
+
+
+
+
+ Gets or sets the source job id for this gc message.
+
+
+ The source job id.
+
+
+
+
+ Gets the header for this message type.
+
+
+
+
+ Initializes a new instance of the class.
+
+ The number of bytes to initialize the payload capacity to.
+
+
+
+ Serializes this gc message instance to a byte array.
+
+
+ Data representing a gc message.
+
+
+
+
+ Initializes this gc message by deserializing the specified data.
+
+ The data representing a gc message.
+
+
+
+ Represents a protobuf backed game coordinator message.
+
+ The body type of this message.
+
+
+
+ Gets a value indicating whether this gc message is protobuf backed.
+ Client messages of this type are always protobuf backed.
+
+
+ true if this instance is protobuf backed; otherwise, false.
+
+
+
+
+ Gets the network message type of this gc message.
+
+
+ The network message type.
+
+
+
+
+ Gets or sets the target job id for this gc message.
+
+
+ The target job id.
+
+
+
+
+ Gets or sets the source job id for this gc message.
+
+
+ The source job id.
+
+
+
+
+ Shorthand accessor for the protobuf header.
+
+
+
+
+ Gets the body structure of this message.
+
+
+
+
+ Initializes a new instance of the class.
+ This is a client send constructor.
+
+ The network message type this gc message represents.
+ The number of bytes to initialize the payload capacity to.
+
+
+
+ Initializes a new instance of the class.
+ This a reply constructor.
+
+ The network message type this gc message represents.
+ The message that this instance is a reply for.
+ The number of bytes to initialize the payload capacity to.
+
+
+
+ Initializes a new instance of the class.
+ This is a recieve constructor.
+
+ The packet message to build this gc message from.
+
+
+
+ Serializes this gc message instance to a byte array.
+
+
+ Data representing a gc message.
+
+
+
+
+ Initializes this gc message by deserializing the specified data.
+
+ The data representing a gc message.
+
+
+
+ Represents a struct backed game coordinator message.
+
+ The body type of this message.
+
+
+
+ Gets a value indicating whether this gc message is protobuf backed.
+
+
+ true if this instance is protobuf backed; otherwise, false.
+
+
+
+
+ Gets the network message type of this gc message.
+
+
+ The network message type.
+
+
+
+
+ Gets or sets the target job id for this gc message.
+
+
+ The target job id.
+
+
+
+
+ Gets or sets the source job id for this gc message.
+
+
+ The source job id.
+
+
+
+
+ Gets the body structure of this message.
+
+
+
+
+ Initializes a new instance of the class.
+ This is a client send constructor.
+
+ The number of bytes to initialize the payload capacity to.
+
+
+
+ Initializes a new instance of the class.
+ This a reply constructor.
+
+ The message that this instance is a reply for.
+ The number of bytes to initialize the payload capacity to.
+
+
+
+ Initializes a new instance of the class.
+ This is a recieve constructor.
+
+ The packet message to build this gc message from.
+
+
+
+ Serializes this gc message instance to a byte array.
+
+
+ Data representing a client message.
+
+
+
+
+ Initializes this gc message by deserializing the specified data.
+
+ The data representing a client message.
+
+
+
+ Represents a simple unified interface into game coordinator messages recieved from the network.
+ This is contrasted with in that this interface is packet body agnostic
+ and only allows simple access into the header. This interface is also immutable, and the underlying
+ data cannot be modified.
+
+
+
+
+ Gets a value indicating whether this packet message is protobuf backed.
+
+
+ true if this instance is protobuf backed; otherwise, false.
+
+
+
+
+ Gets the network message type of this packet message.
+
+
+ The message type.
+
+
+
+
+ Gets the target job id for this packet message.
+
+
+ The target job id.
+
+
+
+
+ Gets the source job id for this packet message.
+
+
+ The source job id.
+
+
+
+
+ Gets the underlying data that represents this client message.
+
+ The data.
+
+
+
+ Represents a protobuf backed packet message.
+
+
+
+
+ Gets a value indicating whether this packet message is protobuf backed.
+ This type of message is always protobuf backed.
+
+
+ true if this instance is protobuf backed; otherwise, false.
+
+
+
+
+ Gets the network message type of this packet message.
+
+
+ The message type.
+
+
+
+
+ Gets the target job id for this packet message.
+
+
+ The target job id.
+
+
+
+
+ Gets the source job id for this packet message.
+
+
+ The source job id.
+
+
+
+
+ Initializes a new instance of the class.
+
+ The network message type for this packet message.
+ The data.
+
+
+
+ Gets the underlying data that represents this client message.
+
+ The data.
+
+
+
+ Represents a packet message with extended header information.
+
+
+
+
+ Gets a value indicating whether this packet message is protobuf backed.
+ This type of message is never protobuf backed.
+
+
+ true if this instance is protobuf backed; otherwise, false.
+
+
+
+
+ Gets the network message type of this packet message.
+
+
+ The message type.
+
+
+
+
+ Gets the target job id for this packet message.
+
+
+ The target job id.
+
+
+
+
+ Gets the source job id for this packet message.
+
+
+ The source job id.
+
+
+
+
+ Initializes a new instance of the class.
+
+ The network message type for this packet message.
+ The data.
+
+
+
+ Gets the underlying data that represents this packet message.
+
+ The data.
+
+
+
+ This is the base class for the utility class.
+ This is for internal use only, and shouldn't be used directly.
+
+
+
+
+ This base client handles the underlying connection to a CM server. This class should not be use directly, but through the class.
+
+
+
+
+ Bootstrap list of CM servers.
+
+
+
+
+ Returns the the local IP of this client.
+
+ The local IP.
+
+
+
+ Gets the connected universe of this client.
+ This value will be if the client is not connected to Steam.
+
+ The universe.
+
+
+
+ Gets a value indicating whether this instance is connected to the remote CM server.
+
+
+ true if this instance is connected; otherwise, false.
+
+
+
+
+ Gets the session token assigned to this client from the AM.
+
+
+
+
+ Gets the Steam recommended Cell ID of this client. This value is assigned after a logon attempt has succeeded.
+ This value will be null if the client is logged off of Steam.
+
+
+
+
+ Gets the session ID of this client. This value is assigned after a logon attempt has succeeded.
+ This value will be null if the client is logged off of Steam.
+
+ The session ID.
+
+
+
+ Gets the SteamID of this client. This value is assigned after a logon attempt has succeeded.
+ This value will be null if the client is logged off of Steam.
+
+ The SteamID.
+
+
+
+ Gets or sets the connection timeout used when connecting to the Steam server.
+ The default value is 5 seconds.
+
+
+ The connection timeout.
+
+
+
+
+ Initializes a new instance of the class with a specific connection type.
+
+ The connection type to use.
+
+ The provided is not supported.
+ Only Tcp and Udp are available.
+
+
+
+
+ Connects this client to a Steam3 server.
+ This begins the process of connecting and encrypting the data channel between the client and the server.
+ Results are returned asynchronously in a .
+ If the server that SteamKit attempts to connect to is down, a
+ will be posted instead.
+ SteamKit will not attempt to reconnect to Steam, you must handle this callback and call Connect again
+ preferrably after a short delay.
+
+
+ The of the CM server to connect to.
+ If null, SteamKit will randomly select a CM server from its internal list.
+
+
+
+
+ Disconnects this client.
+
+
+
+
+ Sends the specified client message to the server.
+ This method automatically assigns the correct SessionID and SteamID of the message.
+
+ The client message to send.
+
+
+
+ Returns the list of servers matching the given type
+
+ Server type requested
+ List of server endpoints
+
+
+
+ Called when a client message is received from the network.
+
+ The packet message.
+
+
+
+ Called when the client is physically disconnected from Steam3.
+
+
+
+
+ Represents a unified interface into client messages.
+
+
+
+
+ Gets a value indicating whether this client message is protobuf backed.
+
+
+ true if this instance is protobuf backed; otherwise, false.
+
+
+
+
+ Gets the network message type of this client message.
+
+
+ The message type.
+
+
+
+
+ Gets or sets the session id for this client message.
+
+
+ The session id.
+
+
+
+
+ Gets or sets the for this client message.
+
+
+ The .
+
+
+
+
+ Gets or sets the target job id for this client message.
+
+
+ The target job id.
+
+
+
+
+ Gets or sets the source job id for this client message.
+
+
+ The source job id.
+
+
+
+
+ Serializes this client message instance to a byte array.
+
+ Data representing a client message.
+
+
+
+ Initializes this client message by deserializing the specified data.
+
+ The data representing a client message.
+
+
+
+ This class provides a payload backing to client messages.
+
+
+
+
+ Returns a which is the backing stream for client message payload data.
+
+
+
+
+ Initializes a new instance of the class.
+
+ The number of bytes to initialize the payload capacity to.
+
+
+
+ Seeks within the payload to the specified offset.
+
+ The offset in the payload to seek to.
+ The origin to seek from.
+ The new position within the stream, calculated by combining the initial reference point and the offset.
+
+
+
+ Writes a single unsigned byte to the message payload.
+
+ The unsigned byte.
+
+
+
+ Writes a single signed byte to the message payload.
+
+ The signed byte.
+
+
+
+ Writes the specified byte array to the message payload.
+
+ The byte array.
+
+
+
+ Writes a single 16bit short to the message payload.
+
+ The short.
+
+
+
+ Writes a single unsigned 16bit short to the message payload.
+
+ The unsigned short.
+
+
+
+ Writes a single 32bit integer to the message payload.
+
+ The integer.
+
+
+
+ Writes a single unsigned 32bit integer to the message payload.
+
+ The unsigned integer.
+
+
+
+ Writes a single 64bit long to the message payload.
+
+ The long.
+
+
+
+ Writes a single unsigned 64bit long to the message payload.
+
+ The unsigned long.
+
+
+
+ Writes a single 32bit float to the message payload.
+
+ The float.
+
+
+
+ Writes a single 64bit double to the message payload.
+
+ The double.
+
+
+
+ Writes the specified string to the message payload using default encoding.
+ This function does not write a terminating null character.
+
+ The string to write.
+
+
+
+ Writes the specified string to the message payload using the specified encoding.
+ This function does not write a terminating null character.
+
+ The string to write.
+ The encoding to use.
+
+
+
+ Writes the secified string and a null terminator to the message payload using default encoding.
+
+ The string to write.
+
+
+
+ Writes the specified string and a null terminator to the message payload using the specified encoding.
+
+ The string to write.
+ The encoding to use.
+
+
+
+ Reads a single signed byte from the message payload.
+
+ The signed byte.
+
+
+
+ Reads a single signed byte from the message payload.
+
+ The signed byte.
+
+
+
+ Reads a single unsigned byte from the message payload.
+
+ The unsigned byte.
+
+
+
+ Reads a single unsigned byte from the message payload.
+
+ The unsigned byte.
+
+
+
+ Reads a number of bytes from the message payload.
+
+ The number of bytes to read.
+ The data.
+
+
+
+ Reads a single 16bit short from the message payload.
+
+ The short.
+
+
+
+ Reads a single 16bit short from the message payload.
+
+ The short.
+
+
+
+ Reads a single unsigned 16bit short from the message payload.
+
+ The unsigned short.
+
+
+
+ Reads a single unsigned 16bit short from the message payload.
+
+ The unsigned short.
+
+
+
+ Reads a single 32bit integer from the message payload.
+
+ The integer.
+
+
+
+ Reads a single 32bit integer from the message payload.
+
+ The integer.
+
+
+
+ Reads a single unsigned 32bit integer from the message payload.
+
+ The unsigned integer.
+
+
+
+ Reads a single unsigned 32bit integer from the message payload.
+
+ The unsigned integer.
+
+
+
+ Reads a single 64bit long from the message payload.
+
+ The long.
+
+
+
+ Reads a single 64bit long from the message payload.
+
+ The long.
+
+
+
+ Reads a single unsigned 64bit long from the message payload.
+
+ The unsigned long.
+
+
+
+ Reads a single unsigned 64bit long from the message payload.
+
+ The unsigned long.
+
+
+
+ Reads a single 32bit float from the message payload.
+
+ The float.
+
+
+
+ Reads a single 32bit float from the message payload.
+
+ The float.
+
+
+
+ Reads a single 64bit double from the message payload.
+
+ The double.
+
+
+
+ Reads a null terminated string from the message payload with the default encoding.
+
+ The string.
+
+
+
+ Reads a null terminated string from the message payload with the specified encoding.
+
+ The encoding to use.
+ /// The string.
+
+
+
+ This is the abstract base class for all available client messages.
+ It's used to maintain packet payloads and provide a header for all client messages.
+
+ The header type for this client message.
+
+
+
+ Gets a value indicating whether this client message is protobuf backed.
+
+
+ true if this instance is protobuf backed; otherwise, false.
+
+
+
+
+ Gets the network message type of this client message.
+
+
+ The network message type.
+
+
+
+
+ Gets or sets the session id for this client message.
+
+
+ The session id.
+
+
+
+
+ Gets or sets the for this client message.
+
+
+ The .
+
+
+
+
+ Gets or sets the target job id for this client message.
+
+
+ The target job id.
+
+
+
+
+ Gets or sets the source job id for this client message.
+
+
+ The source job id.
+
+
+
+
+ Gets the header for this message type.
+
+
+
+
+ Initializes a new instance of the class.
+
+ The number of bytes to initialize the payload capacity to.
+
+
+
+ Serializes this client message instance to a byte array.
+
+
+ Data representing a client message.
+
+
+
+
+ Initializes this client message by deserializing the specified data.
+
+ The data representing a client message.
+
+
+
+ Represents a simple unified interface into client messages recieved from the network.
+ This is contrasted with in that this interface is packet body agnostic
+ and only allows simple access into the header. This interface is also immutable, and the underlying
+ data cannot be modified.
+
+
+
+
+ Gets a value indicating whether this packet message is protobuf backed.
+
+
+ true if this instance is protobuf backed; otherwise, false.
+
+
+
+
+ Gets the network message type of this packet message.
+
+
+ The message type.
+
+
+
+
+ Gets the target job id for this packet message.
+
+
+ The target job id.
+
+
+
+
+ Gets the source job id for this packet message.
+
+
+ The source job id.
+
+
+
+
+ Gets the underlying data that represents this client message.
+
+ The data.
+
+
+
+ Represents a protobuf backed packet message.
+
+
+
+
+ Gets a value indicating whether this packet message is protobuf backed.
+ This type of message is always protobuf backed.
+
+
+ true if this instance is protobuf backed; otherwise, false.
+
+
+
+
+ Gets the network message type of this packet message.
+
+
+ The message type.
+
+
+
+
+ Gets the target job id for this packet message.
+
+
+ The target job id.
+
+
+
+
+ Gets the source job id for this packet message.
+
+
+ The source job id.
+
+
+
+
+ Initializes a new instance of the class.
+
+ The network message type for this packet message.
+ The data.
+
+
+
+ Gets the underlying data that represents this client message.
+
+ The data.
+
+
+
+ Represents a packet message with extended header information.
+
+
+
+
+ Gets a value indicating whether this packet message is protobuf backed.
+ This type of message is never protobuf backed.
+
+
+ true if this instance is protobuf backed; otherwise, false.
+
+
+
+
+ Gets the network message type of this packet message.
+
+
+ The message type.
+
+
+
+
+ Gets the target job id for this packet message.
+
+
+ The target job id.
+
+
+
+
+ Gets the source job id for this packet message.
+
+
+ The source job id.
+
+
+
+
+ Initializes a new instance of the class.
+
+ The network message type for this packet message.
+ The data.
+
+
+
+ Gets the underlying data that represents this client message.
+
+ The data.
+
+
+
+ Represents a packet message with basic header information.
+
+
+
+
+ Gets a value indicating whether this packet message is protobuf backed.
+ This type of message is never protobuf backed.
+
+
+ true if this instance is protobuf backed; otherwise, false.
+
+
+
+
+ Gets the network message type of this packet message.
+
+
+ The message type.
+
+
+
+
+ Gets the target job id for this packet message.
+
+
+ The target job id.
+
+
+
+
+ Gets the source job id for this packet message.
+
+
+ The source job id.
+
+
+
+
+ Initializes a new instance of the class.
+
+ The network message type for this packet message.
+ The data.
+
+
+
+ Gets the underlying data that represents this client message.
+
+ The data.
+
+
+
+ Currently marked quality of a server. All servers start off as Undetermined.
+
+
+
+
+ Known good server.
+
+
+
+
+ Known bad server.
+
+
+
+
+ Smart list of CM servers.
+
+
+
+
+ Determines after how much time a server's score should expire and be reset to it's base value.
+
+
+
+
+ Resets the scores of all servers which had their scores last updated a ago.
+
+
+
+
+ Adds an to the server list.
+
+ The to add.
+ false if the server is already in the list, true otherwise.
+
+
+
+ Adds the elements of the specified collection of s to the server list.
+
+ The collection of s to add.
+ false if any of the specified servers are already in the list, true otherwise.
+
+
+
+ Explicitly resets the quality of every stored server.
+
+
+
+
+ Removes all servers from the list.
+
+
+
+
+ Get the next server in the list.
+
+ An , or null if the list is empty.
+
+
+
+ Gets the s of all servers in the server list.
+
+ An array contains the s of the servers in the list
+
+
+
+ The CDNClient class is used for downloading game content from the Steam servers.
+
+
+
+
+ Represents a single Steam3 'Steampipe' content server.
+
+
+
+
+ Gets the hostname of the server.
+
+
+
+
+ Gets the port of the server.
+
+
+
+
+ Gets the type of the server.
+
+
+
+
+ Gets the CellID this server belongs to.
+
+
+
+
+ Gets the load value associated with this server.
+
+
+
+
+ Gets the weighted load.
+
+
+
+
+ Gets the number of entries this server is worth.
+
+
+
+
+ Performs an implicit conversion from to .
+
+ A IPEndPoint to convert into a .
+
+ The result of the conversion.
+
+
+
+
+ Performs an implicit conversion from to .
+
+ A DnsEndPoint to convert into a .
+
+ The result of the conversion.
+
+
+
+
+ Returns a that represents this server.
+
+
+ A that represents this server.
+
+
+
+
+ Represents a single downloaded chunk from a file in a depot.
+
+
+
+
+ Gets the depot manifest chunk information associated with this chunk.
+
+
+
+
+ Gets a value indicating whether this chunk has been processed. A chunk is processed when the data has been decrypted and decompressed.
+
+
+ true if this chunk has been processed; otherwise, false.
+
+
+
+
+ Gets the underlying data for this chunk.
+
+
+
+
+ Processes the specified depot key by decrypting the data with the given depot encryption key, and then by decompressing the data.
+ If the chunk has already been processed, this function does nothing.
+
+ The depot decryption key.
+ Thrown if the processed data does not match the expected checksum given in it's chunk information.
+
+
+
+ Default timeout to use when making requests
+
+
+
+
+ Initializes a new instance of the class.
+
+
+ The this instance will be associated with.
+ The SteamClient instance must be connected and logged onto Steam.
+
+ The optional appticket for the depot that will be downloaded.
+ This must be present when connected to steam non-anonymously.
+
+
+
+
+ Fetches a list of content servers.
+
+
+ The optional Steam3 content server to fetch the list from.
+ If this parameter is not specified, a random CS server will be selected.
+
+
+ The optional CellID used to specify which regional servers should be returned in the list.
+ If this parameter is not specified, Steam's GeoIP suggested CellID will be used instead.
+
+ The maximum amount of servers to request.
+ A list of servers.
+
+ No Steam CS servers available, or the suggested CellID is unavailable.
+ Check that the associated with this instance is logged onto Steam.
+
+
+
+
+ Connects and initializes a session to the specified content server.
+
+ The content server to connect to.
+ csServer was null.
+
+
+
+ Authenticate a CDNClient to a depot in the connected session
+
+ The id of the depot being accessed.
+
+ The optional depot decryption key for the depot that will be downloaded.
+ This is used for decrypting filenames (if needed) in depot manifests, and processing depot chunks.
+
+ CDN auth token for CDN content server endpoints.
+
+
+
+ Downloads the depot manifest specified by the given manifest ID, and optionally decrypts the manifest's filenames if the depot decryption key has been provided.
+
+ The id of the depot being accessed.
+ The unique identifier of the manifest to be downloaded.
+ A instance that contains information about the files present within a depot.
+
+
+
+ Downloads the depot manifest specified by the given manifest ID, and optionally decrypts the manifest's filenames if the depot decryption key has been provided.
+
+ The id of the depot being accessed.
+ The unique identifier of the manifest to be downloaded.
+ CDN hostname.
+ CDN auth token for CDN content server endpoints.
+
+ The depot decryption key for the depot that will be downloaded.
+ This is used for decrypting filenames (if needed) in depot manifests, and processing depot chunks.
+
+ A instance that contains information about the files present within a depot.
+
+
+
+ Downloads the specified depot chunk, and optionally processes the chunk and verifies the checksum if the depot decryption key has been provided.
+
+
+ This function will also validate the length of the downloaded chunk with the value of ,
+ if it has been assigned a value.
+
+ The id of the depot being accessed.
+
+ A instance that represents the chunk to download.
+ This value should come from a manifest downloaded with .
+
+ A instance that contains the data for the given chunk.
+ chunk's was null.
+
+
+
+ Downloads the specified depot chunk, and optionally processes the chunk and verifies the checksum if the depot decryption key has been provided.
+
+
+ This function will also validate the length of the downloaded chunk with the value of ,
+ if it has been assigned a value.
+
+ The id of the depot being accessed.
+
+ A instance that represents the chunk to download.
+ This value should come from a manifest downloaded with .
+
+ A instance that contains the data for the given chunk.
+ CDN hostname.
+ CDN auth token for CDN content server endpoints.
+
+ The depot decryption key for the depot that will be downloaded.
+ This is used for decrypting filenames (if needed) in depot manifests, and processing depot chunks.
+
+ chunk's was null.
+
+
+
+ This handler is used for interacting with remote storage and user generated content.
+
+
+
+
+ This callback is recieved in response to calling .
+
+
+
+
+ Gets the result of the request.
+
+
+
+
+ Gets the App ID the UGC is for.
+
+
+
+
+ Gets the SteamID of the UGC's creator.
+
+
+
+
+ Gets the URL that the content is located at.
+
+
+
+
+ Gets the name of the file.
+
+
+
+
+ Gets the size of the file.
+
+
+
+
+ This callback is recieved in response to calling .
+
+
+
+
+ Gets the result of the request.
+
+
+
+
+ Gets the App ID the file is for.
+
+
+
+
+ Gets the file name request.
+
+
+
+
+ Gets the SHA hash of the file.
+
+
+
+
+ Gets the timestamp of the file.
+
+
+
+
+ Gets the size of the file.
+
+
+
+
+ Gets if the file was explicity deleted by the user.
+
+
+
+
+ This callback is recieved in response to calling .
+
+
+
+
+ Gets the result of the request.
+
+
+
+
+ Gets the resulting UGC handle.
+
+
+
+
+ Requests details for a specific item of user generated content from the Steam servers.
+ Results are returned in a .
+
+ The unique user generated content id.
+ The Job ID of the request. This can be used to find the appropriate .
+
+
+
+ Requests details for a specific file in the user's Cloud storage.
+ Results are returned in a .
+
+ The app id of the game.
+ The path to the file being requested.
+ The Job ID of the request. This can be used to find the appropriate .
+
+
+
+ Commit a Cloud file at the given path to make its UGC handle publicly visible.
+ Results are returned in a .
+
+ The app id of the game.
+ The path to the file being requested.
+ The Job ID of the request. This can be used to find the appropriate .
+
+
+
+ Handles a client message. This should not be called directly.
+
+ The packet message that contains the data.
+
+
+
+ This handler is used for interacting with the Steam network as a game server.
+
+
+
+
+ This callback is fired when the game server receives a status reply.
+
+
+
+
+ Gets a value indicating whether this game server is VAC secure.
+
+
+ true if this server is VAC secure; otherwise, false.
+
+
+
+
+ This callback is fired when ticket authentication has completed.
+
+
+
+
+ Gets the SteamID the ticket auth completed for.
+
+
+
+
+ Gets the GameID the ticket was for.
+
+
+
+
+ Gets the authentication state.
+
+
+
+
+ Gets the auth session response.
+
+
+
+
+ Gets the ticket CRC.
+
+
+
+
+ Gets the ticket sequence.
+
+
+
+
+ Represents the details required to log into Steam3 as a game server.
+
+
+
+
+ Gets or sets the authentication token used to log in as a game server.
+
+
+
+
+ Gets or sets the AppID this gameserver will serve.
+
+
+
+
+ Represents the details of the game server's current status.
+
+
+
+
+ Gets or sets the AppID this game server is serving.
+
+
+
+
+ Gets or sets the server's basic state as flags.
+
+
+
+
+ Gets or sets the directory the game data is in.
+
+
+
+
+ Gets or sets the IP address the game server listens on.
+
+
+
+
+ Gets or sets the port the game server listens on.
+
+
+
+
+ Gets or sets the port the game server responds to queries on.
+
+
+
+
+ Gets or sets the current version of the game server.
+
+
+
+
+ Logs onto the Steam network as a persistent game server.
+ The client should already have been connected at this point.
+ Results are return in a .
+
+ The details to use for logging on.
+ No logon details were provided.
+ Username or password are not set within .
+
+
+
+ Logs the client into the Steam3 network as an anonymous game server.
+ The client should already have been connected at this point.
+ Results are returned in a .
+
+ The AppID served by this game server, or 0 for the default.
+
+
+
+ Logs the game server off of the Steam3 network.
+ This method does not disconnect the client.
+ Results are returned in a .
+
+
+
+
+ Sends the server's status to the Steam network.
+ Results are returned in a callback.
+
+ A object containing the server's status.
+
+
+
+ Handles a client message. This should not be called directly.
+
+ The packet message that contains the data.
+
+
+
+ This handler handles all game coordinator messaging.
+
+
+
+
+ This callback is fired when a game coordinator message is recieved from the network.
+
+
+
+
+ Gets the game coordinator message type.
+
+
+
+
+ Gets the AppID of the game coordinator the message is from.
+
+
+
+
+ Gets a value indicating whether this message is protobuf'd.
+
+
+ true if this instance is protobuf'd; otherwise, false.
+
+
+
+
+ Gets the actual message.
+
+
+
+
+ Sends a game coordinator message for a specific appid.
+
+ The GC message to send.
+ The app id of the game coordinator to send to.
+
+
+
+ Handles a client message. This should not be called directly.
+
+ The packet message that contains the data.
+
+
+
+ This handler is used for requesting server list details from Steam.
+
+
+
+
+ This callback is received in response to calling .
+
+
+
+
+ Represents a single server.
+
+
+
+
+ Gets the IP endpoint of the server.
+
+
+
+
+ Gets the number of Steam authenticated players on this server.
+
+
+
+
+ Gets the list of servers.
+
+
+
+
+ Details used when performing a server list query.
+
+
+
+
+ Gets or sets the AppID used when querying servers.
+
+
+
+
+ Gets or sets the filter used for querying the master server.
+ Check https://developer.valvesoftware.com/wiki/Master_Server_Query_Protocol for details on how the filter is structured.
+
+
+
+
+ Gets or sets the region that servers will be returned from.
+
+
+
+
+ Gets or sets the IP address that will be GeoIP located.
+ This is done to return servers closer to this location.
+
+
+
+
+ Gets or sets the maximum number of servers to return.
+
+
+
+
+ Requests a list of servers from the Steam game master server.
+ Results are returned in a .
+
+ The details for the request.
+ The Job ID of the request. This can be used to find the appropriate .
+
+
+
+ Handles a client message. This should not be called directly.
+
+ The packet message that contains the data.
+
+
+
+ This handler is used for initializing Steam trades with other clients.
+
+
+
+
+ This callback is fired when this client receives a trade proposal.
+
+
+
+
+ Gets the result.
+
+
+
+
+ Gets the screenshot ID of the newly added screenshot.
+
+
+
+
+ Width of a screenshot thumnail
+
+
+
+
+ Represents the details required to add a screenshot
+
+
+
+
+ Gets or sets the Steam game ID this screenshot belongs to
+
+ The game ID.
+
+
+
+ Gets or sets the UFS image filepath.
+
+ The UFS image filepath.
+
+
+
+ Gets or sets the UFS thumbnail filepath.
+
+ The UFS thumbnail filepath.
+
+
+
+ Gets or sets the screenshot caption
+
+ The screenshot caption.
+
+
+
+ Gets or sets the screenshot privacy
+
+ The screenshot privacy.
+
+
+
+ Gets or sets the screenshot width
+
+ The screenshot width.
+
+
+
+ Gets or sets the screenshot height
+
+ The screenshot height.
+
+
+
+ Gets or sets the creation time
+
+ The creation time.
+
+
+
+ Gets or sets whether or not the screenshot contains spoilers
+
+ Whether or not the screenshot contains spoilers.
+
+
+
+ Initializes a new instance of the class.
+
+
+
+
+ Adds a screenshot to the user's screenshot library. The screenshot image and thumbnail must already exist on the UFS.
+ Results are returned in a .
+
+ The details of the screenshot.
+ The Job ID of the request. This can be used to find the appropriate .
+
+
+
+ Handles a client message. This should not be called directly.
+
+ The packet message that contains the data.
+
+
+
+ This handler is used for initializing Steam trades with other clients.
+
+
+
+
+ This callback is fired when this client receives a trade proposal.
+
+
+
+
+ Gets the Trade ID of his proposal, used for replying.
+
+
+
+
+ Gets the SteamID of the client that sent the proposal.
+
+
+
+
+ Gets the persona name of the client that sent the proposal.
+
+
+
+
+ This callback is fired when this client receives the response from a trade proposal.
+
+
+
+
+ Gets the Trade ID that this result is for.
+
+
+
+
+ Gets the response of the trade proposal.
+
+
+
+
+ Gets the SteamID of the client that responded to the proposal.
+
+
+
+
+ Gets the number of days Steam Guard is required to have been active on this account.
+
+
+
+
+ Gets the number of days a new device cannot trade for.
+
+
+
+
+ Gets the default number of days one cannot trade for after a password reset.
+
+
+
+
+ Gets the number of days one cannot trade for after a password reset.
+
+
+
+
+ This callback is fired when a trading session has started.
+
+
+
+
+ Gets the SteamID of the client that this the trading session has started with.
+
+
+
+
+ Proposes a trade to another client.
+
+ The client to trade.
+
+
+
+ Responds to a trade proposal.
+
+ The trade id of the received proposal.
+ if set to true, the trade will be accepted.
+
+
+
+ Cancels an already sent trade proposal.
+
+ The user.
+
+
+
+ Handles a client message. This should not be called directly.
+
+ The packet message that contains the data.
+
+
+
+ This handler is used for interacting with Steamworks unified messaging
+
+
+
+
+ This callback is returned in response to a service method sent through .
+
+
+
+
+ Gets the result of the message.
+
+
+
+
+ Gets the raw binary response.
+
+
+
+
+ Gets the name of the Service.
+
+
+
+
+ Gets the name of the RPC method.
+
+
+
+
+ Gets the full name of the service method.
+
+
+
+
+ Deserializes the response into a protobuf object.
+
+ Protobuf type of the response message.
+ The response to the message sent through .
+
+
+
+ This callback represents a service notification recieved though .
+
+
+
+
+ Gets the name of the Service.
+
+
+
+
+ Gets the name of the RPC method.
+
+
+
+
+ Gets the full name of the service method.
+
+
+
+
+ Gets the protobuf notification body.
+
+
+
+
+ This wrapper is used for expression-based RPC calls using Steam Unified Messaging.
+
+
+
+
+ Sends a message.
+ Results are returned in a .
+
+ The type of the protobuf object which is the response to the RPC call.
+ RPC call expression, e.g. x => x.SomeMethodCall(message);
+ Whether this message is a notification or not.
+ The JobID of the request. This can be used to find the appropriate .
+
+
+
+ Sends a message.
+ Results are returned in a .
+
+ The type of a protobuf object.
+ Name of the RPC endpoint. Takes the format ServiceName.RpcName
+ The message to send.
+ Whether this message is a notification or not.
+ The JobID of the request. This can be used to find the appropriate .
+
+
+
+ Creates a wrapper for expression-based unified messaging.
+
+ The type of a service interface.
+ The wrapper.
+
+
+
+ Handles a client message. This should not be called directly.
+
+ The packet message that contains the data.
+
+
+
+ This handler is used for requesting files published on the Steam Workshop.
+
+
+
+
+ This callback is received in response to calling .
+
+
+
+
+ Represents the details of a single published file.
+
+
+
+
+ Gets the file ID.
+
+
+
+
+ Gets the number of reports for this file.
+
+
+
+
+ Gets the score of this file, based on up and down votes.
+
+
+
+
+ Gets the total count of up votes.
+
+
+
+
+ Gets the total count of down votes.
+
+
+
+
+ Gets the result.
+
+
+
+
+ Gets the list of enumerated files.
+
+
+
+
+ Gets the count of total results.
+
+
+
+
+ This callback is received in response to calling .
+
+
+
+
+ Represents the details of a single published file.
+
+
+
+
+ Gets the file ID.
+
+
+
+
+ Gets the result.
+
+
+
+
+ Gets the list of enumerated files.
+
+
+
+
+ Gets the count of total results.
+
+
+
+
+ This callback is received in response to calling .
+
+
+
+
+ Represents the details of a single published file.
+
+
+
+
+ Gets the file ID.
+
+
+
+
+ Gets the time this file was subscribed to.
+
+
+
+
+ Gets the result.
+
+
+
+
+ Gets the list of enumerated files.
+
+
+
+
+ Gets the count of total results.
+
+
+
+
+ This callback is received in response to calling .
+
+
+
+
+ Represents the details of a single published file.
+
+
+
+
+ Gets the file ID.
+
+
+
+
+ Gets the timestamp of this file.
+
+
+
+
+ Gets the result.
+
+
+
+
+ Gets the list of enumerated files.
+
+
+
+
+ Gets the count of total results.
+
+
+
+
+ Represents the details of an enumeration request used for the local user's files.
+
+
+
+
+ Gets or sets the AppID of the workshop to enumerate.
+
+
+ The AppID.
+
+
+
+
+ Gets or sets the sort order.
+ This value is only used by .
+
+
+ The sort order.
+
+
+
+
+ Gets or sets the start index.
+
+
+ The start index.
+
+
+
+
+ Gets or sets the user action to filter by.
+ This value is only used by .
+
+
+ The user action.
+
+
+
+
+ Enumerates the list of published files for the current logged in user.
+ Results are returned in a .
+
+ The specific details of the request.
+ The Job ID of the request. This can be used to find the appropriate .
+
+
+
+ Enumerates the list of subscribed files for the current logged in user.
+ Results are returned in a .
+
+ The specific details of the request.
+ The Job ID of the request. This can be used to find the appropriate .
+
+
+
+ Enumerates the list of published files for the current logged in user based on user action.
+ Results are returned in a .
+
+ The specific details of the request.
+ The Job ID of the request. This can be used to find the appropriate .
+
+
+
+ Represents the details of an enumeration request for all published files.
+
+
+
+
+ Gets or sets the AppID of the workshop to enumerate.
+
+
+ The AppID.
+
+
+
+
+ Gets or sets the type of the enumeration.
+
+
+ The type.
+
+
+
+
+ Gets or sets the start index.
+
+
+ The start index.
+
+
+
+
+ Gets or sets the days.
+
+
+ The days.
+
+
+
+
+ Gets or sets the number of results to return.
+
+
+ The number of results.
+
+
+
+
+ Gets the list of tags to enumerate.
+
+
+
+
+ Gets the list of user tags to enumerate.
+
+
+
+
+ Initializes a new instance of the class.
+
+
+
+
+ Enumerates the list of all published files on the Steam workshop.
+ Results are returned in a .
+
+ The specific details of the request.
+ The Job ID of the request. This can be used to find the appropriate .
+
+
+
+ Handles a client message. This should not be called directly.
+
+ The packet message that contains the data.
+
+
+
+ This handler handles Steam user statistic related actions.
+
+
+
+
+ Retrieves the number of current players for a given .
+ Results are returned in a .
+
+ The GameID to request the number of players for.
+ The Job ID of the request. This can be used to find the appropriate .
+
+
+
+ Asks the Steam back-end for a leaderboard by name for a given appid.
+ Results are returned in a .
+
+ The AppID to request a leaderboard for.
+ Name of the leaderboard to request.
+ The Job ID of the request. This can be used to find the appropriate .
+
+
+
+ Asks the Steam back-end for a leaderboard by name, and will create it if it's not yet.
+ Results are returned in a .
+
+ The AppID to request a leaderboard for.
+ Name of the leaderboard to create.
+ Sort method to use for this leaderboard
+ Display type for this leaderboard.
+ The Job ID of the request. This can be used to find the appropriate .
+
+
+
+ Asks the Steam back-end for a set of rows in the leaderboard.
+ Results are returned in a .
+
+ The AppID to request leaderboard rows for.
+ ID of the leaderboard to view.
+ The Job ID of the request. This can be used to find the appropriate .
+ Range start or 0.
+ Range end or max leaderboard entries.
+ Type of request.
+
+
+
+ Handles a client message. This should not be called directly.
+
+ The instance containing the event data.
+
+
+
+ This callback is fired in response to .
+
+
+
+
+ Gets the result of the request.
+
+
+
+
+ Gets the current number of players according to Steam.
+
+
+
+
+ This callback is fired in response to and .
+
+
+
+
+ Gets the result of the request.
+
+
+
+
+ Leaderboard ID.
+
+
+
+
+ How many entires there are for requested leaderboard.
+
+
+
+
+ Sort method to use for this leaderboard.
+
+
+
+
+ Display type for this leaderboard.
+
+
+
+
+ This callback is fired in response to .
+
+
+
+
+ Represents a single package in this response.
+
+
+
+
+ Gets the for this entry.
+
+
+
+
+ Gets the global rank for this entry.
+
+
+
+
+ Gets the score for this entry.
+
+
+
+
+ Gets the attached to this entry.
+
+
+
+
+ Extra game-defined information regarding how the user got that score.
+
+
+
+
+ Gets the result of the request.
+
+
+
+
+ How many entires there are for requested leaderboard.
+
+
+
+
+ Gets the list of leaderboard entries this response contains.
+
+
+
+
+ This utility class is used for binding a callback to a function.
+
+ The callback type this instance will handle.
+
+
+
+ Gets or sets the job ID this callback will handle.
+ Setting this field to the maximum value of a ulong will unbind this handler,
+ allowing all callbacks of type TCall to be handled.
+
+
+
+
+ Gets or sets the function to call when a callback of type TCall arrives.
+
+
+
+
+ Initializes a new instance of the class.
+
+ The function to call when a callback of type TCall arrives.
+ The that is responsible for the routing of callbacks to this handler, or null if the callback will be registered manually.
+
+
+
+ Initializes a new instance of the class.
+
+ The function to call when a callback of type TCall arrives.
+ The that is responsible for the routing of callbacks to this handler, or null if the callback will be registered manually.
+ The to filter matching callbacks by. Specify to recieve all callbacks of type TCall.
+
+
+
+ Attaches the specified to this handler.
+
+ The manager to attach.
+
+
+
+ Releases unmanaged resources and performs other cleanup operations before the
+ is reclaimed by garbage collection.
+
+
+
+
+ Performs application-defined tasks associated with freeing, releasing, or resetting unmanaged resources.
+ This function will unregister the callback.
+
+
+
+
+ This class is a utility for routing callbacks to function calls.
+ In order to bind callbacks to functions, an instance of this class must be created for the
+ instance that will be posting callbacks.
+
+
+
+
+ Initializes a new instance of the class.
+
+ The instance to handle the callbacks of.
+
+
+
+ Runs a single queued callback.
+ If no callback is queued, this method will instantly return.
+
+
+
+
+ Blocks the current thread to run a single queued callback.
+ If no callback is queued, the method will block for the given timeout.
+
+ The length of time to block.
+
+
+
+ Blocks the current thread to run a single queued callback.
+ If no callback is queued, the method will block until one is posted.
+
+
+
+
+ Manually registers the specified callback handler.
+ This is generally not required, as a handler will register itself when it is created.
+ If the specified callback is already registered, no exception is thrown.
+
+ The callback handler to register.
+
+
+
+ Registers the provided to receive callbacks of type .
+
+ The of the callbacks that should be subscribed to.
+ If this is , all callbacks of type will be recieved.
+ The function to invoke with the callback.
+ The type of callback to subscribe to.
+ An . Disposing of the return value will unsubscribe the .
+
+
+
+ Registers the provided to receive callbacks of type .
+
+ The function to invoke with the callback.
+ An . Disposing of the return value will unsubscribe the .
+
+
+
+ Unregisters the specified callback handler.
+ This is generally not required, as a handler will unregister itself when disposed or finalized.
+ If the specified callback isn't registered, no exception is thrown.
+
+ The callback handler to unregister.
+
+
+
+ Represents a single client that connects to a UFS server.
+
+
+
+
+ This callback is received after attempting to connect to the UFS server.
+
+
+
+
+ Gets the result of the connection attempt.
+
+ The result.
+
+
+
+ This callback is received when the client is physically disconnected from the UFS server.
+
+
+
+
+ If true, the disconnection was initiated by calling .
+ If false, the disconnection was the cause of something not user-controlled, such as a network failure or
+ a forcible disconnection by the remote server.
+
+
+
+
+ This callback is returned in response to an attempt to log on to the UFS server through .
+
+
+
+
+ Gets the result of the logon
+
+
+
+
+ This callback is returned in response to a request to upload a file through .
+
+
+
+
+ Gets the result of the upload request
+
+
+
+
+ Gets whether or not the file upload should proceed over HTTP
+
+
+
+
+ Gets whether or not the file upload should proceed over HTTPS
+
+
+
+
+ Gets whether or not the file should be encrypted during upload
+
+
+
+
+ Gets the SHA hash of the file to be uploaded
+
+
+
+
+ Gets the JobID on the UFS server.
+
+
+
+
+ This callback is returned when a file upload through is completed.
+
+
+
+
+ Gets the result of the file upload
+
+
+
+
+ Gets the SHA hash of the file that was uploaded
+
+
+
+
+ Gets the connected universe of this client.
+ This value will be if the client is not connected to Steam.
+
+ The universe.
+
+
+
+ Gets a value indicating whether this instance is connected to the remote UFS server.
+
+
+ true if this instance is connected; otherwise, false.
+
+
+
+
+ Gets or sets the connection timeout used when connecting to the UFS server.
+ The default value is 5 seconds.
+
+
+ The connection timeout.
+
+
+
+
+ Initializes a new instance of the class.
+
+
+ The parent instance that the UFS connection is for.
+ Callbacks will also be posted through this instance.
+
+
+
+
+ Connects this client to a UFS server.
+ This begins the process of connecting and encrypting the data channel between the client and the UFS server.
+ Results are returned asynchronously in a .
+ If the UFS server that this client attempts to connect to is down, a will be posted instead.
+ will not attempt to reconnect to Steam, you must handle this callback and call again, preferrably after a short delay.
+ In order to connect to the UFS server, the parent must be connected to the CM server.
+
+
+ The of the UFS server to connect to.
+ If null, will randomly select a UFS server from the 's list of servers.
+
+
+
+
+ Disconnects this client from the UFS server.
+ a will be posted upon disconnection.
+
+
+
+
+ Represents all the information required to upload a file to the UFS server.
+
+
+
+
+ Gets or sets the AppID this upload request is for.
+
+
+ The AppID.
+
+
+
+
+ Gets or sets the remote name of the file that is being uploaded.
+
+
+ The name of the file.
+
+
+
+
+ Gets or sets the physical file data for this upload.
+
+
+ The file data.
+
+
+
+
+ Gets or sets the JobID of this file upload. This value should be assigned from .
+
+
+ The job ID.
+
+
+
+
+ Attempt to logon to the UFS and authorize the client for the given AppIDs.
+ The should be connected before this point.
+ Results are returned in a .
+
+ The AppIDs to authorize when connecting to the UFS.
+ The Job ID of the request. This can be used to find the appropriate .
+
+
+
+ Begins a request to upload a file to the UFS.
+ The should be logged on before this point.
+ Results are returned in a .
+
+ The details to use for uploading the file.
+ The Job ID of the request. This can be used to find the appropriate .
+
+
+
+ Uploads the actual contents of a file to the UFS.
+ The should be logged on before this point, and the previous request to upload a file must have completed successfully.
+ Results are returned in a .
+
+ The details to use for uploading the file.
+ The Job ID of the request. This can be used to find the appropriate .
+
+
+
+ Sends the specified client message to the UFS server.
+ This method will automatically assign the correct of the message, as given by the parent .
+
+ The client message to send.
+
+
+
+ Helper class to load servers from the Steam Directory Web API.
+
+
+
+
+ Initializes 's server list with servers from the Steam Directory.
+
+
+
+
+ Load a list of servers from the Steam Directory.
+
+ Cell ID
+ A with the Result set to an enumerable list of s.
+
+
+
+ Load a list of servers from the Steam Directory.
+
+ Cell ID
+ Cancellation Token
+ A with the Result set to an enumerable list of s.
+
+
+
+ Utility class for interacting with the Steam Web API.
+
+
+
+
+ Represents a single interface that exists within the Web API.
+ This is a dynamic object that allows function calls to interfaces with minimal code.
+
+
+
+
+ Gets or sets the timeout value in milliseconds for any web requests made to the WebAPI.
+
+
+ The timeout value in milliseconds. The default value is 100,000 milliseconds (100 seconds).
+
+
+
+
+ Manually calls the specified Web API function with the provided details.
+
+ The function name to call.
+ The version of the function to call.
+ A dictionary of string key value pairs representing arguments to be passed to the API.
+ The http request method. Either "POST" or "GET".
+ if set to true this method will be called through the secure API.
+ A object representing the results of the Web API call.
+ The function name or request method provided were null.
+ An network error occurred when performing the request.
+ An error occured when parsing the response from the WebAPI.
+
+
+
+ Performs application-defined tasks associated with freeing, releasing, or resetting unmanaged resources.
+
+
+
+
+ Provides the implementation for operations that invoke a member.
+ Classes derived from the class can
+ override this method to specify dynamic behavior for operations such as calling a method.
+ This method should not be called directly, it is called through dynamic method calls.
+
+
+ Provides information about the dynamic operation.
+ The binder.Name property provides the name of the member on which the dynamic operation is performed.
+ For example, for the statement sampleObject.SampleMethod(100), where sampleObject is an instance of the
+ class derived from the class, binder.Name returns "SampleMethod".
+ The binder.IgnoreCase property specifies whether the member name is case-sensitive.
+
+
+ The arguments that are passed to the object member during the invoke operation. For example,
+ for the statement sampleObject.SampleMethod(100), where sampleObject is derived from the
+ class, the first argument to is equal to 100.
+
+ The result of the member invocation.
+
+ true if the operation is successful; otherwise, false. If this method returns false, the run-time
+ binder of the language determines the behavior. (In most cases, a language-specific run-time exception is thrown.)
+
+
+ Dynamic method is called with non-named argument.
+ All parameters must be passed as name arguments to API calls.
+ - or -
+ The dynamic method name was not in the correct format.
+ All API function calls must be in the format 'FunctionName###' where the optional ###'s represent a version number.
+
+
+ The reserved named parameter 'secure' was not a boolean value.
+ This parameter is used when requests must go through the secure API.
+
+
+ The function version number specified was out of range.
+
+
+
+
+ Represents a single interface that exists within the Web API.
+ This is a dynamic object that allows function calls to interfaces with minimal code.
+ This version of the class makes use of TPL Tasks to provide an asynchronous API.
+
+
+
+
+ Manually calls the specified Web API function with the provided details.
+
+ The function name to call.
+ The version of the function to call.
+ A dictionary of string key value pairs representing arguments to be passed to the API.
+ The http request method. Either "POST" or "GET".
+ if set to true this method will be called through the secure API.
+ A that contains a object representing the results of the Web API call.
+ The function name or request method provided were null.
+ An network error occurred when performing the request.
+ An error occured when parsing the response from the WebAPI.
+
+
+
+ Performs application-defined tasks associated with freeing, releasing, or resetting unmanaged resources.
+
+
+
+
+ Provides the implementation for operations that invoke a member.
+ Classes derived from the class can
+ override this method to specify dynamic behavior for operations such as calling a method.
+ This method should not be called directly, it is called through dynamic method calls.
+
+
+ Provides information about the dynamic operation.
+ The binder.Name property provides the name of the member on which the dynamic operation is performed.
+ For example, for the statement sampleObject.SampleMethod(100), where sampleObject is an instance of the
+ class derived from the class, binder.Name returns "SampleMethod".
+ The binder.IgnoreCase property specifies whether the member name is case-sensitive.
+
+
+ The arguments that are passed to the object member during the invoke operation. For example,
+ for the statement sampleObject.SampleMethod(100), where sampleObject is derived from the
+ class, the first argument to is equal to 100.
+
+ The result of the member invocation.
+
+ true if the operation is successful; otherwise, false. If this method returns false, the run-time
+ binder of the language determines the behavior. (In most cases, a language-specific run-time exception is thrown.)
+
+
+ Dynamic method is called with non-named argument.
+ All parameters must be passed as name arguments to API calls.
+ - or -
+ The dynamic method name was not in the correct format.
+ All API function calls must be in the format 'FunctionName###' where the optional ###'s represent a version number.
+
+
+ The reserved named parameter 'secure' was not a boolean value.
+ This parameter is used when requests must go through the secure API.
+
+
+ The function version number specified was out of range.
+
+
+
+
+ Retreives a dynamic handler capable of interacting with the specified interface on the Web API.
+
+ The interface to retrieve a handler for.
+ An optional API key to be used for authorized requests.
+ A dynamic object to interact with the Web API.
+
+
+
+ Retreives a dynamic handler capable of interacting with the specified interface on the Web API.
+
+ The interface to retrieve a handler for.
+ An optional API key to be used for authorized requests.
+ A dynamic object to interact with the Web API.
+
+
+
+ Represents a globally unique identifier within the Steam network.
+ Guaranteed to be unique across all racks and servers for a given Steam universe.
+
+
+
+
+ Initializes a new instance of the class.
+
+
+
+
+ Initializes a new instance of the class.
+
+ The GID value.
+
+
+
+ Performs an implicit conversion from to .
+
+ The gid.
+
+ The result of the conversion.
+
+
+
+
+ Performs an implicit conversion from to .
+
+ The gid.
+
+ The result of the conversion.
+
+
+
+
+ Gets or sets the sequential count for this GID.
+
+
+ The sequential count.
+
+
+
+
+ Gets or sets the start time of the server that generated this GID.
+
+
+ The start time.
+
+
+
+
+ Gets or sets the process ID of the server that generated this GID.
+
+
+ The process ID.
+
+
+
+
+ Gets or sets the box ID of the server that generated this GID.
+
+
+ The box ID.
+
+
+
+
+ Gets or sets the entire 64bit value of this GID.
+
+
+ The value.
+
+
+
+
+ Determines whether the specified is equal to this instance.
+
+ The to compare with this instance.
+
+ true if the specified is equal to this instance; otherwise, false.
+
+
+
+
+ Determines whether the specified is equal to this instance.
+
+ The to compare with this instance.
+
+ true if the specified is equal to this instance; otherwise, false.
+
+
+
+
+ Implements the operator ==.
+
+ The left side GID.
+ The right side GID.
+
+ The result of the operator.
+
+
+
+
+ Implements the operator !=.
+
+ The left side GID.
+ The right side GID.
+
+ The result of the operator.
+
+
+
+
+ Returns a hash code for this instance.
+
+
+ A hash code for this instance, suitable for use in hashing algorithms and data structures like a hash table.
+
+
+
+
+ Returns a that represents this instance.
+
+
+ A that represents this instance.
+
+
+
+
+ Represents an identifier of a network task known as a job.
+
+
+
+
+ Represents an invalid JobID.
+
+
+
+
+ Initializes a new instance of the class.
+
+
+
+
+ Initializes a new instance of the class.
+
+ The Job ID to initialize this instance with.
+
+
+
+ Performs an implicit conversion from to .
+
+ The Job ID.
+
+ The result of the conversion.
+
+
+
+
+ Performs an implicit conversion from to .
+
+ The Job ID.
+
+ The result of the conversion.
+
+
+
+
+ Represents a single unique handle to a piece of User Generated Content.
+
+
+
+
+ Initializes a new instance of the class.
+
+
+
+
+ Initializes a new instance of the class.
+
+ The UGC ID.
+
+
+
+ Performs an implicit conversion from to .
+
+ The UGC handle.
+
+ The result of the conversion.
+
+
+
+
+ Performs an implicit conversion from to .
+
+ The UGC ID.
+
+ The result of the conversion.
+
+
+
+
+ Represents a Steam3 depot manifest.
+
+
+
+
+ Represents a single chunk within a file.
+
+
+
+
+ Gets or sets the SHA-1 hash chunk id.
+
+
+
+
+ Gets or sets the expected Adler32 checksum of this chunk.
+
+
+
+
+ Gets or sets the chunk offset.
+
+
+
+
+ Gets or sets the compressed length of this chunk.
+
+
+
+
+ Gets or sets the decompressed length of this chunk.
+
+
+
+
+ Initializes a new instance of the class.
+
+
+
+
+ Represents a single file within a manifest.
+
+
+
+
+ Gets the name of the file.
+
+
+
+
+ Gets the chunks that this file is composed of.
+
+
+
+
+ Gets the file flags
+
+
+
+
+ Gets the total size of this file.
+
+
+
+
+ Gets the hash of this file.
+
+
+
+
+ Gets the list of files within this manifest.
+
+
+
+
+ Gets a value indicating whether filenames within this depot are encrypted.
+
+
+ true if the filenames are encrypted; otherwise, false.
+
+
+
+
+ Attempts to decrypts file names with the given encryption key.
+
+ The encryption key.
+ true if the file names were successfully decrypted; otherwise, false.
+
+
+
+ Represents a backed MessageObject structure, which are often sent by the Steam servers.
+
+
+
+
+ Gets the inner object.
+
+
+
+
+ Initializes a new instance of the class, using the provided KeyValues object.
+
+ The KeyValue backing store for this message object.
+
+
+
+ Initializes a new instance of the class with an empty inner KeyValues.
+
+
+
+
+ Populates this MessageObject instance from the data inside the given stream.
+
+ The stream to load data from.
+ true on success; otherwise, false.
+
+
+
+ Writes this MessageObject instance to the given stream.
+
+ The stream to write to.
+
+
+
+ The base class used for wrapping common ulong types, to introduce type safety and distinguish between common types.
+
+
+
+
+ Gets or sets the value.
+
+
+ The value.
+
+
+
+
+ Initializes a new instance of the class.
+
+
+
+
+ Initializes a new instance of the class.
+
+ The value to initialize this handle to.
+
+
+
+ Returns a hash code for this instance.
+
+
+ A hash code for this instance, suitable for use in hashing algorithms and data structures like a hash table.
+
+
+
+
+ Determines whether the specified is equal to this instance.
+
+ The to compare with this instance.
+
+ true if the specified is equal to this instance; otherwise, false.
+
+
+
+
+ Returns a that represents this instance.
+
+
+ A that represents this instance.
+
+
+
+
+ Indicates whether the current object is equal to another object of the same type.
+
+ An object to compare with this object.
+
+ true if the current object is equal to the other parameter; otherwise, false.
+
+
+
+
+ Represents a handle to a published file on the Steam workshop.
+
+
+
+
+ Initializes a new instance of the class.
+
+ The file id.
+
+
+
+ Performs an implicit conversion from to .
+
+ The published file.
+
+ The result of the conversion.
+
+
+
+
+ Performs an implicit conversion from to .
+
+ The file id.
+
+ The result of the conversion.
+
+
+
+
+ Implements the operator ==.
+
+ The first published file.
+ The second published file.
+
+ The result of the operator.
+
+
+
+
+ Implements the operator !=.
+
+ The first published file.
+ The second published file.
+
+ The result of the operator.
+
+
+
+
+ Gets a value indicating whether this instance is valid.
+
+
+ true if this instance is valid; otherwise, false.
+
+
+
+
+ Initializes a new instance of the class with
+ information from the memory stream.
+
+ Header is populated from the MemoryStream
+
+ The stream containing the packet and it's payload data.
+
+
+
+ Initializes a new instance of the class, with
+ no payload.
+
+ Header must be populated manually.
+
+ The type.
+
+
+
+ Initializes a new instance of the class, of the
+ specified type containing the specified payload.
+
+ Header must be populated manually.
+
+ The type.
+ The payload.
+
+
+
+ Initializes a new instance of the class, of the
+ specified type containing the first 'length' bytes of specified payload.
+
+ Header must be populated manually.
+
+ The type.
+ The payload.
+ The length.
+
+
+
+ Sets the payload
+
+ The payload to copy.
+
+
+
+ Sets the payload.
+
+ The payload.
+ The length.
+
+
+
+ Serializes the UdpPacket.
+
+ The serialized packet.
+
+
+
+ This handler is used for interacting with apps and packages on the Steam network.
+
+
+
+
+ This callback is fired during logon, informing the client of it's available licenses.
+
+
+
+
+ Represents a granted license (steam3 subscription) for one or more games.
+
+
+
+
+ Gets the package ID used to identify the license.
+
+ The package ID.
+
+
+
+ Gets the last change number for this license.
+
+
+
+
+ Gets the time the license was created.
+
+ The time created.
+
+
+
+ Gets the next process time for the license.
+
+ The next process time.
+
+
+
+ Gets the minute limit of the license.
+
+ The minute limit.
+
+
+
+ Gets the minutes used of the license.
+
+ The minutes used.
+
+
+
+ Gets the payment method used when the license was created.
+
+ The payment method.
+
+
+
+ Gets the license flags.
+
+ The license flags.
+
+
+
+ Gets the two letter country code where the license was purchased.
+
+ The purchase country code.
+
+
+
+ Gets the type of the license.
+
+ The type of the license.
+
+
+
+ Gets the territory code of the license.
+
+ The territory code.
+
+
+
+ Gets the result of the message.
+
+ The result.
+
+
+
+ Gets the license list.
+
+ The license list.
+
+
+
+ This callback is received in response to calling , informing the client of newly granted packages, if any.
+
+
+
+
+ Gets the result of the message.
+
+ The result.
+
+
+
+ Gets the list of granted apps.
+
+ List of granted apps.
+
+
+
+ Gets the list of granted packages.
+
+ List of granted packages.
+
+
+
+ This callback is received in response to calling .
+
+
+
+
+ Gets the result of requesting the ticket.
+
+
+
+
+ Gets the AppID this ticket is for.
+
+
+
+
+ Gets the ticket data.
+
+
+
+
+ This callback is received in response to calling .
+
+
+
+
+ Represents a single app in the info response.
+
+
+
+
+ The status of a requested app.
+
+
+
+
+ The information for this app was requested successfully.
+
+
+
+
+ This app is unknown.
+
+
+
+
+ Gets the status of the app.
+
+
+
+
+ Gets the AppID for this app.
+
+
+
+
+ Gets the last change number for this app.
+
+
+
+
+ Gets a section data for this app.
+
+
+
+
+ Gets the list of apps this response contains.
+
+
+
+
+ Gets the number of apps pending in this response.
+
+
+
+
+ This callback is received in response to calling .
+
+
+
+
+ Represents a single package in this response.
+
+
+
+
+ The status of a package.
+
+
+
+
+ The information for this package was requested successfully.
+
+
+
+
+ This package is unknown.
+
+
+
+
+ Gets the status of this package.
+
+
+
+
+ Gets the PackageID for this package.
+
+
+
+
+ Gets the last change number for this package.
+
+
+
+
+ Gets a hash of the package data for caching purposes.
+
+
+
+
+ Gets the data for this package.
+
+
+
+
+ Gets the list of packages this response contains.
+
+
+
+
+ Gets a count of packages pending in this response.
+
+
+
+
+ This callback is received in response to calling .
+
+
+
+
+ Gets the list of AppIDs that have changed since the last change number request.
+
+
+
+
+ Gets the current change number.
+
+
+
+
+ Gets a value indicating whether the backend wishes for the client to perform a full update.
+
+
+ true if the client should perform a full update; otherwise, false.
+
+
+
+
+ This callback is recieved in response to calling .
+
+
+
+
+ Gets the result of requesting this encryption key.
+
+
+
+
+ Gets the DepotID this encryption key is for.
+
+
+
+
+ Gets the encryption key for this depot.
+
+
+
+
+ This callback is fired when the client receives a list of game connect tokens.
+
+
+
+
+ Gets a count of tokens to keep.
+
+
+
+
+ Gets the list of tokens.
+
+
+
+
+ This callback is fired when the client receives it's VAC banned status.
+
+
+
+
+ Gets a list of VAC banned apps the client is banned from.
+
+
+
+
+ This callback is fired when the PICS returns access tokens for a list of appids and packageids
+
+
+
+
+ Gets a list of denied package tokens
+
+
+
+
+ Gets a list of denied app tokens
+
+
+
+
+ Dictionary containing requested package tokens
+
+
+
+
+ Dictionary containing requested package tokens
+
+
+
+
+ This callback is fired when the PICS returns the changes since the last change number
+
+
+
+
+ Holds the change data for a single app or package
+
+
+
+
+ App or package ID this change data represents
+
+
+
+
+ Current change number of this app
+
+
+
+
+ Signals if an access token is needed for this request
+
+
+
+
+ Supplied change number for the request
+
+
+
+
+ Gets the current change number
+
+
+
+
+ If this update requires a full update of the information
+
+
+
+
+ Dictionary containing requested package tokens
+
+
+
+
+ Dictionary containing requested package tokens
+
+
+
+
+ This callback is fired when the PICS returns the product information requested
+
+
+
+
+ Represents the information for a single app or package
+
+
+
+
+ Gets the ID of the app or package
+
+
+
+
+ Gets the current change number for the app or package
+
+
+
+
+ Gets if an access token was required for the request
+
+
+
+
+ Gets the hash of the content
+
+
+
+
+ Gets the KeyValue info
+
+
+
+
+ For an app request, returns if only the public information was requested
+
+
+
+
+ Whether or not to use HTTP to load the KeyValues data.
+
+
+
+
+ For an app metadata-only request, returns the Uri for HTTP appinfo requests.
+
+
+
+
+ Gets if this response contains only product metadata
+
+
+
+
+ Gets if the are more product information responses pending
+
+
+
+
+ Gets a list of unknown package ids
+
+
+
+
+ Gets a list of unknown app ids
+
+
+
+
+ Dictionary containing requested app info
+
+
+
+
+ Dictionary containing requested package info
+
+
+
+
+ This callback is received when the list of guest passes is updated.
+
+
+
+
+ Result of the operation
+
+
+
+
+ Number of guest passes to be given out
+
+
+
+
+ Number of guest passes to be redeemed
+
+
+
+
+ Guest pass list
+
+
+
+
+ This callback is received when a guest pass has been sent
+
+
+
+
+ Result of the operation
+
+
+
+
+ This callback is received when a CDN auth token is received
+
+
+
+
+ Result of the operation
+
+
+
+
+ CDN auth token
+
+
+
+
+ Token expiration date
+
+
+
+
+ Represents app request details when calling .
+
+
+
+
+ Gets or sets the AppID for this request.
+
+ The AppID.
+
+
+
+ Gets or sets the section flags for this request.
+
+ The section flags.
+
+
+
+ Gets the Section CRC list for this request.
+
+
+
+
+ Initializes a new instance of the class.
+
+
+
+
+ Represents a PICS request used for
+
+
+
+
+ Gets or sets the ID of the app or package being requested
+
+ The ID
+
+
+
+ Gets or sets the access token associated with the request
+
+ The access token
+
+
+
+ Requests only public app info
+
+ The flag specifying if only public data is requested
+
+
+
+ Instantiate an empty PICS product info request
+
+
+
+
+ Instantiate a PICS product info request for a given app or package id
+
+ App or package ID
+
+
+
+ Instantiate a PICS product info request for a given app or package id and an access token
+
+ App or package ID
+ PICS access token
+ Get only public info
+
+
+
+ Requests an app ownership ticket for the specified AppID.
+ Results are returned in a callback.
+
+ The appid to request the ownership ticket of.
+ The Job ID of the request. This can be used to find the appropriate .
+
+
+
+ Requests app information for a single app. Use the overload for requesting information on a batch of apps.
+ Results are returned in a callback.
+
+ Consider using instead.
+
+ The app to request information for.
+ if set to true, the request supports batches.
+ The Job ID of the request. This can be used to find the appropriate .
+
+
+
+ Requests app information for a single app. Use the overload for requesting information on a batch of apps.
+ Results are returned in a callback.
+
+ Consider using instead.
+
+ The app to request information for.
+ if set to true, the request supports batches.
+ The Job ID of the request. This can be used to find the appropriate .
+
+
+
+ Requests app information for a list of apps.
+ Results are returned in a callback.
+
+ Consider using instead.
+
+ The apps to request information for.
+ if set to true, the request supports batches.
+ The Job ID of the request. This can be used to find the appropriate .
+
+
+
+ Requests app information for a list of apps.
+ Results are returned in a callback.
+
+ Consider using instead.
+
+ The apps to request information for.
+ if set to true, the request supports batches.
+ The Job ID of the request. This can be used to find the appropriate .
+
+
+
+ Requests package information for a single package. Use the overload for requesting information on a batch of packages.
+ Results are returned in a callback.
+
+ Consider using instead.
+
+ The package id to request information for.
+ if set to true, request metadata only.
+ The Job ID of the request. This can be used to find the appropriate .
+
+
+
+ Requests package information for a list of packages.
+ Results are returned in a callback.
+
+ Consider using instead.
+
+ The packages to request information for.
+ if set to true to request metadata only.
+ The Job ID of the request. This can be used to find the appropriate .
+
+
+
+ Requests a list of app changes since the last provided change number value.
+ Results are returned in a callback.
+
+ Consider using instead.
+
+ The last change number value.
+ if set to true, request a change list.
+
+
+
+ Request the depot decryption key for a specified DepotID.
+ Results are returned in a callback.
+
+ The DepotID to request a decryption key for.
+ The AppID to request the decryption key for.
+ The Job ID of the request. This can be used to find the appropriate .
+
+
+
+ Request PICS access tokens for a list of app ids and package ids
+ Results are returned in a callback.
+
+ List of app ids to request access tokens for.
+ List of package ids to request access tokens for.
+ The Job ID of the request. This can be used to find the appropriate .
+
+
+
+ Request changes for apps and packages since a given change number
+ Results are returned in a callback.
+
+ Last change number seen.
+ Whether to send app changes.
+ Whether to send package changes.
+ The Job ID of the request. This can be used to find the appropriate .
+
+
+
+ Request product information for an app or package
+ Results are returned in a callback.
+
+ App id requested.
+ Package id requested.
+ Whether to send only public information.
+ Whether to send only meta data.
+ The Job ID of the request. This can be used to find the appropriate .
+
+
+
+ Request product information for a list of apps or packages
+ Results are returned in a callback.
+
+ List of app ids requested.
+ List of package ids requested.
+ Whether to send only public information.
+ Whether to send only meta data.
+ The Job ID of the request. This can be used to find the appropriate .
+
+
+
+ Request product information for a list of apps or packages
+ Results are returned in a callback.
+
+ List of requests for apps.
+ List of requests for packages.
+ Whether to send only meta data.
+ The Job ID of the request. This can be used to find the appropriate .
+
+
+
+ Request product information for an app or package
+ Results are returned in a callback.
+
+ App id requested.
+ CDN host name being requested.
+ The Job ID of the request. This can be used to find the appropriate .
+
+
+
+ Request a free license for given appid, can be used for free on demand apps
+ Results are returned in a callback.
+
+ The app to request a free license for.
+ The Job ID of the request. This can be used to find the appropriate .
+
+
+
+ Request a free license for given appids, can be used for free on demand apps
+ Results are returned in a callback.
+
+ The apps to request a free license for.
+ The Job ID of the request. This can be used to find the appropriate .
+
+
+
+ Handles a client message. This should not be called directly.
+
+ The packet message that contains the data.
+
+
+
+ This handler handles all interaction with other users on the Steam3 network.
+
+
+
+
+ Represents the details of a user which is a member of a chatroom.
+
+
+
+
+ Initializes a new instance of the class.
+
+ The KeyValue backing store for this member info.
+
+
+
+ Initializes a new instance of the class.
+
+
+
+
+ Gets the clan permission details of this chat member.
+
+
+
+
+ Gets the permissions this user has with the chatroom.
+
+
+
+
+ Gets the of this user.
+
+
+
+
+ This callback is fired in response to someone changing their friend details over the network.
+
+
+
+
+ Gets the status flags. This shows what has changed.
+
+ The status flags.
+
+
+
+ Gets the friend ID.
+
+ The friend ID.
+
+
+
+ Gets the state.
+
+ The state.
+
+
+
+ Gets the state flags.
+
+ The state flags.
+
+
+
+ Gets the game app ID.
+
+ The game app ID.
+
+
+
+ Gets the game ID.
+
+ The game ID.
+
+
+
+ Gets the name of the game.
+
+ The name of the game.
+
+
+
+ Gets the game server IP.
+
+ The game server IP.
+
+
+
+ Gets the game server port.
+
+ The game server port.
+
+
+
+ Gets the query port.
+
+ The query port.
+
+
+
+ Gets the source steam ID.
+
+ The source steam ID.
+
+
+
+ Gets the game data blob.
+
+ The game data blob.
+
+
+
+ Gets the name.
+
+ The name.
+
+
+
+ Gets the avatar hash.
+
+ The avatar hash.
+
+
+
+ Gets the last log off.
+
+ The last log off.
+
+
+
+ Gets the last log on.
+
+ The last log on.
+
+
+
+ Gets the clan rank.
+
+ The clan rank.
+
+
+
+ Gets the clan tag.
+
+ The clan tag.
+
+
+
+ Gets the online session instances.
+
+ The online session instances.
+
+
+
+ Gets the published session ID.
+
+ The published session ID.
+
+
+
+ This callback is posted when a clan's state has been changed.
+
+
+
+
+ Represents an event or announcement that was posted by a clan.
+
+
+
+
+ Gets the globally unique ID for this specific event.
+
+
+
+
+ Gets the event time.
+
+
+
+
+ Gets the headline of the event.
+
+
+
+
+ Gets the associated with this event, if any.
+
+
+
+
+ Gets a value indicating whether this event was just posted.
+
+
+ true if the event was just posted; otherwise, false.
+
+
+
+
+ Gets the of the clan that posted this state update.
+
+
+
+
+ Gets the status flags.
+
+
+
+
+ Gets the account flags.
+
+
+
+
+ Gets the name of the clan.
+
+
+ The name of the clan.
+
+
+
+
+ Gets the SHA-1 avatar hash.
+
+
+
+
+ Gets the total number of members in this clan.
+
+
+
+
+ Gets the number of members in this clan that are currently online.
+
+
+
+
+ Gets the number of members in this clan that are currently chatting.
+
+
+
+
+ Gets the number of members in this clan that are currently in-game.
+
+
+
+
+ Gets any events associated with this clan state update.
+
+
+
+
+ Gets any announcements associated with this clan state update.
+
+
+
+
+ This callback is fired when the client receives a list of friends.
+
+
+
+
+ Represents a single friend entry in a client's friendlist.
+
+
+
+
+ Gets the SteamID of the friend.
+
+ The SteamID.
+
+
+
+ Gets the relationship to this friend.
+
+ The relationship.
+
+
+
+ Gets a value indicating whether this is an incremental update.
+
+ true if incremental; otherwise, false.
+
+
+
+ Gets the friend list.
+
+ The friend list.
+
+
+
+ This callback is fired in response to receiving a message from a friend.
+
+
+
+
+ Gets or sets the sender.
+
+ The sender.
+
+
+
+ Gets the chat entry type.
+
+ The chat entry type.
+
+
+
+ Gets a value indicating whether this message is from a limited account.
+
+ true if this message is from a limited account; otherwise, false.
+
+
+
+ Gets the message.
+
+ The message.
+
+
+
+ This callback is fired in response to receiving an echo message from another instance.
+
+
+
+
+ Gets or sets the recipient
+
+ The recipient.
+
+
+
+ Gets the chat entry type.
+
+ The chat entry type.
+
+
+
+ Gets a value indicating whether this message is from a limited account.
+
+ true if this message is from a limited account; otherwise, false.
+
+
+
+ Gets the message.
+
+ The message.
+
+
+
+ This callback is fired in response to adding a user to your friends list.
+
+
+
+
+ Gets the result of the request.
+
+ The result.
+
+
+
+ Gets the SteamID of the friend that was added.
+
+ The SteamID.
+
+
+
+ Gets the persona name of the friend.
+
+ The persona name.
+
+
+
+ This callback is fired in response to attempting to join a chat.
+
+
+
+
+ Gets SteamID of the chat room.
+
+
+
+
+ Gets the friend ID.
+
+
+
+
+ Gets the type of the chat room.
+
+
+ The type of the chat room.
+
+
+
+
+ Gets the SteamID of the chat room owner.
+
+
+
+
+ Gets clan SteamID that owns this chat room.
+
+
+
+
+ Gets the chat flags.
+
+
+
+
+ Gets the chat enter response.
+
+
+
+
+ Gets the number of users currently in this chat room.
+
+
+
+
+ Gets the name of the chat room.
+
+
+
+
+ Gets a list of instances for each of the members of this chat room.
+
+
+
+
+ This callback is fired when a chat room message arrives.
+
+
+
+
+ Gets the SteamID of the chatter.
+
+
+
+
+ Gets the SteamID of the chat room.
+
+
+
+
+ Gets chat entry type.
+
+
+
+
+ Gets the message.
+
+
+
+
+ This callback is fired in response to chat member info being recieved.
+
+
+
+
+ Represents state change information.
+
+
+
+
+ Gets the SteamID of the chatter that was acted on.
+
+
+
+
+ Gets the state change for the acted on SteamID.
+
+
+
+
+ Gets the SteamID of the chatter that acted on .
+
+
+
+
+ Gets the member information for a user that has joined the chat room.
+ This field is only populated when is .
+
+
+
+
+ Gets SteamId of the chat room.
+
+
+
+
+ Gets the info type.
+
+
+
+
+ Gets the state change info for member info updates.
+
+
+
+
+ This callback is fired in response to chat room info being recieved.
+
+
+
+
+ Gets SteamId of the chat room.
+
+
+
+
+ Gets the info type.
+
+
+
+
+ This callback is fired when a chat action has completed.
+
+
+
+
+ Gets the SteamID of the chat room the action was performed in.
+
+
+
+
+ Gets the SteamID of the chat member the action was performed on.
+
+
+
+
+ Gets the chat action that was performed.
+
+
+
+
+ Gets the result of the chat action.
+
+
+
+
+ This callback is fired when a chat invite is recieved.
+
+
+
+
+ Gets the SteamID of the user who was invited to the chat.
+
+
+
+
+ Gets the chat room SteamID.
+
+
+
+
+ Gets the SteamID of the user who performed the invitation.
+
+
+
+
+ Gets the chat room type.
+
+
+
+
+ Gets the SteamID of the chat friend.
+
+
+
+
+ Gets the name of the chat room.
+
+
+
+
+ Gets the GameID associated with this chat room, if it's a game lobby.
+
+
+
+
+ This callback is fired in response to an attempt at ignoring a friend.
+
+
+
+
+ Gets the result of ignoring a friend.
+
+
+
+
+ This callback is fired in response to requesting profile info for a user.
+
+
+
+
+ Gets the result of requesting profile info.
+
+
+
+
+ Gets the this info belongs to.
+
+
+
+
+ Gets the time this account was created.
+
+
+
+
+ Gets the real name.
+
+
+
+
+ Gets the name of the city.
+
+
+
+
+ Gets the name of the state.
+
+
+
+
+ Gets the name of the country.
+
+
+
+
+ Gets the headline.
+
+
+
+
+ Gets the summary.
+
+
+
+
+ This callback is fired in response to setting this client's persona name or state
+ with or .
+
+
+
+
+ Gets the result of changing this client's persona information.
+
+
+
+
+ Gets the name of this client according to Steam.
+
+
+
+
+ Gets the local user's persona name.
+
+ The name.
+
+
+
+ Sets the local user's persona name and broadcasts it over the network.
+ Results are returned in a callback.
+
+ The name.
+ The Job ID of the request. This can be used to find the appropriate .
+
+
+
+ Gets the local user's persona state.
+
+ The persona state.
+
+
+
+ Sets the local user's persona state and broadcasts it over the network.
+ Results are returned in a callback.
+
+ The state.
+ The Job ID of the request. This can be used to find the appropriate .
+
+
+
+ Gets the friend count of the local user.
+
+ The number of friends.
+
+
+
+ Gets a friend by index.
+
+ The index.
+ A valid steamid of a friend if the index is in range; otherwise a steamid representing 0.
+
+
+
+ Gets the persona name of a friend.
+
+ The steam id.
+ The name.
+
+
+
+ Gets the persona state of a friend.
+
+ The steam id.
+ The persona state.
+
+
+
+ Gets the relationship of a friend.
+
+ The steam id.
+ The relationship of the friend to the local user.
+
+
+
+ Gets the game name of a friend playing a game.
+
+ The steam id.
+ The game name of a friend playing a game, or null if they haven't been cached yet.
+
+
+
+ Gets the GameID of a friend playing a game.
+
+ The steam id.
+ The gameid of a friend playing a game, or 0 if they haven't been cached yet.
+
+
+
+ Gets a SHA-1 hash representing the friend's avatar.
+
+ The SteamID of the friend to get the avatar of.
+ A byte array representing a SHA-1 hash of the friend's avatar.
+
+
+
+ Gets the count of clans the local user is a member of.
+
+ The number of clans this user is a member of.
+
+
+
+ Gets a clan SteamID by index.
+
+ The index.
+ A valid steamid of a clan if the index is in range; otherwise a steamid representing 0.
+
+
+
+ Gets the name of a clan.
+
+ The clan SteamID.
+ The name.
+
+
+
+ Gets the relationship of a clan.
+
+ The clan steamid.
+ The relationship of the clan to the local user.
+
+
+
+ Gets a SHA-1 hash representing the clan's avatar.
+
+ The SteamID of the clan to get the avatar of.
+ A byte array representing a SHA-1 hash of the clan's avatar, or null if the clan could not be found.
+
+
+
+ Sends a chat message to a friend.
+
+ The target to send to.
+ The type of message to send.
+ The message to send.
+
+
+
+ Sends a friend request to a user.
+
+ The account name or email of the user.
+
+
+
+ Sends a friend request to a user.
+
+ The SteamID of the friend to add.
+
+
+
+ Removes a friend from your friends list.
+
+ The SteamID of the friend to remove.
+
+
+
+ Attempts to join a chat room.
+
+ The SteamID of the chat room.
+
+
+
+ Attempts to leave a chat room.
+
+ The SteamID of the chat room.
+
+
+
+ Sends a message to a chat room.
+
+ The SteamID of the chat room.
+ The message type.
+ The message.
+
+
+
+ Invites a user to a chat room.
+ The results of this action will be available through the callback.
+
+ The SteamID of the user to invite.
+ The SteamID of the chat room to invite the user to.
+
+
+
+ Kicks the specified chat member from the given chat room.
+
+ The SteamID of chat room to kick the member from.
+ The SteamID of the member to kick from the chat.
+
+
+
+ Bans the specified chat member from the given chat room.
+
+ The SteamID of chat room to ban the member from.
+ The SteamID of the member to ban from the chat.
+
+
+
+ Unbans the specified SteamID from the given chat room.
+
+ The SteamID of chat room to unban the member from.
+ The SteamID of the member to unban from the chat.
+
+
+
+ Requests persona state for a list of specified SteamID.
+ Results are returned in .
+
+ A list of SteamIDs to request the info of.
+ The requested info flags.
+
+
+
+ Requests persona state for a specified SteamID.
+ Results are returned in .
+
+ A SteamID to request the info of.
+ The requested info flags.
+
+
+
+ Ignores or unignores a friend on Steam.
+ Results are returned in a .
+
+ The SteamID of the friend to ignore or unignore.
+ if set to true, the friend will be ignored; otherwise, they will be unignored.
+ The Job ID of the request. This can be used to find the appropriate .
+
+
+
+ Requests profile information for the given .
+ Results are returned in a .
+
+ The SteamID of the friend to request the details of.
+ The Job ID of the request. This can be used to find the appropriate .
+
+
+
+ Handles a client message. This should not be called directly.
+
+ The packet message that contains the data.
+
+
+
+ This handler handles all user log on/log off related actions and callbacks.
+
+
+
+
+ This callback is returned in response to an attempt to log on to the Steam3 network through .
+
+
+
+
+ Gets the result of the logon.
+
+
+
+
+ Gets the extended result of the logon.
+
+
+
+
+ Gets the out of game secs per heartbeat value.
+ This is used internally by SteamKit to initialize heartbeating.
+
+
+
+
+ Gets the in game secs per heartbeat value.
+ This is used internally by SteamKit to initialize heartbeating.
+
+
+
+
+ Gets or sets the public IP of the client
+
+
+
+
+ Gets the Steam3 server time.
+
+
+
+
+ Gets the account flags assigned by the server.
+
+
+
+
+ Gets the client steam ID.
+
+
+
+
+ Gets the email domain.
+
+
+
+
+ Gets the Steam2 CellID.
+
+
+
+
+ Gets the Steam2 CellID ping threshold.
+
+
+
+
+ Gets the Steam2 ticket.
+ This is used for authenticated content downloads in Steam2.
+ This field will only be set when has been set to true.
+
+
+
+
+ Gets a value indicating whether the client should use PICS.
+
+
+
+
+ Gets the WebAPI authentication user nonce.
+
+
+
+
+ Gets the IP country code.
+
+
+
+
+ Gets the vanity URL.
+
+
+
+
+ Gets the threshold for login failures before Steam wants the client to migrate to a new CM.
+
+
+
+
+ Gets the threshold for disconnects before Steam wants the client to migrate to a new CM.
+
+
+
+
+ This callback is returned when the client is told to log off by the server.
+
+
+
+
+ Gets the result of the log off.
+
+ The result.
+
+
+
+ This callback is returned some time after logging onto the network.
+
+
+
+
+ Gets the login key.
+
+ The login key.
+
+
+
+ Gets the unique ID.
+
+ The unique ID.
+
+
+
+ This callback is fired when the client recieves it's unique Steam3 session token. This token is used for authenticated content downloading in Steam2.
+
+
+
+
+ Gets the Steam3 session token used for authenticating to various other services.
+
+
+
+
+ This callback is received when account information is recieved from the network.
+ This generally happens after logon.
+
+
+
+
+ Gets the last recorded persona name used by this account.
+
+
+
+
+ Gets the country this account is connected from.
+
+
+
+
+ Gets the salt used for the password.
+
+
+
+
+ Gets the SHA-1 disgest of the password.
+
+
+
+
+ Gets the count of SteamGuard authenticated computers.
+
+
+
+
+ Gets a value indicating whether this account is locked with IPT.
+
+
+ true if this account is locked with IPT; otherwise, false.
+
+
+
+
+ Gets the account flags for this account.
+
+
+
+
+ Gets the facebook ID of this account if it is linked with facebook.
+
+
+
+
+ Gets the facebook name if this account is linked with facebook.
+
+
+
+
+ This callback is received when wallet info is recieved from the network.
+
+
+
+
+ Gets a value indicating whether this instance has wallet data.
+
+
+ true if this instance has wallet data; otherwise, false.
+
+
+
+
+ Gets the currency code for this wallet.
+
+
+
+
+ Gets the balance of the wallet, in cents.
+
+
+
+
+ This callback is received when the backend wants the client to update it's local machine authentication data.
+
+
+
+
+ Represents various one-time-password details.
+
+
+
+
+ Gets the OTP type.
+
+
+
+
+ Gets the OTP identifier.
+
+
+
+
+ Gets the OTP shared secret.
+
+
+
+
+ Gets the OTP time drift.
+
+
+
+
+ Implicitly converts into .
+
+ The details to convert.
+
+
+
+
+ Gets the sentry file data that should be written.
+
+
+
+
+ Gets the number of bytes to write.
+
+
+
+
+ Gets the offset to write to.
+
+
+
+
+ Gets the name of the sentry file to write.
+
+
+
+
+ Gets the one-time-password details.
+
+
+
+
+ This callback is received when requesting a new WebAPI authentication user nonce.
+
+
+
+
+ Gets the result of the request.
+
+
+
+
+ Gets the authentication nonce.
+
+
+
+
+ This callback is fired when the client receives a marketing message update.
+
+
+
+
+ Represents a single marketing message.
+
+
+
+
+ Gets the unique identifier for this marketing message.
+
+
+
+
+ Gets the URL for this marketing message.
+
+
+
+
+ Gets the marketing message flags.
+
+
+
+
+ Gets the time of this marketing message update.
+
+
+
+
+ Gets the messages.
+
+
+
+
+ Represents the details required to log into Steam3 as a user.
+
+
+
+
+ Gets or sets the username.
+
+ The username.
+
+
+
+ Gets or sets the password.
+
+ The password.
+
+
+
+ Gets or sets the CellID.
+
+ The CellID.
+
+
+
+ Gets or sets the Steam Guard auth code used to login. This is the code sent to the user's email.
+
+ The auth code.
+
+
+
+ Gets or sets the 2-factor auth code used to login. This is the code that can be received from the authenticator apps.
+
+ The two factor auth code.
+
+
+
+ Gets or sets the login key used to login. This is a key that has been recieved in a previous Steam sesson by a .
+
+ The login key.
+
+
+
+ Gets or sets the 'Should Remember Password' flag. This is used in combination with the login key and for password-less login.
+
+ The 'Should Remember Password' flag.
+
+
+
+ Gets or sets the sentry file hash for this logon attempt, or null if no sentry file is available.
+
+ The sentry file hash.
+
+
+
+ Gets or sets the account instance. 1 for the PC instance or 2 for the Console (PS3) instance.
+
+ The account instance.
+
+
+
+
+
+ Gets or sets the account ID used for connecting clients when using the Console instance.
+
+
+ The account ID.
+
+
+
+
+
+ Gets or sets a value indicating whether to request the Steam2 ticket.
+ This is an optional request only needed for Steam2 content downloads.
+
+
+ true if the Steam2 ticket should be requested; otherwise, false.
+
+
+
+
+ Gets or sets the client operating system type.
+
+ The client operating system type.
+
+
+
+ Gets or sets the client language.
+
+ The client language.
+
+
+
+ Initializes a new instance of the class.
+
+
+
+
+ Represents the details required to log into Steam3 as an anonymous user.
+
+
+
+
+ Gets or sets the CellID.
+
+ The CellID.
+
+
+
+ Gets or sets the client operating system type.
+
+ The client operating system type.
+
+
+
+ Gets or sets the client language.
+
+ The client language.
+
+
+
+ Initializes a new instance of the class.
+
+
+
+
+ Represents details required to complete a machine auth request.
+
+
+
+
+ The One-Time-Password details for this response.
+
+
+
+
+ Gets or sets the one-time-password type.
+
+
+
+
+ Gets or sets the one-time-password identifier.
+
+
+
+
+ Gets or sets the one-time-password value.
+
+
+
+
+ Gets or sets the target Job ID for the request.
+ This is provided in the for a .
+
+ The Job ID.
+
+
+
+ Gets or sets the result of updating the machine auth.
+
+ The result.
+
+
+
+ Gets or sets the number of bytes written for the sentry file.
+
+ The number of bytes written.
+
+
+
+ Gets or sets the offset within the sentry file that was written.
+
+ The offset.
+
+
+
+ Gets or sets the filename of the sentry file that was written.
+
+ The name of the sentry file.
+
+
+
+ Gets or sets the size of the sentry file.
+
+ / The size of the sentry file.
+
+
+
+ Gets or sets the last error that occurred while writing the sentry file, or 0 if no error occurred.
+
+ The last error.
+
+
+
+ Gets or sets the SHA-1 hash of the sentry file.
+
+ The sentry file hash.
+
+
+
+ Gets or sets the one-time-password details.
+
+ The one time password details.
+
+
+
+ Initializes a new instance of the class.
+
+
+
+
+ Gets the SteamID of this client. This value is assigned after a logon attempt has succeeded.
+
+ The SteamID.
+
+
+
+ Logs the client into the Steam3 network.
+ The client should already have been connected at this point.
+ Results are returned in a .
+
+ The details to use for logging on.
+ No logon details were provided.
+ Username or password are not set within .
+
+
+
+ Logs the client into the Steam3 network as an anonymous user.
+ The client should already have been connected at this point.
+ Results are returned in a .
+
+
+
+
+ Logs the client into the Steam3 network as an anonymous user.
+ The client should already have been connected at this point.
+ Results are returned in a .
+
+ The details to use for logging on.
+
+
+
+ Logs the user off of the Steam3 network.
+ This method does not disconnect the client.
+ Results are returned in a .
+
+
+
+
+ Sends a machine auth response.
+ This should normally be used in response to a .
+
+ The details pertaining to the response.
+
+
+
+ Requests a new WebAPI authentication user nonce.
+ Results are returned in a .
+
+ The Job ID of the request. This can be used to find the appropriate .
+
+
+
+ Accepts the new Login Key provided by a .
+
+ The callback containing the new Login Key.
+
+
+
+ Handles a client message. This should not be called directly.
+
+ The packet message that contains the data.
+
+
+
+ A callback message
+
+
+
+
+ The that this callback is associated with. If there is no job associated,
+ then this will be
+
+
+
+
+ Useful extensions for ICallbackMsg
+
+
+
+
+ Determines whether this callback is a certain type.
+
+ The type to check against.
+
+ true if this callback is the type specified; otherwise, false.
+
+
+ msg is null.
+
+
+
+
+ Invokes the specified handler delegate if the callback matches the type parameter.
+
+ The type to check against.
+ The callback in question.
+ The handler to invoke.
+
+ true if the callback matches and the handler was called; otherwise, false.
+
+
+ msg is null or handler is null.
+
+
+
+
+ Represents the base object all callbacks are based off.
+
+
+
+
+ Initializes a new instance of the class.
+
+
+
+
+ Gets or sets the job ID this callback refers to. If it is not a job callback, it will be .
+
+
+
+
+ Represents a single client that connects to the Steam3 network.
+ This class is also responsible for handling the registration of client message handlers and callbacks.
+
+
+
+
+ This callback is received after attempting to connect to the Steam network.
+
+
+
+
+ Gets the result of the connection attempt.
+
+ The result.
+
+
+
+ This callback is received when the steamclient is physically disconnected from the Steam network.
+
+
+
+
+ If true, the disconnection was initiated by calling .
+ If false, the disconnection was the cause of something not user-controlled, such as a network failure or
+ a forcible disconnection by the remote server.
+
+
+
+
+ This callback is received when the client has received the CM list from Steam.
+
+
+
+
+ Gets the CM server list.
+
+
+
+
+ This callback is fired when the client receives a list of all publically available Steam3 servers.
+ This callback may be fired multiple times for different server lists.
+
+
+
+
+ Gets the server list.
+
+
+
+
+ Initializes a new instance of the class with a specific connection type.
+
+ The connection type to use.
+
+
+
+ Adds a new handler to the internal list of message handlers.
+
+ The handler to add.
+ A handler of that type is already registered.
+
+
+
+ Removes a registered handler by name.
+
+ The handler name to remove.
+
+
+
+ Removes a registered handler.
+
+ The handler to remove.
+
+
+
+ Returns a registered handler.
+
+ The type of the handler to cast to. Must derive from ClientMsgHandler.
+
+ A registered handler on success, or null if the handler could not be found.
+
+
+
+
+ Gets the next callback object in the queue.
+ This function does not dequeue the callback, you must call FreeLastCallback after processing it.
+
+ The next callback in the queue, or null if no callback is waiting.
+
+
+
+ Gets the next callback object in the queue, and optionally frees it.
+
+ if set to true this function also frees the last callback if one existed.
+ The next callback in the queue, or null if no callback is waiting.
+
+
+
+ Blocks the calling thread until a callback object is posted to the queue.
+ This function does not dequeue the callback, you must call FreeLastCallback after processing it.
+
+ The callback object from the queue.
+
+
+
+ Blocks the calling thread until a callback object is posted to the queue, or null after the timeout has elapsed.
+ This function does not dequeue the callback, you must call FreeLastCallback after processing it.
+
+ The length of time to block.
+ A callback object from the queue if a callback has been posted, or null if the timeout has elapsed.
+
+
+
+ Blocks the calling thread until a callback object is posted to the queue, and optionally frees it.
+
+ if set to true this function also frees the last callback.
+ The callback object from the queue.
+
+
+
+ Blocks the calling thread until a callback object is posted to the queue, and optionally frees it.
+
+ if set to true this function also frees the last callback.
+ The length of time to block.
+ A callback object from the queue if a callback has been posted, or null if the timeout has elapsed.
+
+
+
+ Frees the last callback in the queue.
+
+
+
+
+ Posts a callback to the queue. This is normally used directly by client message handlers.
+
+ The message.
+
+
+
+ Returns the next available JobID for job based messages.
+ This function is thread-safe.
+
+ The next available JobID.
+
+
+
+ Called when a client message is received from the network.
+
+ The packet message.
+
+
+
+ Called when the client is physically disconnected from Steam3.
+
+
+
+
+ This class implements the base requirements every message handler should inherit from.
+
+
+
+
+ Gets the underlying for use in sending replies.
+
+
+
+
+ Initializes a new instance of the class.
+
+
+
+
+ Handles a client message. This should not be called directly.
+
+ The packet message that contains the data.
+
+
+
+ This 64bit structure represents an app, mod, shortcut, or p2p file on the Steam network.
+
+
+
+
+ Represents various types of games.
+
+
+
+
+ A Steam application.
+
+
+
+
+ A game modification.
+
+
+
+
+ A shortcut to a program.
+
+
+
+
+ A peer-to-peer file.
+
+
+
+
+ Initializes a new instance of the class.
+
+
+
+
+ Initializes a new instance of the class.
+
+ The 64bit integer to assign this GameID from.
+
+
+
+ Initializes a new instance of the class.
+
+ The 32bit app id to assign this GameID from.
+
+
+
+ Sets the various components of this GameID from a 64bit integer form.
+
+ The 64bit integer to assign this GameID from.
+
+
+
+ Converts this GameID into it's 64bit integer form.
+
+ A 64bit integer representing this GameID.
+
+
+
+ Performs an implicit conversion from to .
+
+ The GameID to convert..
+
+ The result of the conversion.
+
+
+
+
+ Performs an implicit conversion from to .
+
+ The GameId to convert.
+
+ The result of the conversion.
+
+
+
+
+ Performs an implicit conversion from to .
+
+ The 64bit integer representing a GameID to convert.
+
+ The result of the conversion.
+
+
+
+
+ Gets or sets the app id.
+
+
+ The app IDid
+
+
+
+
+ Gets or sets the type of the app.
+
+
+ The type of the app.
+
+
+
+
+ Gets or sets the mod id.
+
+
+ The mod ID.
+
+
+
+
+ Gets a value indicating whether this instance is a mod.
+
+
+ true if this instance is a mod; otherwise, false.
+
+
+
+
+ Gets a value indicating whether this instance is a shortcut.
+
+
+ true if this instance is a shortcut; otherwise, false.
+
+
+
+
+ Gets a value indicating whether this instance is a peer-to-peer file.
+
+
+ true if this instance is a p2p file; otherwise, false.
+
+
+
+
+ Gets a value indicating whether this instance is a steam app.
+
+
+ true if this instance is a steam app; otherwise, false.
+
+
+
+
+ Determines whether the specified is equal to this instance.
+
+ The to compare with this instance.
+
+ true if the specified is equal to this instance; otherwise, false.
+
+
+
+
+ Determines whether the specified is equal to this instance.
+
+ The to compare with this instance.
+
+ true if the specified is equal to this instance; otherwise, false.
+
+
+
+
+ Implements the operator ==.
+
+ The left side GameID.
+ The right side GameID.
+
+ The result of the operator.
+
+
+
+
+ Implements the operator !=.
+
+ The left side GameID.
+ The right side GameID.
+
+ The result of the operator.
+
+
+
+
+ Returns a hash code for this instance.
+
+
+ A hash code for this instance, suitable for use in hashing algorithms and data structures like a hash table.
+
+
+
+
+ Returns a that represents this instance.
+
+
+ A that represents this instance.
+
+
+
+
+ Represents a recursive string key to arbitrary value container.
+
+
+
+
+ Initializes a new instance of the class.
+
+ The optional name of the root key.
+ The optional value assigned to the root key.
+
+
+
+ Represents an invalid given when a searched for child does not exist.
+
+
+
+
+ Gets or sets the name of this instance.
+
+
+
+
+ Gets or sets the value of this instance.
+
+
+
+
+ Gets the children of this instance.
+
+
+
+
+ Gets or sets the child with the specified key.
+ When retrieving by key, if no child with the given key exists, is returned.
+
+
+
+
+ Returns the value of this instance as a string.
+
+ The value of this instance as a string.
+
+
+
+ Attempts to convert and return the value of this instance as an integer.
+ If the conversion is invalid, the default value is returned.
+
+ The default value to return if the conversion is invalid.
+ The value of this instance as an integer.
+
+
+
+ Attempts to convert and return the value of this instance as a long.
+ If the conversion is invalid, the default value is returned.
+
+ The default value to return if the conversion is invalid.
+ The value of this instance as a long.
+
+
+
+ Attempts to convert and return the value of this instance as an unsigned long.
+ If the conversion is invalid, the default value is returned.
+
+ The default value to return if the conversion is invalid.
+ The value of this instance as an unsigned long.
+
+
+
+ Attempts to convert and return the value of this instance as a float.
+ If the conversion is invalid, the default value is returned.
+
+ The default value to return if the conversion is invalid.
+ The value of this instance as a float.
+
+
+
+ Attempts to convert and return the value of this instance as a boolean.
+ If the conversion is invalid, the default value is returned.
+
+ The default value to return if the conversion is invalid.
+ The value of this instance as a boolean.
+
+
+
+ Attempts to convert and return the value of this instance as an enum.
+ If the conversion is invalid, the default value is returned.
+
+ The default value to return if the conversion is invalid.
+ The value of this instance as an enum.
+
+
+
+ Returns a that represents this instance.
+
+
+ A that represents this instance.
+
+
+
+
+ Attempts to load the given filename as a text .
+
+ The path to the file to load.
+ a instance if the load was successful, or null on failure.
+
+ This method will swallow any exceptions that occur when reading, use if you wish to handle exceptions.
+
+
+
+
+ Attempts to load the given filename as a binary .
+
+ The path to the file to load.
+ a instance if the load was successful, or null on failure.
+
+
+
+ Attempts to load the given filename as a binary .
+
+ The path to the file to load.
+ The resulting object if the load was successful, or null if unsuccessful.
+ true if the load was successful, or false on failure.
+
+
+
+ Attempts to create an instance of from the given input text.
+
+ The input text to load.
+ a instance if the load was successful, or null on failure.
+
+ This method will swallow any exceptions that occur when reading, use if you wish to handle exceptions.
+
+
+
+
+ Populate this instance from the given as a text .
+
+ The input to read from.
+ true if the read was successful; otherwise, false.
+
+
+
+ Opens and reads the given filename as text.
+
+
+ The file to open and read.
+ true if the read was successful; otherwise, false.
+
+
+
+ Saves this instance to file.
+
+ The file path to save to.
+ If set to true, saves this instance as binary.
+
+
+
+ Saves this instance to a given .
+
+ The to save to.
+ If set to true, saves this instance as binary.
+
+
+
+ Populate this instance from the given as a binary .
+
+ The input to read from.
+ true if the read was successful; otherwise, false.
+
+
+
+ Populate this instance from the given as a binary .
+
+ The input to read from.
+ true if the read was successful; otherwise, false.
+
+
+
+ Represents the binary Steam3 manifest format.
+
+
+
+
+ Interface all debug log listeners must implement in order to register themselves.
+
+
+
+
+ Called when the DebugLog wishes to inform listeners of debug spew.
+
+ The category of the message.
+ The message to log.
+
+
+
+ Represents the root debug logging functionality.
+
+
+
+
+ Gets or sets a value indicating whether debug logging is enabled.
+
+
+ true if enabled; otherwise, false.
+
+
+
+
+ Initializes the class.
+
+
+
+
+ Adds a listener.
+
+ The listener.
+
+
+
+ Adds an action listener.
+
+ The listener action.
+
+
+
+ Removes a listener.
+
+ The listener.
+
+
+
+ Removes a listener.
+
+ The previously registered listener action.
+
+
+
+ Clears all registered listeners from the .
+
+
+
+
+ Writes a line to the debug log, informing all listeners.
+
+ The category of the message.
+ A composite format string.
+ An System.Object array containing zero or more objects to format.
+
+
+
+ Checks for a condition; if the condition is false, outputs a specified message and displays a message box that shows the call stack.
+ This method is equivalent to System.Diagnostics.Debug.Assert, however, it is tailored to spew failed assertions into the SteamKit debug log.
+
+ The conditional expression to evaluate. If the condition is true, the specified message is not sent and the message box is not displayed.
+ The category of the message.
+ The message to display if the assertion fails.
+
+
+
+ Contains various utility functions for dealing with dates.
+
+
+
+
+ Converts a given unix timestamp to a DateTime
+
+ A unix timestamp expressed as seconds since the unix epoch
+ DateTime representation
+
+
+
+ Converts a given DateTime into a unix timestamp representing seconds since the unix epoch.
+
+ DateTime to be expressed
+ 64-bit wide representation
+
+
+
+ Contains various utility functions for handling EMsgs.
+
+
+
+
+ Strips off the protobuf message flag and returns an EMsg.
+
+ The message number.
+ The underlying EMsg.
+
+
+
+ Strips off the protobuf message flag and returns an EMsg.
+
+ The message number.
+ The underlying EMsg.
+
+
+
+ Strips off the protobuf message flag and returns an EMsg.
+
+ The message number.
+ The underlying EMsg.
+
+
+
+ Determines whether message is protobuf flagged.
+
+ The message.
+
+ true if this message is protobuf flagged; otherwise, false.
+
+
+
+
+ Determines whether message is protobuf flagged.
+
+ The message.
+
+ true if this message is protobuf flagged; otherwise, false.
+
+
+
+
+ Crafts an EMsg, flagging it if required.
+
+ The EMsg to flag.
+ if set to true, the message is protobuf flagged.
+ A crafted EMsg, flagged if requested.
+
+
+
+ Crafts an EMsg, flagging it if required.
+
+ The EMsg to flag.
+ if set to true, the message is protobuf flagged.
+ A crafted EMsg, flagged if requested.
+
+
+
+ Connects to the specified end point.
+
+ The end point.
+ Timeout in milliseconds
+
+
+
+ Nets the loop.
+
+
+
+
+ Seconds to wait before sending packets.
+
+
+
+
+ Seconds to wait before considering the connection dead.
+
+
+
+
+ Maximum number of packets to resend when RESEND_DELAY is exceeded.
+
+
+
+
+ Maximum number of packets that we can be waiting on at a time.
+
+
+
+
+ Contains information about the state of the connection, used to filter out packets that are
+ unexpected or not valid given the state of the connection.
+
+
+
+
+ The next outgoing sequence number to be used.
+
+
+
+
+ The highest sequence number of an outbound packet that has been sent.
+
+
+
+
+ The sequence number of the highest packet acknowledged by the server.
+
+
+
+
+ The sequence number we plan on acknowledging receiving with the next Ack. All packets below or equal
+ to inSeq *must* have been received, but not necessarily handled.
+
+
+
+
+ The highest sequence number we've acknowledged receiving.
+
+
+
+
+ The highest sequence number we've processed.
+
+
+
+
+ Connects to the specified CM server.
+
+ The CM server.
+ Timeout in milliseconds
+
+
+
+ Disconnects this instance, blocking until the queue of messages is empty or the connection
+ is otherwise terminated.
+
+
+
+
+ Serializes and sends the provided message to the server in as many packets as is necessary.
+
+ The ClientMsg
+
+
+
+ Sends the data sequenced as a single message, splitting it into multiple parts if necessary.
+
+ The data to send.
+
+
+
+ Sends the packet as a sequenced, reliable packet.
+
+ The packet.
+
+
+
+ Sends the packets as one sequenced, reliable net message.
+
+ The packets that make up the single net message
+
+
+
+ Sends a packet immediately.
+
+ The packet.
+
+
+
+ Sends a datagram Ack, used when an Ack needs to be sent but there is no data response to piggy-back on.
+
+
+
+
+ Sends or resends sequenced messages, if necessary. Also responsible for throttling
+ the rate at which they are sent.
+
+
+
+
+ Returns the number of message parts in the next message.
+
+ Non-zero number of message parts if a message is ready to be handled, 0 otherwise
+
+
+
+ Dispatches up to one message to the rest of SteamKit
+
+ True if a message was dispatched, false otherwise
+
+
+
+ Processes incoming packets, maintains connection consistency, and oversees outgoing packets.
+
+
+
+
+ Receives the packet, performs all sanity checks and then passes it along as necessary.
+
+ The packet.
+
+
+
+ Receives the challenge and responds with a Connect request
+
+ The packet.
+
+
+
+ Receives the notification of an accepted connection and sets the connection id that will be used for the
+ connection's duration.
+
+ The packet.
+
+
+
+ Receives typical data packets before dispatching them for consumption by the rest of SteamKit
+
+ The packet.
+
+
+
+ Sets the network encryption filter for this connection
+
+ filter implementing
+
+
+
+ Represents data that has been received over the network.
+
+
+
+
+ Occurs when a net message is recieved over the network.
+
+
+
+
+ Raises the event.
+
+ The instance containing the event data.
+
+
+
+ The of the current connection.
+ This is non-null between and , inclusive.
+
+
+
+
+ Occurs when the physical connection is established.
+
+
+
+
+ Occurs when the physical connection is broken.
+
+
+
+
+ Connects to the specified end point.
+
+ The end point.
+ Timeout in milliseconds
+
+
+
+ Disconnects this instance.
+
+
+
+
+ Sends the specified client net message.
+
+ The client net message.
+
+
+
+ Gets the local IP.
+
+ The local IP.
+
+
+
+ Sets the network encryption filter for this connection
+
+ filter implementing
+
+
+
+ Contains the public keys that Steam uses for each of the
+ types.
+
+
+
+
+ Gets the public key for the given universe.
+
+ The public key.
+ The universe.
+
+
+
+ Handles encrypting and decrypting using the RSA public key encryption
+ algorithm.
+
+
+
+
+ Initializes a new instance of the class.
+
+ The public key to encrypt with.
+
+
+
+ Encrypt the specified input.
+
+ The encrypted input.
+ The input to encrypt.
+
+
+
+ Disposes of this class.
+
+
+
+
+ Provides Crypto functions used in Steam protocols
+
+
+
+
+ Performs an SHA1 hash of an input byte array
+
+
+
+
+ Encrypts using AES/CBC/PKCS7 an input byte array with a given key and IV
+
+
+
+
+ Decrypts an input byte array using AES/CBC/PKCS7 with a given key and IV
+
+
+
+
+ Performs an encryption using AES/CBC/PKCS7 with an input byte array and key, with a random IV prepended using AES/ECB/None
+
+
+
+
+ Decrypts using AES/CBC/PKCS7 with an input byte array and key, using the random IV prepended using AES/ECB/None
+
+
+
+
+ Verifies and performs a symmetricdecrypt on the input using the given password as a key
+
+
+
+
+ Performs CRC32 on an input byte array using the CrcStandard.Crc32Bit parameters
+
+
+
+
+ Performs an Adler32 on the given input
+
+
+
+
+ Generate an array of random bytes given the input length
+
+
+
+
+ This 64-bit structure is used for identifying various objects on the Steam network.
+
+
+
+
+ The account instance value when representing all instanced SteamIDs.
+
+
+
+
+ The account instance value for a desktop .
+
+
+
+
+ The account instance value for a console .
+
+
+
+
+ The account instance for mobile or web based SteamIDs.
+
+
+
+
+ Masking value used for the account id.
+
+
+
+
+ Masking value used for packing chat instance flags into a .
+
+
+
+
+ Represents various flags a chat may have, packed into its instance.
+
+
+
+
+ This flag is set for clan based chat SteamIDs.
+
+
+
+
+ This flag is set for lobby based chat SteamIDs.
+
+
+
+
+ This flag is set for matchmaking lobby based chat SteamIDs.
+
+
+
+
+ Initializes a new instance of the class.
+
+
+
+
+ Initializes a new instance of the class.
+
+ The account ID.
+ The universe.
+ The account type.
+
+
+
+ Initializes a new instance of the class.
+
+ The account ID.
+ The instance.
+ The universe.
+ The account type.
+
+
+
+ Initializes a new instance of the class.
+
+ The 64bit integer to assign this SteamID from.
+
+
+
+ Initializes a new instance of the class from a Steam2 "STEAM_" rendered form.
+ This constructor assumes the rendered SteamID is in the public universe.
+
+ A "STEAM_" rendered form of the SteamID.
+
+
+
+ Initializes a new instance of the class from a Steam2 "STEAM_" rendered form and universe.
+
+ A "STEAM_" rendered form of the SteamID.
+ The universe the SteamID belongs to.
+
+
+
+ Sets the various components of this SteamID instance.
+
+ The account ID.
+ The universe.
+ The account type.
+
+
+
+ Sets the various components of this SteamID instance.
+
+ The account ID.
+ The instance.
+ The universe.
+ The account type.
+
+
+
+ Sets the various components of this SteamID from a Steam2 "STEAM_" rendered form and universe.
+
+ A "STEAM_" rendered form of the SteamID.
+ The universe the SteamID belongs to.
+ true if this instance was successfully assigned; otherwise, false if the given string was in an invalid format.
+
+
+
+ Sets the various components of this SteamID from a Steam3 "[X:1:2:3]" rendered form and universe.
+
+ A "[X:1:2:3]" rendered form of the SteamID.
+ true if this instance was successfully assigned; otherwise, false if the given string was in an invalid format.
+
+
+
+ Sets the various components of this SteamID from a 64bit integer form.
+
+ The 64bit integer to assign this SteamID from.
+
+
+
+ Converts this SteamID into it's 64bit integer form.
+
+ A 64bit integer representing this SteamID.
+
+
+
+ Returns a static account key used for grouping accounts with differing instances.
+
+ A 64bit static account key.
+
+
+
+ Gets a value indicating whether this instance is a blank anonymous account
+
+
+ true if this instance is a blank anon account; otherwise, false.
+
+
+
+
+ Gets a value indicating whether this instance is a game server account.
+
+
+ true if this instance is a game server account; otherwise, false.
+
+
+
+
+ Gets a value indicating whether this instance is a persistent game server account.
+
+
+ true if this instance is a persistent game server account; otherwise, false.
+
+
+
+
+ Gets a value indicating whether this instance is an anonymous game server account.
+
+
+ true if this instance is an anon game server account; otherwise, false.
+
+
+
+
+ Gets a value indicating whether this instance is a content server account.
+
+
+ true if this instance is a content server account; otherwise, false.
+
+
+
+
+ Gets a value indicating whether this instance is a clan account.
+
+
+ true if this instance is a clan account; otherwise, false.
+
+
+
+
+ Gets a value indicating whether this instance is a chat account.
+
+
+ true if this instance is a chat account; otherwise, false.
+
+
+
+
+ Gets a value indicating whether this instance is a lobby.
+
+
+ true if this instance is a lobby; otherwise, false.
+
+
+
+
+ Gets a value indicating whether this instance is an individual account.
+
+
+ true if this instance is an individual account; otherwise, false.
+
+
+
+
+ Gets a value indicating whether this instance is an anonymous account.
+
+
+ true if this instance is an anon account; otherwise, false.
+
+
+
+
+ Gets a value indicating whether this instance is an anonymous user account.
+
+
+ true if this instance is an anon user account; otherwise, false.
+
+
+
+
+ Gets a value indicating whether this instance is a console user account.
+
+
+ true if this instance is a console user account; otherwise, false.
+
+
+
+
+ Gets a value indicating whether this instance is valid.
+
+
+ true if this instance is valid; otherwise, false.
+
+
+
+
+ Gets or sets the account id.
+
+
+ The account id.
+
+
+
+
+ Gets or sets the account instance.
+
+
+ The account instance.
+
+
+
+
+ Gets or sets the account type.
+
+
+ The account type.
+
+
+
+
+ Gets or sets the account universe.
+
+
+ The account universe.
+
+
+
+
+ Renders this instance into it's Steam2 "STEAM_" or Steam3 representation.
+
+ If set to true, the Steam3 rendering will be returned; otherwise, the Steam2 STEAM_ rendering.
+
+ A string Steam2 "STEAM_" representation of this SteamID, or a Steam3 representation.
+
+
+
+
+ Returns a that represents this instance.
+
+
+ A that represents this instance.
+
+
+
+
+ Performs an implicit conversion from to .
+
+ The SteamID.
+
+ The result of the conversion.
+
+
+
+
+ Performs an implicit conversion from to .
+
+ A 64bit integer representing the SteamID.
+
+ The result of the conversion.
+
+
+
+
+ Determines whether the specified is equal to this instance.
+
+ The to compare with this instance.
+
+ true if the specified is equal to this instance; otherwise, false.
+
+
+
+
+ Determines whether the specified is equal to this instance.
+
+ The to compare with this instance.
+
+ true if the specified is equal to this instance; otherwise, false.
+
+
+
+
+ Implements the operator ==.
+
+ The left side SteamID.
+ The right side SteamID.
+
+ The result of the operator.
+
+
+
+
+ Implements the operator !=.
+
+ The left side SteamID.
+ The right side SteamID.
+
+ The result of the operator.
+
+
+
+
+ Returns a hash code for this instance.
+
+
+ A hash code for this instance, suitable for use in hashing algorithms and data structures like a hash table.
+
+
+
+
+ The exception that is thrown when an error in input stream occurs during decoding.
+
+
+
+
+ The exception that is thrown when the value of an argument is outside the allowable range.
+
+
+
+
+ Callback progress.
+
+
+ input size. -1 if unknown.
+
+
+ output size. -1 if unknown.
+
+
+
+
+ Codes streams.
+
+
+ input Stream.
+
+
+ output Stream.
+
+
+ input Size. -1 if unknown.
+
+
+ output Size. -1 if unknown.
+
+
+ callback progress reference.
+
+
+ if input stream is not valid
+
+
+
+
+ Provides the fields that represent properties idenitifiers for compressing.
+
+
+
+
+ Specifies default property.
+
+
+
+
+ Specifies size of dictionary.
+
+
+
+
+ Specifies size of memory for PPM*.
+
+
+
+
+ Specifies order for PPM methods.
+
+
+
+
+ Specifies Block Size.
+
+
+
+
+ Specifies number of postion state bits for LZMA (0 <= x <= 4).
+
+
+
+
+ Specifies number of literal context bits for LZMA (0 <= x <= 8).
+
+
+
+
+ Specifies number of literal position bits for LZMA (0 <= x <= 4).
+
+
+
+
+ Specifies number of fast bytes for LZ*.
+
+
+
+
+ Specifies match finder. LZMA: "BT2", "BT4" or "BT4B".
+
+
+
+
+ Specifies the number of match finder cyckes.
+
+
+
+
+ Specifies number of passes.
+
+
+
+
+ Specifies number of algorithm.
+
+
+
+
+ Specifies the number of threads.
+
+
+
+
+ Specifies mode with end marker.
+
+
+
+
diff --git a/packages/SteamKit2.1.6.5/readme.txt b/packages/SteamKit2.1.6.5/readme.txt
new file mode 100644
index 000000000..432122162
--- /dev/null
+++ b/packages/SteamKit2.1.6.5/readme.txt
@@ -0,0 +1,339 @@
+------------------------------------------------------------------------------
+v 1.6.5 Oct 17, 2015
+------------------------------------------------------------------------------
+* Added inventory service unified protobufs.
+* Added the ability to specify the client's prefered Cell ID in `LogOnDetails.CellID`. (pr #148)
+* `KeyValue` objects can now be serialized (both text and binary) to streams with `SaveToStream`.
+* Fixed an issue with `CDNClient` session initialization involving sessionid values.
+* Added setter for `KeyValue`'s indexer operator.
+* Added `ELeaderboardDisplayType` and various leaderboard retrieval functions to `SteamUserStats`. (pr #153)
+* Implemented machine id support for logon for when the Steam servers inevitably require it. (pr #152)
+* Fixed case where logging on with a different account could lead to an anonymous logon instead. (bug #160)
+* `SteamFriends.SetPersonaName` now supports `JobID`s and has a new associated callback: `PersonaChangeCallback`
+* Updated game-related GC messages and protobufs.
+
+
+------------------------------------------------------------------------------
+v 1.6.4 Aug 03, 2015
+------------------------------------------------------------------------------
+* Added smarter server selection logic.
+* Added ability to load initial server list from Steam Directory Web API. See `SteamDirectory.Initialize`.
+* Added ability to persist internal server list. See Sample 7 for details.
+* Added `SteamFriends.InviteUserToChat`.
+* Added support in `SteamUser` for passwordless login with a login key.
+* Added `NumChatMembers`, `ChatRoomName` and `ChatMembers` to `ChatEnterCallback`.
+* Added new API for callback subscriptions, `CallbackManager.Subscribe`.
+* Added `SteamApps.RequestFreeLicense` to request Free On-Demand licences.
+* Exposed `ClientOSType` and `ClientLanguage` when logging in as a specific or as an anonymous user.
+* Fixed `KeyValue` binary deserialization returning a dummy parent node containing the actually deserialized `KeyValue`. You must change to the new `Try`-prefixed methods to adopt the fixed behavior.
+* Updated Steam enums and protobufs.
+* Updated game-related GC messages and protobufs.
+
+DEPRECATIONS
+* `ICallbackMsg.IsType<>` and `ICallbackMsg.Handle<>` are deprecated and will be removed soon in a future version of SteamKit. Please use `CallbackManager.Subscribe` instead.
+* `Callback` is deprecated and will be removed in a future version of SteamKit. Please use `CallbackManager.Subscribe` instead.
+* `KeyValue.ReadAsBinary` and `KeyValue.LoadAsBinary` are deprecated and will be removed in a future version of SteamKit. Use the `Try`-prefixed methods as outlined above.
+
+
+------------------------------------------------------------------------------
+v 1.6.3 Jun 20, 2015
+------------------------------------------------------------------------------
+
+* Added support for parsing older representations of Steam3 Steam IDs such as those from Counter-Strike: Global Offensive, i.e. `[M:1:123(456)]`.
+* Steam IDs parsed from Steam3 string representations will now have the correct instance ID set.
+* KeyValues can now be serialized to binary, however all values will be serialized as the string type.
+* Improved reliability of TCP connections to the CM and UFS servers.
+* Added `UserInitiated` property to `SteamClient.DisconnectedCallback` and `UFSClient.DisconnectedCallback` to indicate whether a disconnect was caused by the user, or by another source (Steam servers, bad network connection).
+* Updated Steam protobufs.
+* Updated game-related GC messages and protobufs.
+
+
+------------------------------------------------------------------------------
+v 1.6.2 Dec 16, 2014
+------------------------------------------------------------------------------
+
+* Fixed a crash when receiving a `ServiceMethod` message.
+* Fixed `ServiceMethodCallback.RpcName` having a leading '.' character (e.g. '.MethodName' instead of 'MethodName).
+* Fixed web responses in `CDNClient` not being closed, which could lead to running out of system resources.
+* Added error handling for `ClientMsgHandler`. Any unhandled exceptions will be logged to `DebugLog` and trigger `SteamClient` to disconnect.
+* Updated `EMsg` list.
+* Updated Steam protobufs.
+* Updated game-related GC messages and protobufs.
+
+
+------------------------------------------------------------------------------
+v 1.6.1 Nov 30, 2014
+------------------------------------------------------------------------------
+
+* Added support for VZip when decompressing depot chunks.
+* Improved thread safety and error handling inside `TcpConnection`.
+* Added `DownloadDepotChunk` overload for consumers who insist on connecting to particular CDNs.
+* Updated `EResult` with the new field `NotModified`.
+* Updated `EMsg` list.
+* Updated `EOSType`.
+ * The short names for Windows versions (e.g. `Win8` instead of `Windows8`) are preferred.
+ * Addded `MacOS1010` for OS X 10.10 'Yosemite'
+* Removed various long-obsolete values from enums where the value was renamed.
+* Removed `EUniverse.RC`.
+* Updated game related GC messages and protobufs.
+
+
+------------------------------------------------------------------------------
+v 1.6.0 Oct 11, 2014
+------------------------------------------------------------------------------
+
+* Updated EOSType for newer Linux and Windows versions.
+* A LoggedOnCallback with EResult.NoConnection is now posted when attempting to logon without being
+ connected to the remote Steam server.
+* Fixed anonymous gameserver logon.
+* CDNClient.Server's constructor now accepts a DnsEndPoint.
+* Updated EResult with the following new fields: AccountLogonDeniedNeedTwoFactorCode, ItemDeleted,
+ AccountLoginDeniedThrottle, TwoFactorCodeMismatch
+* Added public utility class for working with DateTime and unix epochs: DateUtils
+* Added GetSingleFileInfo, ShareFile and related callbacks for dealing with Steam cloud files with the
+ SteamCloud handler.
+* Fixed a potential crash when failing to properly deserialize network messages.
+* Updated EMsg list.
+* Refactored the internals of tcp connections to Steam servers to be more resiliant and threadsafe.
+* CallbackMsg.Handle will now return a boolean indiciating that the passed in callback matches the
+ generic type parameter.
+* Added support for logging into accounts with two-factor auth enabled. See the
+ SteamUser.LogOnDetails.TwoFactorCode field.
+* Updated the bootstrap list of Steam CM servers that SteamKit will initially attempt to connect to.
+* Added SteamFriends.FriendMsgEchoCallback for echoed messages sent to other logged in client
+ instances.
+* Updated game related GC messages and protobufs.
+
+BREAKING CHANGES
+* JobCallback API has been merged with Callback. For help with transitioning code, please see the following
+ wiki notes: https://github.com/SteamRE/SteamKit/wiki/JobCallback-Transition.
+* UFSClient.UploadFileResponseCallback.JobID has been renamed to RemoteJobID in order to not conflict with
+ CallbackMsg's new JobID member.
+* UFSClient.UploadDetails.JobID has been renamed to RemoteJobID.
+* CDNClient has been refactored to support multiple authdepot calls for a single instance of the client
+ and to support CDN servers.
+* The following EResult fields have been renamed:
+ PSNAccountNotLinked -> ExternalAccountUnlinked
+ InvalidPSNTicket -> PSNTicketInvalid
+ PSNAccountAlreadyLinked -> ExternalAccountAlreadyLinked
+
+
+------------------------------------------------------------------------------
+v 1.5.1 Mar 15, 2014
+------------------------------------------------------------------------------
+
+* Added a parameterless public constructor to DepotManifest.ChunkData to support serialization.
+* SteamWorkshop.RequestPublishedFileDetails has been obsoleted and is no longer supported. This functionality will be
+ dropped in a future SteamKit release. See the the PublishedFile WebAPI service for a functional replacement.
+* Added the request and response messages for the PublishedFile service.
+* Fixed an unhandled exception when requesting metadata-only PICS product info.
+* Exposed the following additional fields in the LoggedOnCallback: VanityURL, NumLoginFailuresToMigrate, NumDisconnectsToMigrate.
+* Exposed the HTTP url details for PICS product info, see: PICSProductInfoCallback.PICSProductInfo.HttpUri and UseHttp.
+* Added EEconTradeResponse.InitiatorPasswordResetProbation and InitiatorNewDeviceCooldown.
+* Fixed SteamGameServer.LogOn and LogOnAnonymous sending the wrong message.
+* Added support for token authentication for game server logon.
+* Added the request and response messages for the GameServers service.
+* Added the ability to specify server type for game servers, see: SteamGameServer.SendStatus.
+* Exposed a few more fields on TradeResultCallback: NumDaysSteamGuardRequired, NumDaysNewDeviceCooldown,
+ DefaultNumDaysPasswordResetProbation, NumDaysPasswordResetProbation.
+* Fixed being unable to download depot manifests.
+* Added SteamID.SetFromSteam3String.
+* Obsoleted SteamApps.SendGuestPass. This functionality will be dropped in a future SteamKit release.
+* Updated EResult with the following new fields: UnexpectedError, Disabled, InvalidCEGSubmission, RestrictedDevice.
+* Updated EMsg list.
+* Updated game related GC messages.
+
+BREAKING CHANGES
+* Fixed ServiceMethodResponse.RpcName containing a leading '.'.
+
+
+------------------------------------------------------------------------------
+v 1.5.0 Oct 26, 2013
+------------------------------------------------------------------------------
+
+* Added DebugLog.ClearListeners().
+* Added WebAPI.AsyncInterface, a .NET TPL'd version of WebAPI.Interface.
+* Added SteamClient.ServerListCallback.
+* Added SteamUser.WebAPIUserNonceCallback, and a method to request it: SteamUser.RequestWebAPIUserNonce().
+* Added SteamUser.MarketingMessageCallback.
+* Added a new member to CMClient: CellID. This is the Steam server's recommended CellID.
+* Added the ability to specify AccountID in SteamUser.LogOnDetails.
+* Added a helper API to SteamUnifiedMessages for service messages.
+* Fixed issue where CallbackManager was not triggering for JobCallback.
+* Fixed unhandled protobuf-net exception when (de)serializing messages with enums that are out of date.
+* Fixed a bug where all WebAPI.Interface requests would instantly timeout.
+* Fixed Manifest.HashFileName and Manifest.HashContent being swapped.
+* Updated Emsg list.
+* Updated game related GC messages.
+* Updated the following enums: EResult, EChatEntryType, EAccountFlags, EClanPermission, EFriendFlags, EOSType, EServerType,
+ EBillingType, EChatMemberStateChange, EDepotFileFlag, EEconTradeResponse.
+* The following members of EChatRoomEnterResponse have been obsoleted: NoRankingDataLobby, NoRankingDataUser, RankOutOfRange.
+* EOSType.Win7 has been obsoleted and renamed to EOSType.Windows7.
+* EEconTradeResponse.InitiatorAlreadyTrading has been obsoleted and renamed to EEconTradeResponse.AlreadyTrading.
+* EEconTradeResponse.Error has been obsoleted and renamed to EEconTradeResponse.AlreadyHasTradeRequest.
+* EEconTradeResponse.Timeout has been obsoleted and renamed to EEconTradeResponse.NoResponse.
+* EChatEntryType.Emote has been obsoleted. Emotes are no longer supported by Steam.
+* SteamFriends.ProfileInfoCallback.RecentPlaytime has been obsoleted. This data is no longer sent by the Steam servers.
+* Updated to latest protobuf-net.
+
+BREAKING CHANGES
+* SteamUser.LoggedOnCallback.Steam2Ticket is now exposed as a byte array, rather than a Steam2Ticket object.
+* The SteamKit2.Blob namespace and all related classes have been removed.
+* Support for Steam2 servers and the various classes within SteamKit have been removed.
+* CDNClient has been heavily refactored to be more developer friendly.
+* All DateTimes in callbacks are now DateTimeKind.Utc.
+
+
+------------------------------------------------------------------------------
+v 1.4.1 Jul 15, 2013
+------------------------------------------------------------------------------
+
+* Added the ability to manipulate UFS (Steam cloud) files with UFSClient.
+* Added SteamScreenshots handler for interacting with user screenshots.
+* Added an optional parameter to SteamID.Render() to render SteamIDs to their Steam3 representations.
+* Added the ability to specify the timeout of WebAPI requests with Interface.Timeout.
+* The RSACrypto and KeyDictionary utility classes are now accessible to consumers.
+* Updated EMsg list.
+* Updated game related GC messages.
+
+
+------------------------------------------------------------------------------
+v 1.4.0 Jun 08, 2013
+------------------------------------------------------------------------------
+
+* KeyValues now correctly writes out strings in UTF8.
+* Fixed an exception that could occur with an invalid string passed to SteamID's constructor.
+* Added SteamFriends.ClanStateCallback.
+* Added EPersonaStateFlag. This value is now exposed in SteamFriends.PersonaStateCallback.
+* Added MsgClientCreateChat and MsgClientCreateChatResponse messages.
+* Added GlobalID base class for globally unique values (such as JobIDs, UGCHandles) in Steam.
+* Updated EMsg list.
+* Updated game related GC messages.
+* Added initial support for the Steam Cloud file system with UFSClient. This feature should be considered unstable and may
+ have breaking changes in the future.
+
+BREAKING CHANGES
+* STATIC_CALLBACKS builds of SteamKit have now been completely removed.
+* Message classes for unified messages have moved namespaces from SteamKit2.Steamworks to SteamKit2.Unified.Internal.
+
+
+------------------------------------------------------------------------------
+v 1.3.1 Mar 10, 2013
+------------------------------------------------------------------------------
+
+* Fixed issue where the avatar hash of a clan was always null.
+* Introduced better handling of networking related cryptographic exceptions.
+* Updated EMsg list.
+* Exposed SteamClient.JobCallback for external consumers.
+* STATIC_CALLBACK builds of SteamKit and related code has been obsoleted and will be removed in the next version.
+* Implemented GameID.ToString().
+* Implemented game pass sending and recieving with SteamApps.SendGuestPass(), SteamApps.GuestPassListCallback, and
+ SteamApps.SendGuestPassCallback.
+* Implemented requesting Steam community profile info with SteamFriends.RequestProfileInfo(), and SteamFriends.ProfileInfoCallback
+* CMClient now exposes a ConnectionTimeout field to control the timeout when connecting to Steam. The default timeout is 5 seconds.
+* Updated the internal list of CM servers to help alleviate some issues with connecting to dead servers.
+* Implemented SteamClient.CMListCallback to retrieve the current list of CM servers.
+* Implemented initial support for unified messages through the SteamUnifiedMessages handler.
+
+BREAKING CHANGES
+* CMClient.Connect has been refactored significantly. It is no longer possible to use unencrypted connections. The Connect function
+ now accepts an IPEndPoint to allow consumers to specify which Steam server they wish to connect to. Along with this,
+ CMClient.Servers is now exposed as a collection of IPEndPoints, instead of IPAddresses.
+* SteamApps.PackageInfoCallback now exposes the immediate child KeyValue for the data, to be more consistent with
+ SteamApps.AppInfoCallback.
+
+
+------------------------------------------------------------------------------
+v 1.3.0 Jan 16, 2013
+------------------------------------------------------------------------------
+
+* Fixed case where friend and chat messages were incorrectly trimming the last character.
+* Steam2 ServerClient now exposes a IsConnected property.
+* Steam2 ContentServerClient can now optionally not perform a server handshake when opening a storage session.
+* Added various enums: EClanPermission, EMarketingMessageFlags, ENewsUpdateType, ESystemIMType, EChatFlags,
+ ERemoteStoragePlatform, EDRMBlobDownloadType, EDRMBlobDownloadErrorDetail, EClientStat, EClientStatAggregateMethod,
+ ELeaderboardDataRequest, ELeaderboardSortMethod, ELeaderboardUploadScoreMethod, and EChatPermission.
+* Fixed case where SteamKit was throwing an unhandled exception during Steam3 tcp connection teardown.
+* Added PICS support to the SteamApps handler: PICSGetAccessTokens, PICSGetChangesSince, and PICSGetProductInfo.
+* Added anonymous download support to CDNClient.
+* Updated the following enums: EMsg, EUniverse, EChatEntryType, EPersonaState, EFriendRelationship, EFriendFlags,
+ EClientPersonaStateFlag, ELicenseFlags, ELicenseType, EPaymentMethod, EIntroducerRouting, EClanRank, EClanRelationship,
+ EAppInfoSection, EContentDownloadSourceType, EOSType, EServerType, ECurrencyCode, EDepotFileFlag, EEconTradeResponse,
+ ESystemIMType, ERemoteStoragePlatform, and EResult.
+* Exposed the following properties in SteamUser.LoggedOnCallback: CellIDPingThreshold, UsePICS, WebAPIUserNonce, and
+ IPCountryCode.
+* Fixed case where SteamKit was incorrectly handling certain logoff messages during Steam server unavailability.
+* Fixed potential crash in Steam2 ContentServerClient when opening a storage session.
+* Updated to latest protobuf-net.
+
+BREAKING CHANGES
+* DepotManifest.ChunkData.CRC is now named DepotManifest.ChunkData.Checksum.
+
+
+------------------------------------------------------------------------------
+v 1.2.2 Nov 11, 2012
+------------------------------------------------------------------------------
+
+* Fixed critical issue that occured while serializing protobuf messages.
+
+
+------------------------------------------------------------------------------
+v 1.2.1 Nov 11, 2012
+------------------------------------------------------------------------------
+
+* Added EPersonaState.LookingToTrade and EPersonaState.LookingToPlay.
+* Added SteamFriends.UnbanChatMember.
+* Removed GeneralDSClient.GetAuthServerList as Steam2 auth servers no longer exist.
+* Removed dependency on Classless.Hasher.
+* Updated to latest protobuf-net.
+
+
+------------------------------------------------------------------------------
+v 1.2.0 Nov 04, 2012
+------------------------------------------------------------------------------
+
+* Fixed issue where LoginKeyCallback was being passed incorrect data.
+* Fixed ClientGCMsg PacketMessage constructor.
+* WebAPI list and array parameters are now accepted and flattened to x[n]=y format.
+* Fixed KeyValue issue when multiple duplicate children exist.
+* Updated protobuf definitions for internal message classes to their latest definitions.
+* Updated EMsgs.
+* Fixed critical MsgMulti handling.
+* Added EEconTradeResponse.
+* Added SteamTrading client message handler.
+* Modified Steam3 TCP socket shutdown to play well with Mono.
+* Modified CMClient.Connect method to be properly async.
+* Implemented friend blocking/unblocking with SteamFriends.IgnoreFriend and SteamFriends.IgnoreFriendCallback.
+* Fixed gameserver logon.
+* Local user is now given the persona name [unassigned] before SteamUser.AccountInfoCallback comes in.
+* Updated SteamKit2's bootstrap CM list, this should reduce how often SK2 will connect to an offline/dead server.
+* Steam2 ServerClient's now expose a ConnectionTimeout member.
+
+BREAKING CHANGES
+* Dota GC EMsgs are now longer located in SteamKit2.GC.Dota.EGCMsg, they are now in SteamKit2.Gc.Dota.Internal.EDOTAGCMsg.
+* Base GC EMsgs are now longer located in SyteamKit2.GC.EGCMsgBase, they are now in multiple enums in the SteamKit2.GC.Internal namespace:
+ EGCBaseMsg, EGCSystemMsg, EGCSharedMsg, ESOMsg, EGCItemMsg
+* SteamApps.AppInfoCallback now exposes the immediate child KeyValue for every Section, instead of an empty root parent.
+
+
+------------------------------------------------------------------------------
+v 1.1.0 May 14, 2012
+------------------------------------------------------------------------------
+
+* Added SteamWorkshop for enumerating and requesting details of published workshop files.
+* Large overhaul of SteamGameCoordinator to support the sending and receiving of GC messages.
+* Added SteamFriends ChatInviteCallback.
+* Added SteamFriends KickChatMember and BanChatMember.
+* Fixed invalid handling of PackageInfoCallback response.
+* Updated protobuf definitions for internal message classes to their latest definitions.
+
+BREAKING CHANGES
+* Consumers of SteamClient.JobCallback will have to change their handler functions to take a "JobID" parameter instead of a "ulong".
+ These are functionally equivalent, and JobIDs can be implicitly casted to and from ulongs.
+
+
+------------------------------------------------------------------------------
+v 1.0.0 Feb 26, 2012
+------------------------------------------------------------------------------
+
+* Initial release.
diff --git a/packages/protobuf-net.2.0.0.668/lib/net20-cf/protobuf-net.dll b/packages/protobuf-net.2.0.0.668/lib/net20-cf/protobuf-net.dll
new file mode 100644
index 000000000..1b9cb8c4e
Binary files /dev/null and b/packages/protobuf-net.2.0.0.668/lib/net20-cf/protobuf-net.dll differ
diff --git a/packages/protobuf-net.2.0.0.668/lib/net20-cf/protobuf-net.xml b/packages/protobuf-net.2.0.0.668/lib/net20-cf/protobuf-net.xml
new file mode 100644
index 000000000..dcbe26f6d
--- /dev/null
+++ b/packages/protobuf-net.2.0.0.668/lib/net20-cf/protobuf-net.xml
@@ -0,0 +1,2529 @@
+
+
+
+ protobuf-net
+
+
+
+
+ Provides support for common .NET types that do not have a direct representation
+ in protobuf, using the definitions from bcl.proto
+
+
+
+
+ Creates a new instance of the specified type, bypassing the constructor.
+
+ The type to create
+ The new instance
+ If the platform does not support constructor-skipping
+
+
+
+ Writes a TimeSpan to a protobuf stream
+
+
+
+
+ Parses a TimeSpan from a protobuf stream
+
+
+
+
+ Parses a DateTime from a protobuf stream
+
+
+
+
+ Writes a DateTime to a protobuf stream
+
+
+
+
+ Parses a decimal from a protobuf stream
+
+
+
+
+ Writes a decimal to a protobuf stream
+
+
+
+
+ Writes a Guid to a protobuf stream
+
+
+
+
+ Parses a Guid from a protobuf stream
+
+
+
+
+ Reads an *implementation specific* bundled .NET object, including (as options) type-metadata, identity/re-use, etc.
+
+
+
+
+ Writes an *implementation specific* bundled .NET object, including (as options) type-metadata, identity/re-use, etc.
+
+
+
+
+ Optional behaviours that introduce .NET-specific functionality
+
+
+
+
+ No special behaviour
+
+
+
+
+ Enables full object-tracking/full-graph support.
+
+
+
+
+ Embeds the type information into the stream, allowing usage with types not known in advance.
+
+
+
+
+ If false, the constructor for the type is bypassed during deserialization, meaning any field initializers
+ or other initialization code is skipped.
+
+
+
+
+ Should the object index be reserved, rather than creating an object promptly
+
+
+
+
+ Provides a simple buffer-based implementation of an extension object.
+
+
+
+
+ Provides addition capability for supporting unexpected fields during
+ protocol-buffer serialization/deserialization. This allows for loss-less
+ round-trip/merge, even when the data is not fully understood.
+
+
+
+
+ Requests a stream into which any unexpected fields can be persisted.
+
+ A new stream suitable for storing data.
+
+
+
+ Indicates that all unexpected fields have now been stored. The
+ implementing class is responsible for closing the stream. If
+ "commit" is not true the data may be discarded.
+
+ The stream originally obtained by BeginAppend.
+ True if the append operation completed successfully.
+
+
+
+ Requests a stream of the unexpected fields previously stored.
+
+ A prepared stream of the unexpected fields.
+
+
+
+ Indicates that all unexpected fields have now been read. The
+ implementing class is responsible for closing the stream.
+
+ The stream originally obtained by BeginQuery.
+
+
+
+ Requests the length of the raw binary stream; this is used
+ when serializing sub-entities to indicate the expected size.
+
+ The length of the binary stream representing unexpected data.
+
+
+ Specifies a method on the root-contract in an hierarchy to be invoked before serialization.
+
+
+ Specifies a method on the root-contract in an hierarchy to be invoked after serialization.
+
+
+ Specifies a method on the root-contract in an hierarchy to be invoked before deserialization.
+
+
+ Specifies a method on the root-contract in an hierarchy to be invoked after deserialization.
+
+
+
+ Sub-format to use when serializing/deserializing data
+
+
+
+
+ Uses the default encoding for the data-type.
+
+
+
+
+ When applied to signed integer-based data (including Decimal), this
+ indicates that zigzag variant encoding will be used. This means that values
+ with small magnitude (regardless of sign) take a small amount
+ of space to encode.
+
+
+
+
+ When applied to signed integer-based data (including Decimal), this
+ indicates that two's-complement variant encoding will be used.
+ This means that any -ve number will take 10 bytes (even for 32-bit),
+ so should only be used for compatibility.
+
+
+
+
+ When applied to signed integer-based data (including Decimal), this
+ indicates that a fixed amount of space will be used.
+
+
+
+
+ When applied to a sub-message, indicates that the value should be treated
+ as group-delimited.
+
+
+
+
+ Simple base class for supporting unexpected fields allowing
+ for loss-less round-tips/merge, even if the data is not understod.
+ The additional fields are (by default) stored in-memory in a buffer.
+
+ As an example of an alternative implementation, you might
+ choose to use the file system (temporary files) as the back-end, tracking
+ only the paths [such an object would ideally be IDisposable and use
+ a finalizer to ensure that the files are removed].
+
+
+
+
+ Indicates that the implementing type has support for protocol-buffer
+ extensions.
+
+ Can be implemented by deriving from Extensible.
+
+
+
+ Retrieves the extension object for the current
+ instance, optionally creating it if it does not already exist.
+
+ Should a new extension object be
+ created if it does not already exist?
+ The extension object if it exists (or was created), or null
+ if the extension object does not exist or is not available.
+ The createIfMissing argument is false during serialization,
+ and true during deserialization upon encountering unexpected fields.
+
+
+
+ Retrieves the extension object for the current
+ instance, optionally creating it if it does not already exist.
+
+ Should a new extension object be
+ created if it does not already exist?
+ The extension object if it exists (or was created), or null
+ if the extension object does not exist or is not available.
+ The createIfMissing argument is false during serialization,
+ and true during deserialization upon encountering unexpected fields.
+
+
+
+ Provides a simple, default implementation for extension support,
+ optionally creating it if it does not already exist. Designed to be called by
+ classes implementing .
+
+ Should a new extension object be
+ created if it does not already exist?
+ The extension field to check (and possibly update).
+ The extension object if it exists (or was created), or null
+ if the extension object does not exist or is not available.
+ The createIfMissing argument is false during serialization,
+ and true during deserialization upon encountering unexpected fields.
+
+
+
+ Appends the value as an additional (unexpected) data-field for the instance.
+ Note that for non-repeated sub-objects, this equates to a merge operation;
+ for repeated sub-objects this adds a new instance to the set; for simple
+ values the new value supercedes the old value.
+
+ Note that appending a value does not remove the old value from
+ the stream; avoid repeatedly appending values for the same field.
+ The type of the value to append.
+ The extensible object to append the value to.
+ The field identifier; the tag should not be defined as a known data-field for the instance.
+ The value to append.
+
+
+
+ Appends the value as an additional (unexpected) data-field for the instance.
+ Note that for non-repeated sub-objects, this equates to a merge operation;
+ for repeated sub-objects this adds a new instance to the set; for simple
+ values the new value supercedes the old value.
+
+ Note that appending a value does not remove the old value from
+ the stream; avoid repeatedly appending values for the same field.
+ The data-type of the field.
+ The data-format to use when encoding the value.
+ The extensible object to append the value to.
+ The field identifier; the tag should not be defined as a known data-field for the instance.
+ The value to append.
+
+
+
+ Queries an extensible object for an additional (unexpected) data-field for the instance.
+ The value returned is the composed value after merging any duplicated content; if the
+ value is "repeated" (a list), then use GetValues instead.
+
+ The data-type of the field.
+ The extensible object to obtain the value from.
+ The field identifier; the tag should not be defined as a known data-field for the instance.
+ The effective value of the field, or the default value if not found.
+
+
+
+ Queries an extensible object for an additional (unexpected) data-field for the instance.
+ The value returned is the composed value after merging any duplicated content; if the
+ value is "repeated" (a list), then use GetValues instead.
+
+ The data-type of the field.
+ The extensible object to obtain the value from.
+ The field identifier; the tag should not be defined as a known data-field for the instance.
+ The data-format to use when decoding the value.
+ The effective value of the field, or the default value if not found.
+
+
+
+ Queries an extensible object for an additional (unexpected) data-field for the instance.
+ The value returned (in "value") is the composed value after merging any duplicated content;
+ if the value is "repeated" (a list), then use GetValues instead.
+
+ The data-type of the field.
+ The effective value of the field, or the default value if not found.
+ The extensible object to obtain the value from.
+ The field identifier; the tag should not be defined as a known data-field for the instance.
+ True if data for the field was present, false otherwise.
+
+
+
+ Queries an extensible object for an additional (unexpected) data-field for the instance.
+ The value returned (in "value") is the composed value after merging any duplicated content;
+ if the value is "repeated" (a list), then use GetValues instead.
+
+ The data-type of the field.
+ The effective value of the field, or the default value if not found.
+ The extensible object to obtain the value from.
+ The field identifier; the tag should not be defined as a known data-field for the instance.
+ The data-format to use when decoding the value.
+ True if data for the field was present, false otherwise.
+
+
+
+ Queries an extensible object for an additional (unexpected) data-field for the instance.
+ The value returned (in "value") is the composed value after merging any duplicated content;
+ if the value is "repeated" (a list), then use GetValues instead.
+
+ The data-type of the field.
+ The effective value of the field, or the default value if not found.
+ The extensible object to obtain the value from.
+ The field identifier; the tag should not be defined as a known data-field for the instance.
+ The data-format to use when decoding the value.
+ Allow tags that are present as part of the definition; for example, to query unknown enum values.
+ True if data for the field was present, false otherwise.
+
+
+
+ Queries an extensible object for an additional (unexpected) data-field for the instance.
+ Each occurrence of the field is yielded separately, making this usage suitable for "repeated"
+ (list) fields.
+
+ The extended data is processed lazily as the enumerator is iterated.
+ The data-type of the field.
+ The extensible object to obtain the value from.
+ The field identifier; the tag should not be defined as a known data-field for the instance.
+ An enumerator that yields each occurrence of the field.
+
+
+
+ Queries an extensible object for an additional (unexpected) data-field for the instance.
+ Each occurrence of the field is yielded separately, making this usage suitable for "repeated"
+ (list) fields.
+
+ The extended data is processed lazily as the enumerator is iterated.
+ The data-type of the field.
+ The extensible object to obtain the value from.
+ The field identifier; the tag should not be defined as a known data-field for the instance.
+ The data-format to use when decoding the value.
+ An enumerator that yields each occurrence of the field.
+
+
+
+ Queries an extensible object for an additional (unexpected) data-field for the instance.
+ The value returned (in "value") is the composed value after merging any duplicated content;
+ if the value is "repeated" (a list), then use GetValues instead.
+
+ The data-type of the field.
+ The model to use for configuration.
+ The effective value of the field, or the default value if not found.
+ The extensible object to obtain the value from.
+ The field identifier; the tag should not be defined as a known data-field for the instance.
+ The data-format to use when decoding the value.
+ Allow tags that are present as part of the definition; for example, to query unknown enum values.
+ True if data for the field was present, false otherwise.
+
+
+
+ Queries an extensible object for an additional (unexpected) data-field for the instance.
+ Each occurrence of the field is yielded separately, making this usage suitable for "repeated"
+ (list) fields.
+
+ The extended data is processed lazily as the enumerator is iterated.
+ The model to use for configuration.
+ The data-type of the field.
+ The extensible object to obtain the value from.
+ The field identifier; the tag should not be defined as a known data-field for the instance.
+ The data-format to use when decoding the value.
+ An enumerator that yields each occurrence of the field.
+
+
+
+ Appends the value as an additional (unexpected) data-field for the instance.
+ Note that for non-repeated sub-objects, this equates to a merge operation;
+ for repeated sub-objects this adds a new instance to the set; for simple
+ values the new value supercedes the old value.
+
+ Note that appending a value does not remove the old value from
+ the stream; avoid repeatedly appending values for the same field.
+ The model to use for configuration.
+ The data-format to use when encoding the value.
+ The extensible object to append the value to.
+ The field identifier; the tag should not be defined as a known data-field for the instance.
+ The value to append.
+
+
+
+ This class acts as an internal wrapper allowing us to do a dynamic
+ methodinfo invoke; an't put into Serializer as don't want on public
+ API; can't put into Serializer<T> since we need to invoke
+ accross classes, which isn't allowed in Silverlight)
+
+
+
+
+ All this does is call GetExtendedValuesTyped with the correct type for "instance";
+ this ensures that we don't get issues with subclasses declaring conflicting types -
+ the caller must respect the fields defined for the type they pass in.
+
+
+
+
+ All this does is call GetExtendedValuesTyped with the correct type for "instance";
+ this ensures that we don't get issues with subclasses declaring conflicting types -
+ the caller must respect the fields defined for the type they pass in.
+
+
+
+
+ Not all frameworks are created equal (fx1.1 vs fx2.0,
+ micro-framework, compact-framework,
+ silverlight, etc). This class simply wraps up a few things that would
+ otherwise make the real code unnecessarily messy, providing fallback
+ implementations if necessary.
+
+
+
+
+ Intended to be a direct map to regular TypeCode, but:
+ - with missing types
+ - existing on WinRT
+
+
+
+
+ Specifies the method used to infer field tags for members of the type
+ under consideration. Tags are deduced using the invariant alphabetic
+ sequence of the members' names; this makes implicit field tags very brittle,
+ and susceptible to changes such as field names (normally an isolated
+ change).
+
+
+
+
+ No members are serialized implicitly; all members require a suitable
+ attribute such as [ProtoMember]. This is the recmomended mode for
+ most scenarios.
+
+
+
+
+ Public properties and fields are eligible for implicit serialization;
+ this treats the public API as a contract. Ordering beings from ImplicitFirstTag.
+
+
+
+
+ Public and non-public fields are eligible for implicit serialization;
+ this acts as a state/implementation serializer. Ordering beings from ImplicitFirstTag.
+
+
+
+
+ Represents the set of serialization callbacks to be used when serializing/deserializing a type.
+
+
+
+ Called before serializing an instance
+
+
+ Called before deserializing an instance
+
+
+ Called after serializing an instance
+
+
+ Called after deserializing an instance
+
+
+
+ True if any callback is set, else False
+
+
+
+
+ Represents a type at runtime for use with protobuf, allowing the field mappings (etc) to be defined
+
+
+
+
+ Get the name of the type being represented
+
+
+
+
+ Adds a known sub-type to the inheritance model
+
+
+
+
+ Adds a known sub-type to the inheritance model
+
+
+
+
+ Assigns the callbacks to use during serialiation/deserialization.
+
+ The method (or null) called before serialization begins.
+ The method (or null) called when serialization is complete.
+ The method (or null) called before deserialization begins (or when a new instance is created during deserialization).
+ The method (or null) called when deserialization is complete.
+ The set of callbacks.
+
+
+
+ Assigns the callbacks to use during serialiation/deserialization.
+
+ The name of the method (or null) called before serialization begins.
+ The name of the method (or null) called when serialization is complete.
+ The name of the method (or null) called before deserialization begins (or when a new instance is created during deserialization).
+ The name of the method (or null) called when deserialization is complete.
+ The set of callbacks.
+
+
+
+ Designate a factory-method to use to create instances of this type
+
+
+
+
+ Designate a factory-method to use to create instances of this type
+
+
+
+
+ Throws an exception if the type has been made immutable
+
+
+
+
+ Adds a member (by name) to the MetaType
+
+
+
+
+ Adds a member (by name) to the MetaType, returning the ValueMember rather than the fluent API.
+ This is otherwise identical to Add.
+
+
+
+
+ Adds a member (by name) to the MetaType
+
+
+
+
+ Performs serialization of this type via a surrogate; all
+ other serialization options are ignored and handled
+ by the surrogate's configuration.
+
+
+
+
+ Adds a set of members (by name) to the MetaType
+
+
+
+
+ Adds a member (by name) to the MetaType
+
+
+
+
+ Adds a member (by name) to the MetaType, including an itemType and defaultType for representing lists
+
+
+
+
+ Adds a member (by name) to the MetaType, including an itemType and defaultType for representing lists, returning the ValueMember rather than the fluent API.
+ This is otherwise identical to Add.
+
+
+
+
+ Returns the ValueMember instances associated with this type
+
+
+
+
+ Returns the SubType instances associated with this type
+
+
+
+
+ Gets the base-type for this type
+
+
+
+
+ When used to compile a model, should public serialization/deserialzation methods
+ be included for this type?
+
+
+
+
+ Should this type be treated as a reference by default?
+
+
+
+
+ Indicates whether the current type has defined callbacks
+
+
+
+
+ Indicates whether the current type has defined subtypes
+
+
+
+
+ Returns the set of callbacks defined for this type
+
+
+
+
+ Gets or sets the name of this contract.
+
+
+
+
+ The runtime type that the meta-type represents
+
+
+
+
+ Gets or sets whether the type should use a parameterless constructor (the default),
+ or whether the type should skip the constructor completely. This option is not supported
+ on compact-framework.
+
+
+
+
+ The concrete type to create when a new instance of this type is needed; this may be useful when dealing
+ with dynamic proxies, or with interface-based APIs
+
+
+
+
+ Returns the ValueMember that matchs a given field number, or null if not found
+
+
+
+
+ Returns the ValueMember that matchs a given member (property/field), or null if not found
+
+
+
+
+ Gets or sets a value indicating that an enum should be treated directly as an int/short/etc, rather
+ than enforcing .proto enum rules. This is useful *in particul* for [Flags] enums.
+
+
+
+
+ Gets or sets a value indicating that this type should NOT be treated as a list, even if it has
+ familiar list-like characteristics (enumerable, add, etc)
+
+
+
+
+ Provides protobuf serialization support for a number of types that can be defined at runtime
+
+
+
+
+ Provides protobuf serialization support for a number of types
+
+
+
+
+ Resolve a System.Type to the compiler-specific type
+
+
+
+
+ Resolve a System.Type to the compiler-specific type
+
+
+
+
+ This is the more "complete" version of Serialize, which handles single instances of mapped types.
+ The value is written as a complete field, including field-header and (for sub-objects) a
+ length-prefix
+ In addition to that, this provides support for:
+ - basic values; individual int / string / Guid / etc
+ - IEnumerable sequences of any type handled by TrySerializeAuxiliaryType
+
+
+
+
+
+ Writes a protocol-buffer representation of the given instance to the supplied stream.
+
+ The existing instance to be serialized (cannot be null).
+ The destination stream to write to.
+
+
+
+ Writes a protocol-buffer representation of the given instance to the supplied stream.
+
+ The existing instance to be serialized (cannot be null).
+ The destination stream to write to.
+ Additional information about this serialization operation.
+
+
+
+ Writes a protocol-buffer representation of the given instance to the supplied writer.
+
+ The existing instance to be serialized (cannot be null).
+ The destination writer to write to.
+
+
+
+ Applies a protocol-buffer stream to an existing instance (or null), using length-prefixed
+ data - useful with network IO.
+
+ The type being merged.
+ The existing instance to be modified (can be null).
+ The binary stream to apply to the instance (cannot be null).
+ How to encode the length prefix.
+ The tag used as a prefix to each record (only used with base-128 style prefixes).
+ The updated instance; this may be different to the instance argument if
+ either the original instance was null, or the stream defines a known sub-type of the
+ original instance.
+
+
+
+ Applies a protocol-buffer stream to an existing instance (or null), using length-prefixed
+ data - useful with network IO.
+
+ The type being merged.
+ The existing instance to be modified (can be null).
+ The binary stream to apply to the instance (cannot be null).
+ How to encode the length prefix.
+ The tag used as a prefix to each record (only used with base-128 style prefixes).
+ Used to resolve types on a per-field basis.
+ The updated instance; this may be different to the instance argument if
+ either the original instance was null, or the stream defines a known sub-type of the
+ original instance.
+
+
+
+ Applies a protocol-buffer stream to an existing instance (or null), using length-prefixed
+ data - useful with network IO.
+
+ The type being merged.
+ The existing instance to be modified (can be null).
+ The binary stream to apply to the instance (cannot be null).
+ How to encode the length prefix.
+ The tag used as a prefix to each record (only used with base-128 style prefixes).
+ Used to resolve types on a per-field basis.
+ Returns the number of bytes consumed by this operation (includes length-prefix overheads and any skipped data).
+ The updated instance; this may be different to the instance argument if
+ either the original instance was null, or the stream defines a known sub-type of the
+ original instance.
+
+
+
+ Reads a sequence of consecutive length-prefixed items from a stream, using
+ either base-128 or fixed-length prefixes. Base-128 prefixes with a tag
+ are directly comparable to serializing multiple items in succession
+ (use the tag to emulate the implicit behavior
+ when serializing a list/array). When a tag is
+ specified, any records with different tags are silently omitted. The
+ tag is ignored. The tag is ignores for fixed-length prefixes.
+
+ The binary stream containing the serialized records.
+ The prefix style used in the data.
+ The tag of records to return (if non-positive, then no tag is
+ expected and all records are returned).
+ On a field-by-field basis, the type of object to deserialize (can be null if "type" is specified).
+ The type of object to deserialize (can be null if "resolver" is specified).
+ The sequence of deserialized objects.
+
+
+
+ Reads a sequence of consecutive length-prefixed items from a stream, using
+ either base-128 or fixed-length prefixes. Base-128 prefixes with a tag
+ are directly comparable to serializing multiple items in succession
+ (use the tag to emulate the implicit behavior
+ when serializing a list/array). When a tag is
+ specified, any records with different tags are silently omitted. The
+ tag is ignored. The tag is ignores for fixed-length prefixes.
+
+ The binary stream containing the serialized records.
+ The prefix style used in the data.
+ The tag of records to return (if non-positive, then no tag is
+ expected and all records are returned).
+ On a field-by-field basis, the type of object to deserialize (can be null if "type" is specified).
+ The type of object to deserialize (can be null if "resolver" is specified).
+ The sequence of deserialized objects.
+ Additional information about this serialization operation.
+
+
+
+ Reads a sequence of consecutive length-prefixed items from a stream, using
+ either base-128 or fixed-length prefixes. Base-128 prefixes with a tag
+ are directly comparable to serializing multiple items in succession
+ (use the tag to emulate the implicit behavior
+ when serializing a list/array). When a tag is
+ specified, any records with different tags are silently omitted. The
+ tag is ignored. The tag is ignores for fixed-length prefixes.
+
+ The type of object to deserialize.
+ The binary stream containing the serialized records.
+ The prefix style used in the data.
+ The tag of records to return (if non-positive, then no tag is
+ expected and all records are returned).
+ The sequence of deserialized objects.
+
+
+
+ Reads a sequence of consecutive length-prefixed items from a stream, using
+ either base-128 or fixed-length prefixes. Base-128 prefixes with a tag
+ are directly comparable to serializing multiple items in succession
+ (use the tag to emulate the implicit behavior
+ when serializing a list/array). When a tag is
+ specified, any records with different tags are silently omitted. The
+ tag is ignored. The tag is ignores for fixed-length prefixes.
+
+ The type of object to deserialize.
+ The binary stream containing the serialized records.
+ The prefix style used in the data.
+ The tag of records to return (if non-positive, then no tag is
+ expected and all records are returned).
+ The sequence of deserialized objects.
+ Additional information about this serialization operation.
+
+
+
+ Writes a protocol-buffer representation of the given instance to the supplied stream,
+ with a length-prefix. This is useful for socket programming,
+ as DeserializeWithLengthPrefix can be used to read the single object back
+ from an ongoing stream.
+
+ The type being serialized.
+ The existing instance to be serialized (cannot be null).
+ How to encode the length prefix.
+ The destination stream to write to.
+ The tag used as a prefix to each record (only used with base-128 style prefixes).
+
+
+
+ Writes a protocol-buffer representation of the given instance to the supplied stream,
+ with a length-prefix. This is useful for socket programming,
+ as DeserializeWithLengthPrefix can be used to read the single object back
+ from an ongoing stream.
+
+ The type being serialized.
+ The existing instance to be serialized (cannot be null).
+ How to encode the length prefix.
+ The destination stream to write to.
+ The tag used as a prefix to each record (only used with base-128 style prefixes).
+ Additional information about this serialization operation.
+
+
+
+ Applies a protocol-buffer stream to an existing instance (which may be null).
+
+ The type (including inheritance) to consider.
+ The existing instance to be modified (can be null).
+ The binary stream to apply to the instance (cannot be null).
+ The updated instance; this may be different to the instance argument if
+ either the original instance was null, or the stream defines a known sub-type of the
+ original instance.
+
+
+
+ Applies a protocol-buffer stream to an existing instance (which may be null).
+
+ The type (including inheritance) to consider.
+ The existing instance to be modified (can be null).
+ The binary stream to apply to the instance (cannot be null).
+ The updated instance; this may be different to the instance argument if
+ either the original instance was null, or the stream defines a known sub-type of the
+ original instance.
+ Additional information about this serialization operation.
+
+
+
+ Applies a protocol-buffer stream to an existing instance (which may be null).
+
+ The type (including inheritance) to consider.
+ The existing instance to be modified (can be null).
+ The binary stream to apply to the instance (cannot be null).
+ The number of bytes to consume.
+ The updated instance; this may be different to the instance argument if
+ either the original instance was null, or the stream defines a known sub-type of the
+ original instance.
+
+
+
+ Applies a protocol-buffer stream to an existing instance (which may be null).
+
+ The type (including inheritance) to consider.
+ The existing instance to be modified (can be null).
+ The binary stream to apply to the instance (cannot be null).
+ The number of bytes to consume (or -1 to read to the end of the stream).
+ The updated instance; this may be different to the instance argument if
+ either the original instance was null, or the stream defines a known sub-type of the
+ original instance.
+ Additional information about this serialization operation.
+
+
+
+ Applies a protocol-buffer reader to an existing instance (which may be null).
+
+ The type (including inheritance) to consider.
+ The existing instance to be modified (can be null).
+ The reader to apply to the instance (cannot be null).
+ The updated instance; this may be different to the instance argument if
+ either the original instance was null, or the stream defines a known sub-type of the
+ original instance.
+
+
+
+ This is the more "complete" version of Deserialize, which handles single instances of mapped types.
+ The value is read as a complete field, including field-header and (for sub-objects) a
+ length-prefix..kmc
+
+ In addition to that, this provides support for:
+ - basic values; individual int / string / Guid / etc
+ - IList sets of any type handled by TryDeserializeAuxiliaryType
+
+
+
+
+ Creates a new runtime model, to which the caller
+ can add support for a range of types. A model
+ can be used "as is", or can be compiled for
+ optimal performance.
+
+
+
+
+ Applies common proxy scenarios, resolving the actual type to consider
+
+
+
+
+ Indicates whether the supplied type is explicitly modelled by the model
+
+
+
+
+ Provides the key that represents a given type in the current model.
+ The type is also normalized for proxies at the same time.
+
+
+
+
+ Provides the key that represents a given type in the current model.
+
+
+
+
+ Writes a protocol-buffer representation of the given instance to the supplied stream.
+
+ Represents the type (including inheritance) to consider.
+ The existing instance to be serialized (cannot be null).
+ The destination stream to write to.
+
+
+
+ Applies a protocol-buffer stream to an existing instance (which may be null).
+
+ Represents the type (including inheritance) to consider.
+ The existing instance to be modified (can be null).
+ The binary stream to apply to the instance (cannot be null).
+ The updated instance; this may be different to the instance argument if
+ either the original instance was null, or the stream defines a known sub-type of the
+ original instance.
+
+
+
+ Create a deep clone of the supplied instance; any sub-items are also cloned.
+
+
+
+
+ Indicates that while an inheritance tree exists, the exact type encountered was not
+ specified in that hierarchy and cannot be processed.
+
+
+
+
+ Indicates that the given type was not expected, and cannot be processed.
+
+
+
+
+ Indicates that the given type cannot be constructed; it may still be possible to
+ deserialize into existing instances.
+
+
+
+
+ Returns true if the type supplied is either a recognised contract type,
+ or a *list* of a recognised contract type.
+
+ Note that primitives always return false, even though the engine
+ will, if forced, try to serialize such
+ True if this type is recognised as a serializable entity, else false
+
+
+
+ Returns true if the type supplied is a basic type with inbuilt handling,
+ a recognised contract type, or a *list* of a basic / contract type.
+
+
+
+
+ Returns true if the type supplied is a basic type with inbuilt handling,
+ or a *list* of a basic type with inbuilt handling
+
+
+
+
+ Suggest a .proto definition for the given type
+
+ The type to generate a .proto definition for, or null to generate a .proto that represents the entire model
+ The .proto definition as a string
+
+
+
+ Used to provide custom services for writing and parsing type names when using dynamic types. Both parsing and formatting
+ are provided on a single API as it is essential that both are mapped identically at all times.
+
+
+
+
+ Indicates the type of callback to be used
+
+
+
+
+ Invoked before an object is serialized
+
+
+
+
+ Invoked after an object is serialized
+
+
+
+
+ Invoked before an object is deserialized (or when a new instance is created)
+
+
+
+
+ Invoked after an object is deserialized
+
+
+
+
+ Returns a sequence of the Type instances that can be
+ processed by this model.
+
+
+
+
+ Suggest a .proto definition for the given type
+
+ The type to generate a .proto definition for, or null to generate a .proto that represents the entire model
+ The .proto definition as a string
+
+
+
+ Adds support for an additional type in this model, optionally
+ appplying inbuilt patterns. If the type is already known to the
+ model, the existing type is returned **without** applying
+ any additional behaviour.
+
+ Inbuilt patterns include:
+ [ProtoContract]/[ProtoMember(n)]
+ [DataContract]/[DataMember(Order=n)]
+ [XmlType]/[XmlElement(Order=n)]
+ [On{Des|S}erializ{ing|ed}]
+ ShouldSerialize*/*Specified
+
+ The type to be supported
+ Whether to apply the inbuilt configuration patterns (via attributes etc), or
+ just add the type with no additional configuration (the type must then be manually configured).
+ The MetaType representing this type, allowing
+ further configuration.
+
+
+
+ Verifies that the model is still open to changes; if not, an exception is thrown
+
+
+
+
+ Prevents further changes to this model
+
+
+
+
+ Provides the key that represents a given type in the current model.
+
+
+
+
+ Writes a protocol-buffer representation of the given instance to the supplied stream.
+
+ Represents the type (including inheritance) to consider.
+ The existing instance to be serialized (cannot be null).
+ The destination stream to write to.
+
+
+
+ Applies a protocol-buffer stream to an existing instance (which may be null).
+
+ Represents the type (including inheritance) to consider.
+ The existing instance to be modified (can be null).
+ The binary stream to apply to the instance (cannot be null).
+ The updated instance; this may be different to the instance argument if
+ either the original instance was null, or the stream defines a known sub-type of the
+ original instance.
+
+
+
+ Designate a factory-method to use to create instances of any type; note that this only affect types seen by the serializer *after* setting the factory.
+
+
+
+
+ Global default that
+ enables/disables automatic tag generation based on the existing name / order
+ of the defined members. See
+ for usage and important warning / explanation.
+ You must set the global default before attempting to serialize/deserialize any
+ impacted type.
+
+
+
+
+ Global default that determines whether types are considered serializable
+ if they have [DataContract] / [XmlType]. With this enabled, ONLY
+ types marked as [ProtoContract] are added automatically.
+
+
+
+
+ Global switch that enables or disables the implicit
+ handling of "zero defaults"; meanning: if no other default is specified,
+ it assumes bools always default to false, integers to zero, etc.
+
+ If this is disabled, no such assumptions are made and only *explicit*
+ default values are processed. This is enabled by default to
+ preserve similar logic to v1.
+
+
+
+
+ Global switch that determines whether types with a .ToString() and a Parse(string)
+ should be serialized as strings.
+
+
+
+
+ The default model, used to support ProtoBuf.Serializer
+
+
+
+
+ Obtains the MetaType associated with a given Type for the current model,
+ allowing additional configuration.
+
+
+
+
+ Should support for unexpected types be added automatically?
+ If false, an exception is thrown when unexpected types
+ are encountered.
+
+
+
+
+ The amount of time to wait if there are concurrent metadata access operations
+
+
+
+
+ If a lock-contention is detected, this event signals the *owner* of the lock responsible for the blockage, indicating
+ what caused the problem; this is only raised if the lock-owning code successfully completes.
+
+
+
+
+ Contains the stack-trace of the owning code when a lock-contention scenario is detected
+
+
+
+
+ The stack-trace of the code that owned the lock when a lock-contention scenario occurred
+
+
+
+
+ Event-type that is raised when a lock-contention scenario is detected
+
+
+
+
+ Represents an inherited type in a type hierarchy.
+
+
+
+
+ Creates a new SubType instance.
+
+ The field-number that is used to encapsulate the data (as a nested
+ message) for the derived dype.
+ The sub-type to be considered.
+ Specific encoding style to use; in particular, Grouped can be used to avoid buffering, but is not the default.
+
+
+
+ The field-number that is used to encapsulate the data (as a nested
+ message) for the derived dype.
+
+
+
+
+ The sub-type to be considered.
+
+
+
+
+ Event arguments needed to perform type-formatting functions; this could be resolving a Type to a string suitable for serialization, or could
+ be requesting a Type from a string. If no changes are made, a default implementation will be used (from the assembly-qualified names).
+
+
+
+
+ The type involved in this map; if this is initially null, a Type is expected to be provided for the string in FormattedName.
+
+
+
+
+ The formatted-name involved in this map; if this is initially null, a formatted-name is expected from the type in Type.
+
+
+
+
+ Delegate type used to perform type-formatting functions; the sender originates as the type-model.
+
+
+
+
+ Represents a member (property/field) that is mapped to a protobuf field
+
+
+
+
+ Creates a new ValueMember instance
+
+
+
+
+ Creates a new ValueMember instance
+
+
+
+
+ Specifies methods for working with optional data members.
+
+ Provides a method (null for none) to query whether this member should
+ be serialized; it must be of the form "bool {Method}()". The member is only serialized if the
+ method returns true.
+ Provides a method (null for none) to indicate that a member was
+ deserialized; it must be of the form "void {Method}(bool)", and will be called with "true"
+ when data is found.
+
+
+
+ The number that identifies this member in a protobuf stream
+
+
+
+
+ Gets the member (field/property) which this member relates to.
+
+
+
+
+ Within a list / array / etc, the type of object for each item in the list (especially useful with ArrayList)
+
+
+
+
+ The underlying type of the member
+
+
+
+
+ For abstract types (IList etc), the type of concrete object to create (if required)
+
+
+
+
+ The type the defines the member
+
+
+
+
+ The default value of the item (members with this value will not be serialized)
+
+
+
+
+ Specifies the rules used to process the field; this is used to determine the most appropriate
+ wite-type, but also to describe subtypes within that wire-type (such as SignedVariant)
+
+
+
+
+ Indicates whether this field should follow strict encoding rules; this means (for example) that if a "fixed32"
+ is encountered when "variant" is defined, then it will fail (throw an exception) when parsing. Note that
+ when serializing the defined type is always used.
+
+
+
+
+ Indicates whether this field should use packed encoding (which can save lots of space for repeated primitive values).
+ This option only applies to list/array data of primitive types (int, double, etc).
+
+
+
+
+ Indicates whether this field should *repace* existing values (the default is false, meaning *append*).
+ This option only applies to list/array data.
+
+
+
+
+ Indicates whether this field is mandatory.
+
+
+
+
+ Enables full object-tracking/full-graph support.
+
+
+
+
+ Embeds the type information into the stream, allowing usage with types not known in advance.
+
+
+
+
+ Gets the logical name for this member in the schema (this is not critical for binary serialization, but may be used
+ when inferring a schema).
+
+
+
+
+ Should lists have extended support for null values? Note this makes the serialization less efficient.
+
+
+
+
+ Specifies the type of prefix that should be applied to messages.
+
+
+
+
+ No length prefix is applied to the data; the data is terminated only be the end of the stream.
+
+
+
+
+ A base-128 length prefix is applied to the data (efficient for short messages).
+
+
+
+
+ A fixed-length (little-endian) length prefix is applied to the data (useful for compatibility).
+
+
+
+
+ A fixed-length (big-endian) length prefix is applied to the data (useful for compatibility).
+
+
+
+
+ Indicates that a type is defined for protocol-buffer serialization.
+
+
+
+
+ Gets or sets the defined name of the type.
+
+
+
+
+ Gets or sets the fist offset to use with implicit field tags;
+ only uesd if ImplicitFields is set.
+
+
+
+
+ If specified, alternative contract markers (such as markers for XmlSerailizer or DataContractSerializer) are ignored.
+
+
+
+
+ If specified, do NOT treat this type as a list, even if it looks like one.
+
+
+
+
+ Gets or sets the mechanism used to automatically infer field tags
+ for members. This option should be used in advanced scenarios only.
+ Please review the important notes against the ImplicitFields enumeration.
+
+
+
+
+ Enables/disables automatic tag generation based on the existing name / order
+ of the defined members. This option is not used for members marked
+ with ProtoMemberAttribute, as intended to provide compatibility with
+ WCF serialization. WARNING: when adding new fields you must take
+ care to increase the Order for new elements, otherwise data corruption
+ may occur.
+
+ If not explicitly specified, the default is assumed from Serializer.GlobalOptions.InferTagFromName.
+
+
+
+ Has a InferTagFromName value been explicitly set? if not, the default from the type-model is assumed.
+
+
+
+
+ Specifies an offset to apply to [DataMember(Order=...)] markers;
+ this is useful when working with mex-generated classes that have
+ a different origin (usually 1 vs 0) than the original data-contract.
+
+ This value is added to the Order of each member.
+
+
+
+
+ If true, the constructor for the type is bypassed during deserialization, meaning any field initializers
+ or other initialization code is skipped.
+
+
+
+
+ Should this type be treated as a reference by default? Please also see the implications of this,
+ as recorded on ProtoMemberAttribute.AsReference
+
+
+
+
+ Applies only to enums (not to DTO classes themselves); gets or sets a value indicating that an enum should be treated directly as an int/short/etc, rather
+ than enforcing .proto enum rules. This is useful *in particul* for [Flags] enums.
+
+
+
+
+ Has a EnumPassthru value been explicitly set?
+
+
+
+
+ Used to define protocol-buffer specific behavior for
+ enumerated values.
+
+
+
+
+ Indicates whether this instance has a customised value mapping
+
+ true if a specific value is set
+
+
+
+ Gets or sets the specific value to use for this enum during serialization.
+
+
+
+
+ Gets or sets the defined name of the enum, as used in .proto
+ (this name is not used during serialization).
+
+
+
+
+ Indicates an error during serialization/deserialization of a proto stream.
+
+
+
+ Creates a new ProtoException instance.
+
+
+ Creates a new ProtoException instance.
+
+
+ Creates a new ProtoException instance.
+
+
+
+ Indicates that a member should be excluded from serialization; this
+ is only normally used when using implict fields.
+
+
+
+
+ Indicates that a member should be excluded from serialization; this
+ is only normally used when using implict fields. This allows
+ ProtoIgnoreAttribute usage
+ even for partial classes where the individual members are not
+ under direct control.
+
+
+
+
+ Creates a new ProtoPartialIgnoreAttribute instance.
+
+ Specifies the member to be ignored.
+
+
+
+ The name of the member to be ignored.
+
+
+
+
+ Indicates the known-types to support for an individual
+ message. This serializes each level in the hierarchy as
+ a nested message to retain wire-compatibility with
+ other protocol-buffer implementations.
+
+
+
+
+ Creates a new instance of the ProtoIncludeAttribute.
+
+ The unique index (within the type) that will identify this data.
+ The additional type to serialize/deserialize.
+
+
+
+ Creates a new instance of the ProtoIncludeAttribute.
+
+ The unique index (within the type) that will identify this data.
+ The additional type to serialize/deserialize.
+
+
+
+ Gets the unique index (within the type) that will identify this data.
+
+
+
+
+ Gets the additional type to serialize/deserialize.
+
+
+
+
+ Gets the additional type to serialize/deserialize.
+
+
+
+
+ Specifies whether the inherited sype's sub-message should be
+ written with a length-prefix (default), or with group markers.
+
+
+
+
+ Declares a member to be used in protocol-buffer serialization, using
+ the given Tag. A DataFormat may be used to optimise the serialization
+ format (for instance, using zigzag encoding for negative numbers, or
+ fixed-length encoding for large values.
+
+
+
+
+ Compare with another ProtoMemberAttribute for sorting purposes
+
+
+
+
+ Compare with another ProtoMemberAttribute for sorting purposes
+
+
+
+
+ Creates a new ProtoMemberAttribute instance.
+
+ Specifies the unique tag used to identify this member within the type.
+
+
+
+ Gets or sets the original name defined in the .proto; not used
+ during serialization.
+
+
+
+
+ Gets or sets the data-format to be used when encoding this value.
+
+
+
+
+ Gets the unique tag used to identify this member within the type.
+
+
+
+
+ Gets or sets a value indicating whether this member is mandatory.
+
+
+
+
+ Gets a value indicating whether this member is packed.
+ This option only applies to list/array data of primitive types (int, double, etc).
+
+
+
+
+ Indicates whether this field should *repace* existing values (the default is false, meaning *append*).
+ This option only applies to list/array data.
+
+
+
+
+ Enables full object-tracking/full-graph support.
+
+
+
+
+ Embeds the type information into the stream, allowing usage with types not known in advance.
+
+
+
+
+ Gets or sets a value indicating whether this member is packed (lists/arrays).
+
+
+
+
+ Additional (optional) settings that control serialization of members
+
+
+
+
+ Default; no additional options
+
+
+
+
+ Indicates that repeated elements should use packed (length-prefixed) encoding
+
+
+
+
+ Indicates that the given item is required
+
+
+
+
+ Enables full object-tracking/full-graph support
+
+
+
+
+ Embeds the type information into the stream, allowing usage with types not known in advance
+
+
+
+
+ Indicates whether this field should *repace* existing values (the default is false, meaning *append*).
+ This option only applies to list/array data.
+
+
+
+
+ Determines whether the types AsReferenceDefault value is used, or whether this member's AsReference should be used
+
+
+
+
+ Declares a member to be used in protocol-buffer serialization, using
+ the given Tag and MemberName. This allows ProtoMemberAttribute usage
+ even for partial classes where the individual members are not
+ under direct control.
+ A DataFormat may be used to optimise the serialization
+ format (for instance, using zigzag encoding for negative numbers, or
+ fixed-length encoding for large values.
+
+
+
+
+ Creates a new ProtoMemberAttribute instance.
+
+ Specifies the unique tag used to identify this member within the type.
+ Specifies the member to be serialized.
+
+
+
+ The name of the member to be serialized.
+
+
+
+
+ A stateful reader, used to read a protobuf stream. Typical usage would be (sequentially) to call
+ ReadFieldHeader and (after matching the field) an appropriate Read* method.
+
+
+
+
+ Creates a new reader against a stream
+
+ The source stream
+ The model to use for serialization; this can be null, but this will impair the ability to deserialize sub-objects
+ Additional context about this serialization operation
+
+
+
+ Creates a new reader against a stream
+
+ The source stream
+ The model to use for serialization; this can be null, but this will impair the ability to deserialize sub-objects
+ Additional context about this serialization operation
+ The number of bytes to read, or -1 to read until the end of the stream
+
+
+
+ Releases resources used by the reader, but importantly does not Dispose the
+ underlying stream; in many typical use-cases the stream is used for different
+ processes, so it is assumed that the consumer will Dispose their stream separately.
+
+
+
+
+ Reads an unsigned 32-bit integer from the stream; supported wire-types: Variant, Fixed32, Fixed64
+
+
+
+
+ Reads a signed 16-bit integer from the stream: Variant, Fixed32, Fixed64, SignedVariant
+
+
+
+
+ Reads an unsigned 16-bit integer from the stream; supported wire-types: Variant, Fixed32, Fixed64
+
+
+
+
+ Reads an unsigned 8-bit integer from the stream; supported wire-types: Variant, Fixed32, Fixed64
+
+
+
+
+ Reads a signed 8-bit integer from the stream; supported wire-types: Variant, Fixed32, Fixed64, SignedVariant
+
+
+
+
+ Reads a signed 32-bit integer from the stream; supported wire-types: Variant, Fixed32, Fixed64, SignedVariant
+
+
+
+
+ Reads a signed 64-bit integer from the stream; supported wire-types: Variant, Fixed32, Fixed64, SignedVariant
+
+
+
+
+ Reads a string from the stream (using UTF8); supported wire-types: String
+
+
+
+
+ Throws an exception indication that the given value cannot be mapped to an enum.
+
+
+
+
+ Reads a double-precision number from the stream; supported wire-types: Fixed32, Fixed64
+
+
+
+
+ Reads (merges) a sub-message from the stream, internally calling StartSubItem and EndSubItem, and (in between)
+ parsing the message in accordance with the model associated with the reader
+
+
+
+
+ Makes the end of consuming a nested message in the stream; the stream must be either at the correct EndGroup
+ marker, or all fields of the sub-message must have been consumed (in either case, this means ReadFieldHeader
+ should return zero)
+
+
+
+
+ Begins consuming a nested message in the stream; supported wire-types: StartGroup, String
+
+ The token returned must be help and used when callining EndSubItem
+
+
+
+ Reads a field header from the stream, setting the wire-type and retuning the field number. If no
+ more fields are available, then 0 is returned. This methods respects sub-messages.
+
+
+
+
+ Looks ahead to see whether the next field in the stream is what we expect
+ (typically; what we've just finished reading - for example ot read successive list items)
+
+
+
+
+ Compares the streams current wire-type to the hinted wire-type, updating the reader if necessary; for example,
+ a Variant may be updated to SignedVariant. If the hinted wire-type is unrelated then no change is made.
+
+
+
+
+ Verifies that the stream's current wire-type is as expected, or a specialized sub-type (for example,
+ SignedVariant) - in which case the current wire-type is updated. Otherwise an exception is thrown.
+
+
+
+
+ Discards the data for the current field.
+
+
+
+
+ Reads an unsigned 64-bit integer from the stream; supported wire-types: Variant, Fixed32, Fixed64
+
+
+
+
+ Reads a single-precision number from the stream; supported wire-types: Fixed32, Fixed64
+
+
+
+
+ Reads a boolean value from the stream; supported wire-types: Variant, Fixed32, Fixed64
+
+
+
+
+
+ Reads a byte-sequence from the stream, appending them to an existing byte-sequence (which can be null); supported wire-types: String
+
+
+
+
+ Reads the length-prefix of a message from a stream without buffering additional data, allowing a fixed-length
+ reader to be created.
+
+
+
+
+ Reads a little-endian encoded integer. An exception is thrown if the data is not all available.
+
+
+
+
+ Reads a big-endian encoded integer. An exception is thrown if the data is not all available.
+
+
+
+
+ Reads a varint encoded integer. An exception is thrown if the data is not all available.
+
+
+
+
+ Reads a string (of a given lenth, in bytes) directly from the source into a pre-existing buffer. An exception is thrown if the data is not all available.
+
+
+
+
+ Reads a given number of bytes directly from the source. An exception is thrown if the data is not all available.
+
+
+
+
+ Reads a string (of a given lenth, in bytes) directly from the source. An exception is thrown if the data is not all available.
+
+
+
+
+ Reads the length-prefix of a message from a stream without buffering additional data, allowing a fixed-length
+ reader to be created.
+
+
+
+ The number of bytes consumed; 0 if no data available
+
+
+
+ Copies the current field into the instance as extension data
+
+
+
+
+ Indicates whether the reader still has data remaining in the current sub-item,
+ additionally setting the wire-type for the next field if there is more data.
+ This is used when decoding packed data.
+
+
+
+
+ Utility method, not intended for public use; this helps maintain the root object is complex scenarios
+
+
+
+
+ Reads a Type from the stream, using the model's DynamicTypeFormatting if appropriate; supported wire-types: String
+
+
+
+
+ Merge two objects using the details from the current reader; this is used to change the type
+ of objects when an inheritance relationship is discovered later than usual during deserilazation.
+
+
+
+
+ Gets the number of the field being processed.
+
+
+
+
+ Indicates the underlying proto serialization format on the wire.
+
+
+
+
+ Gets / sets a flag indicating whether strings should be checked for repetition; if
+ true, any repeated UTF-8 byte sequence will result in the same String instance, rather
+ than a second instance of the same string. Enabled by default. Note that this uses
+ a custom interner - the system-wide string interner is not used.
+
+
+
+
+ Addition information about this deserialization operation.
+
+
+
+
+ Returns the position of the current reader (note that this is not necessarily the same as the position
+ in the underlying stream, if multiple readers are used on the same stream)
+
+
+
+
+ Get the TypeModel associated with this reader
+
+
+
+
+ Represents an output stream for writing protobuf data.
+
+ Why is the API backwards (static methods with writer arguments)?
+ See: http://marcgravell.blogspot.com/2010/03/last-will-be-first-and-first-will-be.html
+
+
+
+
+ Write an encapsulated sub-object, using the supplied unique key (reprasenting a type).
+
+ The object to write.
+ The key that uniquely identifies the type within the model.
+ The destination.
+
+
+
+ Write an encapsulated sub-object, using the supplied unique key (reprasenting a type) - but the
+ caller is asserting that this relationship is non-recursive; no recursion check will be
+ performed.
+
+ The object to write.
+ The key that uniquely identifies the type within the model.
+ The destination.
+
+
+
+ Writes a field-header, indicating the format of the next data we plan to write.
+
+
+
+
+ Writes a byte-array to the stream; supported wire-types: String
+
+
+
+
+ Writes a byte-array to the stream; supported wire-types: String
+
+
+
+
+ Indicates the start of a nested record.
+
+ The instance to write.
+ The destination.
+ A token representing the state of the stream; this token is given to EndSubItem.
+
+
+
+ Indicates the end of a nested record.
+
+ The token obtained from StartubItem.
+ The destination.
+
+
+
+ Creates a new writer against a stream
+
+ The destination stream
+ The model to use for serialization; this can be null, but this will impair the ability to serialize sub-objects
+ Additional context about this serialization operation
+
+
+
+ Flushes data to the underlying stream, and releases any resources. The underlying stream is *not* disposed
+ by this operation.
+
+
+
+
+ Writes any buffered data (if possible) to the underlying stream.
+
+ The writer to flush
+ It is not always possible to fully flush, since some sequences
+ may require values to be back-filled into the byte-stream.
+
+
+
+ Writes an unsigned 32-bit integer to the stream; supported wire-types: Variant, Fixed32, Fixed64
+
+
+
+
+ Writes a string to the stream; supported wire-types: String
+
+
+
+
+ Writes an unsigned 64-bit integer to the stream; supported wire-types: Variant, Fixed32, Fixed64
+
+
+
+
+ Writes a signed 64-bit integer to the stream; supported wire-types: Variant, Fixed32, Fixed64, SignedVariant
+
+
+
+
+ Writes an unsigned 16-bit integer to the stream; supported wire-types: Variant, Fixed32, Fixed64
+
+
+
+
+ Writes a signed 16-bit integer to the stream; supported wire-types: Variant, Fixed32, Fixed64, SignedVariant
+
+
+
+
+ Writes an unsigned 16-bit integer to the stream; supported wire-types: Variant, Fixed32, Fixed64
+
+
+
+
+ Writes an unsigned 8-bit integer to the stream; supported wire-types: Variant, Fixed32, Fixed64
+
+
+
+
+ Writes a signed 8-bit integer to the stream; supported wire-types: Variant, Fixed32, Fixed64, SignedVariant
+
+
+
+
+ Writes a signed 32-bit integer to the stream; supported wire-types: Variant, Fixed32, Fixed64, SignedVariant
+
+
+
+
+ Writes a double-precision number to the stream; supported wire-types: Fixed32, Fixed64
+
+
+
+
+ Writes a single-precision number to the stream; supported wire-types: Fixed32, Fixed64
+
+
+
+
+ Throws an exception indicating that the given enum cannot be mapped to a serialized value.
+
+
+
+
+ Writes a boolean to the stream; supported wire-types: Variant, Fixed32, Fixed64
+
+
+
+
+ Copies any extension data stored for the instance to the underlying stream
+
+
+
+
+ Used for packed encoding; indicates that the next field should be skipped rather than
+ a field header written. Note that the field number must match, else an exception is thrown
+ when the attempt is made to write the (incorrect) field. The wire-type is taken from the
+ subsequent call to WriteFieldHeader. Only primitive types can be packed.
+
+
+
+
+ Specifies a known root object to use during reference-tracked serialization
+
+
+
+
+ Writes a Type to the stream, using the model's DynamicTypeFormatting if appropriate; supported wire-types: String
+
+
+
+
+ Addition information about this serialization operation.
+
+
+
+
+ Get the TypeModel associated with this writer
+
+
+
+
+ Additional information about a serialization operation
+
+
+
+
+ Gets or sets a user-defined object containing additional information about this serialization/deserialization operation.
+
+
+
+
+ A default SerializationContext, with minimal information.
+
+
+
+
+ Provides protocol-buffer serialization capability for concrete, attributed types. This
+ is a *default* model, but custom serializer models are also supported.
+
+
+ Protocol-buffer serialization is a compact binary format, designed to take
+ advantage of sparse data and knowledge of specific data types; it is also
+ extensible, allowing a type to be deserialized / merged even if some data is
+ not recognised.
+
+
+
+
+ The field number that is used as a default when serializing/deserializing a list of objects.
+ The data is treated as repeated message with field number 1.
+
+
+
+
+ Suggest a .proto definition for the given type
+
+ The type to generate a .proto definition for
+ The .proto definition as a string
+
+
+
+ Create a deep clone of the supplied instance; any sub-items are also cloned.
+
+
+
+
+ Applies a protocol-buffer stream to an existing instance.
+
+ The type being merged.
+ The existing instance to be modified (can be null).
+ The binary stream to apply to the instance (cannot be null).
+ The updated instance; this may be different to the instance argument if
+ either the original instance was null, or the stream defines a known sub-type of the
+ original instance.
+
+
+
+ Creates a new instance from a protocol-buffer stream
+
+ The type to be created.
+ The binary stream to apply to the new instance (cannot be null).
+ A new, initialized instance.
+
+
+
+ Writes a protocol-buffer representation of the given instance to the supplied stream.
+
+ The existing instance to be serialized (cannot be null).
+ The destination stream to write to.
+
+
+
+ Serializes a given instance and deserializes it as a different type;
+ this can be used to translate between wire-compatible objects (where
+ two .NET types represent the same data), or to promote/demote a type
+ through an inheritance hierarchy.
+
+ No assumption of compatibility is made between the types.
+ The type of the object being copied.
+ The type of the new object to be created.
+ The existing instance to use as a template.
+ A new instane of type TNewType, with the data from TOldType.
+
+
+
+ Precompiles the serializer for a given type.
+
+
+
+
+ Reads a sequence of consecutive length-prefixed items from a stream, using
+ either base-128 or fixed-length prefixes. Base-128 prefixes with a tag
+ are directly comparable to serializing multiple items in succession
+ (use the tag to emulate the implicit behavior
+ when serializing a list/array). When a tag is
+ specified, any records with different tags are silently omitted. The
+ tag is ignored. The tag is ignores for fixed-length prefixes.
+
+ The type of object to deserialize.
+ The binary stream containing the serialized records.
+ The prefix style used in the data.
+ The tag of records to return (if non-positive, then no tag is
+ expected and all records are returned).
+ The sequence of deserialized objects.
+
+
+
+ Creates a new instance from a protocol-buffer stream that has a length-prefix
+ on data (to assist with network IO).
+
+ The type to be created.
+ The binary stream to apply to the new instance (cannot be null).
+ How to encode the length prefix.
+ A new, initialized instance.
+
+
+
+ Creates a new instance from a protocol-buffer stream that has a length-prefix
+ on data (to assist with network IO).
+
+ The type to be created.
+ The binary stream to apply to the new instance (cannot be null).
+ How to encode the length prefix.
+ The expected tag of the item (only used with base-128 prefix style).
+ A new, initialized instance.
+
+
+
+ Applies a protocol-buffer stream to an existing instance, using length-prefixed
+ data - useful with network IO.
+
+ The type being merged.
+ The existing instance to be modified (can be null).
+ The binary stream to apply to the instance (cannot be null).
+ How to encode the length prefix.
+ The updated instance; this may be different to the instance argument if
+ either the original instance was null, or the stream defines a known sub-type of the
+ original instance.
+
+
+
+ Writes a protocol-buffer representation of the given instance to the supplied stream,
+ with a length-prefix. This is useful for socket programming,
+ as DeserializeWithLengthPrefix/MergeWithLengthPrefix can be used to read the single object back
+ from an ongoing stream.
+
+ The type being serialized.
+ The existing instance to be serialized (cannot be null).
+ How to encode the length prefix.
+ The destination stream to write to.
+
+
+
+ Writes a protocol-buffer representation of the given instance to the supplied stream,
+ with a length-prefix. This is useful for socket programming,
+ as DeserializeWithLengthPrefix/MergeWithLengthPrefix can be used to read the single object back
+ from an ongoing stream.
+
+ The type being serialized.
+ The existing instance to be serialized (cannot be null).
+ How to encode the length prefix.
+ The destination stream to write to.
+ The tag used as a prefix to each record (only used with base-128 style prefixes).
+
+
+ Indicates the number of bytes expected for the next message.
+ The stream containing the data to investigate for a length.
+ The algorithm used to encode the length.
+ The length of the message, if it could be identified.
+ True if a length could be obtained, false otherwise.
+
+
+ Indicates the number of bytes expected for the next message.
+ The buffer containing the data to investigate for a length.
+ The offset of the first byte to read from the buffer.
+ The number of bytes to read from the buffer.
+ The algorithm used to encode the length.
+ The length of the message, if it could be identified.
+ True if a length could be obtained, false otherwise.
+
+
+
+ Releases any internal buffers that have been reserved for efficiency; this does not affect any serialization
+ operations; simply: it can be used (optionally) to release the buffers for garbage collection (at the expense
+ of having to re-allocate a new buffer for the next operation, rather than re-use prior buffers).
+
+
+
+
+ Provides non-generic access to the default serializer.
+
+
+
+
+ Create a deep clone of the supplied instance; any sub-items are also cloned.
+
+
+
+
+ Writes a protocol-buffer representation of the given instance to the supplied stream.
+
+ The existing instance to be serialized (cannot be null).
+ The destination stream to write to.
+
+
+
+ Creates a new instance from a protocol-buffer stream
+
+ The type to be created.
+ The binary stream to apply to the new instance (cannot be null).
+ A new, initialized instance.
+
+
+ Applies a protocol-buffer stream to an existing instance.
+ The existing instance to be modified (cannot be null).
+ The binary stream to apply to the instance (cannot be null).
+ The updated instance
+
+
+
+ Writes a protocol-buffer representation of the given instance to the supplied stream,
+ with a length-prefix. This is useful for socket programming,
+ as DeserializeWithLengthPrefix/MergeWithLengthPrefix can be used to read the single object back
+ from an ongoing stream.
+
+ The existing instance to be serialized (cannot be null).
+ How to encode the length prefix.
+ The destination stream to write to.
+ The tag used as a prefix to each record (only used with base-128 style prefixes).
+
+
+
+ Applies a protocol-buffer stream to an existing instance (or null), using length-prefixed
+ data - useful with network IO.
+
+ The existing instance to be modified (can be null).
+ The binary stream to apply to the instance (cannot be null).
+ How to encode the length prefix.
+ Used to resolve types on a per-field basis.
+ The updated instance; this may be different to the instance argument if
+ either the original instance was null, or the stream defines a known sub-type of the
+ original instance.
+
+
+
+ Indicates whether the supplied type is explicitly modelled by the model
+
+
+
+
+ Global switches that change the behavior of protobuf-net
+
+
+
+
+
+
+
+
+
+ Maps a field-number to a type
+
+
+
+
+ Perform the steps necessary to serialize this data.
+
+ The value to be serialized.
+ The writer entity that is accumulating the output data.
+
+
+
+ Perform the steps necessary to deserialize this data.
+
+ The current value, if appropriate.
+ The reader providing the input data.
+ The updated / replacement value.
+
+
+
+ The type that this serializer is intended to work for.
+
+
+
+
+ Indicates whether a Read operation replaces the existing value, or
+ extends the value. If false, the "value" parameter to Read is
+ discarded, and should be passed in as null.
+
+
+
+
+ Now all Read operations return a value (although most do); if false no
+ value should be expected.
+
+
+
+
+ Used to hold particulars relating to nested objects. This is opaque to the caller - simply
+ give back the token you are given at the end of an object.
+
+
+
+
+ Indicates the encoding used to represent an individual value in a protobuf stream
+
+
+
+
+ Represents an error condition
+
+
+
+
+ Base-128 variant-length encoding
+
+
+
+
+ Fixed-length 8-byte encoding
+
+
+
+
+ Length-variant-prefixed encoding
+
+
+
+
+ Indicates the start of a group
+
+
+
+
+ Indicates the end of a group
+
+
+
+
+ Fixed-length 4-byte encoding
+ 10
+
+
+
+ This is not a formal wire-type in the "protocol buffers" spec, but
+ denotes a variant integer that should be interpreted using
+ zig-zag semantics (so -ve numbers aren't a significant overhead)
+
+
+
+
diff --git a/packages/protobuf-net.2.0.0.668/lib/net20/protobuf-net.dll b/packages/protobuf-net.2.0.0.668/lib/net20/protobuf-net.dll
new file mode 100644
index 000000000..3d24cd038
Binary files /dev/null and b/packages/protobuf-net.2.0.0.668/lib/net20/protobuf-net.dll differ
diff --git a/packages/protobuf-net.2.0.0.668/lib/net20/protobuf-net.xml b/packages/protobuf-net.2.0.0.668/lib/net20/protobuf-net.xml
new file mode 100644
index 000000000..aa761e6ff
--- /dev/null
+++ b/packages/protobuf-net.2.0.0.668/lib/net20/protobuf-net.xml
@@ -0,0 +1,2758 @@
+
+
+
+ protobuf-net
+
+
+
+
+ Provides support for common .NET types that do not have a direct representation
+ in protobuf, using the definitions from bcl.proto
+
+
+
+
+ Creates a new instance of the specified type, bypassing the constructor.
+
+ The type to create
+ The new instance
+ If the platform does not support constructor-skipping
+
+
+
+ Writes a TimeSpan to a protobuf stream
+
+
+
+
+ Parses a TimeSpan from a protobuf stream
+
+
+
+
+ Parses a DateTime from a protobuf stream
+
+
+
+
+ Writes a DateTime to a protobuf stream
+
+
+
+
+ Parses a decimal from a protobuf stream
+
+
+
+
+ Writes a decimal to a protobuf stream
+
+
+
+
+ Writes a Guid to a protobuf stream
+
+
+
+
+ Parses a Guid from a protobuf stream
+
+
+
+
+ Reads an *implementation specific* bundled .NET object, including (as options) type-metadata, identity/re-use, etc.
+
+
+
+
+ Writes an *implementation specific* bundled .NET object, including (as options) type-metadata, identity/re-use, etc.
+
+
+
+
+ Optional behaviours that introduce .NET-specific functionality
+
+
+
+
+ No special behaviour
+
+
+
+
+ Enables full object-tracking/full-graph support.
+
+
+
+
+ Embeds the type information into the stream, allowing usage with types not known in advance.
+
+
+
+
+ If false, the constructor for the type is bypassed during deserialization, meaning any field initializers
+ or other initialization code is skipped.
+
+
+
+
+ Should the object index be reserved, rather than creating an object promptly
+
+
+
+
+ Provides a simple buffer-based implementation of an extension object.
+
+
+
+
+ Provides addition capability for supporting unexpected fields during
+ protocol-buffer serialization/deserialization. This allows for loss-less
+ round-trip/merge, even when the data is not fully understood.
+
+
+
+
+ Requests a stream into which any unexpected fields can be persisted.
+
+ A new stream suitable for storing data.
+
+
+
+ Indicates that all unexpected fields have now been stored. The
+ implementing class is responsible for closing the stream. If
+ "commit" is not true the data may be discarded.
+
+ The stream originally obtained by BeginAppend.
+ True if the append operation completed successfully.
+
+
+
+ Requests a stream of the unexpected fields previously stored.
+
+ A prepared stream of the unexpected fields.
+
+
+
+ Indicates that all unexpected fields have now been read. The
+ implementing class is responsible for closing the stream.
+
+ The stream originally obtained by BeginQuery.
+
+
+
+ Requests the length of the raw binary stream; this is used
+ when serializing sub-entities to indicate the expected size.
+
+ The length of the binary stream representing unexpected data.
+
+
+ Specifies a method on the root-contract in an hierarchy to be invoked before serialization.
+
+
+ Specifies a method on the root-contract in an hierarchy to be invoked after serialization.
+
+
+ Specifies a method on the root-contract in an hierarchy to be invoked before deserialization.
+
+
+ Specifies a method on the root-contract in an hierarchy to be invoked after deserialization.
+
+
+
+ Pushes a null reference onto the stack. Note that this should only
+ be used to return a null (or set a variable to null); for null-tests
+ use BranchIfTrue / BranchIfFalse.
+
+
+
+
+ Creates a new "using" block (equivalent) around a variable;
+ the variable must exist, and note that (unlike in C#) it is
+ the variables *final* value that gets disposed. If you need
+ *original* disposal, copy your variable first.
+
+ It is the callers responsibility to ensure that the variable's
+ scope fully-encapsulates the "using"; if not, the variable
+ may be re-used (and thus re-assigned) unexpectedly.
+
+
+
+
+ Sub-format to use when serializing/deserializing data
+
+
+
+
+ Uses the default encoding for the data-type.
+
+
+
+
+ When applied to signed integer-based data (including Decimal), this
+ indicates that zigzag variant encoding will be used. This means that values
+ with small magnitude (regardless of sign) take a small amount
+ of space to encode.
+
+
+
+
+ When applied to signed integer-based data (including Decimal), this
+ indicates that two's-complement variant encoding will be used.
+ This means that any -ve number will take 10 bytes (even for 32-bit),
+ so should only be used for compatibility.
+
+
+
+
+ When applied to signed integer-based data (including Decimal), this
+ indicates that a fixed amount of space will be used.
+
+
+
+
+ When applied to a sub-message, indicates that the value should be treated
+ as group-delimited.
+
+
+
+
+ Simple base class for supporting unexpected fields allowing
+ for loss-less round-tips/merge, even if the data is not understod.
+ The additional fields are (by default) stored in-memory in a buffer.
+
+ As an example of an alternative implementation, you might
+ choose to use the file system (temporary files) as the back-end, tracking
+ only the paths [such an object would ideally be IDisposable and use
+ a finalizer to ensure that the files are removed].
+
+
+
+
+ Indicates that the implementing type has support for protocol-buffer
+ extensions.
+
+ Can be implemented by deriving from Extensible.
+
+
+
+ Retrieves the extension object for the current
+ instance, optionally creating it if it does not already exist.
+
+ Should a new extension object be
+ created if it does not already exist?
+ The extension object if it exists (or was created), or null
+ if the extension object does not exist or is not available.
+ The createIfMissing argument is false during serialization,
+ and true during deserialization upon encountering unexpected fields.
+
+
+
+ Retrieves the extension object for the current
+ instance, optionally creating it if it does not already exist.
+
+ Should a new extension object be
+ created if it does not already exist?
+ The extension object if it exists (or was created), or null
+ if the extension object does not exist or is not available.
+ The createIfMissing argument is false during serialization,
+ and true during deserialization upon encountering unexpected fields.
+
+
+
+ Provides a simple, default implementation for extension support,
+ optionally creating it if it does not already exist. Designed to be called by
+ classes implementing .
+
+ Should a new extension object be
+ created if it does not already exist?
+ The extension field to check (and possibly update).
+ The extension object if it exists (or was created), or null
+ if the extension object does not exist or is not available.
+ The createIfMissing argument is false during serialization,
+ and true during deserialization upon encountering unexpected fields.
+
+
+
+ Appends the value as an additional (unexpected) data-field for the instance.
+ Note that for non-repeated sub-objects, this equates to a merge operation;
+ for repeated sub-objects this adds a new instance to the set; for simple
+ values the new value supercedes the old value.
+
+ Note that appending a value does not remove the old value from
+ the stream; avoid repeatedly appending values for the same field.
+ The type of the value to append.
+ The extensible object to append the value to.
+ The field identifier; the tag should not be defined as a known data-field for the instance.
+ The value to append.
+
+
+
+ Appends the value as an additional (unexpected) data-field for the instance.
+ Note that for non-repeated sub-objects, this equates to a merge operation;
+ for repeated sub-objects this adds a new instance to the set; for simple
+ values the new value supercedes the old value.
+
+ Note that appending a value does not remove the old value from
+ the stream; avoid repeatedly appending values for the same field.
+ The data-type of the field.
+ The data-format to use when encoding the value.
+ The extensible object to append the value to.
+ The field identifier; the tag should not be defined as a known data-field for the instance.
+ The value to append.
+
+
+
+ Queries an extensible object for an additional (unexpected) data-field for the instance.
+ The value returned is the composed value after merging any duplicated content; if the
+ value is "repeated" (a list), then use GetValues instead.
+
+ The data-type of the field.
+ The extensible object to obtain the value from.
+ The field identifier; the tag should not be defined as a known data-field for the instance.
+ The effective value of the field, or the default value if not found.
+
+
+
+ Queries an extensible object for an additional (unexpected) data-field for the instance.
+ The value returned is the composed value after merging any duplicated content; if the
+ value is "repeated" (a list), then use GetValues instead.
+
+ The data-type of the field.
+ The extensible object to obtain the value from.
+ The field identifier; the tag should not be defined as a known data-field for the instance.
+ The data-format to use when decoding the value.
+ The effective value of the field, or the default value if not found.
+
+
+
+ Queries an extensible object for an additional (unexpected) data-field for the instance.
+ The value returned (in "value") is the composed value after merging any duplicated content;
+ if the value is "repeated" (a list), then use GetValues instead.
+
+ The data-type of the field.
+ The effective value of the field, or the default value if not found.
+ The extensible object to obtain the value from.
+ The field identifier; the tag should not be defined as a known data-field for the instance.
+ True if data for the field was present, false otherwise.
+
+
+
+ Queries an extensible object for an additional (unexpected) data-field for the instance.
+ The value returned (in "value") is the composed value after merging any duplicated content;
+ if the value is "repeated" (a list), then use GetValues instead.
+
+ The data-type of the field.
+ The effective value of the field, or the default value if not found.
+ The extensible object to obtain the value from.
+ The field identifier; the tag should not be defined as a known data-field for the instance.
+ The data-format to use when decoding the value.
+ True if data for the field was present, false otherwise.
+
+
+
+ Queries an extensible object for an additional (unexpected) data-field for the instance.
+ The value returned (in "value") is the composed value after merging any duplicated content;
+ if the value is "repeated" (a list), then use GetValues instead.
+
+ The data-type of the field.
+ The effective value of the field, or the default value if not found.
+ The extensible object to obtain the value from.
+ The field identifier; the tag should not be defined as a known data-field for the instance.
+ The data-format to use when decoding the value.
+ Allow tags that are present as part of the definition; for example, to query unknown enum values.
+ True if data for the field was present, false otherwise.
+
+
+
+ Queries an extensible object for an additional (unexpected) data-field for the instance.
+ Each occurrence of the field is yielded separately, making this usage suitable for "repeated"
+ (list) fields.
+
+ The extended data is processed lazily as the enumerator is iterated.
+ The data-type of the field.
+ The extensible object to obtain the value from.
+ The field identifier; the tag should not be defined as a known data-field for the instance.
+ An enumerator that yields each occurrence of the field.
+
+
+
+ Queries an extensible object for an additional (unexpected) data-field for the instance.
+ Each occurrence of the field is yielded separately, making this usage suitable for "repeated"
+ (list) fields.
+
+ The extended data is processed lazily as the enumerator is iterated.
+ The data-type of the field.
+ The extensible object to obtain the value from.
+ The field identifier; the tag should not be defined as a known data-field for the instance.
+ The data-format to use when decoding the value.
+ An enumerator that yields each occurrence of the field.
+
+
+
+ Queries an extensible object for an additional (unexpected) data-field for the instance.
+ The value returned (in "value") is the composed value after merging any duplicated content;
+ if the value is "repeated" (a list), then use GetValues instead.
+
+ The data-type of the field.
+ The model to use for configuration.
+ The effective value of the field, or the default value if not found.
+ The extensible object to obtain the value from.
+ The field identifier; the tag should not be defined as a known data-field for the instance.
+ The data-format to use when decoding the value.
+ Allow tags that are present as part of the definition; for example, to query unknown enum values.
+ True if data for the field was present, false otherwise.
+
+
+
+ Queries an extensible object for an additional (unexpected) data-field for the instance.
+ Each occurrence of the field is yielded separately, making this usage suitable for "repeated"
+ (list) fields.
+
+ The extended data is processed lazily as the enumerator is iterated.
+ The model to use for configuration.
+ The data-type of the field.
+ The extensible object to obtain the value from.
+ The field identifier; the tag should not be defined as a known data-field for the instance.
+ The data-format to use when decoding the value.
+ An enumerator that yields each occurrence of the field.
+
+
+
+ Appends the value as an additional (unexpected) data-field for the instance.
+ Note that for non-repeated sub-objects, this equates to a merge operation;
+ for repeated sub-objects this adds a new instance to the set; for simple
+ values the new value supercedes the old value.
+
+ Note that appending a value does not remove the old value from
+ the stream; avoid repeatedly appending values for the same field.
+ The model to use for configuration.
+ The data-format to use when encoding the value.
+ The extensible object to append the value to.
+ The field identifier; the tag should not be defined as a known data-field for the instance.
+ The value to append.
+
+
+
+ This class acts as an internal wrapper allowing us to do a dynamic
+ methodinfo invoke; an't put into Serializer as don't want on public
+ API; can't put into Serializer<T> since we need to invoke
+ accross classes, which isn't allowed in Silverlight)
+
+
+
+
+ All this does is call GetExtendedValuesTyped with the correct type for "instance";
+ this ensures that we don't get issues with subclasses declaring conflicting types -
+ the caller must respect the fields defined for the type they pass in.
+
+
+
+
+ All this does is call GetExtendedValuesTyped with the correct type for "instance";
+ this ensures that we don't get issues with subclasses declaring conflicting types -
+ the caller must respect the fields defined for the type they pass in.
+
+
+
+
+ Not all frameworks are created equal (fx1.1 vs fx2.0,
+ micro-framework, compact-framework,
+ silverlight, etc). This class simply wraps up a few things that would
+ otherwise make the real code unnecessarily messy, providing fallback
+ implementations if necessary.
+
+
+
+
+ Intended to be a direct map to regular TypeCode, but:
+ - with missing types
+ - existing on WinRT
+
+
+
+
+ Specifies the method used to infer field tags for members of the type
+ under consideration. Tags are deduced using the invariant alphabetic
+ sequence of the members' names; this makes implicit field tags very brittle,
+ and susceptible to changes such as field names (normally an isolated
+ change).
+
+
+
+
+ No members are serialized implicitly; all members require a suitable
+ attribute such as [ProtoMember]. This is the recmomended mode for
+ most scenarios.
+
+
+
+
+ Public properties and fields are eligible for implicit serialization;
+ this treats the public API as a contract. Ordering beings from ImplicitFirstTag.
+
+
+
+
+ Public and non-public fields are eligible for implicit serialization;
+ this acts as a state/implementation serializer. Ordering beings from ImplicitFirstTag.
+
+
+
+
+ Represents the set of serialization callbacks to be used when serializing/deserializing a type.
+
+
+
+ Called before serializing an instance
+
+
+ Called before deserializing an instance
+
+
+ Called after serializing an instance
+
+
+ Called after deserializing an instance
+
+
+
+ True if any callback is set, else False
+
+
+
+
+ Represents a type at runtime for use with protobuf, allowing the field mappings (etc) to be defined
+
+
+
+
+ Get the name of the type being represented
+
+
+
+
+ Adds a known sub-type to the inheritance model
+
+
+
+
+ Adds a known sub-type to the inheritance model
+
+
+
+
+ Assigns the callbacks to use during serialiation/deserialization.
+
+ The method (or null) called before serialization begins.
+ The method (or null) called when serialization is complete.
+ The method (or null) called before deserialization begins (or when a new instance is created during deserialization).
+ The method (or null) called when deserialization is complete.
+ The set of callbacks.
+
+
+
+ Assigns the callbacks to use during serialiation/deserialization.
+
+ The name of the method (or null) called before serialization begins.
+ The name of the method (or null) called when serialization is complete.
+ The name of the method (or null) called before deserialization begins (or when a new instance is created during deserialization).
+ The name of the method (or null) called when deserialization is complete.
+ The set of callbacks.
+
+
+
+ Designate a factory-method to use to create instances of this type
+
+
+
+
+ Designate a factory-method to use to create instances of this type
+
+
+
+
+ Throws an exception if the type has been made immutable
+
+
+
+
+ Adds a member (by name) to the MetaType
+
+
+
+
+ Adds a member (by name) to the MetaType, returning the ValueMember rather than the fluent API.
+ This is otherwise identical to Add.
+
+
+
+
+ Adds a member (by name) to the MetaType
+
+
+
+
+ Performs serialization of this type via a surrogate; all
+ other serialization options are ignored and handled
+ by the surrogate's configuration.
+
+
+
+
+ Adds a set of members (by name) to the MetaType
+
+
+
+
+ Adds a member (by name) to the MetaType
+
+
+
+
+ Adds a member (by name) to the MetaType, including an itemType and defaultType for representing lists
+
+
+
+
+ Adds a member (by name) to the MetaType, including an itemType and defaultType for representing lists, returning the ValueMember rather than the fluent API.
+ This is otherwise identical to Add.
+
+
+
+
+ Returns the ValueMember instances associated with this type
+
+
+
+
+ Returns the SubType instances associated with this type
+
+
+
+
+ Compiles the serializer for this type; this is *not* a full
+ standalone compile, but can significantly boost performance
+ while allowing additional types to be added.
+
+ An in-place compile can access non-public types / members
+
+
+
+ Gets the base-type for this type
+
+
+
+
+ When used to compile a model, should public serialization/deserialzation methods
+ be included for this type?
+
+
+
+
+ Should this type be treated as a reference by default?
+
+
+
+
+ Indicates whether the current type has defined callbacks
+
+
+
+
+ Indicates whether the current type has defined subtypes
+
+
+
+
+ Returns the set of callbacks defined for this type
+
+
+
+
+ Gets or sets the name of this contract.
+
+
+
+
+ The runtime type that the meta-type represents
+
+
+
+
+ Gets or sets whether the type should use a parameterless constructor (the default),
+ or whether the type should skip the constructor completely. This option is not supported
+ on compact-framework.
+
+
+
+
+ The concrete type to create when a new instance of this type is needed; this may be useful when dealing
+ with dynamic proxies, or with interface-based APIs
+
+
+
+
+ Returns the ValueMember that matchs a given field number, or null if not found
+
+
+
+
+ Returns the ValueMember that matchs a given member (property/field), or null if not found
+
+
+
+
+ Gets or sets a value indicating that an enum should be treated directly as an int/short/etc, rather
+ than enforcing .proto enum rules. This is useful *in particul* for [Flags] enums.
+
+
+
+
+ Gets or sets a value indicating that this type should NOT be treated as a list, even if it has
+ familiar list-like characteristics (enumerable, add, etc)
+
+
+
+
+ Provides protobuf serialization support for a number of types that can be defined at runtime
+
+
+
+
+ Provides protobuf serialization support for a number of types
+
+
+
+
+ Resolve a System.Type to the compiler-specific type
+
+
+
+
+ Resolve a System.Type to the compiler-specific type
+
+
+
+
+ This is the more "complete" version of Serialize, which handles single instances of mapped types.
+ The value is written as a complete field, including field-header and (for sub-objects) a
+ length-prefix
+ In addition to that, this provides support for:
+ - basic values; individual int / string / Guid / etc
+ - IEnumerable sequences of any type handled by TrySerializeAuxiliaryType
+
+
+
+
+
+ Writes a protocol-buffer representation of the given instance to the supplied stream.
+
+ The existing instance to be serialized (cannot be null).
+ The destination stream to write to.
+
+
+
+ Writes a protocol-buffer representation of the given instance to the supplied stream.
+
+ The existing instance to be serialized (cannot be null).
+ The destination stream to write to.
+ Additional information about this serialization operation.
+
+
+
+ Writes a protocol-buffer representation of the given instance to the supplied writer.
+
+ The existing instance to be serialized (cannot be null).
+ The destination writer to write to.
+
+
+
+ Applies a protocol-buffer stream to an existing instance (or null), using length-prefixed
+ data - useful with network IO.
+
+ The type being merged.
+ The existing instance to be modified (can be null).
+ The binary stream to apply to the instance (cannot be null).
+ How to encode the length prefix.
+ The tag used as a prefix to each record (only used with base-128 style prefixes).
+ The updated instance; this may be different to the instance argument if
+ either the original instance was null, or the stream defines a known sub-type of the
+ original instance.
+
+
+
+ Applies a protocol-buffer stream to an existing instance (or null), using length-prefixed
+ data - useful with network IO.
+
+ The type being merged.
+ The existing instance to be modified (can be null).
+ The binary stream to apply to the instance (cannot be null).
+ How to encode the length prefix.
+ The tag used as a prefix to each record (only used with base-128 style prefixes).
+ Used to resolve types on a per-field basis.
+ The updated instance; this may be different to the instance argument if
+ either the original instance was null, or the stream defines a known sub-type of the
+ original instance.
+
+
+
+ Applies a protocol-buffer stream to an existing instance (or null), using length-prefixed
+ data - useful with network IO.
+
+ The type being merged.
+ The existing instance to be modified (can be null).
+ The binary stream to apply to the instance (cannot be null).
+ How to encode the length prefix.
+ The tag used as a prefix to each record (only used with base-128 style prefixes).
+ Used to resolve types on a per-field basis.
+ Returns the number of bytes consumed by this operation (includes length-prefix overheads and any skipped data).
+ The updated instance; this may be different to the instance argument if
+ either the original instance was null, or the stream defines a known sub-type of the
+ original instance.
+
+
+
+ Reads a sequence of consecutive length-prefixed items from a stream, using
+ either base-128 or fixed-length prefixes. Base-128 prefixes with a tag
+ are directly comparable to serializing multiple items in succession
+ (use the tag to emulate the implicit behavior
+ when serializing a list/array). When a tag is
+ specified, any records with different tags are silently omitted. The
+ tag is ignored. The tag is ignores for fixed-length prefixes.
+
+ The binary stream containing the serialized records.
+ The prefix style used in the data.
+ The tag of records to return (if non-positive, then no tag is
+ expected and all records are returned).
+ On a field-by-field basis, the type of object to deserialize (can be null if "type" is specified).
+ The type of object to deserialize (can be null if "resolver" is specified).
+ The sequence of deserialized objects.
+
+
+
+ Reads a sequence of consecutive length-prefixed items from a stream, using
+ either base-128 or fixed-length prefixes. Base-128 prefixes with a tag
+ are directly comparable to serializing multiple items in succession
+ (use the tag to emulate the implicit behavior
+ when serializing a list/array). When a tag is
+ specified, any records with different tags are silently omitted. The
+ tag is ignored. The tag is ignores for fixed-length prefixes.
+
+ The binary stream containing the serialized records.
+ The prefix style used in the data.
+ The tag of records to return (if non-positive, then no tag is
+ expected and all records are returned).
+ On a field-by-field basis, the type of object to deserialize (can be null if "type" is specified).
+ The type of object to deserialize (can be null if "resolver" is specified).
+ The sequence of deserialized objects.
+ Additional information about this serialization operation.
+
+
+
+ Reads a sequence of consecutive length-prefixed items from a stream, using
+ either base-128 or fixed-length prefixes. Base-128 prefixes with a tag
+ are directly comparable to serializing multiple items in succession
+ (use the tag to emulate the implicit behavior
+ when serializing a list/array). When a tag is
+ specified, any records with different tags are silently omitted. The
+ tag is ignored. The tag is ignores for fixed-length prefixes.
+
+ The type of object to deserialize.
+ The binary stream containing the serialized records.
+ The prefix style used in the data.
+ The tag of records to return (if non-positive, then no tag is
+ expected and all records are returned).
+ The sequence of deserialized objects.
+
+
+
+ Reads a sequence of consecutive length-prefixed items from a stream, using
+ either base-128 or fixed-length prefixes. Base-128 prefixes with a tag
+ are directly comparable to serializing multiple items in succession
+ (use the tag to emulate the implicit behavior
+ when serializing a list/array). When a tag is
+ specified, any records with different tags are silently omitted. The
+ tag is ignored. The tag is ignores for fixed-length prefixes.
+
+ The type of object to deserialize.
+ The binary stream containing the serialized records.
+ The prefix style used in the data.
+ The tag of records to return (if non-positive, then no tag is
+ expected and all records are returned).
+ The sequence of deserialized objects.
+ Additional information about this serialization operation.
+
+
+
+ Writes a protocol-buffer representation of the given instance to the supplied stream,
+ with a length-prefix. This is useful for socket programming,
+ as DeserializeWithLengthPrefix can be used to read the single object back
+ from an ongoing stream.
+
+ The type being serialized.
+ The existing instance to be serialized (cannot be null).
+ How to encode the length prefix.
+ The destination stream to write to.
+ The tag used as a prefix to each record (only used with base-128 style prefixes).
+
+
+
+ Writes a protocol-buffer representation of the given instance to the supplied stream,
+ with a length-prefix. This is useful for socket programming,
+ as DeserializeWithLengthPrefix can be used to read the single object back
+ from an ongoing stream.
+
+ The type being serialized.
+ The existing instance to be serialized (cannot be null).
+ How to encode the length prefix.
+ The destination stream to write to.
+ The tag used as a prefix to each record (only used with base-128 style prefixes).
+ Additional information about this serialization operation.
+
+
+
+ Applies a protocol-buffer stream to an existing instance (which may be null).
+
+ The type (including inheritance) to consider.
+ The existing instance to be modified (can be null).
+ The binary stream to apply to the instance (cannot be null).
+ The updated instance; this may be different to the instance argument if
+ either the original instance was null, or the stream defines a known sub-type of the
+ original instance.
+
+
+
+ Applies a protocol-buffer stream to an existing instance (which may be null).
+
+ The type (including inheritance) to consider.
+ The existing instance to be modified (can be null).
+ The binary stream to apply to the instance (cannot be null).
+ The updated instance; this may be different to the instance argument if
+ either the original instance was null, or the stream defines a known sub-type of the
+ original instance.
+ Additional information about this serialization operation.
+
+
+
+ Applies a protocol-buffer stream to an existing instance (which may be null).
+
+ The type (including inheritance) to consider.
+ The existing instance to be modified (can be null).
+ The binary stream to apply to the instance (cannot be null).
+ The number of bytes to consume.
+ The updated instance; this may be different to the instance argument if
+ either the original instance was null, or the stream defines a known sub-type of the
+ original instance.
+
+
+
+ Applies a protocol-buffer stream to an existing instance (which may be null).
+
+ The type (including inheritance) to consider.
+ The existing instance to be modified (can be null).
+ The binary stream to apply to the instance (cannot be null).
+ The number of bytes to consume (or -1 to read to the end of the stream).
+ The updated instance; this may be different to the instance argument if
+ either the original instance was null, or the stream defines a known sub-type of the
+ original instance.
+ Additional information about this serialization operation.
+
+
+
+ Applies a protocol-buffer reader to an existing instance (which may be null).
+
+ The type (including inheritance) to consider.
+ The existing instance to be modified (can be null).
+ The reader to apply to the instance (cannot be null).
+ The updated instance; this may be different to the instance argument if
+ either the original instance was null, or the stream defines a known sub-type of the
+ original instance.
+
+
+
+ This is the more "complete" version of Deserialize, which handles single instances of mapped types.
+ The value is read as a complete field, including field-header and (for sub-objects) a
+ length-prefix..kmc
+
+ In addition to that, this provides support for:
+ - basic values; individual int / string / Guid / etc
+ - IList sets of any type handled by TryDeserializeAuxiliaryType
+
+
+
+
+ Creates a new runtime model, to which the caller
+ can add support for a range of types. A model
+ can be used "as is", or can be compiled for
+ optimal performance.
+
+
+
+
+ Applies common proxy scenarios, resolving the actual type to consider
+
+
+
+
+ Indicates whether the supplied type is explicitly modelled by the model
+
+
+
+
+ Provides the key that represents a given type in the current model.
+ The type is also normalized for proxies at the same time.
+
+
+
+
+ Provides the key that represents a given type in the current model.
+
+
+
+
+ Writes a protocol-buffer representation of the given instance to the supplied stream.
+
+ Represents the type (including inheritance) to consider.
+ The existing instance to be serialized (cannot be null).
+ The destination stream to write to.
+
+
+
+ Applies a protocol-buffer stream to an existing instance (which may be null).
+
+ Represents the type (including inheritance) to consider.
+ The existing instance to be modified (can be null).
+ The binary stream to apply to the instance (cannot be null).
+ The updated instance; this may be different to the instance argument if
+ either the original instance was null, or the stream defines a known sub-type of the
+ original instance.
+
+
+
+ Create a deep clone of the supplied instance; any sub-items are also cloned.
+
+
+
+
+ Indicates that while an inheritance tree exists, the exact type encountered was not
+ specified in that hierarchy and cannot be processed.
+
+
+
+
+ Indicates that the given type was not expected, and cannot be processed.
+
+
+
+
+ Indicates that the given type cannot be constructed; it may still be possible to
+ deserialize into existing instances.
+
+
+
+
+ Returns true if the type supplied is either a recognised contract type,
+ or a *list* of a recognised contract type.
+
+ Note that primitives always return false, even though the engine
+ will, if forced, try to serialize such
+ True if this type is recognised as a serializable entity, else false
+
+
+
+ Returns true if the type supplied is a basic type with inbuilt handling,
+ a recognised contract type, or a *list* of a basic / contract type.
+
+
+
+
+ Returns true if the type supplied is a basic type with inbuilt handling,
+ or a *list* of a basic type with inbuilt handling
+
+
+
+
+ Suggest a .proto definition for the given type
+
+ The type to generate a .proto definition for, or null to generate a .proto that represents the entire model
+ The .proto definition as a string
+
+
+
+ Creates a new IFormatter that uses protocol-buffer [de]serialization.
+
+ A new IFormatter to be used during [de]serialization.
+ The type of object to be [de]deserialized by the formatter.
+
+
+
+ Used to provide custom services for writing and parsing type names when using dynamic types. Both parsing and formatting
+ are provided on a single API as it is essential that both are mapped identically at all times.
+
+
+
+
+ Indicates the type of callback to be used
+
+
+
+
+ Invoked before an object is serialized
+
+
+
+
+ Invoked after an object is serialized
+
+
+
+
+ Invoked before an object is deserialized (or when a new instance is created)
+
+
+
+
+ Invoked after an object is deserialized
+
+
+
+
+ Returns a sequence of the Type instances that can be
+ processed by this model.
+
+
+
+
+ Suggest a .proto definition for the given type
+
+ The type to generate a .proto definition for, or null to generate a .proto that represents the entire model
+ The .proto definition as a string
+
+
+
+ Adds support for an additional type in this model, optionally
+ appplying inbuilt patterns. If the type is already known to the
+ model, the existing type is returned **without** applying
+ any additional behaviour.
+
+ Inbuilt patterns include:
+ [ProtoContract]/[ProtoMember(n)]
+ [DataContract]/[DataMember(Order=n)]
+ [XmlType]/[XmlElement(Order=n)]
+ [On{Des|S}erializ{ing|ed}]
+ ShouldSerialize*/*Specified
+
+ The type to be supported
+ Whether to apply the inbuilt configuration patterns (via attributes etc), or
+ just add the type with no additional configuration (the type must then be manually configured).
+ The MetaType representing this type, allowing
+ further configuration.
+
+
+
+ Verifies that the model is still open to changes; if not, an exception is thrown
+
+
+
+
+ Prevents further changes to this model
+
+
+
+
+ Provides the key that represents a given type in the current model.
+
+
+
+
+ Writes a protocol-buffer representation of the given instance to the supplied stream.
+
+ Represents the type (including inheritance) to consider.
+ The existing instance to be serialized (cannot be null).
+ The destination stream to write to.
+
+
+
+ Applies a protocol-buffer stream to an existing instance (which may be null).
+
+ Represents the type (including inheritance) to consider.
+ The existing instance to be modified (can be null).
+ The binary stream to apply to the instance (cannot be null).
+ The updated instance; this may be different to the instance argument if
+ either the original instance was null, or the stream defines a known sub-type of the
+ original instance.
+
+
+
+ Compiles the serializers individually; this is *not* a full
+ standalone compile, but can significantly boost performance
+ while allowing additional types to be added.
+
+ An in-place compile can access non-public types / members
+
+
+
+ Fully compiles the current model into a static-compiled model instance
+
+ A full compilation is restricted to accessing public types / members
+ An instance of the newly created compiled type-model
+
+
+
+ Fully compiles the current model into a static-compiled serialization dll
+ (the serialization dll still requires protobuf-net for support services).
+
+ A full compilation is restricted to accessing public types / members
+ The name of the TypeModel class to create
+ The path for the new dll
+ An instance of the newly created compiled type-model
+
+
+
+ Fully compiles the current model into a static-compiled serialization dll
+ (the serialization dll still requires protobuf-net for support services).
+
+ A full compilation is restricted to accessing public types / members
+ An instance of the newly created compiled type-model
+
+
+
+ Designate a factory-method to use to create instances of any type; note that this only affect types seen by the serializer *after* setting the factory.
+
+
+
+
+ Global default that
+ enables/disables automatic tag generation based on the existing name / order
+ of the defined members. See
+ for usage and important warning / explanation.
+ You must set the global default before attempting to serialize/deserialize any
+ impacted type.
+
+
+
+
+ Global default that determines whether types are considered serializable
+ if they have [DataContract] / [XmlType]. With this enabled, ONLY
+ types marked as [ProtoContract] are added automatically.
+
+
+
+
+ Global switch that enables or disables the implicit
+ handling of "zero defaults"; meanning: if no other default is specified,
+ it assumes bools always default to false, integers to zero, etc.
+
+ If this is disabled, no such assumptions are made and only *explicit*
+ default values are processed. This is enabled by default to
+ preserve similar logic to v1.
+
+
+
+
+ Global switch that determines whether types with a .ToString() and a Parse(string)
+ should be serialized as strings.
+
+
+
+
+ The default model, used to support ProtoBuf.Serializer
+
+
+
+
+ Obtains the MetaType associated with a given Type for the current model,
+ allowing additional configuration.
+
+
+
+
+ Should serializers be compiled on demand? It may be useful
+ to disable this for debugging purposes.
+
+
+
+
+ Should support for unexpected types be added automatically?
+ If false, an exception is thrown when unexpected types
+ are encountered.
+
+
+
+
+ The amount of time to wait if there are concurrent metadata access operations
+
+
+
+
+ If a lock-contention is detected, this event signals the *owner* of the lock responsible for the blockage, indicating
+ what caused the problem; this is only raised if the lock-owning code successfully completes.
+
+
+
+
+ Represents configuration options for compiling a model to
+ a standalone assembly.
+
+
+
+
+ Import framework options from an existing type
+
+
+
+
+ The TargetFrameworkAttribute FrameworkName value to burn into the generated assembly
+
+
+
+
+ The TargetFrameworkAttribute FrameworkDisplayName value to burn into the generated assembly
+
+
+
+
+ The name of the TypeModel class to create
+
+
+
+
+ The path for the new dll
+
+
+
+
+ The runtime version for the generated assembly
+
+
+
+
+ The runtime version for the generated assembly
+
+
+
+
+ The acecssibility of the generated serializer
+
+
+
+
+ Type accessibility
+
+
+
+
+ Available to all callers
+
+
+
+
+ Available to all callers in the same assembly, or assemblies specified via [InternalsVisibleTo(...)]
+
+
+
+
+ Contains the stack-trace of the owning code when a lock-contention scenario is detected
+
+
+
+
+ The stack-trace of the code that owned the lock when a lock-contention scenario occurred
+
+
+
+
+ Event-type that is raised when a lock-contention scenario is detected
+
+
+
+
+ Represents an inherited type in a type hierarchy.
+
+
+
+
+ Creates a new SubType instance.
+
+ The field-number that is used to encapsulate the data (as a nested
+ message) for the derived dype.
+ The sub-type to be considered.
+ Specific encoding style to use; in particular, Grouped can be used to avoid buffering, but is not the default.
+
+
+
+ The field-number that is used to encapsulate the data (as a nested
+ message) for the derived dype.
+
+
+
+
+ The sub-type to be considered.
+
+
+
+
+ Event arguments needed to perform type-formatting functions; this could be resolving a Type to a string suitable for serialization, or could
+ be requesting a Type from a string. If no changes are made, a default implementation will be used (from the assembly-qualified names).
+
+
+
+
+ The type involved in this map; if this is initially null, a Type is expected to be provided for the string in FormattedName.
+
+
+
+
+ The formatted-name involved in this map; if this is initially null, a formatted-name is expected from the type in Type.
+
+
+
+
+ Delegate type used to perform type-formatting functions; the sender originates as the type-model.
+
+
+
+
+ Represents a member (property/field) that is mapped to a protobuf field
+
+
+
+
+ Creates a new ValueMember instance
+
+
+
+
+ Creates a new ValueMember instance
+
+
+
+
+ Specifies methods for working with optional data members.
+
+ Provides a method (null for none) to query whether this member should
+ be serialized; it must be of the form "bool {Method}()". The member is only serialized if the
+ method returns true.
+ Provides a method (null for none) to indicate that a member was
+ deserialized; it must be of the form "void {Method}(bool)", and will be called with "true"
+ when data is found.
+
+
+
+ The number that identifies this member in a protobuf stream
+
+
+
+
+ Gets the member (field/property) which this member relates to.
+
+
+
+
+ Within a list / array / etc, the type of object for each item in the list (especially useful with ArrayList)
+
+
+
+
+ The underlying type of the member
+
+
+
+
+ For abstract types (IList etc), the type of concrete object to create (if required)
+
+
+
+
+ The type the defines the member
+
+
+
+
+ The default value of the item (members with this value will not be serialized)
+
+
+
+
+ Specifies the rules used to process the field; this is used to determine the most appropriate
+ wite-type, but also to describe subtypes within that wire-type (such as SignedVariant)
+
+
+
+
+ Indicates whether this field should follow strict encoding rules; this means (for example) that if a "fixed32"
+ is encountered when "variant" is defined, then it will fail (throw an exception) when parsing. Note that
+ when serializing the defined type is always used.
+
+
+
+
+ Indicates whether this field should use packed encoding (which can save lots of space for repeated primitive values).
+ This option only applies to list/array data of primitive types (int, double, etc).
+
+
+
+
+ Indicates whether this field should *repace* existing values (the default is false, meaning *append*).
+ This option only applies to list/array data.
+
+
+
+
+ Indicates whether this field is mandatory.
+
+
+
+
+ Enables full object-tracking/full-graph support.
+
+
+
+
+ Embeds the type information into the stream, allowing usage with types not known in advance.
+
+
+
+
+ Gets the logical name for this member in the schema (this is not critical for binary serialization, but may be used
+ when inferring a schema).
+
+
+
+
+ Should lists have extended support for null values? Note this makes the serialization less efficient.
+
+
+
+
+ Specifies the type of prefix that should be applied to messages.
+
+
+
+
+ No length prefix is applied to the data; the data is terminated only be the end of the stream.
+
+
+
+
+ A base-128 length prefix is applied to the data (efficient for short messages).
+
+
+
+
+ A fixed-length (little-endian) length prefix is applied to the data (useful for compatibility).
+
+
+
+
+ A fixed-length (big-endian) length prefix is applied to the data (useful for compatibility).
+
+
+
+
+ Indicates that a type is defined for protocol-buffer serialization.
+
+
+
+
+ Gets or sets the defined name of the type.
+
+
+
+
+ Gets or sets the fist offset to use with implicit field tags;
+ only uesd if ImplicitFields is set.
+
+
+
+
+ If specified, alternative contract markers (such as markers for XmlSerailizer or DataContractSerializer) are ignored.
+
+
+
+
+ If specified, do NOT treat this type as a list, even if it looks like one.
+
+
+
+
+ Gets or sets the mechanism used to automatically infer field tags
+ for members. This option should be used in advanced scenarios only.
+ Please review the important notes against the ImplicitFields enumeration.
+
+
+
+
+ Enables/disables automatic tag generation based on the existing name / order
+ of the defined members. This option is not used for members marked
+ with ProtoMemberAttribute, as intended to provide compatibility with
+ WCF serialization. WARNING: when adding new fields you must take
+ care to increase the Order for new elements, otherwise data corruption
+ may occur.
+
+ If not explicitly specified, the default is assumed from Serializer.GlobalOptions.InferTagFromName.
+
+
+
+ Has a InferTagFromName value been explicitly set? if not, the default from the type-model is assumed.
+
+
+
+
+ Specifies an offset to apply to [DataMember(Order=...)] markers;
+ this is useful when working with mex-generated classes that have
+ a different origin (usually 1 vs 0) than the original data-contract.
+
+ This value is added to the Order of each member.
+
+
+
+
+ If true, the constructor for the type is bypassed during deserialization, meaning any field initializers
+ or other initialization code is skipped.
+
+
+
+
+ Should this type be treated as a reference by default? Please also see the implications of this,
+ as recorded on ProtoMemberAttribute.AsReference
+
+
+
+
+ Applies only to enums (not to DTO classes themselves); gets or sets a value indicating that an enum should be treated directly as an int/short/etc, rather
+ than enforcing .proto enum rules. This is useful *in particul* for [Flags] enums.
+
+
+
+
+ Has a EnumPassthru value been explicitly set?
+
+
+
+
+ Used to define protocol-buffer specific behavior for
+ enumerated values.
+
+
+
+
+ Indicates whether this instance has a customised value mapping
+
+ true if a specific value is set
+
+
+
+ Gets or sets the specific value to use for this enum during serialization.
+
+
+
+
+ Gets or sets the defined name of the enum, as used in .proto
+ (this name is not used during serialization).
+
+
+
+
+ Indicates an error during serialization/deserialization of a proto stream.
+
+
+
+ Creates a new ProtoException instance.
+
+
+ Creates a new ProtoException instance.
+
+
+ Creates a new ProtoException instance.
+
+
+ Creates a new ProtoException instance.
+
+
+
+ Indicates that a member should be excluded from serialization; this
+ is only normally used when using implict fields.
+
+
+
+
+ Indicates that a member should be excluded from serialization; this
+ is only normally used when using implict fields. This allows
+ ProtoIgnoreAttribute usage
+ even for partial classes where the individual members are not
+ under direct control.
+
+
+
+
+ Creates a new ProtoPartialIgnoreAttribute instance.
+
+ Specifies the member to be ignored.
+
+
+
+ The name of the member to be ignored.
+
+
+
+
+ Indicates the known-types to support for an individual
+ message. This serializes each level in the hierarchy as
+ a nested message to retain wire-compatibility with
+ other protocol-buffer implementations.
+
+
+
+
+ Creates a new instance of the ProtoIncludeAttribute.
+
+ The unique index (within the type) that will identify this data.
+ The additional type to serialize/deserialize.
+
+
+
+ Creates a new instance of the ProtoIncludeAttribute.
+
+ The unique index (within the type) that will identify this data.
+ The additional type to serialize/deserialize.
+
+
+
+ Gets the unique index (within the type) that will identify this data.
+
+
+
+
+ Gets the additional type to serialize/deserialize.
+
+
+
+
+ Gets the additional type to serialize/deserialize.
+
+
+
+
+ Specifies whether the inherited sype's sub-message should be
+ written with a length-prefix (default), or with group markers.
+
+
+
+
+ Declares a member to be used in protocol-buffer serialization, using
+ the given Tag. A DataFormat may be used to optimise the serialization
+ format (for instance, using zigzag encoding for negative numbers, or
+ fixed-length encoding for large values.
+
+
+
+
+ Compare with another ProtoMemberAttribute for sorting purposes
+
+
+
+
+ Compare with another ProtoMemberAttribute for sorting purposes
+
+
+
+
+ Creates a new ProtoMemberAttribute instance.
+
+ Specifies the unique tag used to identify this member within the type.
+
+
+
+ Gets or sets the original name defined in the .proto; not used
+ during serialization.
+
+
+
+
+ Gets or sets the data-format to be used when encoding this value.
+
+
+
+
+ Gets the unique tag used to identify this member within the type.
+
+
+
+
+ Gets or sets a value indicating whether this member is mandatory.
+
+
+
+
+ Gets a value indicating whether this member is packed.
+ This option only applies to list/array data of primitive types (int, double, etc).
+
+
+
+
+ Indicates whether this field should *repace* existing values (the default is false, meaning *append*).
+ This option only applies to list/array data.
+
+
+
+
+ Enables full object-tracking/full-graph support.
+
+
+
+
+ Embeds the type information into the stream, allowing usage with types not known in advance.
+
+
+
+
+ Gets or sets a value indicating whether this member is packed (lists/arrays).
+
+
+
+
+ Additional (optional) settings that control serialization of members
+
+
+
+
+ Default; no additional options
+
+
+
+
+ Indicates that repeated elements should use packed (length-prefixed) encoding
+
+
+
+
+ Indicates that the given item is required
+
+
+
+
+ Enables full object-tracking/full-graph support
+
+
+
+
+ Embeds the type information into the stream, allowing usage with types not known in advance
+
+
+
+
+ Indicates whether this field should *repace* existing values (the default is false, meaning *append*).
+ This option only applies to list/array data.
+
+
+
+
+ Determines whether the types AsReferenceDefault value is used, or whether this member's AsReference should be used
+
+
+
+
+ Declares a member to be used in protocol-buffer serialization, using
+ the given Tag and MemberName. This allows ProtoMemberAttribute usage
+ even for partial classes where the individual members are not
+ under direct control.
+ A DataFormat may be used to optimise the serialization
+ format (for instance, using zigzag encoding for negative numbers, or
+ fixed-length encoding for large values.
+
+
+
+
+ Creates a new ProtoMemberAttribute instance.
+
+ Specifies the unique tag used to identify this member within the type.
+ Specifies the member to be serialized.
+
+
+
+ The name of the member to be serialized.
+
+
+
+
+ A stateful reader, used to read a protobuf stream. Typical usage would be (sequentially) to call
+ ReadFieldHeader and (after matching the field) an appropriate Read* method.
+
+
+
+
+ Creates a new reader against a stream
+
+ The source stream
+ The model to use for serialization; this can be null, but this will impair the ability to deserialize sub-objects
+ Additional context about this serialization operation
+
+
+
+ Creates a new reader against a stream
+
+ The source stream
+ The model to use for serialization; this can be null, but this will impair the ability to deserialize sub-objects
+ Additional context about this serialization operation
+ The number of bytes to read, or -1 to read until the end of the stream
+
+
+
+ Releases resources used by the reader, but importantly does not Dispose the
+ underlying stream; in many typical use-cases the stream is used for different
+ processes, so it is assumed that the consumer will Dispose their stream separately.
+
+
+
+
+ Reads an unsigned 32-bit integer from the stream; supported wire-types: Variant, Fixed32, Fixed64
+
+
+
+
+ Reads a signed 16-bit integer from the stream: Variant, Fixed32, Fixed64, SignedVariant
+
+
+
+
+ Reads an unsigned 16-bit integer from the stream; supported wire-types: Variant, Fixed32, Fixed64
+
+
+
+
+ Reads an unsigned 8-bit integer from the stream; supported wire-types: Variant, Fixed32, Fixed64
+
+
+
+
+ Reads a signed 8-bit integer from the stream; supported wire-types: Variant, Fixed32, Fixed64, SignedVariant
+
+
+
+
+ Reads a signed 32-bit integer from the stream; supported wire-types: Variant, Fixed32, Fixed64, SignedVariant
+
+
+
+
+ Reads a signed 64-bit integer from the stream; supported wire-types: Variant, Fixed32, Fixed64, SignedVariant
+
+
+
+
+ Reads a string from the stream (using UTF8); supported wire-types: String
+
+
+
+
+ Throws an exception indication that the given value cannot be mapped to an enum.
+
+
+
+
+ Reads a double-precision number from the stream; supported wire-types: Fixed32, Fixed64
+
+
+
+
+ Reads (merges) a sub-message from the stream, internally calling StartSubItem and EndSubItem, and (in between)
+ parsing the message in accordance with the model associated with the reader
+
+
+
+
+ Makes the end of consuming a nested message in the stream; the stream must be either at the correct EndGroup
+ marker, or all fields of the sub-message must have been consumed (in either case, this means ReadFieldHeader
+ should return zero)
+
+
+
+
+ Begins consuming a nested message in the stream; supported wire-types: StartGroup, String
+
+ The token returned must be help and used when callining EndSubItem
+
+
+
+ Reads a field header from the stream, setting the wire-type and retuning the field number. If no
+ more fields are available, then 0 is returned. This methods respects sub-messages.
+
+
+
+
+ Looks ahead to see whether the next field in the stream is what we expect
+ (typically; what we've just finished reading - for example ot read successive list items)
+
+
+
+
+ Compares the streams current wire-type to the hinted wire-type, updating the reader if necessary; for example,
+ a Variant may be updated to SignedVariant. If the hinted wire-type is unrelated then no change is made.
+
+
+
+
+ Verifies that the stream's current wire-type is as expected, or a specialized sub-type (for example,
+ SignedVariant) - in which case the current wire-type is updated. Otherwise an exception is thrown.
+
+
+
+
+ Discards the data for the current field.
+
+
+
+
+ Reads an unsigned 64-bit integer from the stream; supported wire-types: Variant, Fixed32, Fixed64
+
+
+
+
+ Reads a single-precision number from the stream; supported wire-types: Fixed32, Fixed64
+
+
+
+
+ Reads a boolean value from the stream; supported wire-types: Variant, Fixed32, Fixed64
+
+
+
+
+
+ Reads a byte-sequence from the stream, appending them to an existing byte-sequence (which can be null); supported wire-types: String
+
+
+
+
+ Reads the length-prefix of a message from a stream without buffering additional data, allowing a fixed-length
+ reader to be created.
+
+
+
+
+ Reads a little-endian encoded integer. An exception is thrown if the data is not all available.
+
+
+
+
+ Reads a big-endian encoded integer. An exception is thrown if the data is not all available.
+
+
+
+
+ Reads a varint encoded integer. An exception is thrown if the data is not all available.
+
+
+
+
+ Reads a string (of a given lenth, in bytes) directly from the source into a pre-existing buffer. An exception is thrown if the data is not all available.
+
+
+
+
+ Reads a given number of bytes directly from the source. An exception is thrown if the data is not all available.
+
+
+
+
+ Reads a string (of a given lenth, in bytes) directly from the source. An exception is thrown if the data is not all available.
+
+
+
+
+ Reads the length-prefix of a message from a stream without buffering additional data, allowing a fixed-length
+ reader to be created.
+
+
+
+ The number of bytes consumed; 0 if no data available
+
+
+
+ Copies the current field into the instance as extension data
+
+
+
+
+ Indicates whether the reader still has data remaining in the current sub-item,
+ additionally setting the wire-type for the next field if there is more data.
+ This is used when decoding packed data.
+
+
+
+
+ Utility method, not intended for public use; this helps maintain the root object is complex scenarios
+
+
+
+
+ Reads a Type from the stream, using the model's DynamicTypeFormatting if appropriate; supported wire-types: String
+
+
+
+
+ Merge two objects using the details from the current reader; this is used to change the type
+ of objects when an inheritance relationship is discovered later than usual during deserilazation.
+
+
+
+
+ Gets the number of the field being processed.
+
+
+
+
+ Indicates the underlying proto serialization format on the wire.
+
+
+
+
+ Gets / sets a flag indicating whether strings should be checked for repetition; if
+ true, any repeated UTF-8 byte sequence will result in the same String instance, rather
+ than a second instance of the same string. Enabled by default. Note that this uses
+ a custom interner - the system-wide string interner is not used.
+
+
+
+
+ Addition information about this deserialization operation.
+
+
+
+
+ Returns the position of the current reader (note that this is not necessarily the same as the position
+ in the underlying stream, if multiple readers are used on the same stream)
+
+
+
+
+ Get the TypeModel associated with this reader
+
+
+
+
+ Represents an output stream for writing protobuf data.
+
+ Why is the API backwards (static methods with writer arguments)?
+ See: http://marcgravell.blogspot.com/2010/03/last-will-be-first-and-first-will-be.html
+
+
+
+
+ Write an encapsulated sub-object, using the supplied unique key (reprasenting a type).
+
+ The object to write.
+ The key that uniquely identifies the type within the model.
+ The destination.
+
+
+
+ Write an encapsulated sub-object, using the supplied unique key (reprasenting a type) - but the
+ caller is asserting that this relationship is non-recursive; no recursion check will be
+ performed.
+
+ The object to write.
+ The key that uniquely identifies the type within the model.
+ The destination.
+
+
+
+ Writes a field-header, indicating the format of the next data we plan to write.
+
+
+
+
+ Writes a byte-array to the stream; supported wire-types: String
+
+
+
+
+ Writes a byte-array to the stream; supported wire-types: String
+
+
+
+
+ Indicates the start of a nested record.
+
+ The instance to write.
+ The destination.
+ A token representing the state of the stream; this token is given to EndSubItem.
+
+
+
+ Indicates the end of a nested record.
+
+ The token obtained from StartubItem.
+ The destination.
+
+
+
+ Creates a new writer against a stream
+
+ The destination stream
+ The model to use for serialization; this can be null, but this will impair the ability to serialize sub-objects
+ Additional context about this serialization operation
+
+
+
+ Flushes data to the underlying stream, and releases any resources. The underlying stream is *not* disposed
+ by this operation.
+
+
+
+
+ Writes any buffered data (if possible) to the underlying stream.
+
+ The writer to flush
+ It is not always possible to fully flush, since some sequences
+ may require values to be back-filled into the byte-stream.
+
+
+
+ Writes an unsigned 32-bit integer to the stream; supported wire-types: Variant, Fixed32, Fixed64
+
+
+
+
+ Writes a string to the stream; supported wire-types: String
+
+
+
+
+ Writes an unsigned 64-bit integer to the stream; supported wire-types: Variant, Fixed32, Fixed64
+
+
+
+
+ Writes a signed 64-bit integer to the stream; supported wire-types: Variant, Fixed32, Fixed64, SignedVariant
+
+
+
+
+ Writes an unsigned 16-bit integer to the stream; supported wire-types: Variant, Fixed32, Fixed64
+
+
+
+
+ Writes a signed 16-bit integer to the stream; supported wire-types: Variant, Fixed32, Fixed64, SignedVariant
+
+
+
+
+ Writes an unsigned 16-bit integer to the stream; supported wire-types: Variant, Fixed32, Fixed64
+
+
+
+
+ Writes an unsigned 8-bit integer to the stream; supported wire-types: Variant, Fixed32, Fixed64
+
+
+
+
+ Writes a signed 8-bit integer to the stream; supported wire-types: Variant, Fixed32, Fixed64, SignedVariant
+
+
+
+
+ Writes a signed 32-bit integer to the stream; supported wire-types: Variant, Fixed32, Fixed64, SignedVariant
+
+
+
+
+ Writes a double-precision number to the stream; supported wire-types: Fixed32, Fixed64
+
+
+
+
+ Writes a single-precision number to the stream; supported wire-types: Fixed32, Fixed64
+
+
+
+
+ Throws an exception indicating that the given enum cannot be mapped to a serialized value.
+
+
+
+
+ Writes a boolean to the stream; supported wire-types: Variant, Fixed32, Fixed64
+
+
+
+
+ Copies any extension data stored for the instance to the underlying stream
+
+
+
+
+ Used for packed encoding; indicates that the next field should be skipped rather than
+ a field header written. Note that the field number must match, else an exception is thrown
+ when the attempt is made to write the (incorrect) field. The wire-type is taken from the
+ subsequent call to WriteFieldHeader. Only primitive types can be packed.
+
+
+
+
+ Specifies a known root object to use during reference-tracked serialization
+
+
+
+
+ Writes a Type to the stream, using the model's DynamicTypeFormatting if appropriate; supported wire-types: String
+
+
+
+
+ Addition information about this serialization operation.
+
+
+
+
+ Get the TypeModel associated with this writer
+
+
+
+
+ Additional information about a serialization operation
+
+
+
+
+ Convert a SerializationContext to a StreamingContext
+
+
+
+
+ Convert a StreamingContext to a SerializationContext
+
+
+
+
+ Gets or sets a user-defined object containing additional information about this serialization/deserialization operation.
+
+
+
+
+ A default SerializationContext, with minimal information.
+
+
+
+
+ Gets or sets the source or destination of the transmitted data.
+
+
+
+
+ Provides protocol-buffer serialization capability for concrete, attributed types. This
+ is a *default* model, but custom serializer models are also supported.
+
+
+ Protocol-buffer serialization is a compact binary format, designed to take
+ advantage of sparse data and knowledge of specific data types; it is also
+ extensible, allowing a type to be deserialized / merged even if some data is
+ not recognised.
+
+
+
+
+ The field number that is used as a default when serializing/deserializing a list of objects.
+ The data is treated as repeated message with field number 1.
+
+
+
+
+ Suggest a .proto definition for the given type
+
+ The type to generate a .proto definition for
+ The .proto definition as a string
+
+
+
+ Create a deep clone of the supplied instance; any sub-items are also cloned.
+
+
+
+
+ Applies a protocol-buffer stream to an existing instance.
+
+ The type being merged.
+ The existing instance to be modified (can be null).
+ The binary stream to apply to the instance (cannot be null).
+ The updated instance; this may be different to the instance argument if
+ either the original instance was null, or the stream defines a known sub-type of the
+ original instance.
+
+
+
+ Creates a new instance from a protocol-buffer stream
+
+ The type to be created.
+ The binary stream to apply to the new instance (cannot be null).
+ A new, initialized instance.
+
+
+
+ Writes a protocol-buffer representation of the given instance to the supplied stream.
+
+ The existing instance to be serialized (cannot be null).
+ The destination stream to write to.
+
+
+
+ Serializes a given instance and deserializes it as a different type;
+ this can be used to translate between wire-compatible objects (where
+ two .NET types represent the same data), or to promote/demote a type
+ through an inheritance hierarchy.
+
+ No assumption of compatibility is made between the types.
+ The type of the object being copied.
+ The type of the new object to be created.
+ The existing instance to use as a template.
+ A new instane of type TNewType, with the data from TOldType.
+
+
+
+ Writes a protocol-buffer representation of the given instance to the supplied SerializationInfo.
+
+ The type being serialized.
+ The existing instance to be serialized (cannot be null).
+ The destination SerializationInfo to write to.
+
+
+
+ Writes a protocol-buffer representation of the given instance to the supplied SerializationInfo.
+
+ The type being serialized.
+ The existing instance to be serialized (cannot be null).
+ The destination SerializationInfo to write to.
+ Additional information about this serialization operation.
+
+
+
+ Writes a protocol-buffer representation of the given instance to the supplied XmlWriter.
+
+ The type being serialized.
+ The existing instance to be serialized (cannot be null).
+ The destination XmlWriter to write to.
+
+
+
+ Applies a protocol-buffer from an XmlReader to an existing instance.
+
+ The type being merged.
+ The existing instance to be modified (cannot be null).
+ The XmlReader containing the data to apply to the instance (cannot be null).
+
+
+
+ Applies a protocol-buffer from a SerializationInfo to an existing instance.
+
+ The type being merged.
+ The existing instance to be modified (cannot be null).
+ The SerializationInfo containing the data to apply to the instance (cannot be null).
+
+
+
+ Applies a protocol-buffer from a SerializationInfo to an existing instance.
+
+ The type being merged.
+ The existing instance to be modified (cannot be null).
+ The SerializationInfo containing the data to apply to the instance (cannot be null).
+ Additional information about this serialization operation.
+
+
+
+ Precompiles the serializer for a given type.
+
+
+
+
+ Creates a new IFormatter that uses protocol-buffer [de]serialization.
+
+ The type of object to be [de]deserialized by the formatter.
+ A new IFormatter to be used during [de]serialization.
+
+
+
+ Reads a sequence of consecutive length-prefixed items from a stream, using
+ either base-128 or fixed-length prefixes. Base-128 prefixes with a tag
+ are directly comparable to serializing multiple items in succession
+ (use the tag to emulate the implicit behavior
+ when serializing a list/array). When a tag is
+ specified, any records with different tags are silently omitted. The
+ tag is ignored. The tag is ignores for fixed-length prefixes.
+
+ The type of object to deserialize.
+ The binary stream containing the serialized records.
+ The prefix style used in the data.
+ The tag of records to return (if non-positive, then no tag is
+ expected and all records are returned).
+ The sequence of deserialized objects.
+
+
+
+ Creates a new instance from a protocol-buffer stream that has a length-prefix
+ on data (to assist with network IO).
+
+ The type to be created.
+ The binary stream to apply to the new instance (cannot be null).
+ How to encode the length prefix.
+ A new, initialized instance.
+
+
+
+ Creates a new instance from a protocol-buffer stream that has a length-prefix
+ on data (to assist with network IO).
+
+ The type to be created.
+ The binary stream to apply to the new instance (cannot be null).
+ How to encode the length prefix.
+ The expected tag of the item (only used with base-128 prefix style).
+ A new, initialized instance.
+
+
+
+ Applies a protocol-buffer stream to an existing instance, using length-prefixed
+ data - useful with network IO.
+
+ The type being merged.
+ The existing instance to be modified (can be null).
+ The binary stream to apply to the instance (cannot be null).
+ How to encode the length prefix.
+ The updated instance; this may be different to the instance argument if
+ either the original instance was null, or the stream defines a known sub-type of the
+ original instance.
+
+
+
+ Writes a protocol-buffer representation of the given instance to the supplied stream,
+ with a length-prefix. This is useful for socket programming,
+ as DeserializeWithLengthPrefix/MergeWithLengthPrefix can be used to read the single object back
+ from an ongoing stream.
+
+ The type being serialized.
+ The existing instance to be serialized (cannot be null).
+ How to encode the length prefix.
+ The destination stream to write to.
+
+
+
+ Writes a protocol-buffer representation of the given instance to the supplied stream,
+ with a length-prefix. This is useful for socket programming,
+ as DeserializeWithLengthPrefix/MergeWithLengthPrefix can be used to read the single object back
+ from an ongoing stream.
+
+ The type being serialized.
+ The existing instance to be serialized (cannot be null).
+ How to encode the length prefix.
+ The destination stream to write to.
+ The tag used as a prefix to each record (only used with base-128 style prefixes).
+
+
+ Indicates the number of bytes expected for the next message.
+ The stream containing the data to investigate for a length.
+ The algorithm used to encode the length.
+ The length of the message, if it could be identified.
+ True if a length could be obtained, false otherwise.
+
+
+ Indicates the number of bytes expected for the next message.
+ The buffer containing the data to investigate for a length.
+ The offset of the first byte to read from the buffer.
+ The number of bytes to read from the buffer.
+ The algorithm used to encode the length.
+ The length of the message, if it could be identified.
+ True if a length could be obtained, false otherwise.
+
+
+
+ Releases any internal buffers that have been reserved for efficiency; this does not affect any serialization
+ operations; simply: it can be used (optionally) to release the buffers for garbage collection (at the expense
+ of having to re-allocate a new buffer for the next operation, rather than re-use prior buffers).
+
+
+
+
+ Provides non-generic access to the default serializer.
+
+
+
+
+ Create a deep clone of the supplied instance; any sub-items are also cloned.
+
+
+
+
+ Writes a protocol-buffer representation of the given instance to the supplied stream.
+
+ The existing instance to be serialized (cannot be null).
+ The destination stream to write to.
+
+
+
+ Creates a new instance from a protocol-buffer stream
+
+ The type to be created.
+ The binary stream to apply to the new instance (cannot be null).
+ A new, initialized instance.
+
+
+ Applies a protocol-buffer stream to an existing instance.
+ The existing instance to be modified (cannot be null).
+ The binary stream to apply to the instance (cannot be null).
+ The updated instance
+
+
+
+ Writes a protocol-buffer representation of the given instance to the supplied stream,
+ with a length-prefix. This is useful for socket programming,
+ as DeserializeWithLengthPrefix/MergeWithLengthPrefix can be used to read the single object back
+ from an ongoing stream.
+
+ The existing instance to be serialized (cannot be null).
+ How to encode the length prefix.
+ The destination stream to write to.
+ The tag used as a prefix to each record (only used with base-128 style prefixes).
+
+
+
+ Applies a protocol-buffer stream to an existing instance (or null), using length-prefixed
+ data - useful with network IO.
+
+ The existing instance to be modified (can be null).
+ The binary stream to apply to the instance (cannot be null).
+ How to encode the length prefix.
+ Used to resolve types on a per-field basis.
+ The updated instance; this may be different to the instance argument if
+ either the original instance was null, or the stream defines a known sub-type of the
+ original instance.
+
+
+
+ Indicates whether the supplied type is explicitly modelled by the model
+
+
+
+
+ Global switches that change the behavior of protobuf-net
+
+
+
+
+
+
+
+
+
+ Maps a field-number to a type
+
+
+
+
+ Perform the steps necessary to serialize this data.
+
+ The value to be serialized.
+ The writer entity that is accumulating the output data.
+
+
+
+ Perform the steps necessary to deserialize this data.
+
+ The current value, if appropriate.
+ The reader providing the input data.
+ The updated / replacement value.
+
+
+ Emit the IL necessary to perform the given actions
+ to serialize this data.
+
+ Details and utilities for the method being generated.
+ The source of the data to work against;
+ If the value is only needed once, then LoadValue is sufficient. If
+ the value is needed multiple times, then note that a "null"
+ means "the top of the stack", in which case you should create your
+ own copy - GetLocalWithValue.
+
+
+
+ Emit the IL necessary to perform the given actions to deserialize this data.
+
+ Details and utilities for the method being generated.
+ For nested values, the instance holding the values; note
+ that this is not always provided - a null means not supplied. Since this is always
+ a variable or argument, it is not necessary to consume this value.
+
+
+
+ The type that this serializer is intended to work for.
+
+
+
+
+ Indicates whether a Read operation replaces the existing value, or
+ extends the value. If false, the "value" parameter to Read is
+ discarded, and should be passed in as null.
+
+
+
+
+ Now all Read operations return a value (although most do); if false no
+ value should be expected.
+
+
+
+
+ Used to hold particulars relating to nested objects. This is opaque to the caller - simply
+ give back the token you are given at the end of an object.
+
+
+
+
+ Indicates the encoding used to represent an individual value in a protobuf stream
+
+
+
+
+ Represents an error condition
+
+
+
+
+ Base-128 variant-length encoding
+
+
+
+
+ Fixed-length 8-byte encoding
+
+
+
+
+ Length-variant-prefixed encoding
+
+
+
+
+ Indicates the start of a group
+
+
+
+
+ Indicates the end of a group
+
+
+
+
+ Fixed-length 4-byte encoding
+ 10
+
+
+
+ This is not a formal wire-type in the "protocol buffers" spec, but
+ denotes a variant integer that should be interpreted using
+ zig-zag semantics (so -ve numbers aren't a significant overhead)
+
+
+
+
diff --git a/packages/protobuf-net.2.0.0.668/lib/net30/protobuf-net.dll b/packages/protobuf-net.2.0.0.668/lib/net30/protobuf-net.dll
new file mode 100644
index 000000000..de4701c6a
Binary files /dev/null and b/packages/protobuf-net.2.0.0.668/lib/net30/protobuf-net.dll differ
diff --git a/packages/protobuf-net.2.0.0.668/lib/net30/protobuf-net.xml b/packages/protobuf-net.2.0.0.668/lib/net30/protobuf-net.xml
new file mode 100644
index 000000000..ccf3c6ff2
--- /dev/null
+++ b/packages/protobuf-net.2.0.0.668/lib/net30/protobuf-net.xml
@@ -0,0 +1,2879 @@
+
+
+
+ protobuf-net
+
+
+
+
+ Provides support for common .NET types that do not have a direct representation
+ in protobuf, using the definitions from bcl.proto
+
+
+
+
+ Creates a new instance of the specified type, bypassing the constructor.
+
+ The type to create
+ The new instance
+ If the platform does not support constructor-skipping
+
+
+
+ Writes a TimeSpan to a protobuf stream
+
+
+
+
+ Parses a TimeSpan from a protobuf stream
+
+
+
+
+ Parses a DateTime from a protobuf stream
+
+
+
+
+ Writes a DateTime to a protobuf stream
+
+
+
+
+ Parses a decimal from a protobuf stream
+
+
+
+
+ Writes a decimal to a protobuf stream
+
+
+
+
+ Writes a Guid to a protobuf stream
+
+
+
+
+ Parses a Guid from a protobuf stream
+
+
+
+
+ Reads an *implementation specific* bundled .NET object, including (as options) type-metadata, identity/re-use, etc.
+
+
+
+
+ Writes an *implementation specific* bundled .NET object, including (as options) type-metadata, identity/re-use, etc.
+
+
+
+
+ Optional behaviours that introduce .NET-specific functionality
+
+
+
+
+ No special behaviour
+
+
+
+
+ Enables full object-tracking/full-graph support.
+
+
+
+
+ Embeds the type information into the stream, allowing usage with types not known in advance.
+
+
+
+
+ If false, the constructor for the type is bypassed during deserialization, meaning any field initializers
+ or other initialization code is skipped.
+
+
+
+
+ Should the object index be reserved, rather than creating an object promptly
+
+
+
+
+ Provides a simple buffer-based implementation of an extension object.
+
+
+
+
+ Provides addition capability for supporting unexpected fields during
+ protocol-buffer serialization/deserialization. This allows for loss-less
+ round-trip/merge, even when the data is not fully understood.
+
+
+
+
+ Requests a stream into which any unexpected fields can be persisted.
+
+ A new stream suitable for storing data.
+
+
+
+ Indicates that all unexpected fields have now been stored. The
+ implementing class is responsible for closing the stream. If
+ "commit" is not true the data may be discarded.
+
+ The stream originally obtained by BeginAppend.
+ True if the append operation completed successfully.
+
+
+
+ Requests a stream of the unexpected fields previously stored.
+
+ A prepared stream of the unexpected fields.
+
+
+
+ Indicates that all unexpected fields have now been read. The
+ implementing class is responsible for closing the stream.
+
+ The stream originally obtained by BeginQuery.
+
+
+
+ Requests the length of the raw binary stream; this is used
+ when serializing sub-entities to indicate the expected size.
+
+ The length of the binary stream representing unexpected data.
+
+
+ Specifies a method on the root-contract in an hierarchy to be invoked before serialization.
+
+
+ Specifies a method on the root-contract in an hierarchy to be invoked after serialization.
+
+
+ Specifies a method on the root-contract in an hierarchy to be invoked before deserialization.
+
+
+ Specifies a method on the root-contract in an hierarchy to be invoked after deserialization.
+
+
+
+ Pushes a null reference onto the stack. Note that this should only
+ be used to return a null (or set a variable to null); for null-tests
+ use BranchIfTrue / BranchIfFalse.
+
+
+
+
+ Creates a new "using" block (equivalent) around a variable;
+ the variable must exist, and note that (unlike in C#) it is
+ the variables *final* value that gets disposed. If you need
+ *original* disposal, copy your variable first.
+
+ It is the callers responsibility to ensure that the variable's
+ scope fully-encapsulates the "using"; if not, the variable
+ may be re-used (and thus re-assigned) unexpectedly.
+
+
+
+
+ Sub-format to use when serializing/deserializing data
+
+
+
+
+ Uses the default encoding for the data-type.
+
+
+
+
+ When applied to signed integer-based data (including Decimal), this
+ indicates that zigzag variant encoding will be used. This means that values
+ with small magnitude (regardless of sign) take a small amount
+ of space to encode.
+
+
+
+
+ When applied to signed integer-based data (including Decimal), this
+ indicates that two's-complement variant encoding will be used.
+ This means that any -ve number will take 10 bytes (even for 32-bit),
+ so should only be used for compatibility.
+
+
+
+
+ When applied to signed integer-based data (including Decimal), this
+ indicates that a fixed amount of space will be used.
+
+
+
+
+ When applied to a sub-message, indicates that the value should be treated
+ as group-delimited.
+
+
+
+
+ Simple base class for supporting unexpected fields allowing
+ for loss-less round-tips/merge, even if the data is not understod.
+ The additional fields are (by default) stored in-memory in a buffer.
+
+ As an example of an alternative implementation, you might
+ choose to use the file system (temporary files) as the back-end, tracking
+ only the paths [such an object would ideally be IDisposable and use
+ a finalizer to ensure that the files are removed].
+
+
+
+
+ Indicates that the implementing type has support for protocol-buffer
+ extensions.
+
+ Can be implemented by deriving from Extensible.
+
+
+
+ Retrieves the extension object for the current
+ instance, optionally creating it if it does not already exist.
+
+ Should a new extension object be
+ created if it does not already exist?
+ The extension object if it exists (or was created), or null
+ if the extension object does not exist or is not available.
+ The createIfMissing argument is false during serialization,
+ and true during deserialization upon encountering unexpected fields.
+
+
+
+ Retrieves the extension object for the current
+ instance, optionally creating it if it does not already exist.
+
+ Should a new extension object be
+ created if it does not already exist?
+ The extension object if it exists (or was created), or null
+ if the extension object does not exist or is not available.
+ The createIfMissing argument is false during serialization,
+ and true during deserialization upon encountering unexpected fields.
+
+
+
+ Provides a simple, default implementation for extension support,
+ optionally creating it if it does not already exist. Designed to be called by
+ classes implementing .
+
+ Should a new extension object be
+ created if it does not already exist?
+ The extension field to check (and possibly update).
+ The extension object if it exists (or was created), or null
+ if the extension object does not exist or is not available.
+ The createIfMissing argument is false during serialization,
+ and true during deserialization upon encountering unexpected fields.
+
+
+
+ Appends the value as an additional (unexpected) data-field for the instance.
+ Note that for non-repeated sub-objects, this equates to a merge operation;
+ for repeated sub-objects this adds a new instance to the set; for simple
+ values the new value supercedes the old value.
+
+ Note that appending a value does not remove the old value from
+ the stream; avoid repeatedly appending values for the same field.
+ The type of the value to append.
+ The extensible object to append the value to.
+ The field identifier; the tag should not be defined as a known data-field for the instance.
+ The value to append.
+
+
+
+ Appends the value as an additional (unexpected) data-field for the instance.
+ Note that for non-repeated sub-objects, this equates to a merge operation;
+ for repeated sub-objects this adds a new instance to the set; for simple
+ values the new value supercedes the old value.
+
+ Note that appending a value does not remove the old value from
+ the stream; avoid repeatedly appending values for the same field.
+ The data-type of the field.
+ The data-format to use when encoding the value.
+ The extensible object to append the value to.
+ The field identifier; the tag should not be defined as a known data-field for the instance.
+ The value to append.
+
+
+
+ Queries an extensible object for an additional (unexpected) data-field for the instance.
+ The value returned is the composed value after merging any duplicated content; if the
+ value is "repeated" (a list), then use GetValues instead.
+
+ The data-type of the field.
+ The extensible object to obtain the value from.
+ The field identifier; the tag should not be defined as a known data-field for the instance.
+ The effective value of the field, or the default value if not found.
+
+
+
+ Queries an extensible object for an additional (unexpected) data-field for the instance.
+ The value returned is the composed value after merging any duplicated content; if the
+ value is "repeated" (a list), then use GetValues instead.
+
+ The data-type of the field.
+ The extensible object to obtain the value from.
+ The field identifier; the tag should not be defined as a known data-field for the instance.
+ The data-format to use when decoding the value.
+ The effective value of the field, or the default value if not found.
+
+
+
+ Queries an extensible object for an additional (unexpected) data-field for the instance.
+ The value returned (in "value") is the composed value after merging any duplicated content;
+ if the value is "repeated" (a list), then use GetValues instead.
+
+ The data-type of the field.
+ The effective value of the field, or the default value if not found.
+ The extensible object to obtain the value from.
+ The field identifier; the tag should not be defined as a known data-field for the instance.
+ True if data for the field was present, false otherwise.
+
+
+
+ Queries an extensible object for an additional (unexpected) data-field for the instance.
+ The value returned (in "value") is the composed value after merging any duplicated content;
+ if the value is "repeated" (a list), then use GetValues instead.
+
+ The data-type of the field.
+ The effective value of the field, or the default value if not found.
+ The extensible object to obtain the value from.
+ The field identifier; the tag should not be defined as a known data-field for the instance.
+ The data-format to use when decoding the value.
+ True if data for the field was present, false otherwise.
+
+
+
+ Queries an extensible object for an additional (unexpected) data-field for the instance.
+ The value returned (in "value") is the composed value after merging any duplicated content;
+ if the value is "repeated" (a list), then use GetValues instead.
+
+ The data-type of the field.
+ The effective value of the field, or the default value if not found.
+ The extensible object to obtain the value from.
+ The field identifier; the tag should not be defined as a known data-field for the instance.
+ The data-format to use when decoding the value.
+ Allow tags that are present as part of the definition; for example, to query unknown enum values.
+ True if data for the field was present, false otherwise.
+
+
+
+ Queries an extensible object for an additional (unexpected) data-field for the instance.
+ Each occurrence of the field is yielded separately, making this usage suitable for "repeated"
+ (list) fields.
+
+ The extended data is processed lazily as the enumerator is iterated.
+ The data-type of the field.
+ The extensible object to obtain the value from.
+ The field identifier; the tag should not be defined as a known data-field for the instance.
+ An enumerator that yields each occurrence of the field.
+
+
+
+ Queries an extensible object for an additional (unexpected) data-field for the instance.
+ Each occurrence of the field is yielded separately, making this usage suitable for "repeated"
+ (list) fields.
+
+ The extended data is processed lazily as the enumerator is iterated.
+ The data-type of the field.
+ The extensible object to obtain the value from.
+ The field identifier; the tag should not be defined as a known data-field for the instance.
+ The data-format to use when decoding the value.
+ An enumerator that yields each occurrence of the field.
+
+
+
+ Queries an extensible object for an additional (unexpected) data-field for the instance.
+ The value returned (in "value") is the composed value after merging any duplicated content;
+ if the value is "repeated" (a list), then use GetValues instead.
+
+ The data-type of the field.
+ The model to use for configuration.
+ The effective value of the field, or the default value if not found.
+ The extensible object to obtain the value from.
+ The field identifier; the tag should not be defined as a known data-field for the instance.
+ The data-format to use when decoding the value.
+ Allow tags that are present as part of the definition; for example, to query unknown enum values.
+ True if data for the field was present, false otherwise.
+
+
+
+ Queries an extensible object for an additional (unexpected) data-field for the instance.
+ Each occurrence of the field is yielded separately, making this usage suitable for "repeated"
+ (list) fields.
+
+ The extended data is processed lazily as the enumerator is iterated.
+ The model to use for configuration.
+ The data-type of the field.
+ The extensible object to obtain the value from.
+ The field identifier; the tag should not be defined as a known data-field for the instance.
+ The data-format to use when decoding the value.
+ An enumerator that yields each occurrence of the field.
+
+
+
+ Appends the value as an additional (unexpected) data-field for the instance.
+ Note that for non-repeated sub-objects, this equates to a merge operation;
+ for repeated sub-objects this adds a new instance to the set; for simple
+ values the new value supercedes the old value.
+
+ Note that appending a value does not remove the old value from
+ the stream; avoid repeatedly appending values for the same field.
+ The model to use for configuration.
+ The data-format to use when encoding the value.
+ The extensible object to append the value to.
+ The field identifier; the tag should not be defined as a known data-field for the instance.
+ The value to append.
+
+
+
+ This class acts as an internal wrapper allowing us to do a dynamic
+ methodinfo invoke; an't put into Serializer as don't want on public
+ API; can't put into Serializer<T> since we need to invoke
+ accross classes, which isn't allowed in Silverlight)
+
+
+
+
+ All this does is call GetExtendedValuesTyped with the correct type for "instance";
+ this ensures that we don't get issues with subclasses declaring conflicting types -
+ the caller must respect the fields defined for the type they pass in.
+
+
+
+
+ All this does is call GetExtendedValuesTyped with the correct type for "instance";
+ this ensures that we don't get issues with subclasses declaring conflicting types -
+ the caller must respect the fields defined for the type they pass in.
+
+
+
+
+ Not all frameworks are created equal (fx1.1 vs fx2.0,
+ micro-framework, compact-framework,
+ silverlight, etc). This class simply wraps up a few things that would
+ otherwise make the real code unnecessarily messy, providing fallback
+ implementations if necessary.
+
+
+
+
+ Intended to be a direct map to regular TypeCode, but:
+ - with missing types
+ - existing on WinRT
+
+
+
+
+ Specifies the method used to infer field tags for members of the type
+ under consideration. Tags are deduced using the invariant alphabetic
+ sequence of the members' names; this makes implicit field tags very brittle,
+ and susceptible to changes such as field names (normally an isolated
+ change).
+
+
+
+
+ No members are serialized implicitly; all members require a suitable
+ attribute such as [ProtoMember]. This is the recmomended mode for
+ most scenarios.
+
+
+
+
+ Public properties and fields are eligible for implicit serialization;
+ this treats the public API as a contract. Ordering beings from ImplicitFirstTag.
+
+
+
+
+ Public and non-public fields are eligible for implicit serialization;
+ this acts as a state/implementation serializer. Ordering beings from ImplicitFirstTag.
+
+
+
+
+ Represents the set of serialization callbacks to be used when serializing/deserializing a type.
+
+
+
+ Called before serializing an instance
+
+
+ Called before deserializing an instance
+
+
+ Called after serializing an instance
+
+
+ Called after deserializing an instance
+
+
+
+ True if any callback is set, else False
+
+
+
+
+ Represents a type at runtime for use with protobuf, allowing the field mappings (etc) to be defined
+
+
+
+
+ Get the name of the type being represented
+
+
+
+
+ Adds a known sub-type to the inheritance model
+
+
+
+
+ Adds a known sub-type to the inheritance model
+
+
+
+
+ Assigns the callbacks to use during serialiation/deserialization.
+
+ The method (or null) called before serialization begins.
+ The method (or null) called when serialization is complete.
+ The method (or null) called before deserialization begins (or when a new instance is created during deserialization).
+ The method (or null) called when deserialization is complete.
+ The set of callbacks.
+
+
+
+ Assigns the callbacks to use during serialiation/deserialization.
+
+ The name of the method (or null) called before serialization begins.
+ The name of the method (or null) called when serialization is complete.
+ The name of the method (or null) called before deserialization begins (or when a new instance is created during deserialization).
+ The name of the method (or null) called when deserialization is complete.
+ The set of callbacks.
+
+
+
+ Designate a factory-method to use to create instances of this type
+
+
+
+
+ Designate a factory-method to use to create instances of this type
+
+
+
+
+ Throws an exception if the type has been made immutable
+
+
+
+
+ Adds a member (by name) to the MetaType
+
+
+
+
+ Adds a member (by name) to the MetaType, returning the ValueMember rather than the fluent API.
+ This is otherwise identical to Add.
+
+
+
+
+ Adds a member (by name) to the MetaType
+
+
+
+
+ Performs serialization of this type via a surrogate; all
+ other serialization options are ignored and handled
+ by the surrogate's configuration.
+
+
+
+
+ Adds a set of members (by name) to the MetaType
+
+
+
+
+ Adds a member (by name) to the MetaType
+
+
+
+
+ Adds a member (by name) to the MetaType, including an itemType and defaultType for representing lists
+
+
+
+
+ Adds a member (by name) to the MetaType, including an itemType and defaultType for representing lists, returning the ValueMember rather than the fluent API.
+ This is otherwise identical to Add.
+
+
+
+
+ Returns the ValueMember instances associated with this type
+
+
+
+
+ Returns the SubType instances associated with this type
+
+
+
+
+ Compiles the serializer for this type; this is *not* a full
+ standalone compile, but can significantly boost performance
+ while allowing additional types to be added.
+
+ An in-place compile can access non-public types / members
+
+
+
+ Gets the base-type for this type
+
+
+
+
+ When used to compile a model, should public serialization/deserialzation methods
+ be included for this type?
+
+
+
+
+ Should this type be treated as a reference by default?
+
+
+
+
+ Indicates whether the current type has defined callbacks
+
+
+
+
+ Indicates whether the current type has defined subtypes
+
+
+
+
+ Returns the set of callbacks defined for this type
+
+
+
+
+ Gets or sets the name of this contract.
+
+
+
+
+ The runtime type that the meta-type represents
+
+
+
+
+ Gets or sets whether the type should use a parameterless constructor (the default),
+ or whether the type should skip the constructor completely. This option is not supported
+ on compact-framework.
+
+
+
+
+ The concrete type to create when a new instance of this type is needed; this may be useful when dealing
+ with dynamic proxies, or with interface-based APIs
+
+
+
+
+ Returns the ValueMember that matchs a given field number, or null if not found
+
+
+
+
+ Returns the ValueMember that matchs a given member (property/field), or null if not found
+
+
+
+
+ Gets or sets a value indicating that an enum should be treated directly as an int/short/etc, rather
+ than enforcing .proto enum rules. This is useful *in particul* for [Flags] enums.
+
+
+
+
+ Gets or sets a value indicating that this type should NOT be treated as a list, even if it has
+ familiar list-like characteristics (enumerable, add, etc)
+
+
+
+
+ Provides protobuf serialization support for a number of types that can be defined at runtime
+
+
+
+
+ Provides protobuf serialization support for a number of types
+
+
+
+
+ Resolve a System.Type to the compiler-specific type
+
+
+
+
+ Resolve a System.Type to the compiler-specific type
+
+
+
+
+ This is the more "complete" version of Serialize, which handles single instances of mapped types.
+ The value is written as a complete field, including field-header and (for sub-objects) a
+ length-prefix
+ In addition to that, this provides support for:
+ - basic values; individual int / string / Guid / etc
+ - IEnumerable sequences of any type handled by TrySerializeAuxiliaryType
+
+
+
+
+
+ Writes a protocol-buffer representation of the given instance to the supplied stream.
+
+ The existing instance to be serialized (cannot be null).
+ The destination stream to write to.
+
+
+
+ Writes a protocol-buffer representation of the given instance to the supplied stream.
+
+ The existing instance to be serialized (cannot be null).
+ The destination stream to write to.
+ Additional information about this serialization operation.
+
+
+
+ Writes a protocol-buffer representation of the given instance to the supplied writer.
+
+ The existing instance to be serialized (cannot be null).
+ The destination writer to write to.
+
+
+
+ Applies a protocol-buffer stream to an existing instance (or null), using length-prefixed
+ data - useful with network IO.
+
+ The type being merged.
+ The existing instance to be modified (can be null).
+ The binary stream to apply to the instance (cannot be null).
+ How to encode the length prefix.
+ The tag used as a prefix to each record (only used with base-128 style prefixes).
+ The updated instance; this may be different to the instance argument if
+ either the original instance was null, or the stream defines a known sub-type of the
+ original instance.
+
+
+
+ Applies a protocol-buffer stream to an existing instance (or null), using length-prefixed
+ data - useful with network IO.
+
+ The type being merged.
+ The existing instance to be modified (can be null).
+ The binary stream to apply to the instance (cannot be null).
+ How to encode the length prefix.
+ The tag used as a prefix to each record (only used with base-128 style prefixes).
+ Used to resolve types on a per-field basis.
+ The updated instance; this may be different to the instance argument if
+ either the original instance was null, or the stream defines a known sub-type of the
+ original instance.
+
+
+
+ Applies a protocol-buffer stream to an existing instance (or null), using length-prefixed
+ data - useful with network IO.
+
+ The type being merged.
+ The existing instance to be modified (can be null).
+ The binary stream to apply to the instance (cannot be null).
+ How to encode the length prefix.
+ The tag used as a prefix to each record (only used with base-128 style prefixes).
+ Used to resolve types on a per-field basis.
+ Returns the number of bytes consumed by this operation (includes length-prefix overheads and any skipped data).
+ The updated instance; this may be different to the instance argument if
+ either the original instance was null, or the stream defines a known sub-type of the
+ original instance.
+
+
+
+ Reads a sequence of consecutive length-prefixed items from a stream, using
+ either base-128 or fixed-length prefixes. Base-128 prefixes with a tag
+ are directly comparable to serializing multiple items in succession
+ (use the tag to emulate the implicit behavior
+ when serializing a list/array). When a tag is
+ specified, any records with different tags are silently omitted. The
+ tag is ignored. The tag is ignores for fixed-length prefixes.
+
+ The binary stream containing the serialized records.
+ The prefix style used in the data.
+ The tag of records to return (if non-positive, then no tag is
+ expected and all records are returned).
+ On a field-by-field basis, the type of object to deserialize (can be null if "type" is specified).
+ The type of object to deserialize (can be null if "resolver" is specified).
+ The sequence of deserialized objects.
+
+
+
+ Reads a sequence of consecutive length-prefixed items from a stream, using
+ either base-128 or fixed-length prefixes. Base-128 prefixes with a tag
+ are directly comparable to serializing multiple items in succession
+ (use the tag to emulate the implicit behavior
+ when serializing a list/array). When a tag is
+ specified, any records with different tags are silently omitted. The
+ tag is ignored. The tag is ignores for fixed-length prefixes.
+
+ The binary stream containing the serialized records.
+ The prefix style used in the data.
+ The tag of records to return (if non-positive, then no tag is
+ expected and all records are returned).
+ On a field-by-field basis, the type of object to deserialize (can be null if "type" is specified).
+ The type of object to deserialize (can be null if "resolver" is specified).
+ The sequence of deserialized objects.
+ Additional information about this serialization operation.
+
+
+
+ Reads a sequence of consecutive length-prefixed items from a stream, using
+ either base-128 or fixed-length prefixes. Base-128 prefixes with a tag
+ are directly comparable to serializing multiple items in succession
+ (use the tag to emulate the implicit behavior
+ when serializing a list/array). When a tag is
+ specified, any records with different tags are silently omitted. The
+ tag is ignored. The tag is ignores for fixed-length prefixes.
+
+ The type of object to deserialize.
+ The binary stream containing the serialized records.
+ The prefix style used in the data.
+ The tag of records to return (if non-positive, then no tag is
+ expected and all records are returned).
+ The sequence of deserialized objects.
+
+
+
+ Reads a sequence of consecutive length-prefixed items from a stream, using
+ either base-128 or fixed-length prefixes. Base-128 prefixes with a tag
+ are directly comparable to serializing multiple items in succession
+ (use the tag to emulate the implicit behavior
+ when serializing a list/array). When a tag is
+ specified, any records with different tags are silently omitted. The
+ tag is ignored. The tag is ignores for fixed-length prefixes.
+
+ The type of object to deserialize.
+ The binary stream containing the serialized records.
+ The prefix style used in the data.
+ The tag of records to return (if non-positive, then no tag is
+ expected and all records are returned).
+ The sequence of deserialized objects.
+ Additional information about this serialization operation.
+
+
+
+ Writes a protocol-buffer representation of the given instance to the supplied stream,
+ with a length-prefix. This is useful for socket programming,
+ as DeserializeWithLengthPrefix can be used to read the single object back
+ from an ongoing stream.
+
+ The type being serialized.
+ The existing instance to be serialized (cannot be null).
+ How to encode the length prefix.
+ The destination stream to write to.
+ The tag used as a prefix to each record (only used with base-128 style prefixes).
+
+
+
+ Writes a protocol-buffer representation of the given instance to the supplied stream,
+ with a length-prefix. This is useful for socket programming,
+ as DeserializeWithLengthPrefix can be used to read the single object back
+ from an ongoing stream.
+
+ The type being serialized.
+ The existing instance to be serialized (cannot be null).
+ How to encode the length prefix.
+ The destination stream to write to.
+ The tag used as a prefix to each record (only used with base-128 style prefixes).
+ Additional information about this serialization operation.
+
+
+
+ Applies a protocol-buffer stream to an existing instance (which may be null).
+
+ The type (including inheritance) to consider.
+ The existing instance to be modified (can be null).
+ The binary stream to apply to the instance (cannot be null).
+ The updated instance; this may be different to the instance argument if
+ either the original instance was null, or the stream defines a known sub-type of the
+ original instance.
+
+
+
+ Applies a protocol-buffer stream to an existing instance (which may be null).
+
+ The type (including inheritance) to consider.
+ The existing instance to be modified (can be null).
+ The binary stream to apply to the instance (cannot be null).
+ The updated instance; this may be different to the instance argument if
+ either the original instance was null, or the stream defines a known sub-type of the
+ original instance.
+ Additional information about this serialization operation.
+
+
+
+ Applies a protocol-buffer stream to an existing instance (which may be null).
+
+ The type (including inheritance) to consider.
+ The existing instance to be modified (can be null).
+ The binary stream to apply to the instance (cannot be null).
+ The number of bytes to consume.
+ The updated instance; this may be different to the instance argument if
+ either the original instance was null, or the stream defines a known sub-type of the
+ original instance.
+
+
+
+ Applies a protocol-buffer stream to an existing instance (which may be null).
+
+ The type (including inheritance) to consider.
+ The existing instance to be modified (can be null).
+ The binary stream to apply to the instance (cannot be null).
+ The number of bytes to consume (or -1 to read to the end of the stream).
+ The updated instance; this may be different to the instance argument if
+ either the original instance was null, or the stream defines a known sub-type of the
+ original instance.
+ Additional information about this serialization operation.
+
+
+
+ Applies a protocol-buffer reader to an existing instance (which may be null).
+
+ The type (including inheritance) to consider.
+ The existing instance to be modified (can be null).
+ The reader to apply to the instance (cannot be null).
+ The updated instance; this may be different to the instance argument if
+ either the original instance was null, or the stream defines a known sub-type of the
+ original instance.
+
+
+
+ This is the more "complete" version of Deserialize, which handles single instances of mapped types.
+ The value is read as a complete field, including field-header and (for sub-objects) a
+ length-prefix..kmc
+
+ In addition to that, this provides support for:
+ - basic values; individual int / string / Guid / etc
+ - IList sets of any type handled by TryDeserializeAuxiliaryType
+
+
+
+
+ Creates a new runtime model, to which the caller
+ can add support for a range of types. A model
+ can be used "as is", or can be compiled for
+ optimal performance.
+
+
+
+
+ Applies common proxy scenarios, resolving the actual type to consider
+
+
+
+
+ Indicates whether the supplied type is explicitly modelled by the model
+
+
+
+
+ Provides the key that represents a given type in the current model.
+ The type is also normalized for proxies at the same time.
+
+
+
+
+ Provides the key that represents a given type in the current model.
+
+
+
+
+ Writes a protocol-buffer representation of the given instance to the supplied stream.
+
+ Represents the type (including inheritance) to consider.
+ The existing instance to be serialized (cannot be null).
+ The destination stream to write to.
+
+
+
+ Applies a protocol-buffer stream to an existing instance (which may be null).
+
+ Represents the type (including inheritance) to consider.
+ The existing instance to be modified (can be null).
+ The binary stream to apply to the instance (cannot be null).
+ The updated instance; this may be different to the instance argument if
+ either the original instance was null, or the stream defines a known sub-type of the
+ original instance.
+
+
+
+ Create a deep clone of the supplied instance; any sub-items are also cloned.
+
+
+
+
+ Indicates that while an inheritance tree exists, the exact type encountered was not
+ specified in that hierarchy and cannot be processed.
+
+
+
+
+ Indicates that the given type was not expected, and cannot be processed.
+
+
+
+
+ Indicates that the given type cannot be constructed; it may still be possible to
+ deserialize into existing instances.
+
+
+
+
+ Returns true if the type supplied is either a recognised contract type,
+ or a *list* of a recognised contract type.
+
+ Note that primitives always return false, even though the engine
+ will, if forced, try to serialize such
+ True if this type is recognised as a serializable entity, else false
+
+
+
+ Returns true if the type supplied is a basic type with inbuilt handling,
+ a recognised contract type, or a *list* of a basic / contract type.
+
+
+
+
+ Returns true if the type supplied is a basic type with inbuilt handling,
+ or a *list* of a basic type with inbuilt handling
+
+
+
+
+ Suggest a .proto definition for the given type
+
+ The type to generate a .proto definition for, or null to generate a .proto that represents the entire model
+ The .proto definition as a string
+
+
+
+ Creates a new IFormatter that uses protocol-buffer [de]serialization.
+
+ A new IFormatter to be used during [de]serialization.
+ The type of object to be [de]deserialized by the formatter.
+
+
+
+ Used to provide custom services for writing and parsing type names when using dynamic types. Both parsing and formatting
+ are provided on a single API as it is essential that both are mapped identically at all times.
+
+
+
+
+ Indicates the type of callback to be used
+
+
+
+
+ Invoked before an object is serialized
+
+
+
+
+ Invoked after an object is serialized
+
+
+
+
+ Invoked before an object is deserialized (or when a new instance is created)
+
+
+
+
+ Invoked after an object is deserialized
+
+
+
+
+ Returns a sequence of the Type instances that can be
+ processed by this model.
+
+
+
+
+ Suggest a .proto definition for the given type
+
+ The type to generate a .proto definition for, or null to generate a .proto that represents the entire model
+ The .proto definition as a string
+
+
+
+ Adds support for an additional type in this model, optionally
+ appplying inbuilt patterns. If the type is already known to the
+ model, the existing type is returned **without** applying
+ any additional behaviour.
+
+ Inbuilt patterns include:
+ [ProtoContract]/[ProtoMember(n)]
+ [DataContract]/[DataMember(Order=n)]
+ [XmlType]/[XmlElement(Order=n)]
+ [On{Des|S}erializ{ing|ed}]
+ ShouldSerialize*/*Specified
+
+ The type to be supported
+ Whether to apply the inbuilt configuration patterns (via attributes etc), or
+ just add the type with no additional configuration (the type must then be manually configured).
+ The MetaType representing this type, allowing
+ further configuration.
+
+
+
+ Verifies that the model is still open to changes; if not, an exception is thrown
+
+
+
+
+ Prevents further changes to this model
+
+
+
+
+ Provides the key that represents a given type in the current model.
+
+
+
+
+ Writes a protocol-buffer representation of the given instance to the supplied stream.
+
+ Represents the type (including inheritance) to consider.
+ The existing instance to be serialized (cannot be null).
+ The destination stream to write to.
+
+
+
+ Applies a protocol-buffer stream to an existing instance (which may be null).
+
+ Represents the type (including inheritance) to consider.
+ The existing instance to be modified (can be null).
+ The binary stream to apply to the instance (cannot be null).
+ The updated instance; this may be different to the instance argument if
+ either the original instance was null, or the stream defines a known sub-type of the
+ original instance.
+
+
+
+ Compiles the serializers individually; this is *not* a full
+ standalone compile, but can significantly boost performance
+ while allowing additional types to be added.
+
+ An in-place compile can access non-public types / members
+
+
+
+ Fully compiles the current model into a static-compiled model instance
+
+ A full compilation is restricted to accessing public types / members
+ An instance of the newly created compiled type-model
+
+
+
+ Fully compiles the current model into a static-compiled serialization dll
+ (the serialization dll still requires protobuf-net for support services).
+
+ A full compilation is restricted to accessing public types / members
+ The name of the TypeModel class to create
+ The path for the new dll
+ An instance of the newly created compiled type-model
+
+
+
+ Fully compiles the current model into a static-compiled serialization dll
+ (the serialization dll still requires protobuf-net for support services).
+
+ A full compilation is restricted to accessing public types / members
+ An instance of the newly created compiled type-model
+
+
+
+ Designate a factory-method to use to create instances of any type; note that this only affect types seen by the serializer *after* setting the factory.
+
+
+
+
+ Global default that
+ enables/disables automatic tag generation based on the existing name / order
+ of the defined members. See
+ for usage and important warning / explanation.
+ You must set the global default before attempting to serialize/deserialize any
+ impacted type.
+
+
+
+
+ Global default that determines whether types are considered serializable
+ if they have [DataContract] / [XmlType]. With this enabled, ONLY
+ types marked as [ProtoContract] are added automatically.
+
+
+
+
+ Global switch that enables or disables the implicit
+ handling of "zero defaults"; meanning: if no other default is specified,
+ it assumes bools always default to false, integers to zero, etc.
+
+ If this is disabled, no such assumptions are made and only *explicit*
+ default values are processed. This is enabled by default to
+ preserve similar logic to v1.
+
+
+
+
+ Global switch that determines whether types with a .ToString() and a Parse(string)
+ should be serialized as strings.
+
+
+
+
+ The default model, used to support ProtoBuf.Serializer
+
+
+
+
+ Obtains the MetaType associated with a given Type for the current model,
+ allowing additional configuration.
+
+
+
+
+ Should serializers be compiled on demand? It may be useful
+ to disable this for debugging purposes.
+
+
+
+
+ Should support for unexpected types be added automatically?
+ If false, an exception is thrown when unexpected types
+ are encountered.
+
+
+
+
+ The amount of time to wait if there are concurrent metadata access operations
+
+
+
+
+ If a lock-contention is detected, this event signals the *owner* of the lock responsible for the blockage, indicating
+ what caused the problem; this is only raised if the lock-owning code successfully completes.
+
+
+
+
+ Represents configuration options for compiling a model to
+ a standalone assembly.
+
+
+
+
+ Import framework options from an existing type
+
+
+
+
+ The TargetFrameworkAttribute FrameworkName value to burn into the generated assembly
+
+
+
+
+ The TargetFrameworkAttribute FrameworkDisplayName value to burn into the generated assembly
+
+
+
+
+ The name of the TypeModel class to create
+
+
+
+
+ The path for the new dll
+
+
+
+
+ The runtime version for the generated assembly
+
+
+
+
+ The runtime version for the generated assembly
+
+
+
+
+ The acecssibility of the generated serializer
+
+
+
+
+ Type accessibility
+
+
+
+
+ Available to all callers
+
+
+
+
+ Available to all callers in the same assembly, or assemblies specified via [InternalsVisibleTo(...)]
+
+
+
+
+ Contains the stack-trace of the owning code when a lock-contention scenario is detected
+
+
+
+
+ The stack-trace of the code that owned the lock when a lock-contention scenario occurred
+
+
+
+
+ Event-type that is raised when a lock-contention scenario is detected
+
+
+
+
+ Represents an inherited type in a type hierarchy.
+
+
+
+
+ Creates a new SubType instance.
+
+ The field-number that is used to encapsulate the data (as a nested
+ message) for the derived dype.
+ The sub-type to be considered.
+ Specific encoding style to use; in particular, Grouped can be used to avoid buffering, but is not the default.
+
+
+
+ The field-number that is used to encapsulate the data (as a nested
+ message) for the derived dype.
+
+
+
+
+ The sub-type to be considered.
+
+
+
+
+ Event arguments needed to perform type-formatting functions; this could be resolving a Type to a string suitable for serialization, or could
+ be requesting a Type from a string. If no changes are made, a default implementation will be used (from the assembly-qualified names).
+
+
+
+
+ The type involved in this map; if this is initially null, a Type is expected to be provided for the string in FormattedName.
+
+
+
+
+ The formatted-name involved in this map; if this is initially null, a formatted-name is expected from the type in Type.
+
+
+
+
+ Delegate type used to perform type-formatting functions; the sender originates as the type-model.
+
+
+
+
+ Represents a member (property/field) that is mapped to a protobuf field
+
+
+
+
+ Creates a new ValueMember instance
+
+
+
+
+ Creates a new ValueMember instance
+
+
+
+
+ Specifies methods for working with optional data members.
+
+ Provides a method (null for none) to query whether this member should
+ be serialized; it must be of the form "bool {Method}()". The member is only serialized if the
+ method returns true.
+ Provides a method (null for none) to indicate that a member was
+ deserialized; it must be of the form "void {Method}(bool)", and will be called with "true"
+ when data is found.
+
+
+
+ The number that identifies this member in a protobuf stream
+
+
+
+
+ Gets the member (field/property) which this member relates to.
+
+
+
+
+ Within a list / array / etc, the type of object for each item in the list (especially useful with ArrayList)
+
+
+
+
+ The underlying type of the member
+
+
+
+
+ For abstract types (IList etc), the type of concrete object to create (if required)
+
+
+
+
+ The type the defines the member
+
+
+
+
+ The default value of the item (members with this value will not be serialized)
+
+
+
+
+ Specifies the rules used to process the field; this is used to determine the most appropriate
+ wite-type, but also to describe subtypes within that wire-type (such as SignedVariant)
+
+
+
+
+ Indicates whether this field should follow strict encoding rules; this means (for example) that if a "fixed32"
+ is encountered when "variant" is defined, then it will fail (throw an exception) when parsing. Note that
+ when serializing the defined type is always used.
+
+
+
+
+ Indicates whether this field should use packed encoding (which can save lots of space for repeated primitive values).
+ This option only applies to list/array data of primitive types (int, double, etc).
+
+
+
+
+ Indicates whether this field should *repace* existing values (the default is false, meaning *append*).
+ This option only applies to list/array data.
+
+
+
+
+ Indicates whether this field is mandatory.
+
+
+
+
+ Enables full object-tracking/full-graph support.
+
+
+
+
+ Embeds the type information into the stream, allowing usage with types not known in advance.
+
+
+
+
+ Gets the logical name for this member in the schema (this is not critical for binary serialization, but may be used
+ when inferring a schema).
+
+
+
+
+ Should lists have extended support for null values? Note this makes the serialization less efficient.
+
+
+
+
+ Specifies the type of prefix that should be applied to messages.
+
+
+
+
+ No length prefix is applied to the data; the data is terminated only be the end of the stream.
+
+
+
+
+ A base-128 length prefix is applied to the data (efficient for short messages).
+
+
+
+
+ A fixed-length (little-endian) length prefix is applied to the data (useful for compatibility).
+
+
+
+
+ A fixed-length (big-endian) length prefix is applied to the data (useful for compatibility).
+
+
+
+
+ Indicates that a type is defined for protocol-buffer serialization.
+
+
+
+
+ Gets or sets the defined name of the type.
+
+
+
+
+ Gets or sets the fist offset to use with implicit field tags;
+ only uesd if ImplicitFields is set.
+
+
+
+
+ If specified, alternative contract markers (such as markers for XmlSerailizer or DataContractSerializer) are ignored.
+
+
+
+
+ If specified, do NOT treat this type as a list, even if it looks like one.
+
+
+
+
+ Gets or sets the mechanism used to automatically infer field tags
+ for members. This option should be used in advanced scenarios only.
+ Please review the important notes against the ImplicitFields enumeration.
+
+
+
+
+ Enables/disables automatic tag generation based on the existing name / order
+ of the defined members. This option is not used for members marked
+ with ProtoMemberAttribute, as intended to provide compatibility with
+ WCF serialization. WARNING: when adding new fields you must take
+ care to increase the Order for new elements, otherwise data corruption
+ may occur.
+
+ If not explicitly specified, the default is assumed from Serializer.GlobalOptions.InferTagFromName.
+
+
+
+ Has a InferTagFromName value been explicitly set? if not, the default from the type-model is assumed.
+
+
+
+
+ Specifies an offset to apply to [DataMember(Order=...)] markers;
+ this is useful when working with mex-generated classes that have
+ a different origin (usually 1 vs 0) than the original data-contract.
+
+ This value is added to the Order of each member.
+
+
+
+
+ If true, the constructor for the type is bypassed during deserialization, meaning any field initializers
+ or other initialization code is skipped.
+
+
+
+
+ Should this type be treated as a reference by default? Please also see the implications of this,
+ as recorded on ProtoMemberAttribute.AsReference
+
+
+
+
+ Applies only to enums (not to DTO classes themselves); gets or sets a value indicating that an enum should be treated directly as an int/short/etc, rather
+ than enforcing .proto enum rules. This is useful *in particul* for [Flags] enums.
+
+
+
+
+ Has a EnumPassthru value been explicitly set?
+
+
+
+
+ Used to define protocol-buffer specific behavior for
+ enumerated values.
+
+
+
+
+ Indicates whether this instance has a customised value mapping
+
+ true if a specific value is set
+
+
+
+ Gets or sets the specific value to use for this enum during serialization.
+
+
+
+
+ Gets or sets the defined name of the enum, as used in .proto
+ (this name is not used during serialization).
+
+
+
+
+ Indicates an error during serialization/deserialization of a proto stream.
+
+
+
+ Creates a new ProtoException instance.
+
+
+ Creates a new ProtoException instance.
+
+
+ Creates a new ProtoException instance.
+
+
+ Creates a new ProtoException instance.
+
+
+
+ Indicates that a member should be excluded from serialization; this
+ is only normally used when using implict fields.
+
+
+
+
+ Indicates that a member should be excluded from serialization; this
+ is only normally used when using implict fields. This allows
+ ProtoIgnoreAttribute usage
+ even for partial classes where the individual members are not
+ under direct control.
+
+
+
+
+ Creates a new ProtoPartialIgnoreAttribute instance.
+
+ Specifies the member to be ignored.
+
+
+
+ The name of the member to be ignored.
+
+
+
+
+ Indicates the known-types to support for an individual
+ message. This serializes each level in the hierarchy as
+ a nested message to retain wire-compatibility with
+ other protocol-buffer implementations.
+
+
+
+
+ Creates a new instance of the ProtoIncludeAttribute.
+
+ The unique index (within the type) that will identify this data.
+ The additional type to serialize/deserialize.
+
+
+
+ Creates a new instance of the ProtoIncludeAttribute.
+
+ The unique index (within the type) that will identify this data.
+ The additional type to serialize/deserialize.
+
+
+
+ Gets the unique index (within the type) that will identify this data.
+
+
+
+
+ Gets the additional type to serialize/deserialize.
+
+
+
+
+ Gets the additional type to serialize/deserialize.
+
+
+
+
+ Specifies whether the inherited sype's sub-message should be
+ written with a length-prefix (default), or with group markers.
+
+
+
+
+ Declares a member to be used in protocol-buffer serialization, using
+ the given Tag. A DataFormat may be used to optimise the serialization
+ format (for instance, using zigzag encoding for negative numbers, or
+ fixed-length encoding for large values.
+
+
+
+
+ Compare with another ProtoMemberAttribute for sorting purposes
+
+
+
+
+ Compare with another ProtoMemberAttribute for sorting purposes
+
+
+
+
+ Creates a new ProtoMemberAttribute instance.
+
+ Specifies the unique tag used to identify this member within the type.
+
+
+
+ Gets or sets the original name defined in the .proto; not used
+ during serialization.
+
+
+
+
+ Gets or sets the data-format to be used when encoding this value.
+
+
+
+
+ Gets the unique tag used to identify this member within the type.
+
+
+
+
+ Gets or sets a value indicating whether this member is mandatory.
+
+
+
+
+ Gets a value indicating whether this member is packed.
+ This option only applies to list/array data of primitive types (int, double, etc).
+
+
+
+
+ Indicates whether this field should *repace* existing values (the default is false, meaning *append*).
+ This option only applies to list/array data.
+
+
+
+
+ Enables full object-tracking/full-graph support.
+
+
+
+
+ Embeds the type information into the stream, allowing usage with types not known in advance.
+
+
+
+
+ Gets or sets a value indicating whether this member is packed (lists/arrays).
+
+
+
+
+ Additional (optional) settings that control serialization of members
+
+
+
+
+ Default; no additional options
+
+
+
+
+ Indicates that repeated elements should use packed (length-prefixed) encoding
+
+
+
+
+ Indicates that the given item is required
+
+
+
+
+ Enables full object-tracking/full-graph support
+
+
+
+
+ Embeds the type information into the stream, allowing usage with types not known in advance
+
+
+
+
+ Indicates whether this field should *repace* existing values (the default is false, meaning *append*).
+ This option only applies to list/array data.
+
+
+
+
+ Determines whether the types AsReferenceDefault value is used, or whether this member's AsReference should be used
+
+
+
+
+ Declares a member to be used in protocol-buffer serialization, using
+ the given Tag and MemberName. This allows ProtoMemberAttribute usage
+ even for partial classes where the individual members are not
+ under direct control.
+ A DataFormat may be used to optimise the serialization
+ format (for instance, using zigzag encoding for negative numbers, or
+ fixed-length encoding for large values.
+
+
+
+
+ Creates a new ProtoMemberAttribute instance.
+
+ Specifies the unique tag used to identify this member within the type.
+ Specifies the member to be serialized.
+
+
+
+ The name of the member to be serialized.
+
+
+
+
+ A stateful reader, used to read a protobuf stream. Typical usage would be (sequentially) to call
+ ReadFieldHeader and (after matching the field) an appropriate Read* method.
+
+
+
+
+ Creates a new reader against a stream
+
+ The source stream
+ The model to use for serialization; this can be null, but this will impair the ability to deserialize sub-objects
+ Additional context about this serialization operation
+
+
+
+ Creates a new reader against a stream
+
+ The source stream
+ The model to use for serialization; this can be null, but this will impair the ability to deserialize sub-objects
+ Additional context about this serialization operation
+ The number of bytes to read, or -1 to read until the end of the stream
+
+
+
+ Releases resources used by the reader, but importantly does not Dispose the
+ underlying stream; in many typical use-cases the stream is used for different
+ processes, so it is assumed that the consumer will Dispose their stream separately.
+
+
+
+
+ Reads an unsigned 32-bit integer from the stream; supported wire-types: Variant, Fixed32, Fixed64
+
+
+
+
+ Reads a signed 16-bit integer from the stream: Variant, Fixed32, Fixed64, SignedVariant
+
+
+
+
+ Reads an unsigned 16-bit integer from the stream; supported wire-types: Variant, Fixed32, Fixed64
+
+
+
+
+ Reads an unsigned 8-bit integer from the stream; supported wire-types: Variant, Fixed32, Fixed64
+
+
+
+
+ Reads a signed 8-bit integer from the stream; supported wire-types: Variant, Fixed32, Fixed64, SignedVariant
+
+
+
+
+ Reads a signed 32-bit integer from the stream; supported wire-types: Variant, Fixed32, Fixed64, SignedVariant
+
+
+
+
+ Reads a signed 64-bit integer from the stream; supported wire-types: Variant, Fixed32, Fixed64, SignedVariant
+
+
+
+
+ Reads a string from the stream (using UTF8); supported wire-types: String
+
+
+
+
+ Throws an exception indication that the given value cannot be mapped to an enum.
+
+
+
+
+ Reads a double-precision number from the stream; supported wire-types: Fixed32, Fixed64
+
+
+
+
+ Reads (merges) a sub-message from the stream, internally calling StartSubItem and EndSubItem, and (in between)
+ parsing the message in accordance with the model associated with the reader
+
+
+
+
+ Makes the end of consuming a nested message in the stream; the stream must be either at the correct EndGroup
+ marker, or all fields of the sub-message must have been consumed (in either case, this means ReadFieldHeader
+ should return zero)
+
+
+
+
+ Begins consuming a nested message in the stream; supported wire-types: StartGroup, String
+
+ The token returned must be help and used when callining EndSubItem
+
+
+
+ Reads a field header from the stream, setting the wire-type and retuning the field number. If no
+ more fields are available, then 0 is returned. This methods respects sub-messages.
+
+
+
+
+ Looks ahead to see whether the next field in the stream is what we expect
+ (typically; what we've just finished reading - for example ot read successive list items)
+
+
+
+
+ Compares the streams current wire-type to the hinted wire-type, updating the reader if necessary; for example,
+ a Variant may be updated to SignedVariant. If the hinted wire-type is unrelated then no change is made.
+
+
+
+
+ Verifies that the stream's current wire-type is as expected, or a specialized sub-type (for example,
+ SignedVariant) - in which case the current wire-type is updated. Otherwise an exception is thrown.
+
+
+
+
+ Discards the data for the current field.
+
+
+
+
+ Reads an unsigned 64-bit integer from the stream; supported wire-types: Variant, Fixed32, Fixed64
+
+
+
+
+ Reads a single-precision number from the stream; supported wire-types: Fixed32, Fixed64
+
+
+
+
+ Reads a boolean value from the stream; supported wire-types: Variant, Fixed32, Fixed64
+
+
+
+
+
+ Reads a byte-sequence from the stream, appending them to an existing byte-sequence (which can be null); supported wire-types: String
+
+
+
+
+ Reads the length-prefix of a message from a stream without buffering additional data, allowing a fixed-length
+ reader to be created.
+
+
+
+
+ Reads a little-endian encoded integer. An exception is thrown if the data is not all available.
+
+
+
+
+ Reads a big-endian encoded integer. An exception is thrown if the data is not all available.
+
+
+
+
+ Reads a varint encoded integer. An exception is thrown if the data is not all available.
+
+
+
+
+ Reads a string (of a given lenth, in bytes) directly from the source into a pre-existing buffer. An exception is thrown if the data is not all available.
+
+
+
+
+ Reads a given number of bytes directly from the source. An exception is thrown if the data is not all available.
+
+
+
+
+ Reads a string (of a given lenth, in bytes) directly from the source. An exception is thrown if the data is not all available.
+
+
+
+
+ Reads the length-prefix of a message from a stream without buffering additional data, allowing a fixed-length
+ reader to be created.
+
+
+
+ The number of bytes consumed; 0 if no data available
+
+
+
+ Copies the current field into the instance as extension data
+
+
+
+
+ Indicates whether the reader still has data remaining in the current sub-item,
+ additionally setting the wire-type for the next field if there is more data.
+ This is used when decoding packed data.
+
+
+
+
+ Utility method, not intended for public use; this helps maintain the root object is complex scenarios
+
+
+
+
+ Reads a Type from the stream, using the model's DynamicTypeFormatting if appropriate; supported wire-types: String
+
+
+
+
+ Merge two objects using the details from the current reader; this is used to change the type
+ of objects when an inheritance relationship is discovered later than usual during deserilazation.
+
+
+
+
+ Gets the number of the field being processed.
+
+
+
+
+ Indicates the underlying proto serialization format on the wire.
+
+
+
+
+ Gets / sets a flag indicating whether strings should be checked for repetition; if
+ true, any repeated UTF-8 byte sequence will result in the same String instance, rather
+ than a second instance of the same string. Enabled by default. Note that this uses
+ a custom interner - the system-wide string interner is not used.
+
+
+
+
+ Addition information about this deserialization operation.
+
+
+
+
+ Returns the position of the current reader (note that this is not necessarily the same as the position
+ in the underlying stream, if multiple readers are used on the same stream)
+
+
+
+
+ Get the TypeModel associated with this reader
+
+
+
+
+ Represents an output stream for writing protobuf data.
+
+ Why is the API backwards (static methods with writer arguments)?
+ See: http://marcgravell.blogspot.com/2010/03/last-will-be-first-and-first-will-be.html
+
+
+
+
+ Write an encapsulated sub-object, using the supplied unique key (reprasenting a type).
+
+ The object to write.
+ The key that uniquely identifies the type within the model.
+ The destination.
+
+
+
+ Write an encapsulated sub-object, using the supplied unique key (reprasenting a type) - but the
+ caller is asserting that this relationship is non-recursive; no recursion check will be
+ performed.
+
+ The object to write.
+ The key that uniquely identifies the type within the model.
+ The destination.
+
+
+
+ Writes a field-header, indicating the format of the next data we plan to write.
+
+
+
+
+ Writes a byte-array to the stream; supported wire-types: String
+
+
+
+
+ Writes a byte-array to the stream; supported wire-types: String
+
+
+
+
+ Indicates the start of a nested record.
+
+ The instance to write.
+ The destination.
+ A token representing the state of the stream; this token is given to EndSubItem.
+
+
+
+ Indicates the end of a nested record.
+
+ The token obtained from StartubItem.
+ The destination.
+
+
+
+ Creates a new writer against a stream
+
+ The destination stream
+ The model to use for serialization; this can be null, but this will impair the ability to serialize sub-objects
+ Additional context about this serialization operation
+
+
+
+ Flushes data to the underlying stream, and releases any resources. The underlying stream is *not* disposed
+ by this operation.
+
+
+
+
+ Writes any buffered data (if possible) to the underlying stream.
+
+ The writer to flush
+ It is not always possible to fully flush, since some sequences
+ may require values to be back-filled into the byte-stream.
+
+
+
+ Writes an unsigned 32-bit integer to the stream; supported wire-types: Variant, Fixed32, Fixed64
+
+
+
+
+ Writes a string to the stream; supported wire-types: String
+
+
+
+
+ Writes an unsigned 64-bit integer to the stream; supported wire-types: Variant, Fixed32, Fixed64
+
+
+
+
+ Writes a signed 64-bit integer to the stream; supported wire-types: Variant, Fixed32, Fixed64, SignedVariant
+
+
+
+
+ Writes an unsigned 16-bit integer to the stream; supported wire-types: Variant, Fixed32, Fixed64
+
+
+
+
+ Writes a signed 16-bit integer to the stream; supported wire-types: Variant, Fixed32, Fixed64, SignedVariant
+
+
+
+
+ Writes an unsigned 16-bit integer to the stream; supported wire-types: Variant, Fixed32, Fixed64
+
+
+
+
+ Writes an unsigned 8-bit integer to the stream; supported wire-types: Variant, Fixed32, Fixed64
+
+
+
+
+ Writes a signed 8-bit integer to the stream; supported wire-types: Variant, Fixed32, Fixed64, SignedVariant
+
+
+
+
+ Writes a signed 32-bit integer to the stream; supported wire-types: Variant, Fixed32, Fixed64, SignedVariant
+
+
+
+
+ Writes a double-precision number to the stream; supported wire-types: Fixed32, Fixed64
+
+
+
+
+ Writes a single-precision number to the stream; supported wire-types: Fixed32, Fixed64
+
+
+
+
+ Throws an exception indicating that the given enum cannot be mapped to a serialized value.
+
+
+
+
+ Writes a boolean to the stream; supported wire-types: Variant, Fixed32, Fixed64
+
+
+
+
+ Copies any extension data stored for the instance to the underlying stream
+
+
+
+
+ Used for packed encoding; indicates that the next field should be skipped rather than
+ a field header written. Note that the field number must match, else an exception is thrown
+ when the attempt is made to write the (incorrect) field. The wire-type is taken from the
+ subsequent call to WriteFieldHeader. Only primitive types can be packed.
+
+
+
+
+ Specifies a known root object to use during reference-tracked serialization
+
+
+
+
+ Writes a Type to the stream, using the model's DynamicTypeFormatting if appropriate; supported wire-types: String
+
+
+
+
+ Addition information about this serialization operation.
+
+
+
+
+ Get the TypeModel associated with this writer
+
+
+
+
+ Additional information about a serialization operation
+
+
+
+
+ Convert a SerializationContext to a StreamingContext
+
+
+
+
+ Convert a StreamingContext to a SerializationContext
+
+
+
+
+ Gets or sets a user-defined object containing additional information about this serialization/deserialization operation.
+
+
+
+
+ A default SerializationContext, with minimal information.
+
+
+
+
+ Gets or sets the source or destination of the transmitted data.
+
+
+
+
+ Provides protocol-buffer serialization capability for concrete, attributed types. This
+ is a *default* model, but custom serializer models are also supported.
+
+
+ Protocol-buffer serialization is a compact binary format, designed to take
+ advantage of sparse data and knowledge of specific data types; it is also
+ extensible, allowing a type to be deserialized / merged even if some data is
+ not recognised.
+
+
+
+
+ The field number that is used as a default when serializing/deserializing a list of objects.
+ The data is treated as repeated message with field number 1.
+
+
+
+
+ Suggest a .proto definition for the given type
+
+ The type to generate a .proto definition for
+ The .proto definition as a string
+
+
+
+ Create a deep clone of the supplied instance; any sub-items are also cloned.
+
+
+
+
+ Applies a protocol-buffer stream to an existing instance.
+
+ The type being merged.
+ The existing instance to be modified (can be null).
+ The binary stream to apply to the instance (cannot be null).
+ The updated instance; this may be different to the instance argument if
+ either the original instance was null, or the stream defines a known sub-type of the
+ original instance.
+
+
+
+ Creates a new instance from a protocol-buffer stream
+
+ The type to be created.
+ The binary stream to apply to the new instance (cannot be null).
+ A new, initialized instance.
+
+
+
+ Writes a protocol-buffer representation of the given instance to the supplied stream.
+
+ The existing instance to be serialized (cannot be null).
+ The destination stream to write to.
+
+
+
+ Serializes a given instance and deserializes it as a different type;
+ this can be used to translate between wire-compatible objects (where
+ two .NET types represent the same data), or to promote/demote a type
+ through an inheritance hierarchy.
+
+ No assumption of compatibility is made between the types.
+ The type of the object being copied.
+ The type of the new object to be created.
+ The existing instance to use as a template.
+ A new instane of type TNewType, with the data from TOldType.
+
+
+
+ Writes a protocol-buffer representation of the given instance to the supplied SerializationInfo.
+
+ The type being serialized.
+ The existing instance to be serialized (cannot be null).
+ The destination SerializationInfo to write to.
+
+
+
+ Writes a protocol-buffer representation of the given instance to the supplied SerializationInfo.
+
+ The type being serialized.
+ The existing instance to be serialized (cannot be null).
+ The destination SerializationInfo to write to.
+ Additional information about this serialization operation.
+
+
+
+ Writes a protocol-buffer representation of the given instance to the supplied XmlWriter.
+
+ The type being serialized.
+ The existing instance to be serialized (cannot be null).
+ The destination XmlWriter to write to.
+
+
+
+ Applies a protocol-buffer from an XmlReader to an existing instance.
+
+ The type being merged.
+ The existing instance to be modified (cannot be null).
+ The XmlReader containing the data to apply to the instance (cannot be null).
+
+
+
+ Applies a protocol-buffer from a SerializationInfo to an existing instance.
+
+ The type being merged.
+ The existing instance to be modified (cannot be null).
+ The SerializationInfo containing the data to apply to the instance (cannot be null).
+
+
+
+ Applies a protocol-buffer from a SerializationInfo to an existing instance.
+
+ The type being merged.
+ The existing instance to be modified (cannot be null).
+ The SerializationInfo containing the data to apply to the instance (cannot be null).
+ Additional information about this serialization operation.
+
+
+
+ Precompiles the serializer for a given type.
+
+
+
+
+ Creates a new IFormatter that uses protocol-buffer [de]serialization.
+
+ The type of object to be [de]deserialized by the formatter.
+ A new IFormatter to be used during [de]serialization.
+
+
+
+ Reads a sequence of consecutive length-prefixed items from a stream, using
+ either base-128 or fixed-length prefixes. Base-128 prefixes with a tag
+ are directly comparable to serializing multiple items in succession
+ (use the tag to emulate the implicit behavior
+ when serializing a list/array). When a tag is
+ specified, any records with different tags are silently omitted. The
+ tag is ignored. The tag is ignores for fixed-length prefixes.
+
+ The type of object to deserialize.
+ The binary stream containing the serialized records.
+ The prefix style used in the data.
+ The tag of records to return (if non-positive, then no tag is
+ expected and all records are returned).
+ The sequence of deserialized objects.
+
+
+
+ Creates a new instance from a protocol-buffer stream that has a length-prefix
+ on data (to assist with network IO).
+
+ The type to be created.
+ The binary stream to apply to the new instance (cannot be null).
+ How to encode the length prefix.
+ A new, initialized instance.
+
+
+
+ Creates a new instance from a protocol-buffer stream that has a length-prefix
+ on data (to assist with network IO).
+
+ The type to be created.
+ The binary stream to apply to the new instance (cannot be null).
+ How to encode the length prefix.
+ The expected tag of the item (only used with base-128 prefix style).
+ A new, initialized instance.
+
+
+
+ Applies a protocol-buffer stream to an existing instance, using length-prefixed
+ data - useful with network IO.
+
+ The type being merged.
+ The existing instance to be modified (can be null).
+ The binary stream to apply to the instance (cannot be null).
+ How to encode the length prefix.
+ The updated instance; this may be different to the instance argument if
+ either the original instance was null, or the stream defines a known sub-type of the
+ original instance.
+
+
+
+ Writes a protocol-buffer representation of the given instance to the supplied stream,
+ with a length-prefix. This is useful for socket programming,
+ as DeserializeWithLengthPrefix/MergeWithLengthPrefix can be used to read the single object back
+ from an ongoing stream.
+
+ The type being serialized.
+ The existing instance to be serialized (cannot be null).
+ How to encode the length prefix.
+ The destination stream to write to.
+
+
+
+ Writes a protocol-buffer representation of the given instance to the supplied stream,
+ with a length-prefix. This is useful for socket programming,
+ as DeserializeWithLengthPrefix/MergeWithLengthPrefix can be used to read the single object back
+ from an ongoing stream.
+
+ The type being serialized.
+ The existing instance to be serialized (cannot be null).
+ How to encode the length prefix.
+ The destination stream to write to.
+ The tag used as a prefix to each record (only used with base-128 style prefixes).
+
+
+ Indicates the number of bytes expected for the next message.
+ The stream containing the data to investigate for a length.
+ The algorithm used to encode the length.
+ The length of the message, if it could be identified.
+ True if a length could be obtained, false otherwise.
+
+
+ Indicates the number of bytes expected for the next message.
+ The buffer containing the data to investigate for a length.
+ The offset of the first byte to read from the buffer.
+ The number of bytes to read from the buffer.
+ The algorithm used to encode the length.
+ The length of the message, if it could be identified.
+ True if a length could be obtained, false otherwise.
+
+
+
+ Releases any internal buffers that have been reserved for efficiency; this does not affect any serialization
+ operations; simply: it can be used (optionally) to release the buffers for garbage collection (at the expense
+ of having to re-allocate a new buffer for the next operation, rather than re-use prior buffers).
+
+
+
+
+ Provides non-generic access to the default serializer.
+
+
+
+
+ Create a deep clone of the supplied instance; any sub-items are also cloned.
+
+
+
+
+ Writes a protocol-buffer representation of the given instance to the supplied stream.
+
+ The existing instance to be serialized (cannot be null).
+ The destination stream to write to.
+
+
+
+ Creates a new instance from a protocol-buffer stream
+
+ The type to be created.
+ The binary stream to apply to the new instance (cannot be null).
+ A new, initialized instance.
+
+
+ Applies a protocol-buffer stream to an existing instance.
+ The existing instance to be modified (cannot be null).
+ The binary stream to apply to the instance (cannot be null).
+ The updated instance
+
+
+
+ Writes a protocol-buffer representation of the given instance to the supplied stream,
+ with a length-prefix. This is useful for socket programming,
+ as DeserializeWithLengthPrefix/MergeWithLengthPrefix can be used to read the single object back
+ from an ongoing stream.
+
+ The existing instance to be serialized (cannot be null).
+ How to encode the length prefix.
+ The destination stream to write to.
+ The tag used as a prefix to each record (only used with base-128 style prefixes).
+
+
+
+ Applies a protocol-buffer stream to an existing instance (or null), using length-prefixed
+ data - useful with network IO.
+
+ The existing instance to be modified (can be null).
+ The binary stream to apply to the instance (cannot be null).
+ How to encode the length prefix.
+ Used to resolve types on a per-field basis.
+ The updated instance; this may be different to the instance argument if
+ either the original instance was null, or the stream defines a known sub-type of the
+ original instance.
+
+
+
+ Indicates whether the supplied type is explicitly modelled by the model
+
+
+
+
+ Global switches that change the behavior of protobuf-net
+
+
+
+
+
+
+
+
+
+ Maps a field-number to a type
+
+
+
+
+ Perform the steps necessary to serialize this data.
+
+ The value to be serialized.
+ The writer entity that is accumulating the output data.
+
+
+
+ Perform the steps necessary to deserialize this data.
+
+ The current value, if appropriate.
+ The reader providing the input data.
+ The updated / replacement value.
+
+
+ Emit the IL necessary to perform the given actions
+ to serialize this data.
+
+ Details and utilities for the method being generated.
+ The source of the data to work against;
+ If the value is only needed once, then LoadValue is sufficient. If
+ the value is needed multiple times, then note that a "null"
+ means "the top of the stack", in which case you should create your
+ own copy - GetLocalWithValue.
+
+
+
+ Emit the IL necessary to perform the given actions to deserialize this data.
+
+ Details and utilities for the method being generated.
+ For nested values, the instance holding the values; note
+ that this is not always provided - a null means not supplied. Since this is always
+ a variable or argument, it is not necessary to consume this value.
+
+
+
+ The type that this serializer is intended to work for.
+
+
+
+
+ Indicates whether a Read operation replaces the existing value, or
+ extends the value. If false, the "value" parameter to Read is
+ discarded, and should be passed in as null.
+
+
+
+
+ Now all Read operations return a value (although most do); if false no
+ value should be expected.
+
+
+
+
+ Uses protocol buffer serialization on the specified operation; note that this
+ must be enabled on both the client and server.
+
+
+
+
+ Configuration element to swap out DatatContractSerilaizer with the XmlProtoSerializer for a given endpoint.
+
+
+
+
+
+ Creates a new ProtoBehaviorExtension instance.
+
+
+
+
+ Creates a behavior extension based on the current configuration settings.
+
+ The behavior extension.
+
+
+
+ Gets the type of behavior.
+
+
+
+
+ Behavior to swap out DatatContractSerilaizer with the XmlProtoSerializer for a given endpoint.
+
+ Add the following to the server and client app.config in the system.serviceModel section:
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Configure your endpoints to have a behaviorConfiguration as follows:
+
+
+
+
+
+
+
+
+
+
+
+
+ Describes a WCF operation behaviour that can perform protobuf serialization
+
+
+
+
+ Create a new ProtoOperationBehavior instance
+
+
+
+
+ Creates a protobuf serializer if possible (falling back to the default WCF serializer)
+
+
+
+
+ The type-model that should be used with this behaviour
+
+
+
+
+ An xml object serializer that can embed protobuf data in a base-64 hunk (looking like a byte[])
+
+
+
+
+ Attempt to create a new serializer for the given model and type
+
+ A new serializer instance if the type is recognised by the model; null otherwise
+
+
+
+ Creates a new serializer for the given model and type
+
+
+
+
+ Ends an object in the output
+
+
+
+
+ Begins an object in the output
+
+
+
+
+ Writes the body of an object in the output
+
+
+
+
+ Indicates whether this is the start of an object we are prepared to handle
+
+
+
+
+ Reads the body of an object
+
+
+
+
+ Used to hold particulars relating to nested objects. This is opaque to the caller - simply
+ give back the token you are given at the end of an object.
+
+
+
+
+ Indicates the encoding used to represent an individual value in a protobuf stream
+
+
+
+
+ Represents an error condition
+
+
+
+
+ Base-128 variant-length encoding
+
+
+
+
+ Fixed-length 8-byte encoding
+
+
+
+
+ Length-variant-prefixed encoding
+
+
+
+
+ Indicates the start of a group
+
+
+
+
+ Indicates the end of a group
+
+
+
+
+ Fixed-length 4-byte encoding
+ 10
+
+
+
+ This is not a formal wire-type in the "protocol buffers" spec, but
+ denotes a variant integer that should be interpreted using
+ zig-zag semantics (so -ve numbers aren't a significant overhead)
+
+
+
+
diff --git a/packages/protobuf-net.2.0.0.668/lib/net35-cf/protobuf-net.dll b/packages/protobuf-net.2.0.0.668/lib/net35-cf/protobuf-net.dll
new file mode 100644
index 000000000..dd6c1163c
Binary files /dev/null and b/packages/protobuf-net.2.0.0.668/lib/net35-cf/protobuf-net.dll differ
diff --git a/packages/protobuf-net.2.0.0.668/lib/net35-cf/protobuf-net.xml b/packages/protobuf-net.2.0.0.668/lib/net35-cf/protobuf-net.xml
new file mode 100644
index 000000000..dcbe26f6d
--- /dev/null
+++ b/packages/protobuf-net.2.0.0.668/lib/net35-cf/protobuf-net.xml
@@ -0,0 +1,2529 @@
+
+
+
+ protobuf-net
+
+
+
+
+ Provides support for common .NET types that do not have a direct representation
+ in protobuf, using the definitions from bcl.proto
+
+
+
+
+ Creates a new instance of the specified type, bypassing the constructor.
+
+ The type to create
+ The new instance
+ If the platform does not support constructor-skipping
+
+
+
+ Writes a TimeSpan to a protobuf stream
+
+
+
+
+ Parses a TimeSpan from a protobuf stream
+
+
+
+
+ Parses a DateTime from a protobuf stream
+
+
+
+
+ Writes a DateTime to a protobuf stream
+
+
+
+
+ Parses a decimal from a protobuf stream
+
+
+
+
+ Writes a decimal to a protobuf stream
+
+
+
+
+ Writes a Guid to a protobuf stream
+
+
+
+
+ Parses a Guid from a protobuf stream
+
+
+
+
+ Reads an *implementation specific* bundled .NET object, including (as options) type-metadata, identity/re-use, etc.
+
+
+
+
+ Writes an *implementation specific* bundled .NET object, including (as options) type-metadata, identity/re-use, etc.
+
+
+
+
+ Optional behaviours that introduce .NET-specific functionality
+
+
+
+
+ No special behaviour
+
+
+
+
+ Enables full object-tracking/full-graph support.
+
+
+
+
+ Embeds the type information into the stream, allowing usage with types not known in advance.
+
+
+
+
+ If false, the constructor for the type is bypassed during deserialization, meaning any field initializers
+ or other initialization code is skipped.
+
+
+
+
+ Should the object index be reserved, rather than creating an object promptly
+
+
+
+
+ Provides a simple buffer-based implementation of an extension object.
+
+
+
+
+ Provides addition capability for supporting unexpected fields during
+ protocol-buffer serialization/deserialization. This allows for loss-less
+ round-trip/merge, even when the data is not fully understood.
+
+
+
+
+ Requests a stream into which any unexpected fields can be persisted.
+
+ A new stream suitable for storing data.
+
+
+
+ Indicates that all unexpected fields have now been stored. The
+ implementing class is responsible for closing the stream. If
+ "commit" is not true the data may be discarded.
+
+ The stream originally obtained by BeginAppend.
+ True if the append operation completed successfully.
+
+
+
+ Requests a stream of the unexpected fields previously stored.
+
+ A prepared stream of the unexpected fields.
+
+
+
+ Indicates that all unexpected fields have now been read. The
+ implementing class is responsible for closing the stream.
+
+ The stream originally obtained by BeginQuery.
+
+
+
+ Requests the length of the raw binary stream; this is used
+ when serializing sub-entities to indicate the expected size.
+
+ The length of the binary stream representing unexpected data.
+
+
+ Specifies a method on the root-contract in an hierarchy to be invoked before serialization.
+
+
+ Specifies a method on the root-contract in an hierarchy to be invoked after serialization.
+
+
+ Specifies a method on the root-contract in an hierarchy to be invoked before deserialization.
+
+
+ Specifies a method on the root-contract in an hierarchy to be invoked after deserialization.
+
+
+
+ Sub-format to use when serializing/deserializing data
+
+
+
+
+ Uses the default encoding for the data-type.
+
+
+
+
+ When applied to signed integer-based data (including Decimal), this
+ indicates that zigzag variant encoding will be used. This means that values
+ with small magnitude (regardless of sign) take a small amount
+ of space to encode.
+
+
+
+
+ When applied to signed integer-based data (including Decimal), this
+ indicates that two's-complement variant encoding will be used.
+ This means that any -ve number will take 10 bytes (even for 32-bit),
+ so should only be used for compatibility.
+
+
+
+
+ When applied to signed integer-based data (including Decimal), this
+ indicates that a fixed amount of space will be used.
+
+
+
+
+ When applied to a sub-message, indicates that the value should be treated
+ as group-delimited.
+
+
+
+
+ Simple base class for supporting unexpected fields allowing
+ for loss-less round-tips/merge, even if the data is not understod.
+ The additional fields are (by default) stored in-memory in a buffer.
+
+ As an example of an alternative implementation, you might
+ choose to use the file system (temporary files) as the back-end, tracking
+ only the paths [such an object would ideally be IDisposable and use
+ a finalizer to ensure that the files are removed].
+
+
+
+
+ Indicates that the implementing type has support for protocol-buffer
+ extensions.
+
+ Can be implemented by deriving from Extensible.
+
+
+
+ Retrieves the extension object for the current
+ instance, optionally creating it if it does not already exist.
+
+ Should a new extension object be
+ created if it does not already exist?
+ The extension object if it exists (or was created), or null
+ if the extension object does not exist or is not available.
+ The createIfMissing argument is false during serialization,
+ and true during deserialization upon encountering unexpected fields.
+
+
+
+ Retrieves the extension object for the current
+ instance, optionally creating it if it does not already exist.
+
+ Should a new extension object be
+ created if it does not already exist?
+ The extension object if it exists (or was created), or null
+ if the extension object does not exist or is not available.
+ The createIfMissing argument is false during serialization,
+ and true during deserialization upon encountering unexpected fields.
+
+
+
+ Provides a simple, default implementation for extension support,
+ optionally creating it if it does not already exist. Designed to be called by
+ classes implementing .
+
+ Should a new extension object be
+ created if it does not already exist?
+ The extension field to check (and possibly update).
+ The extension object if it exists (or was created), or null
+ if the extension object does not exist or is not available.
+ The createIfMissing argument is false during serialization,
+ and true during deserialization upon encountering unexpected fields.
+
+
+
+ Appends the value as an additional (unexpected) data-field for the instance.
+ Note that for non-repeated sub-objects, this equates to a merge operation;
+ for repeated sub-objects this adds a new instance to the set; for simple
+ values the new value supercedes the old value.
+
+ Note that appending a value does not remove the old value from
+ the stream; avoid repeatedly appending values for the same field.
+ The type of the value to append.
+ The extensible object to append the value to.
+ The field identifier; the tag should not be defined as a known data-field for the instance.
+ The value to append.
+
+
+
+ Appends the value as an additional (unexpected) data-field for the instance.
+ Note that for non-repeated sub-objects, this equates to a merge operation;
+ for repeated sub-objects this adds a new instance to the set; for simple
+ values the new value supercedes the old value.
+
+ Note that appending a value does not remove the old value from
+ the stream; avoid repeatedly appending values for the same field.
+ The data-type of the field.
+ The data-format to use when encoding the value.
+ The extensible object to append the value to.
+ The field identifier; the tag should not be defined as a known data-field for the instance.
+ The value to append.
+
+
+
+ Queries an extensible object for an additional (unexpected) data-field for the instance.
+ The value returned is the composed value after merging any duplicated content; if the
+ value is "repeated" (a list), then use GetValues instead.
+
+ The data-type of the field.
+ The extensible object to obtain the value from.
+ The field identifier; the tag should not be defined as a known data-field for the instance.
+ The effective value of the field, or the default value if not found.
+
+
+
+ Queries an extensible object for an additional (unexpected) data-field for the instance.
+ The value returned is the composed value after merging any duplicated content; if the
+ value is "repeated" (a list), then use GetValues instead.
+
+ The data-type of the field.
+ The extensible object to obtain the value from.
+ The field identifier; the tag should not be defined as a known data-field for the instance.
+ The data-format to use when decoding the value.
+ The effective value of the field, or the default value if not found.
+
+
+
+ Queries an extensible object for an additional (unexpected) data-field for the instance.
+ The value returned (in "value") is the composed value after merging any duplicated content;
+ if the value is "repeated" (a list), then use GetValues instead.
+
+ The data-type of the field.
+ The effective value of the field, or the default value if not found.
+ The extensible object to obtain the value from.
+ The field identifier; the tag should not be defined as a known data-field for the instance.
+ True if data for the field was present, false otherwise.
+
+
+
+ Queries an extensible object for an additional (unexpected) data-field for the instance.
+ The value returned (in "value") is the composed value after merging any duplicated content;
+ if the value is "repeated" (a list), then use GetValues instead.
+
+ The data-type of the field.
+ The effective value of the field, or the default value if not found.
+ The extensible object to obtain the value from.
+ The field identifier; the tag should not be defined as a known data-field for the instance.
+ The data-format to use when decoding the value.
+ True if data for the field was present, false otherwise.
+
+
+
+ Queries an extensible object for an additional (unexpected) data-field for the instance.
+ The value returned (in "value") is the composed value after merging any duplicated content;
+ if the value is "repeated" (a list), then use GetValues instead.
+
+ The data-type of the field.
+ The effective value of the field, or the default value if not found.
+ The extensible object to obtain the value from.
+ The field identifier; the tag should not be defined as a known data-field for the instance.
+ The data-format to use when decoding the value.
+ Allow tags that are present as part of the definition; for example, to query unknown enum values.
+ True if data for the field was present, false otherwise.
+
+
+
+ Queries an extensible object for an additional (unexpected) data-field for the instance.
+ Each occurrence of the field is yielded separately, making this usage suitable for "repeated"
+ (list) fields.
+
+ The extended data is processed lazily as the enumerator is iterated.
+ The data-type of the field.
+ The extensible object to obtain the value from.
+ The field identifier; the tag should not be defined as a known data-field for the instance.
+ An enumerator that yields each occurrence of the field.
+
+
+
+ Queries an extensible object for an additional (unexpected) data-field for the instance.
+ Each occurrence of the field is yielded separately, making this usage suitable for "repeated"
+ (list) fields.
+
+ The extended data is processed lazily as the enumerator is iterated.
+ The data-type of the field.
+ The extensible object to obtain the value from.
+ The field identifier; the tag should not be defined as a known data-field for the instance.
+ The data-format to use when decoding the value.
+ An enumerator that yields each occurrence of the field.
+
+
+
+ Queries an extensible object for an additional (unexpected) data-field for the instance.
+ The value returned (in "value") is the composed value after merging any duplicated content;
+ if the value is "repeated" (a list), then use GetValues instead.
+
+ The data-type of the field.
+ The model to use for configuration.
+ The effective value of the field, or the default value if not found.
+ The extensible object to obtain the value from.
+ The field identifier; the tag should not be defined as a known data-field for the instance.
+ The data-format to use when decoding the value.
+ Allow tags that are present as part of the definition; for example, to query unknown enum values.
+ True if data for the field was present, false otherwise.
+
+
+
+ Queries an extensible object for an additional (unexpected) data-field for the instance.
+ Each occurrence of the field is yielded separately, making this usage suitable for "repeated"
+ (list) fields.
+
+ The extended data is processed lazily as the enumerator is iterated.
+ The model to use for configuration.
+ The data-type of the field.
+ The extensible object to obtain the value from.
+ The field identifier; the tag should not be defined as a known data-field for the instance.
+ The data-format to use when decoding the value.
+ An enumerator that yields each occurrence of the field.
+
+
+
+ Appends the value as an additional (unexpected) data-field for the instance.
+ Note that for non-repeated sub-objects, this equates to a merge operation;
+ for repeated sub-objects this adds a new instance to the set; for simple
+ values the new value supercedes the old value.
+
+ Note that appending a value does not remove the old value from
+ the stream; avoid repeatedly appending values for the same field.
+ The model to use for configuration.
+ The data-format to use when encoding the value.
+ The extensible object to append the value to.
+ The field identifier; the tag should not be defined as a known data-field for the instance.
+ The value to append.
+
+
+
+ This class acts as an internal wrapper allowing us to do a dynamic
+ methodinfo invoke; an't put into Serializer as don't want on public
+ API; can't put into Serializer<T> since we need to invoke
+ accross classes, which isn't allowed in Silverlight)
+
+
+
+
+ All this does is call GetExtendedValuesTyped with the correct type for "instance";
+ this ensures that we don't get issues with subclasses declaring conflicting types -
+ the caller must respect the fields defined for the type they pass in.
+
+
+
+
+ All this does is call GetExtendedValuesTyped with the correct type for "instance";
+ this ensures that we don't get issues with subclasses declaring conflicting types -
+ the caller must respect the fields defined for the type they pass in.
+
+
+
+
+ Not all frameworks are created equal (fx1.1 vs fx2.0,
+ micro-framework, compact-framework,
+ silverlight, etc). This class simply wraps up a few things that would
+ otherwise make the real code unnecessarily messy, providing fallback
+ implementations if necessary.
+
+
+
+
+ Intended to be a direct map to regular TypeCode, but:
+ - with missing types
+ - existing on WinRT
+
+
+
+
+ Specifies the method used to infer field tags for members of the type
+ under consideration. Tags are deduced using the invariant alphabetic
+ sequence of the members' names; this makes implicit field tags very brittle,
+ and susceptible to changes such as field names (normally an isolated
+ change).
+
+
+
+
+ No members are serialized implicitly; all members require a suitable
+ attribute such as [ProtoMember]. This is the recmomended mode for
+ most scenarios.
+
+
+
+
+ Public properties and fields are eligible for implicit serialization;
+ this treats the public API as a contract. Ordering beings from ImplicitFirstTag.
+
+
+
+
+ Public and non-public fields are eligible for implicit serialization;
+ this acts as a state/implementation serializer. Ordering beings from ImplicitFirstTag.
+
+
+
+
+ Represents the set of serialization callbacks to be used when serializing/deserializing a type.
+
+
+
+ Called before serializing an instance
+
+
+ Called before deserializing an instance
+
+
+ Called after serializing an instance
+
+
+ Called after deserializing an instance
+
+
+
+ True if any callback is set, else False
+
+
+
+
+ Represents a type at runtime for use with protobuf, allowing the field mappings (etc) to be defined
+
+
+
+
+ Get the name of the type being represented
+
+
+
+
+ Adds a known sub-type to the inheritance model
+
+
+
+
+ Adds a known sub-type to the inheritance model
+
+
+
+
+ Assigns the callbacks to use during serialiation/deserialization.
+
+ The method (or null) called before serialization begins.
+ The method (or null) called when serialization is complete.
+ The method (or null) called before deserialization begins (or when a new instance is created during deserialization).
+ The method (or null) called when deserialization is complete.
+ The set of callbacks.
+
+
+
+ Assigns the callbacks to use during serialiation/deserialization.
+
+ The name of the method (or null) called before serialization begins.
+ The name of the method (or null) called when serialization is complete.
+ The name of the method (or null) called before deserialization begins (or when a new instance is created during deserialization).
+ The name of the method (or null) called when deserialization is complete.
+ The set of callbacks.
+
+
+
+ Designate a factory-method to use to create instances of this type
+
+
+
+
+ Designate a factory-method to use to create instances of this type
+
+
+
+
+ Throws an exception if the type has been made immutable
+
+
+
+
+ Adds a member (by name) to the MetaType
+
+
+
+
+ Adds a member (by name) to the MetaType, returning the ValueMember rather than the fluent API.
+ This is otherwise identical to Add.
+
+
+
+
+ Adds a member (by name) to the MetaType
+
+
+
+
+ Performs serialization of this type via a surrogate; all
+ other serialization options are ignored and handled
+ by the surrogate's configuration.
+
+
+
+
+ Adds a set of members (by name) to the MetaType
+
+
+
+
+ Adds a member (by name) to the MetaType
+
+
+
+
+ Adds a member (by name) to the MetaType, including an itemType and defaultType for representing lists
+
+
+
+
+ Adds a member (by name) to the MetaType, including an itemType and defaultType for representing lists, returning the ValueMember rather than the fluent API.
+ This is otherwise identical to Add.
+
+
+
+
+ Returns the ValueMember instances associated with this type
+
+
+
+
+ Returns the SubType instances associated with this type
+
+
+
+
+ Gets the base-type for this type
+
+
+
+
+ When used to compile a model, should public serialization/deserialzation methods
+ be included for this type?
+
+
+
+
+ Should this type be treated as a reference by default?
+
+
+
+
+ Indicates whether the current type has defined callbacks
+
+
+
+
+ Indicates whether the current type has defined subtypes
+
+
+
+
+ Returns the set of callbacks defined for this type
+
+
+
+
+ Gets or sets the name of this contract.
+
+
+
+
+ The runtime type that the meta-type represents
+
+
+
+
+ Gets or sets whether the type should use a parameterless constructor (the default),
+ or whether the type should skip the constructor completely. This option is not supported
+ on compact-framework.
+
+
+
+
+ The concrete type to create when a new instance of this type is needed; this may be useful when dealing
+ with dynamic proxies, or with interface-based APIs
+
+
+
+
+ Returns the ValueMember that matchs a given field number, or null if not found
+
+
+
+
+ Returns the ValueMember that matchs a given member (property/field), or null if not found
+
+
+
+
+ Gets or sets a value indicating that an enum should be treated directly as an int/short/etc, rather
+ than enforcing .proto enum rules. This is useful *in particul* for [Flags] enums.
+
+
+
+
+ Gets or sets a value indicating that this type should NOT be treated as a list, even if it has
+ familiar list-like characteristics (enumerable, add, etc)
+
+
+
+
+ Provides protobuf serialization support for a number of types that can be defined at runtime
+
+
+
+
+ Provides protobuf serialization support for a number of types
+
+
+
+
+ Resolve a System.Type to the compiler-specific type
+
+
+
+
+ Resolve a System.Type to the compiler-specific type
+
+
+
+
+ This is the more "complete" version of Serialize, which handles single instances of mapped types.
+ The value is written as a complete field, including field-header and (for sub-objects) a
+ length-prefix
+ In addition to that, this provides support for:
+ - basic values; individual int / string / Guid / etc
+ - IEnumerable sequences of any type handled by TrySerializeAuxiliaryType
+
+
+
+
+
+ Writes a protocol-buffer representation of the given instance to the supplied stream.
+
+ The existing instance to be serialized (cannot be null).
+ The destination stream to write to.
+
+
+
+ Writes a protocol-buffer representation of the given instance to the supplied stream.
+
+ The existing instance to be serialized (cannot be null).
+ The destination stream to write to.
+ Additional information about this serialization operation.
+
+
+
+ Writes a protocol-buffer representation of the given instance to the supplied writer.
+
+ The existing instance to be serialized (cannot be null).
+ The destination writer to write to.
+
+
+
+ Applies a protocol-buffer stream to an existing instance (or null), using length-prefixed
+ data - useful with network IO.
+
+ The type being merged.
+ The existing instance to be modified (can be null).
+ The binary stream to apply to the instance (cannot be null).
+ How to encode the length prefix.
+ The tag used as a prefix to each record (only used with base-128 style prefixes).
+ The updated instance; this may be different to the instance argument if
+ either the original instance was null, or the stream defines a known sub-type of the
+ original instance.
+
+
+
+ Applies a protocol-buffer stream to an existing instance (or null), using length-prefixed
+ data - useful with network IO.
+
+ The type being merged.
+ The existing instance to be modified (can be null).
+ The binary stream to apply to the instance (cannot be null).
+ How to encode the length prefix.
+ The tag used as a prefix to each record (only used with base-128 style prefixes).
+ Used to resolve types on a per-field basis.
+ The updated instance; this may be different to the instance argument if
+ either the original instance was null, or the stream defines a known sub-type of the
+ original instance.
+
+
+
+ Applies a protocol-buffer stream to an existing instance (or null), using length-prefixed
+ data - useful with network IO.
+
+ The type being merged.
+ The existing instance to be modified (can be null).
+ The binary stream to apply to the instance (cannot be null).
+ How to encode the length prefix.
+ The tag used as a prefix to each record (only used with base-128 style prefixes).
+ Used to resolve types on a per-field basis.
+ Returns the number of bytes consumed by this operation (includes length-prefix overheads and any skipped data).
+ The updated instance; this may be different to the instance argument if
+ either the original instance was null, or the stream defines a known sub-type of the
+ original instance.
+
+
+
+ Reads a sequence of consecutive length-prefixed items from a stream, using
+ either base-128 or fixed-length prefixes. Base-128 prefixes with a tag
+ are directly comparable to serializing multiple items in succession
+ (use the tag to emulate the implicit behavior
+ when serializing a list/array). When a tag is
+ specified, any records with different tags are silently omitted. The
+ tag is ignored. The tag is ignores for fixed-length prefixes.
+
+ The binary stream containing the serialized records.
+ The prefix style used in the data.
+ The tag of records to return (if non-positive, then no tag is
+ expected and all records are returned).
+ On a field-by-field basis, the type of object to deserialize (can be null if "type" is specified).
+ The type of object to deserialize (can be null if "resolver" is specified).
+ The sequence of deserialized objects.
+
+
+
+ Reads a sequence of consecutive length-prefixed items from a stream, using
+ either base-128 or fixed-length prefixes. Base-128 prefixes with a tag
+ are directly comparable to serializing multiple items in succession
+ (use the tag to emulate the implicit behavior
+ when serializing a list/array). When a tag is
+ specified, any records with different tags are silently omitted. The
+ tag is ignored. The tag is ignores for fixed-length prefixes.
+
+ The binary stream containing the serialized records.
+ The prefix style used in the data.
+ The tag of records to return (if non-positive, then no tag is
+ expected and all records are returned).
+ On a field-by-field basis, the type of object to deserialize (can be null if "type" is specified).
+ The type of object to deserialize (can be null if "resolver" is specified).
+ The sequence of deserialized objects.
+ Additional information about this serialization operation.
+
+
+
+ Reads a sequence of consecutive length-prefixed items from a stream, using
+ either base-128 or fixed-length prefixes. Base-128 prefixes with a tag
+ are directly comparable to serializing multiple items in succession
+ (use the tag to emulate the implicit behavior
+ when serializing a list/array). When a tag is
+ specified, any records with different tags are silently omitted. The
+ tag is ignored. The tag is ignores for fixed-length prefixes.
+
+ The type of object to deserialize.
+ The binary stream containing the serialized records.
+ The prefix style used in the data.
+ The tag of records to return (if non-positive, then no tag is
+ expected and all records are returned).
+ The sequence of deserialized objects.
+
+
+
+ Reads a sequence of consecutive length-prefixed items from a stream, using
+ either base-128 or fixed-length prefixes. Base-128 prefixes with a tag
+ are directly comparable to serializing multiple items in succession
+ (use the tag to emulate the implicit behavior
+ when serializing a list/array). When a tag is
+ specified, any records with different tags are silently omitted. The
+ tag is ignored. The tag is ignores for fixed-length prefixes.
+
+ The type of object to deserialize.
+ The binary stream containing the serialized records.
+ The prefix style used in the data.
+ The tag of records to return (if non-positive, then no tag is
+ expected and all records are returned).
+ The sequence of deserialized objects.
+ Additional information about this serialization operation.
+
+
+
+ Writes a protocol-buffer representation of the given instance to the supplied stream,
+ with a length-prefix. This is useful for socket programming,
+ as DeserializeWithLengthPrefix can be used to read the single object back
+ from an ongoing stream.
+
+ The type being serialized.
+ The existing instance to be serialized (cannot be null).
+ How to encode the length prefix.
+ The destination stream to write to.
+ The tag used as a prefix to each record (only used with base-128 style prefixes).
+
+
+
+ Writes a protocol-buffer representation of the given instance to the supplied stream,
+ with a length-prefix. This is useful for socket programming,
+ as DeserializeWithLengthPrefix can be used to read the single object back
+ from an ongoing stream.
+
+ The type being serialized.
+ The existing instance to be serialized (cannot be null).
+ How to encode the length prefix.
+ The destination stream to write to.
+ The tag used as a prefix to each record (only used with base-128 style prefixes).
+ Additional information about this serialization operation.
+
+
+
+ Applies a protocol-buffer stream to an existing instance (which may be null).
+
+ The type (including inheritance) to consider.
+ The existing instance to be modified (can be null).
+ The binary stream to apply to the instance (cannot be null).
+ The updated instance; this may be different to the instance argument if
+ either the original instance was null, or the stream defines a known sub-type of the
+ original instance.
+
+
+
+ Applies a protocol-buffer stream to an existing instance (which may be null).
+
+ The type (including inheritance) to consider.
+ The existing instance to be modified (can be null).
+ The binary stream to apply to the instance (cannot be null).
+ The updated instance; this may be different to the instance argument if
+ either the original instance was null, or the stream defines a known sub-type of the
+ original instance.
+ Additional information about this serialization operation.
+
+
+
+ Applies a protocol-buffer stream to an existing instance (which may be null).
+
+ The type (including inheritance) to consider.
+ The existing instance to be modified (can be null).
+ The binary stream to apply to the instance (cannot be null).
+ The number of bytes to consume.
+ The updated instance; this may be different to the instance argument if
+ either the original instance was null, or the stream defines a known sub-type of the
+ original instance.
+
+
+
+ Applies a protocol-buffer stream to an existing instance (which may be null).
+
+ The type (including inheritance) to consider.
+ The existing instance to be modified (can be null).
+ The binary stream to apply to the instance (cannot be null).
+ The number of bytes to consume (or -1 to read to the end of the stream).
+ The updated instance; this may be different to the instance argument if
+ either the original instance was null, or the stream defines a known sub-type of the
+ original instance.
+ Additional information about this serialization operation.
+
+
+
+ Applies a protocol-buffer reader to an existing instance (which may be null).
+
+ The type (including inheritance) to consider.
+ The existing instance to be modified (can be null).
+ The reader to apply to the instance (cannot be null).
+ The updated instance; this may be different to the instance argument if
+ either the original instance was null, or the stream defines a known sub-type of the
+ original instance.
+
+
+
+ This is the more "complete" version of Deserialize, which handles single instances of mapped types.
+ The value is read as a complete field, including field-header and (for sub-objects) a
+ length-prefix..kmc
+
+ In addition to that, this provides support for:
+ - basic values; individual int / string / Guid / etc
+ - IList sets of any type handled by TryDeserializeAuxiliaryType
+
+
+
+
+ Creates a new runtime model, to which the caller
+ can add support for a range of types. A model
+ can be used "as is", or can be compiled for
+ optimal performance.
+
+
+
+
+ Applies common proxy scenarios, resolving the actual type to consider
+
+
+
+
+ Indicates whether the supplied type is explicitly modelled by the model
+
+
+
+
+ Provides the key that represents a given type in the current model.
+ The type is also normalized for proxies at the same time.
+
+
+
+
+ Provides the key that represents a given type in the current model.
+
+
+
+
+ Writes a protocol-buffer representation of the given instance to the supplied stream.
+
+ Represents the type (including inheritance) to consider.
+ The existing instance to be serialized (cannot be null).
+ The destination stream to write to.
+
+
+
+ Applies a protocol-buffer stream to an existing instance (which may be null).
+
+ Represents the type (including inheritance) to consider.
+ The existing instance to be modified (can be null).
+ The binary stream to apply to the instance (cannot be null).
+ The updated instance; this may be different to the instance argument if
+ either the original instance was null, or the stream defines a known sub-type of the
+ original instance.
+
+
+
+ Create a deep clone of the supplied instance; any sub-items are also cloned.
+
+
+
+
+ Indicates that while an inheritance tree exists, the exact type encountered was not
+ specified in that hierarchy and cannot be processed.
+
+
+
+
+ Indicates that the given type was not expected, and cannot be processed.
+
+
+
+
+ Indicates that the given type cannot be constructed; it may still be possible to
+ deserialize into existing instances.
+
+
+
+
+ Returns true if the type supplied is either a recognised contract type,
+ or a *list* of a recognised contract type.
+
+ Note that primitives always return false, even though the engine
+ will, if forced, try to serialize such
+ True if this type is recognised as a serializable entity, else false
+
+
+
+ Returns true if the type supplied is a basic type with inbuilt handling,
+ a recognised contract type, or a *list* of a basic / contract type.
+
+
+
+
+ Returns true if the type supplied is a basic type with inbuilt handling,
+ or a *list* of a basic type with inbuilt handling
+
+
+
+
+ Suggest a .proto definition for the given type
+
+ The type to generate a .proto definition for, or null to generate a .proto that represents the entire model
+ The .proto definition as a string
+
+
+
+ Used to provide custom services for writing and parsing type names when using dynamic types. Both parsing and formatting
+ are provided on a single API as it is essential that both are mapped identically at all times.
+
+
+
+
+ Indicates the type of callback to be used
+
+
+
+
+ Invoked before an object is serialized
+
+
+
+
+ Invoked after an object is serialized
+
+
+
+
+ Invoked before an object is deserialized (or when a new instance is created)
+
+
+
+
+ Invoked after an object is deserialized
+
+
+
+
+ Returns a sequence of the Type instances that can be
+ processed by this model.
+
+
+
+
+ Suggest a .proto definition for the given type
+
+ The type to generate a .proto definition for, or null to generate a .proto that represents the entire model
+ The .proto definition as a string
+
+
+
+ Adds support for an additional type in this model, optionally
+ appplying inbuilt patterns. If the type is already known to the
+ model, the existing type is returned **without** applying
+ any additional behaviour.
+
+ Inbuilt patterns include:
+ [ProtoContract]/[ProtoMember(n)]
+ [DataContract]/[DataMember(Order=n)]
+ [XmlType]/[XmlElement(Order=n)]
+ [On{Des|S}erializ{ing|ed}]
+ ShouldSerialize*/*Specified
+
+ The type to be supported
+ Whether to apply the inbuilt configuration patterns (via attributes etc), or
+ just add the type with no additional configuration (the type must then be manually configured).
+ The MetaType representing this type, allowing
+ further configuration.
+
+
+
+ Verifies that the model is still open to changes; if not, an exception is thrown
+
+
+
+
+ Prevents further changes to this model
+
+
+
+
+ Provides the key that represents a given type in the current model.
+
+
+
+
+ Writes a protocol-buffer representation of the given instance to the supplied stream.
+
+ Represents the type (including inheritance) to consider.
+ The existing instance to be serialized (cannot be null).
+ The destination stream to write to.
+
+
+
+ Applies a protocol-buffer stream to an existing instance (which may be null).
+
+ Represents the type (including inheritance) to consider.
+ The existing instance to be modified (can be null).
+ The binary stream to apply to the instance (cannot be null).
+ The updated instance; this may be different to the instance argument if
+ either the original instance was null, or the stream defines a known sub-type of the
+ original instance.
+
+
+
+ Designate a factory-method to use to create instances of any type; note that this only affect types seen by the serializer *after* setting the factory.
+
+
+
+
+ Global default that
+ enables/disables automatic tag generation based on the existing name / order
+ of the defined members. See
+ for usage and important warning / explanation.
+ You must set the global default before attempting to serialize/deserialize any
+ impacted type.
+
+
+
+
+ Global default that determines whether types are considered serializable
+ if they have [DataContract] / [XmlType]. With this enabled, ONLY
+ types marked as [ProtoContract] are added automatically.
+
+
+
+
+ Global switch that enables or disables the implicit
+ handling of "zero defaults"; meanning: if no other default is specified,
+ it assumes bools always default to false, integers to zero, etc.
+
+ If this is disabled, no such assumptions are made and only *explicit*
+ default values are processed. This is enabled by default to
+ preserve similar logic to v1.
+
+
+
+
+ Global switch that determines whether types with a .ToString() and a Parse(string)
+ should be serialized as strings.
+
+
+
+
+ The default model, used to support ProtoBuf.Serializer
+
+
+
+
+ Obtains the MetaType associated with a given Type for the current model,
+ allowing additional configuration.
+
+
+
+
+ Should support for unexpected types be added automatically?
+ If false, an exception is thrown when unexpected types
+ are encountered.
+
+
+
+
+ The amount of time to wait if there are concurrent metadata access operations
+
+
+
+
+ If a lock-contention is detected, this event signals the *owner* of the lock responsible for the blockage, indicating
+ what caused the problem; this is only raised if the lock-owning code successfully completes.
+
+
+
+
+ Contains the stack-trace of the owning code when a lock-contention scenario is detected
+
+
+
+
+ The stack-trace of the code that owned the lock when a lock-contention scenario occurred
+
+
+
+
+ Event-type that is raised when a lock-contention scenario is detected
+
+
+
+
+ Represents an inherited type in a type hierarchy.
+
+
+
+
+ Creates a new SubType instance.
+
+ The field-number that is used to encapsulate the data (as a nested
+ message) for the derived dype.
+ The sub-type to be considered.
+ Specific encoding style to use; in particular, Grouped can be used to avoid buffering, but is not the default.
+
+
+
+ The field-number that is used to encapsulate the data (as a nested
+ message) for the derived dype.
+
+
+
+
+ The sub-type to be considered.
+
+
+
+
+ Event arguments needed to perform type-formatting functions; this could be resolving a Type to a string suitable for serialization, or could
+ be requesting a Type from a string. If no changes are made, a default implementation will be used (from the assembly-qualified names).
+
+
+
+
+ The type involved in this map; if this is initially null, a Type is expected to be provided for the string in FormattedName.
+
+
+
+
+ The formatted-name involved in this map; if this is initially null, a formatted-name is expected from the type in Type.
+
+
+
+
+ Delegate type used to perform type-formatting functions; the sender originates as the type-model.
+
+
+
+
+ Represents a member (property/field) that is mapped to a protobuf field
+
+
+
+
+ Creates a new ValueMember instance
+
+
+
+
+ Creates a new ValueMember instance
+
+
+
+
+ Specifies methods for working with optional data members.
+
+ Provides a method (null for none) to query whether this member should
+ be serialized; it must be of the form "bool {Method}()". The member is only serialized if the
+ method returns true.
+ Provides a method (null for none) to indicate that a member was
+ deserialized; it must be of the form "void {Method}(bool)", and will be called with "true"
+ when data is found.
+
+
+
+ The number that identifies this member in a protobuf stream
+
+
+
+
+ Gets the member (field/property) which this member relates to.
+
+
+
+
+ Within a list / array / etc, the type of object for each item in the list (especially useful with ArrayList)
+
+
+
+
+ The underlying type of the member
+
+
+
+
+ For abstract types (IList etc), the type of concrete object to create (if required)
+
+
+
+
+ The type the defines the member
+
+
+
+
+ The default value of the item (members with this value will not be serialized)
+
+
+
+
+ Specifies the rules used to process the field; this is used to determine the most appropriate
+ wite-type, but also to describe subtypes within that wire-type (such as SignedVariant)
+
+
+
+
+ Indicates whether this field should follow strict encoding rules; this means (for example) that if a "fixed32"
+ is encountered when "variant" is defined, then it will fail (throw an exception) when parsing. Note that
+ when serializing the defined type is always used.
+
+
+
+
+ Indicates whether this field should use packed encoding (which can save lots of space for repeated primitive values).
+ This option only applies to list/array data of primitive types (int, double, etc).
+
+
+
+
+ Indicates whether this field should *repace* existing values (the default is false, meaning *append*).
+ This option only applies to list/array data.
+
+
+
+
+ Indicates whether this field is mandatory.
+
+
+
+
+ Enables full object-tracking/full-graph support.
+
+
+
+
+ Embeds the type information into the stream, allowing usage with types not known in advance.
+
+
+
+
+ Gets the logical name for this member in the schema (this is not critical for binary serialization, but may be used
+ when inferring a schema).
+
+
+
+
+ Should lists have extended support for null values? Note this makes the serialization less efficient.
+
+
+
+
+ Specifies the type of prefix that should be applied to messages.
+
+
+
+
+ No length prefix is applied to the data; the data is terminated only be the end of the stream.
+
+
+
+
+ A base-128 length prefix is applied to the data (efficient for short messages).
+
+
+
+
+ A fixed-length (little-endian) length prefix is applied to the data (useful for compatibility).
+
+
+
+
+ A fixed-length (big-endian) length prefix is applied to the data (useful for compatibility).
+
+
+
+
+ Indicates that a type is defined for protocol-buffer serialization.
+
+
+
+
+ Gets or sets the defined name of the type.
+
+
+
+
+ Gets or sets the fist offset to use with implicit field tags;
+ only uesd if ImplicitFields is set.
+
+
+
+
+ If specified, alternative contract markers (such as markers for XmlSerailizer or DataContractSerializer) are ignored.
+
+
+
+
+ If specified, do NOT treat this type as a list, even if it looks like one.
+
+
+
+
+ Gets or sets the mechanism used to automatically infer field tags
+ for members. This option should be used in advanced scenarios only.
+ Please review the important notes against the ImplicitFields enumeration.
+
+
+
+
+ Enables/disables automatic tag generation based on the existing name / order
+ of the defined members. This option is not used for members marked
+ with ProtoMemberAttribute, as intended to provide compatibility with
+ WCF serialization. WARNING: when adding new fields you must take
+ care to increase the Order for new elements, otherwise data corruption
+ may occur.
+
+ If not explicitly specified, the default is assumed from Serializer.GlobalOptions.InferTagFromName.
+
+
+
+ Has a InferTagFromName value been explicitly set? if not, the default from the type-model is assumed.
+
+
+
+
+ Specifies an offset to apply to [DataMember(Order=...)] markers;
+ this is useful when working with mex-generated classes that have
+ a different origin (usually 1 vs 0) than the original data-contract.
+
+ This value is added to the Order of each member.
+
+
+
+
+ If true, the constructor for the type is bypassed during deserialization, meaning any field initializers
+ or other initialization code is skipped.
+
+
+
+
+ Should this type be treated as a reference by default? Please also see the implications of this,
+ as recorded on ProtoMemberAttribute.AsReference
+
+
+
+
+ Applies only to enums (not to DTO classes themselves); gets or sets a value indicating that an enum should be treated directly as an int/short/etc, rather
+ than enforcing .proto enum rules. This is useful *in particul* for [Flags] enums.
+
+
+
+
+ Has a EnumPassthru value been explicitly set?
+
+
+
+
+ Used to define protocol-buffer specific behavior for
+ enumerated values.
+
+
+
+
+ Indicates whether this instance has a customised value mapping
+
+ true if a specific value is set
+
+
+
+ Gets or sets the specific value to use for this enum during serialization.
+
+
+
+
+ Gets or sets the defined name of the enum, as used in .proto
+ (this name is not used during serialization).
+
+
+
+
+ Indicates an error during serialization/deserialization of a proto stream.
+
+
+
+ Creates a new ProtoException instance.
+
+
+ Creates a new ProtoException instance.
+
+
+ Creates a new ProtoException instance.
+
+
+
+ Indicates that a member should be excluded from serialization; this
+ is only normally used when using implict fields.
+
+
+
+
+ Indicates that a member should be excluded from serialization; this
+ is only normally used when using implict fields. This allows
+ ProtoIgnoreAttribute usage
+ even for partial classes where the individual members are not
+ under direct control.
+
+
+
+
+ Creates a new ProtoPartialIgnoreAttribute instance.
+
+ Specifies the member to be ignored.
+
+
+
+ The name of the member to be ignored.
+
+
+
+
+ Indicates the known-types to support for an individual
+ message. This serializes each level in the hierarchy as
+ a nested message to retain wire-compatibility with
+ other protocol-buffer implementations.
+
+
+
+
+ Creates a new instance of the ProtoIncludeAttribute.
+
+ The unique index (within the type) that will identify this data.
+ The additional type to serialize/deserialize.
+
+
+
+ Creates a new instance of the ProtoIncludeAttribute.
+
+ The unique index (within the type) that will identify this data.
+ The additional type to serialize/deserialize.
+
+
+
+ Gets the unique index (within the type) that will identify this data.
+
+
+
+
+ Gets the additional type to serialize/deserialize.
+
+
+
+
+ Gets the additional type to serialize/deserialize.
+
+
+
+
+ Specifies whether the inherited sype's sub-message should be
+ written with a length-prefix (default), or with group markers.
+
+
+
+
+ Declares a member to be used in protocol-buffer serialization, using
+ the given Tag. A DataFormat may be used to optimise the serialization
+ format (for instance, using zigzag encoding for negative numbers, or
+ fixed-length encoding for large values.
+
+
+
+
+ Compare with another ProtoMemberAttribute for sorting purposes
+
+
+
+
+ Compare with another ProtoMemberAttribute for sorting purposes
+
+
+
+
+ Creates a new ProtoMemberAttribute instance.
+
+ Specifies the unique tag used to identify this member within the type.
+
+
+
+ Gets or sets the original name defined in the .proto; not used
+ during serialization.
+
+
+
+
+ Gets or sets the data-format to be used when encoding this value.
+
+
+
+
+ Gets the unique tag used to identify this member within the type.
+
+
+
+
+ Gets or sets a value indicating whether this member is mandatory.
+
+
+
+
+ Gets a value indicating whether this member is packed.
+ This option only applies to list/array data of primitive types (int, double, etc).
+
+
+
+
+ Indicates whether this field should *repace* existing values (the default is false, meaning *append*).
+ This option only applies to list/array data.
+
+
+
+
+ Enables full object-tracking/full-graph support.
+
+
+
+
+ Embeds the type information into the stream, allowing usage with types not known in advance.
+
+
+
+
+ Gets or sets a value indicating whether this member is packed (lists/arrays).
+
+
+
+
+ Additional (optional) settings that control serialization of members
+
+
+
+
+ Default; no additional options
+
+
+
+
+ Indicates that repeated elements should use packed (length-prefixed) encoding
+
+
+
+
+ Indicates that the given item is required
+
+
+
+
+ Enables full object-tracking/full-graph support
+
+
+
+
+ Embeds the type information into the stream, allowing usage with types not known in advance
+
+
+
+
+ Indicates whether this field should *repace* existing values (the default is false, meaning *append*).
+ This option only applies to list/array data.
+
+
+
+
+ Determines whether the types AsReferenceDefault value is used, or whether this member's AsReference should be used
+
+
+
+
+ Declares a member to be used in protocol-buffer serialization, using
+ the given Tag and MemberName. This allows ProtoMemberAttribute usage
+ even for partial classes where the individual members are not
+ under direct control.
+ A DataFormat may be used to optimise the serialization
+ format (for instance, using zigzag encoding for negative numbers, or
+ fixed-length encoding for large values.
+
+
+
+
+ Creates a new ProtoMemberAttribute instance.
+
+ Specifies the unique tag used to identify this member within the type.
+ Specifies the member to be serialized.
+
+
+
+ The name of the member to be serialized.
+
+
+
+
+ A stateful reader, used to read a protobuf stream. Typical usage would be (sequentially) to call
+ ReadFieldHeader and (after matching the field) an appropriate Read* method.
+
+
+
+
+ Creates a new reader against a stream
+
+ The source stream
+ The model to use for serialization; this can be null, but this will impair the ability to deserialize sub-objects
+ Additional context about this serialization operation
+
+
+
+ Creates a new reader against a stream
+
+ The source stream
+ The model to use for serialization; this can be null, but this will impair the ability to deserialize sub-objects
+ Additional context about this serialization operation
+ The number of bytes to read, or -1 to read until the end of the stream
+
+
+
+ Releases resources used by the reader, but importantly does not Dispose the
+ underlying stream; in many typical use-cases the stream is used for different
+ processes, so it is assumed that the consumer will Dispose their stream separately.
+
+
+
+
+ Reads an unsigned 32-bit integer from the stream; supported wire-types: Variant, Fixed32, Fixed64
+
+
+
+
+ Reads a signed 16-bit integer from the stream: Variant, Fixed32, Fixed64, SignedVariant
+
+
+
+
+ Reads an unsigned 16-bit integer from the stream; supported wire-types: Variant, Fixed32, Fixed64
+
+
+
+
+ Reads an unsigned 8-bit integer from the stream; supported wire-types: Variant, Fixed32, Fixed64
+
+
+
+
+ Reads a signed 8-bit integer from the stream; supported wire-types: Variant, Fixed32, Fixed64, SignedVariant
+
+
+
+
+ Reads a signed 32-bit integer from the stream; supported wire-types: Variant, Fixed32, Fixed64, SignedVariant
+
+
+
+
+ Reads a signed 64-bit integer from the stream; supported wire-types: Variant, Fixed32, Fixed64, SignedVariant
+
+
+
+
+ Reads a string from the stream (using UTF8); supported wire-types: String
+
+
+
+
+ Throws an exception indication that the given value cannot be mapped to an enum.
+
+
+
+
+ Reads a double-precision number from the stream; supported wire-types: Fixed32, Fixed64
+
+
+
+
+ Reads (merges) a sub-message from the stream, internally calling StartSubItem and EndSubItem, and (in between)
+ parsing the message in accordance with the model associated with the reader
+
+
+
+
+ Makes the end of consuming a nested message in the stream; the stream must be either at the correct EndGroup
+ marker, or all fields of the sub-message must have been consumed (in either case, this means ReadFieldHeader
+ should return zero)
+
+
+
+
+ Begins consuming a nested message in the stream; supported wire-types: StartGroup, String
+
+ The token returned must be help and used when callining EndSubItem
+
+
+
+ Reads a field header from the stream, setting the wire-type and retuning the field number. If no
+ more fields are available, then 0 is returned. This methods respects sub-messages.
+
+
+
+
+ Looks ahead to see whether the next field in the stream is what we expect
+ (typically; what we've just finished reading - for example ot read successive list items)
+
+
+
+
+ Compares the streams current wire-type to the hinted wire-type, updating the reader if necessary; for example,
+ a Variant may be updated to SignedVariant. If the hinted wire-type is unrelated then no change is made.
+
+
+
+
+ Verifies that the stream's current wire-type is as expected, or a specialized sub-type (for example,
+ SignedVariant) - in which case the current wire-type is updated. Otherwise an exception is thrown.
+
+
+
+
+ Discards the data for the current field.
+
+
+
+
+ Reads an unsigned 64-bit integer from the stream; supported wire-types: Variant, Fixed32, Fixed64
+
+
+
+
+ Reads a single-precision number from the stream; supported wire-types: Fixed32, Fixed64
+
+
+
+
+ Reads a boolean value from the stream; supported wire-types: Variant, Fixed32, Fixed64
+
+
+
+
+
+ Reads a byte-sequence from the stream, appending them to an existing byte-sequence (which can be null); supported wire-types: String
+
+
+
+
+ Reads the length-prefix of a message from a stream without buffering additional data, allowing a fixed-length
+ reader to be created.
+
+
+
+
+ Reads a little-endian encoded integer. An exception is thrown if the data is not all available.
+
+
+
+
+ Reads a big-endian encoded integer. An exception is thrown if the data is not all available.
+
+
+
+
+ Reads a varint encoded integer. An exception is thrown if the data is not all available.
+
+
+
+
+ Reads a string (of a given lenth, in bytes) directly from the source into a pre-existing buffer. An exception is thrown if the data is not all available.
+
+
+
+
+ Reads a given number of bytes directly from the source. An exception is thrown if the data is not all available.
+
+
+
+
+ Reads a string (of a given lenth, in bytes) directly from the source. An exception is thrown if the data is not all available.
+
+
+
+
+ Reads the length-prefix of a message from a stream without buffering additional data, allowing a fixed-length
+ reader to be created.
+
+
+
+ The number of bytes consumed; 0 if no data available
+
+
+
+ Copies the current field into the instance as extension data
+
+
+
+
+ Indicates whether the reader still has data remaining in the current sub-item,
+ additionally setting the wire-type for the next field if there is more data.
+ This is used when decoding packed data.
+
+
+
+
+ Utility method, not intended for public use; this helps maintain the root object is complex scenarios
+
+
+
+
+ Reads a Type from the stream, using the model's DynamicTypeFormatting if appropriate; supported wire-types: String
+
+
+
+
+ Merge two objects using the details from the current reader; this is used to change the type
+ of objects when an inheritance relationship is discovered later than usual during deserilazation.
+
+
+
+
+ Gets the number of the field being processed.
+
+
+
+
+ Indicates the underlying proto serialization format on the wire.
+
+
+
+
+ Gets / sets a flag indicating whether strings should be checked for repetition; if
+ true, any repeated UTF-8 byte sequence will result in the same String instance, rather
+ than a second instance of the same string. Enabled by default. Note that this uses
+ a custom interner - the system-wide string interner is not used.
+
+
+
+
+ Addition information about this deserialization operation.
+
+
+
+
+ Returns the position of the current reader (note that this is not necessarily the same as the position
+ in the underlying stream, if multiple readers are used on the same stream)
+
+
+
+
+ Get the TypeModel associated with this reader
+
+
+
+
+ Represents an output stream for writing protobuf data.
+
+ Why is the API backwards (static methods with writer arguments)?
+ See: http://marcgravell.blogspot.com/2010/03/last-will-be-first-and-first-will-be.html
+
+
+
+
+ Write an encapsulated sub-object, using the supplied unique key (reprasenting a type).
+
+ The object to write.
+ The key that uniquely identifies the type within the model.
+ The destination.
+
+
+
+ Write an encapsulated sub-object, using the supplied unique key (reprasenting a type) - but the
+ caller is asserting that this relationship is non-recursive; no recursion check will be
+ performed.
+
+ The object to write.
+ The key that uniquely identifies the type within the model.
+ The destination.
+
+
+
+ Writes a field-header, indicating the format of the next data we plan to write.
+
+
+
+
+ Writes a byte-array to the stream; supported wire-types: String
+
+
+
+
+ Writes a byte-array to the stream; supported wire-types: String
+
+
+
+
+ Indicates the start of a nested record.
+
+ The instance to write.
+ The destination.
+ A token representing the state of the stream; this token is given to EndSubItem.
+
+
+
+ Indicates the end of a nested record.
+
+ The token obtained from StartubItem.
+ The destination.
+
+
+
+ Creates a new writer against a stream
+
+ The destination stream
+ The model to use for serialization; this can be null, but this will impair the ability to serialize sub-objects
+ Additional context about this serialization operation
+
+
+
+ Flushes data to the underlying stream, and releases any resources. The underlying stream is *not* disposed
+ by this operation.
+
+
+
+
+ Writes any buffered data (if possible) to the underlying stream.
+
+ The writer to flush
+ It is not always possible to fully flush, since some sequences
+ may require values to be back-filled into the byte-stream.
+
+
+
+ Writes an unsigned 32-bit integer to the stream; supported wire-types: Variant, Fixed32, Fixed64
+
+
+
+
+ Writes a string to the stream; supported wire-types: String
+
+
+
+
+ Writes an unsigned 64-bit integer to the stream; supported wire-types: Variant, Fixed32, Fixed64
+
+
+
+
+ Writes a signed 64-bit integer to the stream; supported wire-types: Variant, Fixed32, Fixed64, SignedVariant
+
+
+
+
+ Writes an unsigned 16-bit integer to the stream; supported wire-types: Variant, Fixed32, Fixed64
+
+
+
+
+ Writes a signed 16-bit integer to the stream; supported wire-types: Variant, Fixed32, Fixed64, SignedVariant
+
+
+
+
+ Writes an unsigned 16-bit integer to the stream; supported wire-types: Variant, Fixed32, Fixed64
+
+
+
+
+ Writes an unsigned 8-bit integer to the stream; supported wire-types: Variant, Fixed32, Fixed64
+
+
+
+
+ Writes a signed 8-bit integer to the stream; supported wire-types: Variant, Fixed32, Fixed64, SignedVariant
+
+
+
+
+ Writes a signed 32-bit integer to the stream; supported wire-types: Variant, Fixed32, Fixed64, SignedVariant
+
+
+
+
+ Writes a double-precision number to the stream; supported wire-types: Fixed32, Fixed64
+
+
+
+
+ Writes a single-precision number to the stream; supported wire-types: Fixed32, Fixed64
+
+
+
+
+ Throws an exception indicating that the given enum cannot be mapped to a serialized value.
+
+
+
+
+ Writes a boolean to the stream; supported wire-types: Variant, Fixed32, Fixed64
+
+
+
+
+ Copies any extension data stored for the instance to the underlying stream
+
+
+
+
+ Used for packed encoding; indicates that the next field should be skipped rather than
+ a field header written. Note that the field number must match, else an exception is thrown
+ when the attempt is made to write the (incorrect) field. The wire-type is taken from the
+ subsequent call to WriteFieldHeader. Only primitive types can be packed.
+
+
+
+
+ Specifies a known root object to use during reference-tracked serialization
+
+
+
+
+ Writes a Type to the stream, using the model's DynamicTypeFormatting if appropriate; supported wire-types: String
+
+
+
+
+ Addition information about this serialization operation.
+
+
+
+
+ Get the TypeModel associated with this writer
+
+
+
+
+ Additional information about a serialization operation
+
+
+
+
+ Gets or sets a user-defined object containing additional information about this serialization/deserialization operation.
+
+
+
+
+ A default SerializationContext, with minimal information.
+
+
+
+
+ Provides protocol-buffer serialization capability for concrete, attributed types. This
+ is a *default* model, but custom serializer models are also supported.
+
+
+ Protocol-buffer serialization is a compact binary format, designed to take
+ advantage of sparse data and knowledge of specific data types; it is also
+ extensible, allowing a type to be deserialized / merged even if some data is
+ not recognised.
+
+
+
+
+ The field number that is used as a default when serializing/deserializing a list of objects.
+ The data is treated as repeated message with field number 1.
+
+
+
+
+ Suggest a .proto definition for the given type
+
+ The type to generate a .proto definition for
+ The .proto definition as a string
+
+
+
+ Create a deep clone of the supplied instance; any sub-items are also cloned.
+
+
+
+
+ Applies a protocol-buffer stream to an existing instance.
+
+ The type being merged.
+ The existing instance to be modified (can be null).
+ The binary stream to apply to the instance (cannot be null).
+ The updated instance; this may be different to the instance argument if
+ either the original instance was null, or the stream defines a known sub-type of the
+ original instance.
+
+
+
+ Creates a new instance from a protocol-buffer stream
+
+ The type to be created.
+ The binary stream to apply to the new instance (cannot be null).
+ A new, initialized instance.
+
+
+
+ Writes a protocol-buffer representation of the given instance to the supplied stream.
+
+ The existing instance to be serialized (cannot be null).
+ The destination stream to write to.
+
+
+
+ Serializes a given instance and deserializes it as a different type;
+ this can be used to translate between wire-compatible objects (where
+ two .NET types represent the same data), or to promote/demote a type
+ through an inheritance hierarchy.
+
+ No assumption of compatibility is made between the types.
+ The type of the object being copied.
+ The type of the new object to be created.
+ The existing instance to use as a template.
+ A new instane of type TNewType, with the data from TOldType.
+
+
+
+ Precompiles the serializer for a given type.
+
+
+
+
+ Reads a sequence of consecutive length-prefixed items from a stream, using
+ either base-128 or fixed-length prefixes. Base-128 prefixes with a tag
+ are directly comparable to serializing multiple items in succession
+ (use the tag to emulate the implicit behavior
+ when serializing a list/array). When a tag is
+ specified, any records with different tags are silently omitted. The
+ tag is ignored. The tag is ignores for fixed-length prefixes.
+
+ The type of object to deserialize.
+ The binary stream containing the serialized records.
+ The prefix style used in the data.
+ The tag of records to return (if non-positive, then no tag is
+ expected and all records are returned).
+ The sequence of deserialized objects.
+
+
+
+ Creates a new instance from a protocol-buffer stream that has a length-prefix
+ on data (to assist with network IO).
+
+ The type to be created.
+ The binary stream to apply to the new instance (cannot be null).
+ How to encode the length prefix.
+ A new, initialized instance.
+
+
+
+ Creates a new instance from a protocol-buffer stream that has a length-prefix
+ on data (to assist with network IO).
+
+ The type to be created.
+ The binary stream to apply to the new instance (cannot be null).
+ How to encode the length prefix.
+ The expected tag of the item (only used with base-128 prefix style).
+ A new, initialized instance.
+
+
+
+ Applies a protocol-buffer stream to an existing instance, using length-prefixed
+ data - useful with network IO.
+
+ The type being merged.
+ The existing instance to be modified (can be null).
+ The binary stream to apply to the instance (cannot be null).
+ How to encode the length prefix.
+ The updated instance; this may be different to the instance argument if
+ either the original instance was null, or the stream defines a known sub-type of the
+ original instance.
+
+
+
+ Writes a protocol-buffer representation of the given instance to the supplied stream,
+ with a length-prefix. This is useful for socket programming,
+ as DeserializeWithLengthPrefix/MergeWithLengthPrefix can be used to read the single object back
+ from an ongoing stream.
+
+ The type being serialized.
+ The existing instance to be serialized (cannot be null).
+ How to encode the length prefix.
+ The destination stream to write to.
+
+
+
+ Writes a protocol-buffer representation of the given instance to the supplied stream,
+ with a length-prefix. This is useful for socket programming,
+ as DeserializeWithLengthPrefix/MergeWithLengthPrefix can be used to read the single object back
+ from an ongoing stream.
+
+ The type being serialized.
+ The existing instance to be serialized (cannot be null).
+ How to encode the length prefix.
+ The destination stream to write to.
+ The tag used as a prefix to each record (only used with base-128 style prefixes).
+
+
+ Indicates the number of bytes expected for the next message.
+ The stream containing the data to investigate for a length.
+ The algorithm used to encode the length.
+ The length of the message, if it could be identified.
+ True if a length could be obtained, false otherwise.
+
+
+ Indicates the number of bytes expected for the next message.
+ The buffer containing the data to investigate for a length.
+ The offset of the first byte to read from the buffer.
+ The number of bytes to read from the buffer.
+ The algorithm used to encode the length.
+ The length of the message, if it could be identified.
+ True if a length could be obtained, false otherwise.
+
+
+
+ Releases any internal buffers that have been reserved for efficiency; this does not affect any serialization
+ operations; simply: it can be used (optionally) to release the buffers for garbage collection (at the expense
+ of having to re-allocate a new buffer for the next operation, rather than re-use prior buffers).
+
+
+
+
+ Provides non-generic access to the default serializer.
+
+
+
+
+ Create a deep clone of the supplied instance; any sub-items are also cloned.
+
+
+
+
+ Writes a protocol-buffer representation of the given instance to the supplied stream.
+
+ The existing instance to be serialized (cannot be null).
+ The destination stream to write to.
+
+
+
+ Creates a new instance from a protocol-buffer stream
+
+ The type to be created.
+ The binary stream to apply to the new instance (cannot be null).
+ A new, initialized instance.
+
+
+ Applies a protocol-buffer stream to an existing instance.
+ The existing instance to be modified (cannot be null).
+ The binary stream to apply to the instance (cannot be null).
+ The updated instance
+
+
+
+ Writes a protocol-buffer representation of the given instance to the supplied stream,
+ with a length-prefix. This is useful for socket programming,
+ as DeserializeWithLengthPrefix/MergeWithLengthPrefix can be used to read the single object back
+ from an ongoing stream.
+
+ The existing instance to be serialized (cannot be null).
+ How to encode the length prefix.
+ The destination stream to write to.
+ The tag used as a prefix to each record (only used with base-128 style prefixes).
+
+
+
+ Applies a protocol-buffer stream to an existing instance (or null), using length-prefixed
+ data - useful with network IO.
+
+ The existing instance to be modified (can be null).
+ The binary stream to apply to the instance (cannot be null).
+ How to encode the length prefix.
+ Used to resolve types on a per-field basis.
+ The updated instance; this may be different to the instance argument if
+ either the original instance was null, or the stream defines a known sub-type of the
+ original instance.
+
+
+
+ Indicates whether the supplied type is explicitly modelled by the model
+
+
+
+
+ Global switches that change the behavior of protobuf-net
+
+
+
+
+
+
+
+
+
+ Maps a field-number to a type
+
+
+
+
+ Perform the steps necessary to serialize this data.
+
+ The value to be serialized.
+ The writer entity that is accumulating the output data.
+
+
+
+ Perform the steps necessary to deserialize this data.
+
+ The current value, if appropriate.
+ The reader providing the input data.
+ The updated / replacement value.
+
+
+
+ The type that this serializer is intended to work for.
+
+
+
+
+ Indicates whether a Read operation replaces the existing value, or
+ extends the value. If false, the "value" parameter to Read is
+ discarded, and should be passed in as null.
+
+
+
+
+ Now all Read operations return a value (although most do); if false no
+ value should be expected.
+
+
+
+
+ Used to hold particulars relating to nested objects. This is opaque to the caller - simply
+ give back the token you are given at the end of an object.
+
+
+
+
+ Indicates the encoding used to represent an individual value in a protobuf stream
+
+
+
+
+ Represents an error condition
+
+
+
+
+ Base-128 variant-length encoding
+
+
+
+
+ Fixed-length 8-byte encoding
+
+
+
+
+ Length-variant-prefixed encoding
+
+
+
+
+ Indicates the start of a group
+
+
+
+
+ Indicates the end of a group
+
+
+
+
+ Fixed-length 4-byte encoding
+ 10
+
+
+
+ This is not a formal wire-type in the "protocol buffers" spec, but
+ denotes a variant integer that should be interpreted using
+ zig-zag semantics (so -ve numbers aren't a significant overhead)
+
+
+
+
diff --git a/packages/protobuf-net.2.0.0.668/lib/net35/protobuf-net.dll b/packages/protobuf-net.2.0.0.668/lib/net35/protobuf-net.dll
new file mode 100644
index 000000000..de4701c6a
Binary files /dev/null and b/packages/protobuf-net.2.0.0.668/lib/net35/protobuf-net.dll differ
diff --git a/packages/protobuf-net.2.0.0.668/lib/net35/protobuf-net.xml b/packages/protobuf-net.2.0.0.668/lib/net35/protobuf-net.xml
new file mode 100644
index 000000000..ccf3c6ff2
--- /dev/null
+++ b/packages/protobuf-net.2.0.0.668/lib/net35/protobuf-net.xml
@@ -0,0 +1,2879 @@
+
+
+
+ protobuf-net
+
+
+
+
+ Provides support for common .NET types that do not have a direct representation
+ in protobuf, using the definitions from bcl.proto
+
+
+
+
+ Creates a new instance of the specified type, bypassing the constructor.
+
+ The type to create
+ The new instance
+ If the platform does not support constructor-skipping
+
+
+
+ Writes a TimeSpan to a protobuf stream
+
+
+
+
+ Parses a TimeSpan from a protobuf stream
+
+
+
+
+ Parses a DateTime from a protobuf stream
+
+
+
+
+ Writes a DateTime to a protobuf stream
+
+
+
+
+ Parses a decimal from a protobuf stream
+
+
+
+
+ Writes a decimal to a protobuf stream
+
+
+
+
+ Writes a Guid to a protobuf stream
+
+
+
+
+ Parses a Guid from a protobuf stream
+
+
+
+
+ Reads an *implementation specific* bundled .NET object, including (as options) type-metadata, identity/re-use, etc.
+
+
+
+
+ Writes an *implementation specific* bundled .NET object, including (as options) type-metadata, identity/re-use, etc.
+
+
+
+
+ Optional behaviours that introduce .NET-specific functionality
+
+
+
+
+ No special behaviour
+
+
+
+
+ Enables full object-tracking/full-graph support.
+
+
+
+
+ Embeds the type information into the stream, allowing usage with types not known in advance.
+
+
+
+
+ If false, the constructor for the type is bypassed during deserialization, meaning any field initializers
+ or other initialization code is skipped.
+
+
+
+
+ Should the object index be reserved, rather than creating an object promptly
+
+
+
+
+ Provides a simple buffer-based implementation of an extension object.
+
+
+
+
+ Provides addition capability for supporting unexpected fields during
+ protocol-buffer serialization/deserialization. This allows for loss-less
+ round-trip/merge, even when the data is not fully understood.
+
+
+
+
+ Requests a stream into which any unexpected fields can be persisted.
+
+ A new stream suitable for storing data.
+
+
+
+ Indicates that all unexpected fields have now been stored. The
+ implementing class is responsible for closing the stream. If
+ "commit" is not true the data may be discarded.
+
+ The stream originally obtained by BeginAppend.
+ True if the append operation completed successfully.
+
+
+
+ Requests a stream of the unexpected fields previously stored.
+
+ A prepared stream of the unexpected fields.
+
+
+
+ Indicates that all unexpected fields have now been read. The
+ implementing class is responsible for closing the stream.
+
+ The stream originally obtained by BeginQuery.
+
+
+
+ Requests the length of the raw binary stream; this is used
+ when serializing sub-entities to indicate the expected size.
+
+ The length of the binary stream representing unexpected data.
+
+
+ Specifies a method on the root-contract in an hierarchy to be invoked before serialization.
+
+
+ Specifies a method on the root-contract in an hierarchy to be invoked after serialization.
+
+
+ Specifies a method on the root-contract in an hierarchy to be invoked before deserialization.
+
+
+ Specifies a method on the root-contract in an hierarchy to be invoked after deserialization.
+
+
+
+ Pushes a null reference onto the stack. Note that this should only
+ be used to return a null (or set a variable to null); for null-tests
+ use BranchIfTrue / BranchIfFalse.
+
+
+
+
+ Creates a new "using" block (equivalent) around a variable;
+ the variable must exist, and note that (unlike in C#) it is
+ the variables *final* value that gets disposed. If you need
+ *original* disposal, copy your variable first.
+
+ It is the callers responsibility to ensure that the variable's
+ scope fully-encapsulates the "using"; if not, the variable
+ may be re-used (and thus re-assigned) unexpectedly.
+
+
+
+
+ Sub-format to use when serializing/deserializing data
+
+
+
+
+ Uses the default encoding for the data-type.
+
+
+
+
+ When applied to signed integer-based data (including Decimal), this
+ indicates that zigzag variant encoding will be used. This means that values
+ with small magnitude (regardless of sign) take a small amount
+ of space to encode.
+
+
+
+
+ When applied to signed integer-based data (including Decimal), this
+ indicates that two's-complement variant encoding will be used.
+ This means that any -ve number will take 10 bytes (even for 32-bit),
+ so should only be used for compatibility.
+
+
+
+
+ When applied to signed integer-based data (including Decimal), this
+ indicates that a fixed amount of space will be used.
+
+
+
+
+ When applied to a sub-message, indicates that the value should be treated
+ as group-delimited.
+
+
+
+
+ Simple base class for supporting unexpected fields allowing
+ for loss-less round-tips/merge, even if the data is not understod.
+ The additional fields are (by default) stored in-memory in a buffer.
+
+ As an example of an alternative implementation, you might
+ choose to use the file system (temporary files) as the back-end, tracking
+ only the paths [such an object would ideally be IDisposable and use
+ a finalizer to ensure that the files are removed].
+
+
+
+
+ Indicates that the implementing type has support for protocol-buffer
+ extensions.
+
+ Can be implemented by deriving from Extensible.
+
+
+
+ Retrieves the extension object for the current
+ instance, optionally creating it if it does not already exist.
+
+ Should a new extension object be
+ created if it does not already exist?
+ The extension object if it exists (or was created), or null
+ if the extension object does not exist or is not available.
+ The createIfMissing argument is false during serialization,
+ and true during deserialization upon encountering unexpected fields.
+
+
+
+ Retrieves the extension object for the current
+ instance, optionally creating it if it does not already exist.
+
+ Should a new extension object be
+ created if it does not already exist?
+ The extension object if it exists (or was created), or null
+ if the extension object does not exist or is not available.
+ The createIfMissing argument is false during serialization,
+ and true during deserialization upon encountering unexpected fields.
+
+
+
+ Provides a simple, default implementation for extension support,
+ optionally creating it if it does not already exist. Designed to be called by
+ classes implementing .
+
+ Should a new extension object be
+ created if it does not already exist?
+ The extension field to check (and possibly update).
+ The extension object if it exists (or was created), or null
+ if the extension object does not exist or is not available.
+ The createIfMissing argument is false during serialization,
+ and true during deserialization upon encountering unexpected fields.
+
+
+
+ Appends the value as an additional (unexpected) data-field for the instance.
+ Note that for non-repeated sub-objects, this equates to a merge operation;
+ for repeated sub-objects this adds a new instance to the set; for simple
+ values the new value supercedes the old value.
+
+ Note that appending a value does not remove the old value from
+ the stream; avoid repeatedly appending values for the same field.
+ The type of the value to append.
+ The extensible object to append the value to.
+ The field identifier; the tag should not be defined as a known data-field for the instance.
+ The value to append.
+
+
+
+ Appends the value as an additional (unexpected) data-field for the instance.
+ Note that for non-repeated sub-objects, this equates to a merge operation;
+ for repeated sub-objects this adds a new instance to the set; for simple
+ values the new value supercedes the old value.
+
+ Note that appending a value does not remove the old value from
+ the stream; avoid repeatedly appending values for the same field.
+ The data-type of the field.
+ The data-format to use when encoding the value.
+ The extensible object to append the value to.
+ The field identifier; the tag should not be defined as a known data-field for the instance.
+ The value to append.
+
+
+
+ Queries an extensible object for an additional (unexpected) data-field for the instance.
+ The value returned is the composed value after merging any duplicated content; if the
+ value is "repeated" (a list), then use GetValues instead.
+
+ The data-type of the field.
+ The extensible object to obtain the value from.
+ The field identifier; the tag should not be defined as a known data-field for the instance.
+ The effective value of the field, or the default value if not found.
+
+
+
+ Queries an extensible object for an additional (unexpected) data-field for the instance.
+ The value returned is the composed value after merging any duplicated content; if the
+ value is "repeated" (a list), then use GetValues instead.
+
+ The data-type of the field.
+ The extensible object to obtain the value from.
+ The field identifier; the tag should not be defined as a known data-field for the instance.
+ The data-format to use when decoding the value.
+ The effective value of the field, or the default value if not found.
+
+
+
+ Queries an extensible object for an additional (unexpected) data-field for the instance.
+ The value returned (in "value") is the composed value after merging any duplicated content;
+ if the value is "repeated" (a list), then use GetValues instead.
+
+ The data-type of the field.
+ The effective value of the field, or the default value if not found.
+ The extensible object to obtain the value from.
+ The field identifier; the tag should not be defined as a known data-field for the instance.
+ True if data for the field was present, false otherwise.
+
+
+
+ Queries an extensible object for an additional (unexpected) data-field for the instance.
+ The value returned (in "value") is the composed value after merging any duplicated content;
+ if the value is "repeated" (a list), then use GetValues instead.
+
+ The data-type of the field.
+ The effective value of the field, or the default value if not found.
+ The extensible object to obtain the value from.
+ The field identifier; the tag should not be defined as a known data-field for the instance.
+ The data-format to use when decoding the value.
+ True if data for the field was present, false otherwise.
+
+
+
+ Queries an extensible object for an additional (unexpected) data-field for the instance.
+ The value returned (in "value") is the composed value after merging any duplicated content;
+ if the value is "repeated" (a list), then use GetValues instead.
+
+ The data-type of the field.
+ The effective value of the field, or the default value if not found.
+ The extensible object to obtain the value from.
+ The field identifier; the tag should not be defined as a known data-field for the instance.
+ The data-format to use when decoding the value.
+ Allow tags that are present as part of the definition; for example, to query unknown enum values.
+ True if data for the field was present, false otherwise.
+
+
+
+ Queries an extensible object for an additional (unexpected) data-field for the instance.
+ Each occurrence of the field is yielded separately, making this usage suitable for "repeated"
+ (list) fields.
+
+ The extended data is processed lazily as the enumerator is iterated.
+ The data-type of the field.
+ The extensible object to obtain the value from.
+ The field identifier; the tag should not be defined as a known data-field for the instance.
+ An enumerator that yields each occurrence of the field.
+
+
+
+ Queries an extensible object for an additional (unexpected) data-field for the instance.
+ Each occurrence of the field is yielded separately, making this usage suitable for "repeated"
+ (list) fields.
+
+ The extended data is processed lazily as the enumerator is iterated.
+ The data-type of the field.
+ The extensible object to obtain the value from.
+ The field identifier; the tag should not be defined as a known data-field for the instance.
+ The data-format to use when decoding the value.
+ An enumerator that yields each occurrence of the field.
+
+
+
+ Queries an extensible object for an additional (unexpected) data-field for the instance.
+ The value returned (in "value") is the composed value after merging any duplicated content;
+ if the value is "repeated" (a list), then use GetValues instead.
+
+ The data-type of the field.
+ The model to use for configuration.
+ The effective value of the field, or the default value if not found.
+ The extensible object to obtain the value from.
+ The field identifier; the tag should not be defined as a known data-field for the instance.
+ The data-format to use when decoding the value.
+ Allow tags that are present as part of the definition; for example, to query unknown enum values.
+ True if data for the field was present, false otherwise.
+
+
+
+ Queries an extensible object for an additional (unexpected) data-field for the instance.
+ Each occurrence of the field is yielded separately, making this usage suitable for "repeated"
+ (list) fields.
+
+ The extended data is processed lazily as the enumerator is iterated.
+ The model to use for configuration.
+ The data-type of the field.
+ The extensible object to obtain the value from.
+ The field identifier; the tag should not be defined as a known data-field for the instance.
+ The data-format to use when decoding the value.
+ An enumerator that yields each occurrence of the field.
+
+
+
+ Appends the value as an additional (unexpected) data-field for the instance.
+ Note that for non-repeated sub-objects, this equates to a merge operation;
+ for repeated sub-objects this adds a new instance to the set; for simple
+ values the new value supercedes the old value.
+
+ Note that appending a value does not remove the old value from
+ the stream; avoid repeatedly appending values for the same field.
+ The model to use for configuration.
+ The data-format to use when encoding the value.
+ The extensible object to append the value to.
+ The field identifier; the tag should not be defined as a known data-field for the instance.
+ The value to append.
+
+
+
+ This class acts as an internal wrapper allowing us to do a dynamic
+ methodinfo invoke; an't put into Serializer as don't want on public
+ API; can't put into Serializer<T> since we need to invoke
+ accross classes, which isn't allowed in Silverlight)
+
+
+
+
+ All this does is call GetExtendedValuesTyped with the correct type for "instance";
+ this ensures that we don't get issues with subclasses declaring conflicting types -
+ the caller must respect the fields defined for the type they pass in.
+
+
+
+
+ All this does is call GetExtendedValuesTyped with the correct type for "instance";
+ this ensures that we don't get issues with subclasses declaring conflicting types -
+ the caller must respect the fields defined for the type they pass in.
+
+
+
+
+ Not all frameworks are created equal (fx1.1 vs fx2.0,
+ micro-framework, compact-framework,
+ silverlight, etc). This class simply wraps up a few things that would
+ otherwise make the real code unnecessarily messy, providing fallback
+ implementations if necessary.
+
+
+
+
+ Intended to be a direct map to regular TypeCode, but:
+ - with missing types
+ - existing on WinRT
+
+
+
+
+ Specifies the method used to infer field tags for members of the type
+ under consideration. Tags are deduced using the invariant alphabetic
+ sequence of the members' names; this makes implicit field tags very brittle,
+ and susceptible to changes such as field names (normally an isolated
+ change).
+
+
+
+
+ No members are serialized implicitly; all members require a suitable
+ attribute such as [ProtoMember]. This is the recmomended mode for
+ most scenarios.
+
+
+
+
+ Public properties and fields are eligible for implicit serialization;
+ this treats the public API as a contract. Ordering beings from ImplicitFirstTag.
+
+
+
+
+ Public and non-public fields are eligible for implicit serialization;
+ this acts as a state/implementation serializer. Ordering beings from ImplicitFirstTag.
+
+
+
+
+ Represents the set of serialization callbacks to be used when serializing/deserializing a type.
+
+
+
+ Called before serializing an instance
+
+
+ Called before deserializing an instance
+
+
+ Called after serializing an instance
+
+
+ Called after deserializing an instance
+
+
+
+ True if any callback is set, else False
+
+
+
+
+ Represents a type at runtime for use with protobuf, allowing the field mappings (etc) to be defined
+
+
+
+
+ Get the name of the type being represented
+
+
+
+
+ Adds a known sub-type to the inheritance model
+
+
+
+
+ Adds a known sub-type to the inheritance model
+
+
+
+
+ Assigns the callbacks to use during serialiation/deserialization.
+
+ The method (or null) called before serialization begins.
+ The method (or null) called when serialization is complete.
+ The method (or null) called before deserialization begins (or when a new instance is created during deserialization).
+ The method (or null) called when deserialization is complete.
+ The set of callbacks.
+
+
+
+ Assigns the callbacks to use during serialiation/deserialization.
+
+ The name of the method (or null) called before serialization begins.
+ The name of the method (or null) called when serialization is complete.
+ The name of the method (or null) called before deserialization begins (or when a new instance is created during deserialization).
+ The name of the method (or null) called when deserialization is complete.
+ The set of callbacks.
+
+
+
+ Designate a factory-method to use to create instances of this type
+
+
+
+
+ Designate a factory-method to use to create instances of this type
+
+
+
+
+ Throws an exception if the type has been made immutable
+
+
+
+
+ Adds a member (by name) to the MetaType
+
+
+
+
+ Adds a member (by name) to the MetaType, returning the ValueMember rather than the fluent API.
+ This is otherwise identical to Add.
+
+
+
+
+ Adds a member (by name) to the MetaType
+
+
+
+
+ Performs serialization of this type via a surrogate; all
+ other serialization options are ignored and handled
+ by the surrogate's configuration.
+
+
+
+
+ Adds a set of members (by name) to the MetaType
+
+
+
+
+ Adds a member (by name) to the MetaType
+
+
+
+
+ Adds a member (by name) to the MetaType, including an itemType and defaultType for representing lists
+
+
+
+
+ Adds a member (by name) to the MetaType, including an itemType and defaultType for representing lists, returning the ValueMember rather than the fluent API.
+ This is otherwise identical to Add.
+
+
+
+
+ Returns the ValueMember instances associated with this type
+
+
+
+
+ Returns the SubType instances associated with this type
+
+
+
+
+ Compiles the serializer for this type; this is *not* a full
+ standalone compile, but can significantly boost performance
+ while allowing additional types to be added.
+
+ An in-place compile can access non-public types / members
+
+
+
+ Gets the base-type for this type
+
+
+
+
+ When used to compile a model, should public serialization/deserialzation methods
+ be included for this type?
+
+
+
+
+ Should this type be treated as a reference by default?
+
+
+
+
+ Indicates whether the current type has defined callbacks
+
+
+
+
+ Indicates whether the current type has defined subtypes
+
+
+
+
+ Returns the set of callbacks defined for this type
+
+
+
+
+ Gets or sets the name of this contract.
+
+
+
+
+ The runtime type that the meta-type represents
+
+
+
+
+ Gets or sets whether the type should use a parameterless constructor (the default),
+ or whether the type should skip the constructor completely. This option is not supported
+ on compact-framework.
+
+
+
+
+ The concrete type to create when a new instance of this type is needed; this may be useful when dealing
+ with dynamic proxies, or with interface-based APIs
+
+
+
+
+ Returns the ValueMember that matchs a given field number, or null if not found
+
+
+
+
+ Returns the ValueMember that matchs a given member (property/field), or null if not found
+
+
+
+
+ Gets or sets a value indicating that an enum should be treated directly as an int/short/etc, rather
+ than enforcing .proto enum rules. This is useful *in particul* for [Flags] enums.
+
+
+
+
+ Gets or sets a value indicating that this type should NOT be treated as a list, even if it has
+ familiar list-like characteristics (enumerable, add, etc)
+
+
+
+
+ Provides protobuf serialization support for a number of types that can be defined at runtime
+
+
+
+
+ Provides protobuf serialization support for a number of types
+
+
+
+
+ Resolve a System.Type to the compiler-specific type
+
+
+
+
+ Resolve a System.Type to the compiler-specific type
+
+
+
+
+ This is the more "complete" version of Serialize, which handles single instances of mapped types.
+ The value is written as a complete field, including field-header and (for sub-objects) a
+ length-prefix
+ In addition to that, this provides support for:
+ - basic values; individual int / string / Guid / etc
+ - IEnumerable sequences of any type handled by TrySerializeAuxiliaryType
+
+
+
+
+
+ Writes a protocol-buffer representation of the given instance to the supplied stream.
+
+ The existing instance to be serialized (cannot be null).
+ The destination stream to write to.
+
+
+
+ Writes a protocol-buffer representation of the given instance to the supplied stream.
+
+ The existing instance to be serialized (cannot be null).
+ The destination stream to write to.
+ Additional information about this serialization operation.
+
+
+
+ Writes a protocol-buffer representation of the given instance to the supplied writer.
+
+ The existing instance to be serialized (cannot be null).
+ The destination writer to write to.
+
+
+
+ Applies a protocol-buffer stream to an existing instance (or null), using length-prefixed
+ data - useful with network IO.
+
+ The type being merged.
+ The existing instance to be modified (can be null).
+ The binary stream to apply to the instance (cannot be null).
+ How to encode the length prefix.
+ The tag used as a prefix to each record (only used with base-128 style prefixes).
+ The updated instance; this may be different to the instance argument if
+ either the original instance was null, or the stream defines a known sub-type of the
+ original instance.
+
+
+
+ Applies a protocol-buffer stream to an existing instance (or null), using length-prefixed
+ data - useful with network IO.
+
+ The type being merged.
+ The existing instance to be modified (can be null).
+ The binary stream to apply to the instance (cannot be null).
+ How to encode the length prefix.
+ The tag used as a prefix to each record (only used with base-128 style prefixes).
+ Used to resolve types on a per-field basis.
+ The updated instance; this may be different to the instance argument if
+ either the original instance was null, or the stream defines a known sub-type of the
+ original instance.
+
+
+
+ Applies a protocol-buffer stream to an existing instance (or null), using length-prefixed
+ data - useful with network IO.
+
+ The type being merged.
+ The existing instance to be modified (can be null).
+ The binary stream to apply to the instance (cannot be null).
+ How to encode the length prefix.
+ The tag used as a prefix to each record (only used with base-128 style prefixes).
+ Used to resolve types on a per-field basis.
+ Returns the number of bytes consumed by this operation (includes length-prefix overheads and any skipped data).
+ The updated instance; this may be different to the instance argument if
+ either the original instance was null, or the stream defines a known sub-type of the
+ original instance.
+
+
+
+ Reads a sequence of consecutive length-prefixed items from a stream, using
+ either base-128 or fixed-length prefixes. Base-128 prefixes with a tag
+ are directly comparable to serializing multiple items in succession
+ (use the tag to emulate the implicit behavior
+ when serializing a list/array). When a tag is
+ specified, any records with different tags are silently omitted. The
+ tag is ignored. The tag is ignores for fixed-length prefixes.
+
+ The binary stream containing the serialized records.
+ The prefix style used in the data.
+ The tag of records to return (if non-positive, then no tag is
+ expected and all records are returned).
+ On a field-by-field basis, the type of object to deserialize (can be null if "type" is specified).
+ The type of object to deserialize (can be null if "resolver" is specified).
+ The sequence of deserialized objects.
+
+
+
+ Reads a sequence of consecutive length-prefixed items from a stream, using
+ either base-128 or fixed-length prefixes. Base-128 prefixes with a tag
+ are directly comparable to serializing multiple items in succession
+ (use the tag to emulate the implicit behavior
+ when serializing a list/array). When a tag is
+ specified, any records with different tags are silently omitted. The
+ tag is ignored. The tag is ignores for fixed-length prefixes.
+
+ The binary stream containing the serialized records.
+ The prefix style used in the data.
+ The tag of records to return (if non-positive, then no tag is
+ expected and all records are returned).
+ On a field-by-field basis, the type of object to deserialize (can be null if "type" is specified).
+ The type of object to deserialize (can be null if "resolver" is specified).
+ The sequence of deserialized objects.
+ Additional information about this serialization operation.
+
+
+
+ Reads a sequence of consecutive length-prefixed items from a stream, using
+ either base-128 or fixed-length prefixes. Base-128 prefixes with a tag
+ are directly comparable to serializing multiple items in succession
+ (use the tag to emulate the implicit behavior
+ when serializing a list/array). When a tag is
+ specified, any records with different tags are silently omitted. The
+ tag is ignored. The tag is ignores for fixed-length prefixes.
+
+ The type of object to deserialize.
+ The binary stream containing the serialized records.
+ The prefix style used in the data.
+ The tag of records to return (if non-positive, then no tag is
+ expected and all records are returned).
+ The sequence of deserialized objects.
+
+
+
+ Reads a sequence of consecutive length-prefixed items from a stream, using
+ either base-128 or fixed-length prefixes. Base-128 prefixes with a tag
+ are directly comparable to serializing multiple items in succession
+ (use the tag to emulate the implicit behavior
+ when serializing a list/array). When a tag is
+ specified, any records with different tags are silently omitted. The
+ tag is ignored. The tag is ignores for fixed-length prefixes.
+
+ The type of object to deserialize.
+ The binary stream containing the serialized records.
+ The prefix style used in the data.
+ The tag of records to return (if non-positive, then no tag is
+ expected and all records are returned).
+ The sequence of deserialized objects.
+ Additional information about this serialization operation.
+
+
+
+ Writes a protocol-buffer representation of the given instance to the supplied stream,
+ with a length-prefix. This is useful for socket programming,
+ as DeserializeWithLengthPrefix can be used to read the single object back
+ from an ongoing stream.
+
+ The type being serialized.
+ The existing instance to be serialized (cannot be null).
+ How to encode the length prefix.
+ The destination stream to write to.
+ The tag used as a prefix to each record (only used with base-128 style prefixes).
+
+
+
+ Writes a protocol-buffer representation of the given instance to the supplied stream,
+ with a length-prefix. This is useful for socket programming,
+ as DeserializeWithLengthPrefix can be used to read the single object back
+ from an ongoing stream.
+
+ The type being serialized.
+ The existing instance to be serialized (cannot be null).
+ How to encode the length prefix.
+ The destination stream to write to.
+ The tag used as a prefix to each record (only used with base-128 style prefixes).
+ Additional information about this serialization operation.
+
+
+
+ Applies a protocol-buffer stream to an existing instance (which may be null).
+
+ The type (including inheritance) to consider.
+ The existing instance to be modified (can be null).
+ The binary stream to apply to the instance (cannot be null).
+ The updated instance; this may be different to the instance argument if
+ either the original instance was null, or the stream defines a known sub-type of the
+ original instance.
+
+
+
+ Applies a protocol-buffer stream to an existing instance (which may be null).
+
+ The type (including inheritance) to consider.
+ The existing instance to be modified (can be null).
+ The binary stream to apply to the instance (cannot be null).
+ The updated instance; this may be different to the instance argument if
+ either the original instance was null, or the stream defines a known sub-type of the
+ original instance.
+ Additional information about this serialization operation.
+
+
+
+ Applies a protocol-buffer stream to an existing instance (which may be null).
+
+ The type (including inheritance) to consider.
+ The existing instance to be modified (can be null).
+ The binary stream to apply to the instance (cannot be null).
+ The number of bytes to consume.
+ The updated instance; this may be different to the instance argument if
+ either the original instance was null, or the stream defines a known sub-type of the
+ original instance.
+
+
+
+ Applies a protocol-buffer stream to an existing instance (which may be null).
+
+ The type (including inheritance) to consider.
+ The existing instance to be modified (can be null).
+ The binary stream to apply to the instance (cannot be null).
+ The number of bytes to consume (or -1 to read to the end of the stream).
+ The updated instance; this may be different to the instance argument if
+ either the original instance was null, or the stream defines a known sub-type of the
+ original instance.
+ Additional information about this serialization operation.
+
+
+
+ Applies a protocol-buffer reader to an existing instance (which may be null).
+
+ The type (including inheritance) to consider.
+ The existing instance to be modified (can be null).
+ The reader to apply to the instance (cannot be null).
+ The updated instance; this may be different to the instance argument if
+ either the original instance was null, or the stream defines a known sub-type of the
+ original instance.
+
+
+
+ This is the more "complete" version of Deserialize, which handles single instances of mapped types.
+ The value is read as a complete field, including field-header and (for sub-objects) a
+ length-prefix..kmc
+
+ In addition to that, this provides support for:
+ - basic values; individual int / string / Guid / etc
+ - IList sets of any type handled by TryDeserializeAuxiliaryType
+
+
+
+
+ Creates a new runtime model, to which the caller
+ can add support for a range of types. A model
+ can be used "as is", or can be compiled for
+ optimal performance.
+
+
+
+
+ Applies common proxy scenarios, resolving the actual type to consider
+
+
+
+
+ Indicates whether the supplied type is explicitly modelled by the model
+
+
+
+
+ Provides the key that represents a given type in the current model.
+ The type is also normalized for proxies at the same time.
+
+
+
+
+ Provides the key that represents a given type in the current model.
+
+
+
+
+ Writes a protocol-buffer representation of the given instance to the supplied stream.
+
+ Represents the type (including inheritance) to consider.
+ The existing instance to be serialized (cannot be null).
+ The destination stream to write to.
+
+
+
+ Applies a protocol-buffer stream to an existing instance (which may be null).
+
+ Represents the type (including inheritance) to consider.
+ The existing instance to be modified (can be null).
+ The binary stream to apply to the instance (cannot be null).
+ The updated instance; this may be different to the instance argument if
+ either the original instance was null, or the stream defines a known sub-type of the
+ original instance.
+
+
+
+ Create a deep clone of the supplied instance; any sub-items are also cloned.
+
+
+
+
+ Indicates that while an inheritance tree exists, the exact type encountered was not
+ specified in that hierarchy and cannot be processed.
+
+
+
+
+ Indicates that the given type was not expected, and cannot be processed.
+
+
+
+
+ Indicates that the given type cannot be constructed; it may still be possible to
+ deserialize into existing instances.
+
+
+
+
+ Returns true if the type supplied is either a recognised contract type,
+ or a *list* of a recognised contract type.
+
+ Note that primitives always return false, even though the engine
+ will, if forced, try to serialize such
+ True if this type is recognised as a serializable entity, else false
+
+
+
+ Returns true if the type supplied is a basic type with inbuilt handling,
+ a recognised contract type, or a *list* of a basic / contract type.
+
+
+
+
+ Returns true if the type supplied is a basic type with inbuilt handling,
+ or a *list* of a basic type with inbuilt handling
+
+
+
+
+ Suggest a .proto definition for the given type
+
+ The type to generate a .proto definition for, or null to generate a .proto that represents the entire model
+ The .proto definition as a string
+
+
+
+ Creates a new IFormatter that uses protocol-buffer [de]serialization.
+
+ A new IFormatter to be used during [de]serialization.
+ The type of object to be [de]deserialized by the formatter.
+
+
+
+ Used to provide custom services for writing and parsing type names when using dynamic types. Both parsing and formatting
+ are provided on a single API as it is essential that both are mapped identically at all times.
+
+
+
+
+ Indicates the type of callback to be used
+
+
+
+
+ Invoked before an object is serialized
+
+
+
+
+ Invoked after an object is serialized
+
+
+
+
+ Invoked before an object is deserialized (or when a new instance is created)
+
+
+
+
+ Invoked after an object is deserialized
+
+
+
+
+ Returns a sequence of the Type instances that can be
+ processed by this model.
+
+
+
+
+ Suggest a .proto definition for the given type
+
+ The type to generate a .proto definition for, or null to generate a .proto that represents the entire model
+ The .proto definition as a string
+
+
+
+ Adds support for an additional type in this model, optionally
+ appplying inbuilt patterns. If the type is already known to the
+ model, the existing type is returned **without** applying
+ any additional behaviour.
+
+ Inbuilt patterns include:
+ [ProtoContract]/[ProtoMember(n)]
+ [DataContract]/[DataMember(Order=n)]
+ [XmlType]/[XmlElement(Order=n)]
+ [On{Des|S}erializ{ing|ed}]
+ ShouldSerialize*/*Specified
+
+ The type to be supported
+ Whether to apply the inbuilt configuration patterns (via attributes etc), or
+ just add the type with no additional configuration (the type must then be manually configured).
+ The MetaType representing this type, allowing
+ further configuration.
+
+
+
+ Verifies that the model is still open to changes; if not, an exception is thrown
+
+
+
+
+ Prevents further changes to this model
+
+
+
+
+ Provides the key that represents a given type in the current model.
+
+
+
+
+ Writes a protocol-buffer representation of the given instance to the supplied stream.
+
+ Represents the type (including inheritance) to consider.
+ The existing instance to be serialized (cannot be null).
+ The destination stream to write to.
+
+
+
+ Applies a protocol-buffer stream to an existing instance (which may be null).
+
+ Represents the type (including inheritance) to consider.
+ The existing instance to be modified (can be null).
+ The binary stream to apply to the instance (cannot be null).
+ The updated instance; this may be different to the instance argument if
+ either the original instance was null, or the stream defines a known sub-type of the
+ original instance.
+
+
+
+ Compiles the serializers individually; this is *not* a full
+ standalone compile, but can significantly boost performance
+ while allowing additional types to be added.
+
+ An in-place compile can access non-public types / members
+
+
+
+ Fully compiles the current model into a static-compiled model instance
+
+ A full compilation is restricted to accessing public types / members
+ An instance of the newly created compiled type-model
+
+
+
+ Fully compiles the current model into a static-compiled serialization dll
+ (the serialization dll still requires protobuf-net for support services).
+
+ A full compilation is restricted to accessing public types / members
+ The name of the TypeModel class to create
+ The path for the new dll
+ An instance of the newly created compiled type-model
+
+
+
+ Fully compiles the current model into a static-compiled serialization dll
+ (the serialization dll still requires protobuf-net for support services).
+
+ A full compilation is restricted to accessing public types / members
+ An instance of the newly created compiled type-model
+
+
+
+ Designate a factory-method to use to create instances of any type; note that this only affect types seen by the serializer *after* setting the factory.
+
+
+
+
+ Global default that
+ enables/disables automatic tag generation based on the existing name / order
+ of the defined members. See
+ for usage and important warning / explanation.
+ You must set the global default before attempting to serialize/deserialize any
+ impacted type.
+
+
+
+
+ Global default that determines whether types are considered serializable
+ if they have [DataContract] / [XmlType]. With this enabled, ONLY
+ types marked as [ProtoContract] are added automatically.
+
+
+
+
+ Global switch that enables or disables the implicit
+ handling of "zero defaults"; meanning: if no other default is specified,
+ it assumes bools always default to false, integers to zero, etc.
+
+ If this is disabled, no such assumptions are made and only *explicit*
+ default values are processed. This is enabled by default to
+ preserve similar logic to v1.
+
+
+
+
+ Global switch that determines whether types with a .ToString() and a Parse(string)
+ should be serialized as strings.
+
+
+
+
+ The default model, used to support ProtoBuf.Serializer
+
+
+
+
+ Obtains the MetaType associated with a given Type for the current model,
+ allowing additional configuration.
+
+
+
+
+ Should serializers be compiled on demand? It may be useful
+ to disable this for debugging purposes.
+
+
+
+
+ Should support for unexpected types be added automatically?
+ If false, an exception is thrown when unexpected types
+ are encountered.
+
+
+
+
+ The amount of time to wait if there are concurrent metadata access operations
+
+
+
+
+ If a lock-contention is detected, this event signals the *owner* of the lock responsible for the blockage, indicating
+ what caused the problem; this is only raised if the lock-owning code successfully completes.
+
+
+
+
+ Represents configuration options for compiling a model to
+ a standalone assembly.
+
+
+
+
+ Import framework options from an existing type
+
+
+
+
+ The TargetFrameworkAttribute FrameworkName value to burn into the generated assembly
+
+
+
+
+ The TargetFrameworkAttribute FrameworkDisplayName value to burn into the generated assembly
+
+
+
+
+ The name of the TypeModel class to create
+
+
+
+
+ The path for the new dll
+
+
+
+
+ The runtime version for the generated assembly
+
+
+
+
+ The runtime version for the generated assembly
+
+
+
+
+ The acecssibility of the generated serializer
+
+
+
+
+ Type accessibility
+
+
+
+
+ Available to all callers
+
+
+
+
+ Available to all callers in the same assembly, or assemblies specified via [InternalsVisibleTo(...)]
+
+
+
+
+ Contains the stack-trace of the owning code when a lock-contention scenario is detected
+
+
+
+
+ The stack-trace of the code that owned the lock when a lock-contention scenario occurred
+
+
+
+
+ Event-type that is raised when a lock-contention scenario is detected
+
+
+
+
+ Represents an inherited type in a type hierarchy.
+
+
+
+
+ Creates a new SubType instance.
+
+ The field-number that is used to encapsulate the data (as a nested
+ message) for the derived dype.
+ The sub-type to be considered.
+ Specific encoding style to use; in particular, Grouped can be used to avoid buffering, but is not the default.
+
+
+
+ The field-number that is used to encapsulate the data (as a nested
+ message) for the derived dype.
+
+
+
+
+ The sub-type to be considered.
+
+
+
+
+ Event arguments needed to perform type-formatting functions; this could be resolving a Type to a string suitable for serialization, or could
+ be requesting a Type from a string. If no changes are made, a default implementation will be used (from the assembly-qualified names).
+
+
+
+
+ The type involved in this map; if this is initially null, a Type is expected to be provided for the string in FormattedName.
+
+
+
+
+ The formatted-name involved in this map; if this is initially null, a formatted-name is expected from the type in Type.
+
+
+
+
+ Delegate type used to perform type-formatting functions; the sender originates as the type-model.
+
+
+
+
+ Represents a member (property/field) that is mapped to a protobuf field
+
+
+
+
+ Creates a new ValueMember instance
+
+
+
+
+ Creates a new ValueMember instance
+
+
+
+
+ Specifies methods for working with optional data members.
+
+ Provides a method (null for none) to query whether this member should
+ be serialized; it must be of the form "bool {Method}()". The member is only serialized if the
+ method returns true.
+ Provides a method (null for none) to indicate that a member was
+ deserialized; it must be of the form "void {Method}(bool)", and will be called with "true"
+ when data is found.
+
+
+
+ The number that identifies this member in a protobuf stream
+
+
+
+
+ Gets the member (field/property) which this member relates to.
+
+
+
+
+ Within a list / array / etc, the type of object for each item in the list (especially useful with ArrayList)
+
+
+
+
+ The underlying type of the member
+
+
+
+
+ For abstract types (IList etc), the type of concrete object to create (if required)
+
+
+
+
+ The type the defines the member
+
+
+
+
+ The default value of the item (members with this value will not be serialized)
+
+
+
+
+ Specifies the rules used to process the field; this is used to determine the most appropriate
+ wite-type, but also to describe subtypes within that wire-type (such as SignedVariant)
+
+
+
+
+ Indicates whether this field should follow strict encoding rules; this means (for example) that if a "fixed32"
+ is encountered when "variant" is defined, then it will fail (throw an exception) when parsing. Note that
+ when serializing the defined type is always used.
+
+
+
+
+ Indicates whether this field should use packed encoding (which can save lots of space for repeated primitive values).
+ This option only applies to list/array data of primitive types (int, double, etc).
+
+
+
+
+ Indicates whether this field should *repace* existing values (the default is false, meaning *append*).
+ This option only applies to list/array data.
+
+
+
+
+ Indicates whether this field is mandatory.
+
+
+
+
+ Enables full object-tracking/full-graph support.
+
+
+
+
+ Embeds the type information into the stream, allowing usage with types not known in advance.
+
+
+
+
+ Gets the logical name for this member in the schema (this is not critical for binary serialization, but may be used
+ when inferring a schema).
+
+
+
+
+ Should lists have extended support for null values? Note this makes the serialization less efficient.
+
+
+
+
+ Specifies the type of prefix that should be applied to messages.
+
+
+
+
+ No length prefix is applied to the data; the data is terminated only be the end of the stream.
+
+
+
+
+ A base-128 length prefix is applied to the data (efficient for short messages).
+
+
+
+
+ A fixed-length (little-endian) length prefix is applied to the data (useful for compatibility).
+
+
+
+
+ A fixed-length (big-endian) length prefix is applied to the data (useful for compatibility).
+
+
+
+
+ Indicates that a type is defined for protocol-buffer serialization.
+
+
+
+
+ Gets or sets the defined name of the type.
+
+
+
+
+ Gets or sets the fist offset to use with implicit field tags;
+ only uesd if ImplicitFields is set.
+
+
+
+
+ If specified, alternative contract markers (such as markers for XmlSerailizer or DataContractSerializer) are ignored.
+
+
+
+
+ If specified, do NOT treat this type as a list, even if it looks like one.
+
+
+
+
+ Gets or sets the mechanism used to automatically infer field tags
+ for members. This option should be used in advanced scenarios only.
+ Please review the important notes against the ImplicitFields enumeration.
+
+
+
+
+ Enables/disables automatic tag generation based on the existing name / order
+ of the defined members. This option is not used for members marked
+ with ProtoMemberAttribute, as intended to provide compatibility with
+ WCF serialization. WARNING: when adding new fields you must take
+ care to increase the Order for new elements, otherwise data corruption
+ may occur.
+
+ If not explicitly specified, the default is assumed from Serializer.GlobalOptions.InferTagFromName.
+
+
+
+ Has a InferTagFromName value been explicitly set? if not, the default from the type-model is assumed.
+
+
+
+
+ Specifies an offset to apply to [DataMember(Order=...)] markers;
+ this is useful when working with mex-generated classes that have
+ a different origin (usually 1 vs 0) than the original data-contract.
+
+ This value is added to the Order of each member.
+
+
+
+
+ If true, the constructor for the type is bypassed during deserialization, meaning any field initializers
+ or other initialization code is skipped.
+
+
+
+
+ Should this type be treated as a reference by default? Please also see the implications of this,
+ as recorded on ProtoMemberAttribute.AsReference
+
+
+
+
+ Applies only to enums (not to DTO classes themselves); gets or sets a value indicating that an enum should be treated directly as an int/short/etc, rather
+ than enforcing .proto enum rules. This is useful *in particul* for [Flags] enums.
+
+
+
+
+ Has a EnumPassthru value been explicitly set?
+
+
+
+
+ Used to define protocol-buffer specific behavior for
+ enumerated values.
+
+
+
+
+ Indicates whether this instance has a customised value mapping
+
+ true if a specific value is set
+
+
+
+ Gets or sets the specific value to use for this enum during serialization.
+
+
+
+
+ Gets or sets the defined name of the enum, as used in .proto
+ (this name is not used during serialization).
+
+
+
+
+ Indicates an error during serialization/deserialization of a proto stream.
+
+
+
+ Creates a new ProtoException instance.
+
+
+ Creates a new ProtoException instance.
+
+
+ Creates a new ProtoException instance.
+
+
+ Creates a new ProtoException instance.
+
+
+
+ Indicates that a member should be excluded from serialization; this
+ is only normally used when using implict fields.
+
+
+
+
+ Indicates that a member should be excluded from serialization; this
+ is only normally used when using implict fields. This allows
+ ProtoIgnoreAttribute usage
+ even for partial classes where the individual members are not
+ under direct control.
+
+
+
+
+ Creates a new ProtoPartialIgnoreAttribute instance.
+
+ Specifies the member to be ignored.
+
+
+
+ The name of the member to be ignored.
+
+
+
+
+ Indicates the known-types to support for an individual
+ message. This serializes each level in the hierarchy as
+ a nested message to retain wire-compatibility with
+ other protocol-buffer implementations.
+
+
+
+
+ Creates a new instance of the ProtoIncludeAttribute.
+
+ The unique index (within the type) that will identify this data.
+ The additional type to serialize/deserialize.
+
+
+
+ Creates a new instance of the ProtoIncludeAttribute.
+
+ The unique index (within the type) that will identify this data.
+ The additional type to serialize/deserialize.
+
+
+
+ Gets the unique index (within the type) that will identify this data.
+
+
+
+
+ Gets the additional type to serialize/deserialize.
+
+
+
+
+ Gets the additional type to serialize/deserialize.
+
+
+
+
+ Specifies whether the inherited sype's sub-message should be
+ written with a length-prefix (default), or with group markers.
+
+
+
+
+ Declares a member to be used in protocol-buffer serialization, using
+ the given Tag. A DataFormat may be used to optimise the serialization
+ format (for instance, using zigzag encoding for negative numbers, or
+ fixed-length encoding for large values.
+
+
+
+
+ Compare with another ProtoMemberAttribute for sorting purposes
+
+
+
+
+ Compare with another ProtoMemberAttribute for sorting purposes
+
+
+
+
+ Creates a new ProtoMemberAttribute instance.
+
+ Specifies the unique tag used to identify this member within the type.
+
+
+
+ Gets or sets the original name defined in the .proto; not used
+ during serialization.
+
+
+
+
+ Gets or sets the data-format to be used when encoding this value.
+
+
+
+
+ Gets the unique tag used to identify this member within the type.
+
+
+
+
+ Gets or sets a value indicating whether this member is mandatory.
+
+
+
+
+ Gets a value indicating whether this member is packed.
+ This option only applies to list/array data of primitive types (int, double, etc).
+
+
+
+
+ Indicates whether this field should *repace* existing values (the default is false, meaning *append*).
+ This option only applies to list/array data.
+
+
+
+
+ Enables full object-tracking/full-graph support.
+
+
+
+
+ Embeds the type information into the stream, allowing usage with types not known in advance.
+
+
+
+
+ Gets or sets a value indicating whether this member is packed (lists/arrays).
+
+
+
+
+ Additional (optional) settings that control serialization of members
+
+
+
+
+ Default; no additional options
+
+
+
+
+ Indicates that repeated elements should use packed (length-prefixed) encoding
+
+
+
+
+ Indicates that the given item is required
+
+
+
+
+ Enables full object-tracking/full-graph support
+
+
+
+
+ Embeds the type information into the stream, allowing usage with types not known in advance
+
+
+
+
+ Indicates whether this field should *repace* existing values (the default is false, meaning *append*).
+ This option only applies to list/array data.
+
+
+
+
+ Determines whether the types AsReferenceDefault value is used, or whether this member's AsReference should be used
+
+
+
+
+ Declares a member to be used in protocol-buffer serialization, using
+ the given Tag and MemberName. This allows ProtoMemberAttribute usage
+ even for partial classes where the individual members are not
+ under direct control.
+ A DataFormat may be used to optimise the serialization
+ format (for instance, using zigzag encoding for negative numbers, or
+ fixed-length encoding for large values.
+
+
+
+
+ Creates a new ProtoMemberAttribute instance.
+
+ Specifies the unique tag used to identify this member within the type.
+ Specifies the member to be serialized.
+
+
+
+ The name of the member to be serialized.
+
+
+
+
+ A stateful reader, used to read a protobuf stream. Typical usage would be (sequentially) to call
+ ReadFieldHeader and (after matching the field) an appropriate Read* method.
+
+
+
+
+ Creates a new reader against a stream
+
+ The source stream
+ The model to use for serialization; this can be null, but this will impair the ability to deserialize sub-objects
+ Additional context about this serialization operation
+
+
+
+ Creates a new reader against a stream
+
+ The source stream
+ The model to use for serialization; this can be null, but this will impair the ability to deserialize sub-objects
+ Additional context about this serialization operation
+ The number of bytes to read, or -1 to read until the end of the stream
+
+
+
+ Releases resources used by the reader, but importantly does not Dispose the
+ underlying stream; in many typical use-cases the stream is used for different
+ processes, so it is assumed that the consumer will Dispose their stream separately.
+
+
+
+
+ Reads an unsigned 32-bit integer from the stream; supported wire-types: Variant, Fixed32, Fixed64
+
+
+
+
+ Reads a signed 16-bit integer from the stream: Variant, Fixed32, Fixed64, SignedVariant
+
+
+
+
+ Reads an unsigned 16-bit integer from the stream; supported wire-types: Variant, Fixed32, Fixed64
+
+
+
+
+ Reads an unsigned 8-bit integer from the stream; supported wire-types: Variant, Fixed32, Fixed64
+
+
+
+
+ Reads a signed 8-bit integer from the stream; supported wire-types: Variant, Fixed32, Fixed64, SignedVariant
+
+
+
+
+ Reads a signed 32-bit integer from the stream; supported wire-types: Variant, Fixed32, Fixed64, SignedVariant
+
+
+
+
+ Reads a signed 64-bit integer from the stream; supported wire-types: Variant, Fixed32, Fixed64, SignedVariant
+
+
+
+
+ Reads a string from the stream (using UTF8); supported wire-types: String
+
+
+
+
+ Throws an exception indication that the given value cannot be mapped to an enum.
+
+
+
+
+ Reads a double-precision number from the stream; supported wire-types: Fixed32, Fixed64
+
+
+
+
+ Reads (merges) a sub-message from the stream, internally calling StartSubItem and EndSubItem, and (in between)
+ parsing the message in accordance with the model associated with the reader
+
+
+
+
+ Makes the end of consuming a nested message in the stream; the stream must be either at the correct EndGroup
+ marker, or all fields of the sub-message must have been consumed (in either case, this means ReadFieldHeader
+ should return zero)
+
+
+
+
+ Begins consuming a nested message in the stream; supported wire-types: StartGroup, String
+
+ The token returned must be help and used when callining EndSubItem
+
+
+
+ Reads a field header from the stream, setting the wire-type and retuning the field number. If no
+ more fields are available, then 0 is returned. This methods respects sub-messages.
+
+
+
+
+ Looks ahead to see whether the next field in the stream is what we expect
+ (typically; what we've just finished reading - for example ot read successive list items)
+
+
+
+
+ Compares the streams current wire-type to the hinted wire-type, updating the reader if necessary; for example,
+ a Variant may be updated to SignedVariant. If the hinted wire-type is unrelated then no change is made.
+
+
+
+
+ Verifies that the stream's current wire-type is as expected, or a specialized sub-type (for example,
+ SignedVariant) - in which case the current wire-type is updated. Otherwise an exception is thrown.
+
+
+
+
+ Discards the data for the current field.
+
+
+
+
+ Reads an unsigned 64-bit integer from the stream; supported wire-types: Variant, Fixed32, Fixed64
+
+
+
+
+ Reads a single-precision number from the stream; supported wire-types: Fixed32, Fixed64
+
+
+
+
+ Reads a boolean value from the stream; supported wire-types: Variant, Fixed32, Fixed64
+
+
+
+
+
+ Reads a byte-sequence from the stream, appending them to an existing byte-sequence (which can be null); supported wire-types: String
+
+
+
+
+ Reads the length-prefix of a message from a stream without buffering additional data, allowing a fixed-length
+ reader to be created.
+
+
+
+
+ Reads a little-endian encoded integer. An exception is thrown if the data is not all available.
+
+
+
+
+ Reads a big-endian encoded integer. An exception is thrown if the data is not all available.
+
+
+
+
+ Reads a varint encoded integer. An exception is thrown if the data is not all available.
+
+
+
+
+ Reads a string (of a given lenth, in bytes) directly from the source into a pre-existing buffer. An exception is thrown if the data is not all available.
+
+
+
+
+ Reads a given number of bytes directly from the source. An exception is thrown if the data is not all available.
+
+
+
+
+ Reads a string (of a given lenth, in bytes) directly from the source. An exception is thrown if the data is not all available.
+
+
+
+
+ Reads the length-prefix of a message from a stream without buffering additional data, allowing a fixed-length
+ reader to be created.
+
+
+
+ The number of bytes consumed; 0 if no data available
+
+
+
+ Copies the current field into the instance as extension data
+
+
+
+
+ Indicates whether the reader still has data remaining in the current sub-item,
+ additionally setting the wire-type for the next field if there is more data.
+ This is used when decoding packed data.
+
+
+
+
+ Utility method, not intended for public use; this helps maintain the root object is complex scenarios
+
+
+
+
+ Reads a Type from the stream, using the model's DynamicTypeFormatting if appropriate; supported wire-types: String
+
+
+
+
+ Merge two objects using the details from the current reader; this is used to change the type
+ of objects when an inheritance relationship is discovered later than usual during deserilazation.
+
+
+
+
+ Gets the number of the field being processed.
+
+
+
+
+ Indicates the underlying proto serialization format on the wire.
+
+
+
+
+ Gets / sets a flag indicating whether strings should be checked for repetition; if
+ true, any repeated UTF-8 byte sequence will result in the same String instance, rather
+ than a second instance of the same string. Enabled by default. Note that this uses
+ a custom interner - the system-wide string interner is not used.
+
+
+
+
+ Addition information about this deserialization operation.
+
+
+
+
+ Returns the position of the current reader (note that this is not necessarily the same as the position
+ in the underlying stream, if multiple readers are used on the same stream)
+
+
+
+
+ Get the TypeModel associated with this reader
+
+
+
+
+ Represents an output stream for writing protobuf data.
+
+ Why is the API backwards (static methods with writer arguments)?
+ See: http://marcgravell.blogspot.com/2010/03/last-will-be-first-and-first-will-be.html
+
+
+
+
+ Write an encapsulated sub-object, using the supplied unique key (reprasenting a type).
+
+ The object to write.
+ The key that uniquely identifies the type within the model.
+ The destination.
+
+
+
+ Write an encapsulated sub-object, using the supplied unique key (reprasenting a type) - but the
+ caller is asserting that this relationship is non-recursive; no recursion check will be
+ performed.
+
+ The object to write.
+ The key that uniquely identifies the type within the model.
+ The destination.
+
+
+
+ Writes a field-header, indicating the format of the next data we plan to write.
+
+
+
+
+ Writes a byte-array to the stream; supported wire-types: String
+
+
+
+
+ Writes a byte-array to the stream; supported wire-types: String
+
+
+
+
+ Indicates the start of a nested record.
+
+ The instance to write.
+ The destination.
+ A token representing the state of the stream; this token is given to EndSubItem.
+
+
+
+ Indicates the end of a nested record.
+
+ The token obtained from StartubItem.
+ The destination.
+
+
+
+ Creates a new writer against a stream
+
+ The destination stream
+ The model to use for serialization; this can be null, but this will impair the ability to serialize sub-objects
+ Additional context about this serialization operation
+
+
+
+ Flushes data to the underlying stream, and releases any resources. The underlying stream is *not* disposed
+ by this operation.
+
+
+
+
+ Writes any buffered data (if possible) to the underlying stream.
+
+ The writer to flush
+ It is not always possible to fully flush, since some sequences
+ may require values to be back-filled into the byte-stream.
+
+
+
+ Writes an unsigned 32-bit integer to the stream; supported wire-types: Variant, Fixed32, Fixed64
+
+
+
+
+ Writes a string to the stream; supported wire-types: String
+
+
+
+
+ Writes an unsigned 64-bit integer to the stream; supported wire-types: Variant, Fixed32, Fixed64
+
+
+
+
+ Writes a signed 64-bit integer to the stream; supported wire-types: Variant, Fixed32, Fixed64, SignedVariant
+
+
+
+
+ Writes an unsigned 16-bit integer to the stream; supported wire-types: Variant, Fixed32, Fixed64
+
+
+
+
+ Writes a signed 16-bit integer to the stream; supported wire-types: Variant, Fixed32, Fixed64, SignedVariant
+
+
+
+
+ Writes an unsigned 16-bit integer to the stream; supported wire-types: Variant, Fixed32, Fixed64
+
+
+
+
+ Writes an unsigned 8-bit integer to the stream; supported wire-types: Variant, Fixed32, Fixed64
+
+
+
+
+ Writes a signed 8-bit integer to the stream; supported wire-types: Variant, Fixed32, Fixed64, SignedVariant
+
+
+
+
+ Writes a signed 32-bit integer to the stream; supported wire-types: Variant, Fixed32, Fixed64, SignedVariant
+
+
+
+
+ Writes a double-precision number to the stream; supported wire-types: Fixed32, Fixed64
+
+
+
+
+ Writes a single-precision number to the stream; supported wire-types: Fixed32, Fixed64
+
+
+
+
+ Throws an exception indicating that the given enum cannot be mapped to a serialized value.
+
+
+
+
+ Writes a boolean to the stream; supported wire-types: Variant, Fixed32, Fixed64
+
+
+
+
+ Copies any extension data stored for the instance to the underlying stream
+
+
+
+
+ Used for packed encoding; indicates that the next field should be skipped rather than
+ a field header written. Note that the field number must match, else an exception is thrown
+ when the attempt is made to write the (incorrect) field. The wire-type is taken from the
+ subsequent call to WriteFieldHeader. Only primitive types can be packed.
+
+
+
+
+ Specifies a known root object to use during reference-tracked serialization
+
+
+
+
+ Writes a Type to the stream, using the model's DynamicTypeFormatting if appropriate; supported wire-types: String
+
+
+
+
+ Addition information about this serialization operation.
+
+
+
+
+ Get the TypeModel associated with this writer
+
+
+
+
+ Additional information about a serialization operation
+
+
+
+
+ Convert a SerializationContext to a StreamingContext
+
+
+
+
+ Convert a StreamingContext to a SerializationContext
+
+
+
+
+ Gets or sets a user-defined object containing additional information about this serialization/deserialization operation.
+
+
+
+
+ A default SerializationContext, with minimal information.
+
+
+
+
+ Gets or sets the source or destination of the transmitted data.
+
+
+
+
+ Provides protocol-buffer serialization capability for concrete, attributed types. This
+ is a *default* model, but custom serializer models are also supported.
+
+
+ Protocol-buffer serialization is a compact binary format, designed to take
+ advantage of sparse data and knowledge of specific data types; it is also
+ extensible, allowing a type to be deserialized / merged even if some data is
+ not recognised.
+
+
+
+
+ The field number that is used as a default when serializing/deserializing a list of objects.
+ The data is treated as repeated message with field number 1.
+
+
+
+
+ Suggest a .proto definition for the given type
+
+ The type to generate a .proto definition for
+ The .proto definition as a string
+
+
+
+ Create a deep clone of the supplied instance; any sub-items are also cloned.
+
+
+
+
+ Applies a protocol-buffer stream to an existing instance.
+
+ The type being merged.
+ The existing instance to be modified (can be null).
+ The binary stream to apply to the instance (cannot be null).
+ The updated instance; this may be different to the instance argument if
+ either the original instance was null, or the stream defines a known sub-type of the
+ original instance.
+
+
+
+ Creates a new instance from a protocol-buffer stream
+
+ The type to be created.
+ The binary stream to apply to the new instance (cannot be null).
+ A new, initialized instance.
+
+
+
+ Writes a protocol-buffer representation of the given instance to the supplied stream.
+
+ The existing instance to be serialized (cannot be null).
+ The destination stream to write to.
+
+
+
+ Serializes a given instance and deserializes it as a different type;
+ this can be used to translate between wire-compatible objects (where
+ two .NET types represent the same data), or to promote/demote a type
+ through an inheritance hierarchy.
+
+ No assumption of compatibility is made between the types.
+ The type of the object being copied.
+ The type of the new object to be created.
+ The existing instance to use as a template.
+ A new instane of type TNewType, with the data from TOldType.
+
+
+
+ Writes a protocol-buffer representation of the given instance to the supplied SerializationInfo.
+
+ The type being serialized.
+ The existing instance to be serialized (cannot be null).
+ The destination SerializationInfo to write to.
+
+
+
+ Writes a protocol-buffer representation of the given instance to the supplied SerializationInfo.
+
+ The type being serialized.
+ The existing instance to be serialized (cannot be null).
+ The destination SerializationInfo to write to.
+ Additional information about this serialization operation.
+
+
+
+ Writes a protocol-buffer representation of the given instance to the supplied XmlWriter.
+
+ The type being serialized.
+ The existing instance to be serialized (cannot be null).
+ The destination XmlWriter to write to.
+
+
+
+ Applies a protocol-buffer from an XmlReader to an existing instance.
+
+ The type being merged.
+ The existing instance to be modified (cannot be null).
+ The XmlReader containing the data to apply to the instance (cannot be null).
+
+
+
+ Applies a protocol-buffer from a SerializationInfo to an existing instance.
+
+ The type being merged.
+ The existing instance to be modified (cannot be null).
+ The SerializationInfo containing the data to apply to the instance (cannot be null).
+
+
+
+ Applies a protocol-buffer from a SerializationInfo to an existing instance.
+
+ The type being merged.
+ The existing instance to be modified (cannot be null).
+ The SerializationInfo containing the data to apply to the instance (cannot be null).
+ Additional information about this serialization operation.
+
+
+
+ Precompiles the serializer for a given type.
+
+
+
+
+ Creates a new IFormatter that uses protocol-buffer [de]serialization.
+
+ The type of object to be [de]deserialized by the formatter.
+ A new IFormatter to be used during [de]serialization.
+
+
+
+ Reads a sequence of consecutive length-prefixed items from a stream, using
+ either base-128 or fixed-length prefixes. Base-128 prefixes with a tag
+ are directly comparable to serializing multiple items in succession
+ (use the tag to emulate the implicit behavior
+ when serializing a list/array). When a tag is
+ specified, any records with different tags are silently omitted. The
+ tag is ignored. The tag is ignores for fixed-length prefixes.
+
+ The type of object to deserialize.
+ The binary stream containing the serialized records.
+ The prefix style used in the data.
+ The tag of records to return (if non-positive, then no tag is
+ expected and all records are returned).
+ The sequence of deserialized objects.
+
+
+
+ Creates a new instance from a protocol-buffer stream that has a length-prefix
+ on data (to assist with network IO).
+
+ The type to be created.
+ The binary stream to apply to the new instance (cannot be null).
+ How to encode the length prefix.
+ A new, initialized instance.
+
+
+
+ Creates a new instance from a protocol-buffer stream that has a length-prefix
+ on data (to assist with network IO).
+
+ The type to be created.
+ The binary stream to apply to the new instance (cannot be null).
+ How to encode the length prefix.
+ The expected tag of the item (only used with base-128 prefix style).
+ A new, initialized instance.
+
+
+
+ Applies a protocol-buffer stream to an existing instance, using length-prefixed
+ data - useful with network IO.
+
+ The type being merged.
+ The existing instance to be modified (can be null).
+ The binary stream to apply to the instance (cannot be null).
+ How to encode the length prefix.
+ The updated instance; this may be different to the instance argument if
+ either the original instance was null, or the stream defines a known sub-type of the
+ original instance.
+
+
+
+ Writes a protocol-buffer representation of the given instance to the supplied stream,
+ with a length-prefix. This is useful for socket programming,
+ as DeserializeWithLengthPrefix/MergeWithLengthPrefix can be used to read the single object back
+ from an ongoing stream.
+
+ The type being serialized.
+ The existing instance to be serialized (cannot be null).
+ How to encode the length prefix.
+ The destination stream to write to.
+
+
+
+ Writes a protocol-buffer representation of the given instance to the supplied stream,
+ with a length-prefix. This is useful for socket programming,
+ as DeserializeWithLengthPrefix/MergeWithLengthPrefix can be used to read the single object back
+ from an ongoing stream.
+
+ The type being serialized.
+ The existing instance to be serialized (cannot be null).
+ How to encode the length prefix.
+ The destination stream to write to.
+ The tag used as a prefix to each record (only used with base-128 style prefixes).
+
+
+ Indicates the number of bytes expected for the next message.
+ The stream containing the data to investigate for a length.
+ The algorithm used to encode the length.
+ The length of the message, if it could be identified.
+ True if a length could be obtained, false otherwise.
+
+
+ Indicates the number of bytes expected for the next message.
+ The buffer containing the data to investigate for a length.
+ The offset of the first byte to read from the buffer.
+ The number of bytes to read from the buffer.
+ The algorithm used to encode the length.
+ The length of the message, if it could be identified.
+ True if a length could be obtained, false otherwise.
+
+
+
+ Releases any internal buffers that have been reserved for efficiency; this does not affect any serialization
+ operations; simply: it can be used (optionally) to release the buffers for garbage collection (at the expense
+ of having to re-allocate a new buffer for the next operation, rather than re-use prior buffers).
+
+
+
+
+ Provides non-generic access to the default serializer.
+
+
+
+
+ Create a deep clone of the supplied instance; any sub-items are also cloned.
+
+
+
+
+ Writes a protocol-buffer representation of the given instance to the supplied stream.
+
+ The existing instance to be serialized (cannot be null).
+ The destination stream to write to.
+
+
+
+ Creates a new instance from a protocol-buffer stream
+
+ The type to be created.
+ The binary stream to apply to the new instance (cannot be null).
+ A new, initialized instance.
+
+
+ Applies a protocol-buffer stream to an existing instance.
+ The existing instance to be modified (cannot be null).
+ The binary stream to apply to the instance (cannot be null).
+ The updated instance
+
+
+
+ Writes a protocol-buffer representation of the given instance to the supplied stream,
+ with a length-prefix. This is useful for socket programming,
+ as DeserializeWithLengthPrefix/MergeWithLengthPrefix can be used to read the single object back
+ from an ongoing stream.
+
+ The existing instance to be serialized (cannot be null).
+ How to encode the length prefix.
+ The destination stream to write to.
+ The tag used as a prefix to each record (only used with base-128 style prefixes).
+
+
+
+ Applies a protocol-buffer stream to an existing instance (or null), using length-prefixed
+ data - useful with network IO.
+
+ The existing instance to be modified (can be null).
+ The binary stream to apply to the instance (cannot be null).
+ How to encode the length prefix.
+ Used to resolve types on a per-field basis.
+ The updated instance; this may be different to the instance argument if
+ either the original instance was null, or the stream defines a known sub-type of the
+ original instance.
+
+
+
+ Indicates whether the supplied type is explicitly modelled by the model
+
+
+
+
+ Global switches that change the behavior of protobuf-net
+
+
+
+
+
+
+
+
+
+ Maps a field-number to a type
+
+
+
+
+ Perform the steps necessary to serialize this data.
+
+ The value to be serialized.
+ The writer entity that is accumulating the output data.
+
+
+
+ Perform the steps necessary to deserialize this data.
+
+ The current value, if appropriate.
+ The reader providing the input data.
+ The updated / replacement value.
+
+
+ Emit the IL necessary to perform the given actions
+ to serialize this data.
+
+ Details and utilities for the method being generated.
+ The source of the data to work against;
+ If the value is only needed once, then LoadValue is sufficient. If
+ the value is needed multiple times, then note that a "null"
+ means "the top of the stack", in which case you should create your
+ own copy - GetLocalWithValue.
+
+
+
+ Emit the IL necessary to perform the given actions to deserialize this data.
+
+ Details and utilities for the method being generated.
+ For nested values, the instance holding the values; note
+ that this is not always provided - a null means not supplied. Since this is always
+ a variable or argument, it is not necessary to consume this value.
+
+
+
+ The type that this serializer is intended to work for.
+
+
+
+
+ Indicates whether a Read operation replaces the existing value, or
+ extends the value. If false, the "value" parameter to Read is
+ discarded, and should be passed in as null.
+
+
+
+
+ Now all Read operations return a value (although most do); if false no
+ value should be expected.
+
+
+
+
+ Uses protocol buffer serialization on the specified operation; note that this
+ must be enabled on both the client and server.
+
+
+
+
+ Configuration element to swap out DatatContractSerilaizer with the XmlProtoSerializer for a given endpoint.
+
+
+
+
+
+ Creates a new ProtoBehaviorExtension instance.
+
+
+
+
+ Creates a behavior extension based on the current configuration settings.
+
+ The behavior extension.
+
+
+
+ Gets the type of behavior.
+
+
+
+
+ Behavior to swap out DatatContractSerilaizer with the XmlProtoSerializer for a given endpoint.
+
+ Add the following to the server and client app.config in the system.serviceModel section:
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Configure your endpoints to have a behaviorConfiguration as follows:
+
+
+
+
+
+
+
+
+
+
+
+
+ Describes a WCF operation behaviour that can perform protobuf serialization
+
+
+
+
+ Create a new ProtoOperationBehavior instance
+
+
+
+
+ Creates a protobuf serializer if possible (falling back to the default WCF serializer)
+
+
+
+
+ The type-model that should be used with this behaviour
+
+
+
+
+ An xml object serializer that can embed protobuf data in a base-64 hunk (looking like a byte[])
+
+
+
+
+ Attempt to create a new serializer for the given model and type
+
+ A new serializer instance if the type is recognised by the model; null otherwise
+
+
+
+ Creates a new serializer for the given model and type
+
+
+
+
+ Ends an object in the output
+
+
+
+
+ Begins an object in the output
+
+
+
+
+ Writes the body of an object in the output
+
+
+
+
+ Indicates whether this is the start of an object we are prepared to handle
+
+
+
+
+ Reads the body of an object
+
+
+
+
+ Used to hold particulars relating to nested objects. This is opaque to the caller - simply
+ give back the token you are given at the end of an object.
+
+
+
+
+ Indicates the encoding used to represent an individual value in a protobuf stream
+
+
+
+
+ Represents an error condition
+
+
+
+
+ Base-128 variant-length encoding
+
+
+
+
+ Fixed-length 8-byte encoding
+
+
+
+
+ Length-variant-prefixed encoding
+
+
+
+
+ Indicates the start of a group
+
+
+
+
+ Indicates the end of a group
+
+
+
+
+ Fixed-length 4-byte encoding
+ 10
+
+
+
+ This is not a formal wire-type in the "protocol buffers" spec, but
+ denotes a variant integer that should be interpreted using
+ zig-zag semantics (so -ve numbers aren't a significant overhead)
+
+
+
+
diff --git a/packages/protobuf-net.2.0.0.668/lib/net40-cf/protobuf-net.dll b/packages/protobuf-net.2.0.0.668/lib/net40-cf/protobuf-net.dll
new file mode 100644
index 000000000..dd6c1163c
Binary files /dev/null and b/packages/protobuf-net.2.0.0.668/lib/net40-cf/protobuf-net.dll differ
diff --git a/packages/protobuf-net.2.0.0.668/lib/net40-cf/protobuf-net.xml b/packages/protobuf-net.2.0.0.668/lib/net40-cf/protobuf-net.xml
new file mode 100644
index 000000000..dcbe26f6d
--- /dev/null
+++ b/packages/protobuf-net.2.0.0.668/lib/net40-cf/protobuf-net.xml
@@ -0,0 +1,2529 @@
+
+
+
+ protobuf-net
+
+
+
+
+ Provides support for common .NET types that do not have a direct representation
+ in protobuf, using the definitions from bcl.proto
+
+
+
+
+ Creates a new instance of the specified type, bypassing the constructor.
+
+ The type to create
+ The new instance
+ If the platform does not support constructor-skipping
+
+
+
+ Writes a TimeSpan to a protobuf stream
+
+
+
+
+ Parses a TimeSpan from a protobuf stream
+
+
+
+
+ Parses a DateTime from a protobuf stream
+
+
+
+
+ Writes a DateTime to a protobuf stream
+
+
+
+
+ Parses a decimal from a protobuf stream
+
+
+
+
+ Writes a decimal to a protobuf stream
+
+
+
+
+ Writes a Guid to a protobuf stream
+
+
+
+
+ Parses a Guid from a protobuf stream
+
+
+
+
+ Reads an *implementation specific* bundled .NET object, including (as options) type-metadata, identity/re-use, etc.
+
+
+
+
+ Writes an *implementation specific* bundled .NET object, including (as options) type-metadata, identity/re-use, etc.
+
+
+
+
+ Optional behaviours that introduce .NET-specific functionality
+
+
+
+
+ No special behaviour
+
+
+
+
+ Enables full object-tracking/full-graph support.
+
+
+
+
+ Embeds the type information into the stream, allowing usage with types not known in advance.
+
+
+
+
+ If false, the constructor for the type is bypassed during deserialization, meaning any field initializers
+ or other initialization code is skipped.
+
+
+
+
+ Should the object index be reserved, rather than creating an object promptly
+
+
+
+
+ Provides a simple buffer-based implementation of an extension object.
+
+
+
+
+ Provides addition capability for supporting unexpected fields during
+ protocol-buffer serialization/deserialization. This allows for loss-less
+ round-trip/merge, even when the data is not fully understood.
+
+
+
+
+ Requests a stream into which any unexpected fields can be persisted.
+
+ A new stream suitable for storing data.
+
+
+
+ Indicates that all unexpected fields have now been stored. The
+ implementing class is responsible for closing the stream. If
+ "commit" is not true the data may be discarded.
+
+ The stream originally obtained by BeginAppend.
+ True if the append operation completed successfully.
+
+
+
+ Requests a stream of the unexpected fields previously stored.
+
+ A prepared stream of the unexpected fields.
+
+
+
+ Indicates that all unexpected fields have now been read. The
+ implementing class is responsible for closing the stream.
+
+ The stream originally obtained by BeginQuery.
+
+
+
+ Requests the length of the raw binary stream; this is used
+ when serializing sub-entities to indicate the expected size.
+
+ The length of the binary stream representing unexpected data.
+
+
+ Specifies a method on the root-contract in an hierarchy to be invoked before serialization.
+
+
+ Specifies a method on the root-contract in an hierarchy to be invoked after serialization.
+
+
+ Specifies a method on the root-contract in an hierarchy to be invoked before deserialization.
+
+
+ Specifies a method on the root-contract in an hierarchy to be invoked after deserialization.
+
+
+
+ Sub-format to use when serializing/deserializing data
+
+
+
+
+ Uses the default encoding for the data-type.
+
+
+
+
+ When applied to signed integer-based data (including Decimal), this
+ indicates that zigzag variant encoding will be used. This means that values
+ with small magnitude (regardless of sign) take a small amount
+ of space to encode.
+
+
+
+
+ When applied to signed integer-based data (including Decimal), this
+ indicates that two's-complement variant encoding will be used.
+ This means that any -ve number will take 10 bytes (even for 32-bit),
+ so should only be used for compatibility.
+
+
+
+
+ When applied to signed integer-based data (including Decimal), this
+ indicates that a fixed amount of space will be used.
+
+
+
+
+ When applied to a sub-message, indicates that the value should be treated
+ as group-delimited.
+
+
+
+
+ Simple base class for supporting unexpected fields allowing
+ for loss-less round-tips/merge, even if the data is not understod.
+ The additional fields are (by default) stored in-memory in a buffer.
+
+ As an example of an alternative implementation, you might
+ choose to use the file system (temporary files) as the back-end, tracking
+ only the paths [such an object would ideally be IDisposable and use
+ a finalizer to ensure that the files are removed].
+
+
+
+
+ Indicates that the implementing type has support for protocol-buffer
+ extensions.
+
+ Can be implemented by deriving from Extensible.
+
+
+
+ Retrieves the extension object for the current
+ instance, optionally creating it if it does not already exist.
+
+ Should a new extension object be
+ created if it does not already exist?
+ The extension object if it exists (or was created), or null
+ if the extension object does not exist or is not available.
+ The createIfMissing argument is false during serialization,
+ and true during deserialization upon encountering unexpected fields.
+
+
+
+ Retrieves the extension object for the current
+ instance, optionally creating it if it does not already exist.
+
+ Should a new extension object be
+ created if it does not already exist?
+ The extension object if it exists (or was created), or null
+ if the extension object does not exist or is not available.
+ The createIfMissing argument is false during serialization,
+ and true during deserialization upon encountering unexpected fields.
+
+
+
+ Provides a simple, default implementation for extension support,
+ optionally creating it if it does not already exist. Designed to be called by
+ classes implementing .
+
+ Should a new extension object be
+ created if it does not already exist?
+ The extension field to check (and possibly update).
+ The extension object if it exists (or was created), or null
+ if the extension object does not exist or is not available.
+ The createIfMissing argument is false during serialization,
+ and true during deserialization upon encountering unexpected fields.
+
+
+
+ Appends the value as an additional (unexpected) data-field for the instance.
+ Note that for non-repeated sub-objects, this equates to a merge operation;
+ for repeated sub-objects this adds a new instance to the set; for simple
+ values the new value supercedes the old value.
+
+ Note that appending a value does not remove the old value from
+ the stream; avoid repeatedly appending values for the same field.
+ The type of the value to append.
+ The extensible object to append the value to.
+ The field identifier; the tag should not be defined as a known data-field for the instance.
+ The value to append.
+
+
+
+ Appends the value as an additional (unexpected) data-field for the instance.
+ Note that for non-repeated sub-objects, this equates to a merge operation;
+ for repeated sub-objects this adds a new instance to the set; for simple
+ values the new value supercedes the old value.
+
+ Note that appending a value does not remove the old value from
+ the stream; avoid repeatedly appending values for the same field.
+ The data-type of the field.
+ The data-format to use when encoding the value.
+ The extensible object to append the value to.
+ The field identifier; the tag should not be defined as a known data-field for the instance.
+ The value to append.
+
+
+
+ Queries an extensible object for an additional (unexpected) data-field for the instance.
+ The value returned is the composed value after merging any duplicated content; if the
+ value is "repeated" (a list), then use GetValues instead.
+
+ The data-type of the field.
+ The extensible object to obtain the value from.
+ The field identifier; the tag should not be defined as a known data-field for the instance.
+ The effective value of the field, or the default value if not found.
+
+
+
+ Queries an extensible object for an additional (unexpected) data-field for the instance.
+ The value returned is the composed value after merging any duplicated content; if the
+ value is "repeated" (a list), then use GetValues instead.
+
+ The data-type of the field.
+ The extensible object to obtain the value from.
+ The field identifier; the tag should not be defined as a known data-field for the instance.
+ The data-format to use when decoding the value.
+ The effective value of the field, or the default value if not found.
+
+
+
+ Queries an extensible object for an additional (unexpected) data-field for the instance.
+ The value returned (in "value") is the composed value after merging any duplicated content;
+ if the value is "repeated" (a list), then use GetValues instead.
+
+ The data-type of the field.
+ The effective value of the field, or the default value if not found.
+ The extensible object to obtain the value from.
+ The field identifier; the tag should not be defined as a known data-field for the instance.
+ True if data for the field was present, false otherwise.
+
+
+
+ Queries an extensible object for an additional (unexpected) data-field for the instance.
+ The value returned (in "value") is the composed value after merging any duplicated content;
+ if the value is "repeated" (a list), then use GetValues instead.
+
+ The data-type of the field.
+ The effective value of the field, or the default value if not found.
+ The extensible object to obtain the value from.
+ The field identifier; the tag should not be defined as a known data-field for the instance.
+ The data-format to use when decoding the value.
+ True if data for the field was present, false otherwise.
+
+
+
+ Queries an extensible object for an additional (unexpected) data-field for the instance.
+ The value returned (in "value") is the composed value after merging any duplicated content;
+ if the value is "repeated" (a list), then use GetValues instead.
+
+ The data-type of the field.
+ The effective value of the field, or the default value if not found.
+ The extensible object to obtain the value from.
+ The field identifier; the tag should not be defined as a known data-field for the instance.
+ The data-format to use when decoding the value.
+ Allow tags that are present as part of the definition; for example, to query unknown enum values.
+ True if data for the field was present, false otherwise.
+
+
+
+ Queries an extensible object for an additional (unexpected) data-field for the instance.
+ Each occurrence of the field is yielded separately, making this usage suitable for "repeated"
+ (list) fields.
+
+ The extended data is processed lazily as the enumerator is iterated.
+ The data-type of the field.
+ The extensible object to obtain the value from.
+ The field identifier; the tag should not be defined as a known data-field for the instance.
+ An enumerator that yields each occurrence of the field.
+
+
+
+ Queries an extensible object for an additional (unexpected) data-field for the instance.
+ Each occurrence of the field is yielded separately, making this usage suitable for "repeated"
+ (list) fields.
+
+ The extended data is processed lazily as the enumerator is iterated.
+ The data-type of the field.
+ The extensible object to obtain the value from.
+ The field identifier; the tag should not be defined as a known data-field for the instance.
+ The data-format to use when decoding the value.
+ An enumerator that yields each occurrence of the field.
+
+
+
+ Queries an extensible object for an additional (unexpected) data-field for the instance.
+ The value returned (in "value") is the composed value after merging any duplicated content;
+ if the value is "repeated" (a list), then use GetValues instead.
+
+ The data-type of the field.
+ The model to use for configuration.
+ The effective value of the field, or the default value if not found.
+ The extensible object to obtain the value from.
+ The field identifier; the tag should not be defined as a known data-field for the instance.
+ The data-format to use when decoding the value.
+ Allow tags that are present as part of the definition; for example, to query unknown enum values.
+ True if data for the field was present, false otherwise.
+
+
+
+ Queries an extensible object for an additional (unexpected) data-field for the instance.
+ Each occurrence of the field is yielded separately, making this usage suitable for "repeated"
+ (list) fields.
+
+ The extended data is processed lazily as the enumerator is iterated.
+ The model to use for configuration.
+ The data-type of the field.
+ The extensible object to obtain the value from.
+ The field identifier; the tag should not be defined as a known data-field for the instance.
+ The data-format to use when decoding the value.
+ An enumerator that yields each occurrence of the field.
+
+
+
+ Appends the value as an additional (unexpected) data-field for the instance.
+ Note that for non-repeated sub-objects, this equates to a merge operation;
+ for repeated sub-objects this adds a new instance to the set; for simple
+ values the new value supercedes the old value.
+
+ Note that appending a value does not remove the old value from
+ the stream; avoid repeatedly appending values for the same field.
+ The model to use for configuration.
+ The data-format to use when encoding the value.
+ The extensible object to append the value to.
+ The field identifier; the tag should not be defined as a known data-field for the instance.
+ The value to append.
+
+
+
+ This class acts as an internal wrapper allowing us to do a dynamic
+ methodinfo invoke; an't put into Serializer as don't want on public
+ API; can't put into Serializer<T> since we need to invoke
+ accross classes, which isn't allowed in Silverlight)
+
+
+
+
+ All this does is call GetExtendedValuesTyped with the correct type for "instance";
+ this ensures that we don't get issues with subclasses declaring conflicting types -
+ the caller must respect the fields defined for the type they pass in.
+
+
+
+
+ All this does is call GetExtendedValuesTyped with the correct type for "instance";
+ this ensures that we don't get issues with subclasses declaring conflicting types -
+ the caller must respect the fields defined for the type they pass in.
+
+
+
+
+ Not all frameworks are created equal (fx1.1 vs fx2.0,
+ micro-framework, compact-framework,
+ silverlight, etc). This class simply wraps up a few things that would
+ otherwise make the real code unnecessarily messy, providing fallback
+ implementations if necessary.
+
+
+
+
+ Intended to be a direct map to regular TypeCode, but:
+ - with missing types
+ - existing on WinRT
+
+
+
+
+ Specifies the method used to infer field tags for members of the type
+ under consideration. Tags are deduced using the invariant alphabetic
+ sequence of the members' names; this makes implicit field tags very brittle,
+ and susceptible to changes such as field names (normally an isolated
+ change).
+
+
+
+
+ No members are serialized implicitly; all members require a suitable
+ attribute such as [ProtoMember]. This is the recmomended mode for
+ most scenarios.
+
+
+
+
+ Public properties and fields are eligible for implicit serialization;
+ this treats the public API as a contract. Ordering beings from ImplicitFirstTag.
+
+
+
+
+ Public and non-public fields are eligible for implicit serialization;
+ this acts as a state/implementation serializer. Ordering beings from ImplicitFirstTag.
+
+
+
+
+ Represents the set of serialization callbacks to be used when serializing/deserializing a type.
+
+
+
+ Called before serializing an instance
+
+
+ Called before deserializing an instance
+
+
+ Called after serializing an instance
+
+
+ Called after deserializing an instance
+
+
+
+ True if any callback is set, else False
+
+
+
+
+ Represents a type at runtime for use with protobuf, allowing the field mappings (etc) to be defined
+
+
+
+
+ Get the name of the type being represented
+
+
+
+
+ Adds a known sub-type to the inheritance model
+
+
+
+
+ Adds a known sub-type to the inheritance model
+
+
+
+
+ Assigns the callbacks to use during serialiation/deserialization.
+
+ The method (or null) called before serialization begins.
+ The method (or null) called when serialization is complete.
+ The method (or null) called before deserialization begins (or when a new instance is created during deserialization).
+ The method (or null) called when deserialization is complete.
+ The set of callbacks.
+
+
+
+ Assigns the callbacks to use during serialiation/deserialization.
+
+ The name of the method (or null) called before serialization begins.
+ The name of the method (or null) called when serialization is complete.
+ The name of the method (or null) called before deserialization begins (or when a new instance is created during deserialization).
+ The name of the method (or null) called when deserialization is complete.
+ The set of callbacks.
+
+
+
+ Designate a factory-method to use to create instances of this type
+
+
+
+
+ Designate a factory-method to use to create instances of this type
+
+
+
+
+ Throws an exception if the type has been made immutable
+
+
+
+
+ Adds a member (by name) to the MetaType
+
+
+
+
+ Adds a member (by name) to the MetaType, returning the ValueMember rather than the fluent API.
+ This is otherwise identical to Add.
+
+
+
+
+ Adds a member (by name) to the MetaType
+
+
+
+
+ Performs serialization of this type via a surrogate; all
+ other serialization options are ignored and handled
+ by the surrogate's configuration.
+
+
+
+
+ Adds a set of members (by name) to the MetaType
+
+
+
+
+ Adds a member (by name) to the MetaType
+
+
+
+
+ Adds a member (by name) to the MetaType, including an itemType and defaultType for representing lists
+
+
+
+
+ Adds a member (by name) to the MetaType, including an itemType and defaultType for representing lists, returning the ValueMember rather than the fluent API.
+ This is otherwise identical to Add.
+
+
+
+
+ Returns the ValueMember instances associated with this type
+
+
+
+
+ Returns the SubType instances associated with this type
+
+
+
+
+ Gets the base-type for this type
+
+
+
+
+ When used to compile a model, should public serialization/deserialzation methods
+ be included for this type?
+
+
+
+
+ Should this type be treated as a reference by default?
+
+
+
+
+ Indicates whether the current type has defined callbacks
+
+
+
+
+ Indicates whether the current type has defined subtypes
+
+
+
+
+ Returns the set of callbacks defined for this type
+
+
+
+
+ Gets or sets the name of this contract.
+
+
+
+
+ The runtime type that the meta-type represents
+
+
+
+
+ Gets or sets whether the type should use a parameterless constructor (the default),
+ or whether the type should skip the constructor completely. This option is not supported
+ on compact-framework.
+
+
+
+
+ The concrete type to create when a new instance of this type is needed; this may be useful when dealing
+ with dynamic proxies, or with interface-based APIs
+
+
+
+
+ Returns the ValueMember that matchs a given field number, or null if not found
+
+
+
+
+ Returns the ValueMember that matchs a given member (property/field), or null if not found
+
+
+
+
+ Gets or sets a value indicating that an enum should be treated directly as an int/short/etc, rather
+ than enforcing .proto enum rules. This is useful *in particul* for [Flags] enums.
+
+
+
+
+ Gets or sets a value indicating that this type should NOT be treated as a list, even if it has
+ familiar list-like characteristics (enumerable, add, etc)
+
+
+
+
+ Provides protobuf serialization support for a number of types that can be defined at runtime
+
+
+
+
+ Provides protobuf serialization support for a number of types
+
+
+
+
+ Resolve a System.Type to the compiler-specific type
+
+
+
+
+ Resolve a System.Type to the compiler-specific type
+
+
+
+
+ This is the more "complete" version of Serialize, which handles single instances of mapped types.
+ The value is written as a complete field, including field-header and (for sub-objects) a
+ length-prefix
+ In addition to that, this provides support for:
+ - basic values; individual int / string / Guid / etc
+ - IEnumerable sequences of any type handled by TrySerializeAuxiliaryType
+
+
+
+
+
+ Writes a protocol-buffer representation of the given instance to the supplied stream.
+
+ The existing instance to be serialized (cannot be null).
+ The destination stream to write to.
+
+
+
+ Writes a protocol-buffer representation of the given instance to the supplied stream.
+
+ The existing instance to be serialized (cannot be null).
+ The destination stream to write to.
+ Additional information about this serialization operation.
+
+
+
+ Writes a protocol-buffer representation of the given instance to the supplied writer.
+
+ The existing instance to be serialized (cannot be null).
+ The destination writer to write to.
+
+
+
+ Applies a protocol-buffer stream to an existing instance (or null), using length-prefixed
+ data - useful with network IO.
+
+ The type being merged.
+ The existing instance to be modified (can be null).
+ The binary stream to apply to the instance (cannot be null).
+ How to encode the length prefix.
+ The tag used as a prefix to each record (only used with base-128 style prefixes).
+ The updated instance; this may be different to the instance argument if
+ either the original instance was null, or the stream defines a known sub-type of the
+ original instance.
+
+
+
+ Applies a protocol-buffer stream to an existing instance (or null), using length-prefixed
+ data - useful with network IO.
+
+ The type being merged.
+ The existing instance to be modified (can be null).
+ The binary stream to apply to the instance (cannot be null).
+ How to encode the length prefix.
+ The tag used as a prefix to each record (only used with base-128 style prefixes).
+ Used to resolve types on a per-field basis.
+ The updated instance; this may be different to the instance argument if
+ either the original instance was null, or the stream defines a known sub-type of the
+ original instance.
+
+
+
+ Applies a protocol-buffer stream to an existing instance (or null), using length-prefixed
+ data - useful with network IO.
+
+ The type being merged.
+ The existing instance to be modified (can be null).
+ The binary stream to apply to the instance (cannot be null).
+ How to encode the length prefix.
+ The tag used as a prefix to each record (only used with base-128 style prefixes).
+ Used to resolve types on a per-field basis.
+ Returns the number of bytes consumed by this operation (includes length-prefix overheads and any skipped data).
+ The updated instance; this may be different to the instance argument if
+ either the original instance was null, or the stream defines a known sub-type of the
+ original instance.
+
+
+
+ Reads a sequence of consecutive length-prefixed items from a stream, using
+ either base-128 or fixed-length prefixes. Base-128 prefixes with a tag
+ are directly comparable to serializing multiple items in succession
+ (use the tag to emulate the implicit behavior
+ when serializing a list/array). When a tag is
+ specified, any records with different tags are silently omitted. The
+ tag is ignored. The tag is ignores for fixed-length prefixes.
+
+ The binary stream containing the serialized records.
+ The prefix style used in the data.
+ The tag of records to return (if non-positive, then no tag is
+ expected and all records are returned).
+ On a field-by-field basis, the type of object to deserialize (can be null if "type" is specified).
+ The type of object to deserialize (can be null if "resolver" is specified).
+ The sequence of deserialized objects.
+
+
+
+ Reads a sequence of consecutive length-prefixed items from a stream, using
+ either base-128 or fixed-length prefixes. Base-128 prefixes with a tag
+ are directly comparable to serializing multiple items in succession
+ (use the tag to emulate the implicit behavior
+ when serializing a list/array). When a tag is
+ specified, any records with different tags are silently omitted. The
+ tag is ignored. The tag is ignores for fixed-length prefixes.
+
+ The binary stream containing the serialized records.
+ The prefix style used in the data.
+ The tag of records to return (if non-positive, then no tag is
+ expected and all records are returned).
+ On a field-by-field basis, the type of object to deserialize (can be null if "type" is specified).
+ The type of object to deserialize (can be null if "resolver" is specified).
+ The sequence of deserialized objects.
+ Additional information about this serialization operation.
+
+
+
+ Reads a sequence of consecutive length-prefixed items from a stream, using
+ either base-128 or fixed-length prefixes. Base-128 prefixes with a tag
+ are directly comparable to serializing multiple items in succession
+ (use the tag to emulate the implicit behavior
+ when serializing a list/array). When a tag is
+ specified, any records with different tags are silently omitted. The
+ tag is ignored. The tag is ignores for fixed-length prefixes.
+
+ The type of object to deserialize.
+ The binary stream containing the serialized records.
+ The prefix style used in the data.
+ The tag of records to return (if non-positive, then no tag is
+ expected and all records are returned).
+ The sequence of deserialized objects.
+
+
+
+ Reads a sequence of consecutive length-prefixed items from a stream, using
+ either base-128 or fixed-length prefixes. Base-128 prefixes with a tag
+ are directly comparable to serializing multiple items in succession
+ (use the tag to emulate the implicit behavior
+ when serializing a list/array). When a tag is
+ specified, any records with different tags are silently omitted. The
+ tag is ignored. The tag is ignores for fixed-length prefixes.
+
+ The type of object to deserialize.
+ The binary stream containing the serialized records.
+ The prefix style used in the data.
+ The tag of records to return (if non-positive, then no tag is
+ expected and all records are returned).
+ The sequence of deserialized objects.
+ Additional information about this serialization operation.
+
+
+
+ Writes a protocol-buffer representation of the given instance to the supplied stream,
+ with a length-prefix. This is useful for socket programming,
+ as DeserializeWithLengthPrefix can be used to read the single object back
+ from an ongoing stream.
+
+ The type being serialized.
+ The existing instance to be serialized (cannot be null).
+ How to encode the length prefix.
+ The destination stream to write to.
+ The tag used as a prefix to each record (only used with base-128 style prefixes).
+
+
+
+ Writes a protocol-buffer representation of the given instance to the supplied stream,
+ with a length-prefix. This is useful for socket programming,
+ as DeserializeWithLengthPrefix can be used to read the single object back
+ from an ongoing stream.
+
+ The type being serialized.
+ The existing instance to be serialized (cannot be null).
+ How to encode the length prefix.
+ The destination stream to write to.
+ The tag used as a prefix to each record (only used with base-128 style prefixes).
+ Additional information about this serialization operation.
+
+
+
+ Applies a protocol-buffer stream to an existing instance (which may be null).
+
+ The type (including inheritance) to consider.
+ The existing instance to be modified (can be null).
+ The binary stream to apply to the instance (cannot be null).
+ The updated instance; this may be different to the instance argument if
+ either the original instance was null, or the stream defines a known sub-type of the
+ original instance.
+
+
+
+ Applies a protocol-buffer stream to an existing instance (which may be null).
+
+ The type (including inheritance) to consider.
+ The existing instance to be modified (can be null).
+ The binary stream to apply to the instance (cannot be null).
+ The updated instance; this may be different to the instance argument if
+ either the original instance was null, or the stream defines a known sub-type of the
+ original instance.
+ Additional information about this serialization operation.
+
+
+
+ Applies a protocol-buffer stream to an existing instance (which may be null).
+
+ The type (including inheritance) to consider.
+ The existing instance to be modified (can be null).
+ The binary stream to apply to the instance (cannot be null).
+ The number of bytes to consume.
+ The updated instance; this may be different to the instance argument if
+ either the original instance was null, or the stream defines a known sub-type of the
+ original instance.
+
+
+
+ Applies a protocol-buffer stream to an existing instance (which may be null).
+
+ The type (including inheritance) to consider.
+ The existing instance to be modified (can be null).
+ The binary stream to apply to the instance (cannot be null).
+ The number of bytes to consume (or -1 to read to the end of the stream).
+ The updated instance; this may be different to the instance argument if
+ either the original instance was null, or the stream defines a known sub-type of the
+ original instance.
+ Additional information about this serialization operation.
+
+
+
+ Applies a protocol-buffer reader to an existing instance (which may be null).
+
+ The type (including inheritance) to consider.
+ The existing instance to be modified (can be null).
+ The reader to apply to the instance (cannot be null).
+ The updated instance; this may be different to the instance argument if
+ either the original instance was null, or the stream defines a known sub-type of the
+ original instance.
+
+
+
+ This is the more "complete" version of Deserialize, which handles single instances of mapped types.
+ The value is read as a complete field, including field-header and (for sub-objects) a
+ length-prefix..kmc
+
+ In addition to that, this provides support for:
+ - basic values; individual int / string / Guid / etc
+ - IList sets of any type handled by TryDeserializeAuxiliaryType
+
+
+
+
+ Creates a new runtime model, to which the caller
+ can add support for a range of types. A model
+ can be used "as is", or can be compiled for
+ optimal performance.
+
+
+
+
+ Applies common proxy scenarios, resolving the actual type to consider
+
+
+
+
+ Indicates whether the supplied type is explicitly modelled by the model
+
+
+
+
+ Provides the key that represents a given type in the current model.
+ The type is also normalized for proxies at the same time.
+
+
+
+
+ Provides the key that represents a given type in the current model.
+
+
+
+
+ Writes a protocol-buffer representation of the given instance to the supplied stream.
+
+ Represents the type (including inheritance) to consider.
+ The existing instance to be serialized (cannot be null).
+ The destination stream to write to.
+
+
+
+ Applies a protocol-buffer stream to an existing instance (which may be null).
+
+ Represents the type (including inheritance) to consider.
+ The existing instance to be modified (can be null).
+ The binary stream to apply to the instance (cannot be null).
+ The updated instance; this may be different to the instance argument if
+ either the original instance was null, or the stream defines a known sub-type of the
+ original instance.
+
+
+
+ Create a deep clone of the supplied instance; any sub-items are also cloned.
+
+
+
+
+ Indicates that while an inheritance tree exists, the exact type encountered was not
+ specified in that hierarchy and cannot be processed.
+
+
+
+
+ Indicates that the given type was not expected, and cannot be processed.
+
+
+
+
+ Indicates that the given type cannot be constructed; it may still be possible to
+ deserialize into existing instances.
+
+
+
+
+ Returns true if the type supplied is either a recognised contract type,
+ or a *list* of a recognised contract type.
+
+ Note that primitives always return false, even though the engine
+ will, if forced, try to serialize such
+ True if this type is recognised as a serializable entity, else false
+
+
+
+ Returns true if the type supplied is a basic type with inbuilt handling,
+ a recognised contract type, or a *list* of a basic / contract type.
+
+
+
+
+ Returns true if the type supplied is a basic type with inbuilt handling,
+ or a *list* of a basic type with inbuilt handling
+
+
+
+
+ Suggest a .proto definition for the given type
+
+ The type to generate a .proto definition for, or null to generate a .proto that represents the entire model
+ The .proto definition as a string
+
+
+
+ Used to provide custom services for writing and parsing type names when using dynamic types. Both parsing and formatting
+ are provided on a single API as it is essential that both are mapped identically at all times.
+
+
+
+
+ Indicates the type of callback to be used
+
+
+
+
+ Invoked before an object is serialized
+
+
+
+
+ Invoked after an object is serialized
+
+
+
+
+ Invoked before an object is deserialized (or when a new instance is created)
+
+
+
+
+ Invoked after an object is deserialized
+
+
+
+
+ Returns a sequence of the Type instances that can be
+ processed by this model.
+
+
+
+
+ Suggest a .proto definition for the given type
+
+ The type to generate a .proto definition for, or null to generate a .proto that represents the entire model
+ The .proto definition as a string
+
+
+
+ Adds support for an additional type in this model, optionally
+ appplying inbuilt patterns. If the type is already known to the
+ model, the existing type is returned **without** applying
+ any additional behaviour.
+
+ Inbuilt patterns include:
+ [ProtoContract]/[ProtoMember(n)]
+ [DataContract]/[DataMember(Order=n)]
+ [XmlType]/[XmlElement(Order=n)]
+ [On{Des|S}erializ{ing|ed}]
+ ShouldSerialize*/*Specified
+
+ The type to be supported
+ Whether to apply the inbuilt configuration patterns (via attributes etc), or
+ just add the type with no additional configuration (the type must then be manually configured).
+ The MetaType representing this type, allowing
+ further configuration.
+
+
+
+ Verifies that the model is still open to changes; if not, an exception is thrown
+
+
+
+
+ Prevents further changes to this model
+
+
+
+
+ Provides the key that represents a given type in the current model.
+
+
+
+
+ Writes a protocol-buffer representation of the given instance to the supplied stream.
+
+ Represents the type (including inheritance) to consider.
+ The existing instance to be serialized (cannot be null).
+ The destination stream to write to.
+
+
+
+ Applies a protocol-buffer stream to an existing instance (which may be null).
+
+ Represents the type (including inheritance) to consider.
+ The existing instance to be modified (can be null).
+ The binary stream to apply to the instance (cannot be null).
+ The updated instance; this may be different to the instance argument if
+ either the original instance was null, or the stream defines a known sub-type of the
+ original instance.
+
+
+
+ Designate a factory-method to use to create instances of any type; note that this only affect types seen by the serializer *after* setting the factory.
+
+
+
+
+ Global default that
+ enables/disables automatic tag generation based on the existing name / order
+ of the defined members. See
+ for usage and important warning / explanation.
+ You must set the global default before attempting to serialize/deserialize any
+ impacted type.
+
+
+
+
+ Global default that determines whether types are considered serializable
+ if they have [DataContract] / [XmlType]. With this enabled, ONLY
+ types marked as [ProtoContract] are added automatically.
+
+
+
+
+ Global switch that enables or disables the implicit
+ handling of "zero defaults"; meanning: if no other default is specified,
+ it assumes bools always default to false, integers to zero, etc.
+
+ If this is disabled, no such assumptions are made and only *explicit*
+ default values are processed. This is enabled by default to
+ preserve similar logic to v1.
+
+
+
+
+ Global switch that determines whether types with a .ToString() and a Parse(string)
+ should be serialized as strings.
+
+
+
+
+ The default model, used to support ProtoBuf.Serializer
+
+
+
+
+ Obtains the MetaType associated with a given Type for the current model,
+ allowing additional configuration.
+
+
+
+
+ Should support for unexpected types be added automatically?
+ If false, an exception is thrown when unexpected types
+ are encountered.
+
+
+
+
+ The amount of time to wait if there are concurrent metadata access operations
+
+
+
+
+ If a lock-contention is detected, this event signals the *owner* of the lock responsible for the blockage, indicating
+ what caused the problem; this is only raised if the lock-owning code successfully completes.
+
+
+
+
+ Contains the stack-trace of the owning code when a lock-contention scenario is detected
+
+
+
+
+ The stack-trace of the code that owned the lock when a lock-contention scenario occurred
+
+
+
+
+ Event-type that is raised when a lock-contention scenario is detected
+
+
+
+
+ Represents an inherited type in a type hierarchy.
+
+
+
+
+ Creates a new SubType instance.
+
+ The field-number that is used to encapsulate the data (as a nested
+ message) for the derived dype.
+ The sub-type to be considered.
+ Specific encoding style to use; in particular, Grouped can be used to avoid buffering, but is not the default.
+
+
+
+ The field-number that is used to encapsulate the data (as a nested
+ message) for the derived dype.
+
+
+
+
+ The sub-type to be considered.
+
+
+
+
+ Event arguments needed to perform type-formatting functions; this could be resolving a Type to a string suitable for serialization, or could
+ be requesting a Type from a string. If no changes are made, a default implementation will be used (from the assembly-qualified names).
+
+
+
+
+ The type involved in this map; if this is initially null, a Type is expected to be provided for the string in FormattedName.
+
+
+
+
+ The formatted-name involved in this map; if this is initially null, a formatted-name is expected from the type in Type.
+
+
+
+
+ Delegate type used to perform type-formatting functions; the sender originates as the type-model.
+
+
+
+
+ Represents a member (property/field) that is mapped to a protobuf field
+
+
+
+
+ Creates a new ValueMember instance
+
+
+
+
+ Creates a new ValueMember instance
+
+
+
+
+ Specifies methods for working with optional data members.
+
+ Provides a method (null for none) to query whether this member should
+ be serialized; it must be of the form "bool {Method}()". The member is only serialized if the
+ method returns true.
+ Provides a method (null for none) to indicate that a member was
+ deserialized; it must be of the form "void {Method}(bool)", and will be called with "true"
+ when data is found.
+
+
+
+ The number that identifies this member in a protobuf stream
+
+
+
+
+ Gets the member (field/property) which this member relates to.
+
+
+
+
+ Within a list / array / etc, the type of object for each item in the list (especially useful with ArrayList)
+
+
+
+
+ The underlying type of the member
+
+
+
+
+ For abstract types (IList etc), the type of concrete object to create (if required)
+
+
+
+
+ The type the defines the member
+
+
+
+
+ The default value of the item (members with this value will not be serialized)
+
+
+
+
+ Specifies the rules used to process the field; this is used to determine the most appropriate
+ wite-type, but also to describe subtypes within that wire-type (such as SignedVariant)
+
+
+
+
+ Indicates whether this field should follow strict encoding rules; this means (for example) that if a "fixed32"
+ is encountered when "variant" is defined, then it will fail (throw an exception) when parsing. Note that
+ when serializing the defined type is always used.
+
+
+
+
+ Indicates whether this field should use packed encoding (which can save lots of space for repeated primitive values).
+ This option only applies to list/array data of primitive types (int, double, etc).
+
+
+
+
+ Indicates whether this field should *repace* existing values (the default is false, meaning *append*).
+ This option only applies to list/array data.
+
+
+
+
+ Indicates whether this field is mandatory.
+
+
+
+
+ Enables full object-tracking/full-graph support.
+
+
+
+
+ Embeds the type information into the stream, allowing usage with types not known in advance.
+
+
+
+
+ Gets the logical name for this member in the schema (this is not critical for binary serialization, but may be used
+ when inferring a schema).
+
+
+
+
+ Should lists have extended support for null values? Note this makes the serialization less efficient.
+
+
+
+
+ Specifies the type of prefix that should be applied to messages.
+
+
+
+
+ No length prefix is applied to the data; the data is terminated only be the end of the stream.
+
+
+
+
+ A base-128 length prefix is applied to the data (efficient for short messages).
+
+
+
+
+ A fixed-length (little-endian) length prefix is applied to the data (useful for compatibility).
+
+
+
+
+ A fixed-length (big-endian) length prefix is applied to the data (useful for compatibility).
+
+
+
+
+ Indicates that a type is defined for protocol-buffer serialization.
+
+
+
+
+ Gets or sets the defined name of the type.
+
+
+
+
+ Gets or sets the fist offset to use with implicit field tags;
+ only uesd if ImplicitFields is set.
+
+
+
+
+ If specified, alternative contract markers (such as markers for XmlSerailizer or DataContractSerializer) are ignored.
+
+
+
+
+ If specified, do NOT treat this type as a list, even if it looks like one.
+
+
+
+
+ Gets or sets the mechanism used to automatically infer field tags
+ for members. This option should be used in advanced scenarios only.
+ Please review the important notes against the ImplicitFields enumeration.
+
+
+
+
+ Enables/disables automatic tag generation based on the existing name / order
+ of the defined members. This option is not used for members marked
+ with ProtoMemberAttribute, as intended to provide compatibility with
+ WCF serialization. WARNING: when adding new fields you must take
+ care to increase the Order for new elements, otherwise data corruption
+ may occur.
+
+ If not explicitly specified, the default is assumed from Serializer.GlobalOptions.InferTagFromName.
+
+
+
+ Has a InferTagFromName value been explicitly set? if not, the default from the type-model is assumed.
+
+
+
+
+ Specifies an offset to apply to [DataMember(Order=...)] markers;
+ this is useful when working with mex-generated classes that have
+ a different origin (usually 1 vs 0) than the original data-contract.
+
+ This value is added to the Order of each member.
+
+
+
+
+ If true, the constructor for the type is bypassed during deserialization, meaning any field initializers
+ or other initialization code is skipped.
+
+
+
+
+ Should this type be treated as a reference by default? Please also see the implications of this,
+ as recorded on ProtoMemberAttribute.AsReference
+
+
+
+
+ Applies only to enums (not to DTO classes themselves); gets or sets a value indicating that an enum should be treated directly as an int/short/etc, rather
+ than enforcing .proto enum rules. This is useful *in particul* for [Flags] enums.
+
+
+
+
+ Has a EnumPassthru value been explicitly set?
+
+
+
+
+ Used to define protocol-buffer specific behavior for
+ enumerated values.
+
+
+
+
+ Indicates whether this instance has a customised value mapping
+
+ true if a specific value is set
+
+
+
+ Gets or sets the specific value to use for this enum during serialization.
+
+
+
+
+ Gets or sets the defined name of the enum, as used in .proto
+ (this name is not used during serialization).
+
+
+
+
+ Indicates an error during serialization/deserialization of a proto stream.
+
+
+
+ Creates a new ProtoException instance.
+
+
+ Creates a new ProtoException instance.
+
+
+ Creates a new ProtoException instance.
+
+
+
+ Indicates that a member should be excluded from serialization; this
+ is only normally used when using implict fields.
+
+
+
+
+ Indicates that a member should be excluded from serialization; this
+ is only normally used when using implict fields. This allows
+ ProtoIgnoreAttribute usage
+ even for partial classes where the individual members are not
+ under direct control.
+
+
+
+
+ Creates a new ProtoPartialIgnoreAttribute instance.
+
+ Specifies the member to be ignored.
+
+
+
+ The name of the member to be ignored.
+
+
+
+
+ Indicates the known-types to support for an individual
+ message. This serializes each level in the hierarchy as
+ a nested message to retain wire-compatibility with
+ other protocol-buffer implementations.
+
+
+
+
+ Creates a new instance of the ProtoIncludeAttribute.
+
+ The unique index (within the type) that will identify this data.
+ The additional type to serialize/deserialize.
+
+
+
+ Creates a new instance of the ProtoIncludeAttribute.
+
+ The unique index (within the type) that will identify this data.
+ The additional type to serialize/deserialize.
+
+
+
+ Gets the unique index (within the type) that will identify this data.
+
+
+
+
+ Gets the additional type to serialize/deserialize.
+
+
+
+
+ Gets the additional type to serialize/deserialize.
+
+
+
+
+ Specifies whether the inherited sype's sub-message should be
+ written with a length-prefix (default), or with group markers.
+
+
+
+
+ Declares a member to be used in protocol-buffer serialization, using
+ the given Tag. A DataFormat may be used to optimise the serialization
+ format (for instance, using zigzag encoding for negative numbers, or
+ fixed-length encoding for large values.
+
+
+
+
+ Compare with another ProtoMemberAttribute for sorting purposes
+
+
+
+
+ Compare with another ProtoMemberAttribute for sorting purposes
+
+
+
+
+ Creates a new ProtoMemberAttribute instance.
+
+ Specifies the unique tag used to identify this member within the type.
+
+
+
+ Gets or sets the original name defined in the .proto; not used
+ during serialization.
+
+
+
+
+ Gets or sets the data-format to be used when encoding this value.
+
+
+
+
+ Gets the unique tag used to identify this member within the type.
+
+
+
+
+ Gets or sets a value indicating whether this member is mandatory.
+
+
+
+
+ Gets a value indicating whether this member is packed.
+ This option only applies to list/array data of primitive types (int, double, etc).
+
+
+
+
+ Indicates whether this field should *repace* existing values (the default is false, meaning *append*).
+ This option only applies to list/array data.
+
+
+
+
+ Enables full object-tracking/full-graph support.
+
+
+
+
+ Embeds the type information into the stream, allowing usage with types not known in advance.
+
+
+
+
+ Gets or sets a value indicating whether this member is packed (lists/arrays).
+
+
+
+
+ Additional (optional) settings that control serialization of members
+
+
+
+
+ Default; no additional options
+
+
+
+
+ Indicates that repeated elements should use packed (length-prefixed) encoding
+
+
+
+
+ Indicates that the given item is required
+
+
+
+
+ Enables full object-tracking/full-graph support
+
+
+
+
+ Embeds the type information into the stream, allowing usage with types not known in advance
+
+
+
+
+ Indicates whether this field should *repace* existing values (the default is false, meaning *append*).
+ This option only applies to list/array data.
+
+
+
+
+ Determines whether the types AsReferenceDefault value is used, or whether this member's AsReference should be used
+
+
+
+
+ Declares a member to be used in protocol-buffer serialization, using
+ the given Tag and MemberName. This allows ProtoMemberAttribute usage
+ even for partial classes where the individual members are not
+ under direct control.
+ A DataFormat may be used to optimise the serialization
+ format (for instance, using zigzag encoding for negative numbers, or
+ fixed-length encoding for large values.
+
+
+
+
+ Creates a new ProtoMemberAttribute instance.
+
+ Specifies the unique tag used to identify this member within the type.
+ Specifies the member to be serialized.
+
+
+
+ The name of the member to be serialized.
+
+
+
+
+ A stateful reader, used to read a protobuf stream. Typical usage would be (sequentially) to call
+ ReadFieldHeader and (after matching the field) an appropriate Read* method.
+
+
+
+
+ Creates a new reader against a stream
+
+ The source stream
+ The model to use for serialization; this can be null, but this will impair the ability to deserialize sub-objects
+ Additional context about this serialization operation
+
+
+
+ Creates a new reader against a stream
+
+ The source stream
+ The model to use for serialization; this can be null, but this will impair the ability to deserialize sub-objects
+ Additional context about this serialization operation
+ The number of bytes to read, or -1 to read until the end of the stream
+
+
+
+ Releases resources used by the reader, but importantly does not Dispose the
+ underlying stream; in many typical use-cases the stream is used for different
+ processes, so it is assumed that the consumer will Dispose their stream separately.
+
+
+
+
+ Reads an unsigned 32-bit integer from the stream; supported wire-types: Variant, Fixed32, Fixed64
+
+
+
+
+ Reads a signed 16-bit integer from the stream: Variant, Fixed32, Fixed64, SignedVariant
+
+
+
+
+ Reads an unsigned 16-bit integer from the stream; supported wire-types: Variant, Fixed32, Fixed64
+
+
+
+
+ Reads an unsigned 8-bit integer from the stream; supported wire-types: Variant, Fixed32, Fixed64
+
+
+
+
+ Reads a signed 8-bit integer from the stream; supported wire-types: Variant, Fixed32, Fixed64, SignedVariant
+
+
+
+
+ Reads a signed 32-bit integer from the stream; supported wire-types: Variant, Fixed32, Fixed64, SignedVariant
+
+
+
+
+ Reads a signed 64-bit integer from the stream; supported wire-types: Variant, Fixed32, Fixed64, SignedVariant
+
+
+
+
+ Reads a string from the stream (using UTF8); supported wire-types: String
+
+
+
+
+ Throws an exception indication that the given value cannot be mapped to an enum.
+
+
+
+
+ Reads a double-precision number from the stream; supported wire-types: Fixed32, Fixed64
+
+
+
+
+ Reads (merges) a sub-message from the stream, internally calling StartSubItem and EndSubItem, and (in between)
+ parsing the message in accordance with the model associated with the reader
+
+
+
+
+ Makes the end of consuming a nested message in the stream; the stream must be either at the correct EndGroup
+ marker, or all fields of the sub-message must have been consumed (in either case, this means ReadFieldHeader
+ should return zero)
+
+
+
+
+ Begins consuming a nested message in the stream; supported wire-types: StartGroup, String
+
+ The token returned must be help and used when callining EndSubItem
+
+
+
+ Reads a field header from the stream, setting the wire-type and retuning the field number. If no
+ more fields are available, then 0 is returned. This methods respects sub-messages.
+
+
+
+
+ Looks ahead to see whether the next field in the stream is what we expect
+ (typically; what we've just finished reading - for example ot read successive list items)
+
+
+
+
+ Compares the streams current wire-type to the hinted wire-type, updating the reader if necessary; for example,
+ a Variant may be updated to SignedVariant. If the hinted wire-type is unrelated then no change is made.
+
+
+
+
+ Verifies that the stream's current wire-type is as expected, or a specialized sub-type (for example,
+ SignedVariant) - in which case the current wire-type is updated. Otherwise an exception is thrown.
+
+
+
+
+ Discards the data for the current field.
+
+
+
+
+ Reads an unsigned 64-bit integer from the stream; supported wire-types: Variant, Fixed32, Fixed64
+
+
+
+
+ Reads a single-precision number from the stream; supported wire-types: Fixed32, Fixed64
+
+
+
+
+ Reads a boolean value from the stream; supported wire-types: Variant, Fixed32, Fixed64
+
+
+
+
+
+ Reads a byte-sequence from the stream, appending them to an existing byte-sequence (which can be null); supported wire-types: String
+
+
+
+
+ Reads the length-prefix of a message from a stream without buffering additional data, allowing a fixed-length
+ reader to be created.
+
+
+
+
+ Reads a little-endian encoded integer. An exception is thrown if the data is not all available.
+
+
+
+
+ Reads a big-endian encoded integer. An exception is thrown if the data is not all available.
+
+
+
+
+ Reads a varint encoded integer. An exception is thrown if the data is not all available.
+
+
+
+
+ Reads a string (of a given lenth, in bytes) directly from the source into a pre-existing buffer. An exception is thrown if the data is not all available.
+
+
+
+
+ Reads a given number of bytes directly from the source. An exception is thrown if the data is not all available.
+
+
+
+
+ Reads a string (of a given lenth, in bytes) directly from the source. An exception is thrown if the data is not all available.
+
+
+
+
+ Reads the length-prefix of a message from a stream without buffering additional data, allowing a fixed-length
+ reader to be created.
+
+
+
+ The number of bytes consumed; 0 if no data available
+
+
+
+ Copies the current field into the instance as extension data
+
+
+
+
+ Indicates whether the reader still has data remaining in the current sub-item,
+ additionally setting the wire-type for the next field if there is more data.
+ This is used when decoding packed data.
+
+
+
+
+ Utility method, not intended for public use; this helps maintain the root object is complex scenarios
+
+
+
+
+ Reads a Type from the stream, using the model's DynamicTypeFormatting if appropriate; supported wire-types: String
+
+
+
+
+ Merge two objects using the details from the current reader; this is used to change the type
+ of objects when an inheritance relationship is discovered later than usual during deserilazation.
+
+
+
+
+ Gets the number of the field being processed.
+
+
+
+
+ Indicates the underlying proto serialization format on the wire.
+
+
+
+
+ Gets / sets a flag indicating whether strings should be checked for repetition; if
+ true, any repeated UTF-8 byte sequence will result in the same String instance, rather
+ than a second instance of the same string. Enabled by default. Note that this uses
+ a custom interner - the system-wide string interner is not used.
+
+
+
+
+ Addition information about this deserialization operation.
+
+
+
+
+ Returns the position of the current reader (note that this is not necessarily the same as the position
+ in the underlying stream, if multiple readers are used on the same stream)
+
+
+
+
+ Get the TypeModel associated with this reader
+
+
+
+
+ Represents an output stream for writing protobuf data.
+
+ Why is the API backwards (static methods with writer arguments)?
+ See: http://marcgravell.blogspot.com/2010/03/last-will-be-first-and-first-will-be.html
+
+
+
+
+ Write an encapsulated sub-object, using the supplied unique key (reprasenting a type).
+
+ The object to write.
+ The key that uniquely identifies the type within the model.
+ The destination.
+
+
+
+ Write an encapsulated sub-object, using the supplied unique key (reprasenting a type) - but the
+ caller is asserting that this relationship is non-recursive; no recursion check will be
+ performed.
+
+ The object to write.
+ The key that uniquely identifies the type within the model.
+ The destination.
+
+
+
+ Writes a field-header, indicating the format of the next data we plan to write.
+
+
+
+
+ Writes a byte-array to the stream; supported wire-types: String
+
+
+
+
+ Writes a byte-array to the stream; supported wire-types: String
+
+
+
+
+ Indicates the start of a nested record.
+
+ The instance to write.
+ The destination.
+ A token representing the state of the stream; this token is given to EndSubItem.
+
+
+
+ Indicates the end of a nested record.
+
+ The token obtained from StartubItem.
+ The destination.
+
+
+
+ Creates a new writer against a stream
+
+ The destination stream
+ The model to use for serialization; this can be null, but this will impair the ability to serialize sub-objects
+ Additional context about this serialization operation
+
+
+
+ Flushes data to the underlying stream, and releases any resources. The underlying stream is *not* disposed
+ by this operation.
+
+
+
+
+ Writes any buffered data (if possible) to the underlying stream.
+
+ The writer to flush
+ It is not always possible to fully flush, since some sequences
+ may require values to be back-filled into the byte-stream.
+
+
+
+ Writes an unsigned 32-bit integer to the stream; supported wire-types: Variant, Fixed32, Fixed64
+
+
+
+
+ Writes a string to the stream; supported wire-types: String
+
+
+
+
+ Writes an unsigned 64-bit integer to the stream; supported wire-types: Variant, Fixed32, Fixed64
+
+
+
+
+ Writes a signed 64-bit integer to the stream; supported wire-types: Variant, Fixed32, Fixed64, SignedVariant
+
+
+
+
+ Writes an unsigned 16-bit integer to the stream; supported wire-types: Variant, Fixed32, Fixed64
+
+
+
+
+ Writes a signed 16-bit integer to the stream; supported wire-types: Variant, Fixed32, Fixed64, SignedVariant
+
+
+
+
+ Writes an unsigned 16-bit integer to the stream; supported wire-types: Variant, Fixed32, Fixed64
+
+
+
+
+ Writes an unsigned 8-bit integer to the stream; supported wire-types: Variant, Fixed32, Fixed64
+
+
+
+
+ Writes a signed 8-bit integer to the stream; supported wire-types: Variant, Fixed32, Fixed64, SignedVariant
+
+
+
+
+ Writes a signed 32-bit integer to the stream; supported wire-types: Variant, Fixed32, Fixed64, SignedVariant
+
+
+
+
+ Writes a double-precision number to the stream; supported wire-types: Fixed32, Fixed64
+
+
+
+
+ Writes a single-precision number to the stream; supported wire-types: Fixed32, Fixed64
+
+
+
+
+ Throws an exception indicating that the given enum cannot be mapped to a serialized value.
+
+
+
+
+ Writes a boolean to the stream; supported wire-types: Variant, Fixed32, Fixed64
+
+
+
+
+ Copies any extension data stored for the instance to the underlying stream
+
+
+
+
+ Used for packed encoding; indicates that the next field should be skipped rather than
+ a field header written. Note that the field number must match, else an exception is thrown
+ when the attempt is made to write the (incorrect) field. The wire-type is taken from the
+ subsequent call to WriteFieldHeader. Only primitive types can be packed.
+
+
+
+
+ Specifies a known root object to use during reference-tracked serialization
+
+
+
+
+ Writes a Type to the stream, using the model's DynamicTypeFormatting if appropriate; supported wire-types: String
+
+
+
+
+ Addition information about this serialization operation.
+
+
+
+
+ Get the TypeModel associated with this writer
+
+
+
+
+ Additional information about a serialization operation
+
+
+
+
+ Gets or sets a user-defined object containing additional information about this serialization/deserialization operation.
+
+
+
+
+ A default SerializationContext, with minimal information.
+
+
+
+
+ Provides protocol-buffer serialization capability for concrete, attributed types. This
+ is a *default* model, but custom serializer models are also supported.
+
+
+ Protocol-buffer serialization is a compact binary format, designed to take
+ advantage of sparse data and knowledge of specific data types; it is also
+ extensible, allowing a type to be deserialized / merged even if some data is
+ not recognised.
+
+
+
+
+ The field number that is used as a default when serializing/deserializing a list of objects.
+ The data is treated as repeated message with field number 1.
+
+
+
+
+ Suggest a .proto definition for the given type
+
+ The type to generate a .proto definition for
+ The .proto definition as a string
+
+
+
+ Create a deep clone of the supplied instance; any sub-items are also cloned.
+
+
+
+
+ Applies a protocol-buffer stream to an existing instance.
+
+ The type being merged.
+ The existing instance to be modified (can be null).
+ The binary stream to apply to the instance (cannot be null).
+ The updated instance; this may be different to the instance argument if
+ either the original instance was null, or the stream defines a known sub-type of the
+ original instance.
+
+
+
+ Creates a new instance from a protocol-buffer stream
+
+ The type to be created.
+ The binary stream to apply to the new instance (cannot be null).
+ A new, initialized instance.
+
+
+
+ Writes a protocol-buffer representation of the given instance to the supplied stream.
+
+ The existing instance to be serialized (cannot be null).
+ The destination stream to write to.
+
+
+
+ Serializes a given instance and deserializes it as a different type;
+ this can be used to translate between wire-compatible objects (where
+ two .NET types represent the same data), or to promote/demote a type
+ through an inheritance hierarchy.
+
+ No assumption of compatibility is made between the types.
+ The type of the object being copied.
+ The type of the new object to be created.
+ The existing instance to use as a template.
+ A new instane of type TNewType, with the data from TOldType.
+
+
+
+ Precompiles the serializer for a given type.
+
+
+
+
+ Reads a sequence of consecutive length-prefixed items from a stream, using
+ either base-128 or fixed-length prefixes. Base-128 prefixes with a tag
+ are directly comparable to serializing multiple items in succession
+ (use the tag to emulate the implicit behavior
+ when serializing a list/array). When a tag is
+ specified, any records with different tags are silently omitted. The
+ tag is ignored. The tag is ignores for fixed-length prefixes.
+
+ The type of object to deserialize.
+ The binary stream containing the serialized records.
+ The prefix style used in the data.
+ The tag of records to return (if non-positive, then no tag is
+ expected and all records are returned).
+ The sequence of deserialized objects.
+
+
+
+ Creates a new instance from a protocol-buffer stream that has a length-prefix
+ on data (to assist with network IO).
+
+ The type to be created.
+ The binary stream to apply to the new instance (cannot be null).
+ How to encode the length prefix.
+ A new, initialized instance.
+
+
+
+ Creates a new instance from a protocol-buffer stream that has a length-prefix
+ on data (to assist with network IO).
+
+ The type to be created.
+ The binary stream to apply to the new instance (cannot be null).
+ How to encode the length prefix.
+ The expected tag of the item (only used with base-128 prefix style).
+ A new, initialized instance.
+
+
+
+ Applies a protocol-buffer stream to an existing instance, using length-prefixed
+ data - useful with network IO.
+
+ The type being merged.
+ The existing instance to be modified (can be null).
+ The binary stream to apply to the instance (cannot be null).
+ How to encode the length prefix.
+ The updated instance; this may be different to the instance argument if
+ either the original instance was null, or the stream defines a known sub-type of the
+ original instance.
+
+
+
+ Writes a protocol-buffer representation of the given instance to the supplied stream,
+ with a length-prefix. This is useful for socket programming,
+ as DeserializeWithLengthPrefix/MergeWithLengthPrefix can be used to read the single object back
+ from an ongoing stream.
+
+ The type being serialized.
+ The existing instance to be serialized (cannot be null).
+ How to encode the length prefix.
+ The destination stream to write to.
+
+
+
+ Writes a protocol-buffer representation of the given instance to the supplied stream,
+ with a length-prefix. This is useful for socket programming,
+ as DeserializeWithLengthPrefix/MergeWithLengthPrefix can be used to read the single object back
+ from an ongoing stream.
+
+ The type being serialized.
+ The existing instance to be serialized (cannot be null).
+ How to encode the length prefix.
+ The destination stream to write to.
+ The tag used as a prefix to each record (only used with base-128 style prefixes).
+
+
+ Indicates the number of bytes expected for the next message.
+ The stream containing the data to investigate for a length.
+ The algorithm used to encode the length.
+ The length of the message, if it could be identified.
+ True if a length could be obtained, false otherwise.
+
+
+ Indicates the number of bytes expected for the next message.
+ The buffer containing the data to investigate for a length.
+ The offset of the first byte to read from the buffer.
+ The number of bytes to read from the buffer.
+ The algorithm used to encode the length.
+ The length of the message, if it could be identified.
+ True if a length could be obtained, false otherwise.
+
+
+
+ Releases any internal buffers that have been reserved for efficiency; this does not affect any serialization
+ operations; simply: it can be used (optionally) to release the buffers for garbage collection (at the expense
+ of having to re-allocate a new buffer for the next operation, rather than re-use prior buffers).
+
+
+
+
+ Provides non-generic access to the default serializer.
+
+
+
+
+ Create a deep clone of the supplied instance; any sub-items are also cloned.
+
+
+
+
+ Writes a protocol-buffer representation of the given instance to the supplied stream.
+
+ The existing instance to be serialized (cannot be null).
+ The destination stream to write to.
+
+
+
+ Creates a new instance from a protocol-buffer stream
+
+ The type to be created.
+ The binary stream to apply to the new instance (cannot be null).
+ A new, initialized instance.
+
+
+ Applies a protocol-buffer stream to an existing instance.
+ The existing instance to be modified (cannot be null).
+ The binary stream to apply to the instance (cannot be null).
+ The updated instance
+
+
+
+ Writes a protocol-buffer representation of the given instance to the supplied stream,
+ with a length-prefix. This is useful for socket programming,
+ as DeserializeWithLengthPrefix/MergeWithLengthPrefix can be used to read the single object back
+ from an ongoing stream.
+
+ The existing instance to be serialized (cannot be null).
+ How to encode the length prefix.
+ The destination stream to write to.
+ The tag used as a prefix to each record (only used with base-128 style prefixes).
+
+
+
+ Applies a protocol-buffer stream to an existing instance (or null), using length-prefixed
+ data - useful with network IO.
+
+ The existing instance to be modified (can be null).
+ The binary stream to apply to the instance (cannot be null).
+ How to encode the length prefix.
+ Used to resolve types on a per-field basis.
+ The updated instance; this may be different to the instance argument if
+ either the original instance was null, or the stream defines a known sub-type of the
+ original instance.
+
+
+
+ Indicates whether the supplied type is explicitly modelled by the model
+
+
+
+
+ Global switches that change the behavior of protobuf-net
+
+
+
+
+
+
+
+
+
+ Maps a field-number to a type
+
+
+
+
+ Perform the steps necessary to serialize this data.
+
+ The value to be serialized.
+ The writer entity that is accumulating the output data.
+
+
+
+ Perform the steps necessary to deserialize this data.
+
+ The current value, if appropriate.
+ The reader providing the input data.
+ The updated / replacement value.
+
+
+
+ The type that this serializer is intended to work for.
+
+
+
+
+ Indicates whether a Read operation replaces the existing value, or
+ extends the value. If false, the "value" parameter to Read is
+ discarded, and should be passed in as null.
+
+
+
+
+ Now all Read operations return a value (although most do); if false no
+ value should be expected.
+
+
+
+
+ Used to hold particulars relating to nested objects. This is opaque to the caller - simply
+ give back the token you are given at the end of an object.
+
+
+
+
+ Indicates the encoding used to represent an individual value in a protobuf stream
+
+
+
+
+ Represents an error condition
+
+
+
+
+ Base-128 variant-length encoding
+
+
+
+
+ Fixed-length 8-byte encoding
+
+
+
+
+ Length-variant-prefixed encoding
+
+
+
+
+ Indicates the start of a group
+
+
+
+
+ Indicates the end of a group
+
+
+
+
+ Fixed-length 4-byte encoding
+ 10
+
+
+
+ This is not a formal wire-type in the "protocol buffers" spec, but
+ denotes a variant integer that should be interpreted using
+ zig-zag semantics (so -ve numbers aren't a significant overhead)
+
+
+
+
diff --git a/packages/protobuf-net.2.0.0.668/lib/net40/protobuf-net.dll b/packages/protobuf-net.2.0.0.668/lib/net40/protobuf-net.dll
new file mode 100644
index 000000000..de4701c6a
Binary files /dev/null and b/packages/protobuf-net.2.0.0.668/lib/net40/protobuf-net.dll differ
diff --git a/packages/protobuf-net.2.0.0.668/lib/net40/protobuf-net.xml b/packages/protobuf-net.2.0.0.668/lib/net40/protobuf-net.xml
new file mode 100644
index 000000000..ccf3c6ff2
--- /dev/null
+++ b/packages/protobuf-net.2.0.0.668/lib/net40/protobuf-net.xml
@@ -0,0 +1,2879 @@
+
+
+
+ protobuf-net
+
+
+
+
+ Provides support for common .NET types that do not have a direct representation
+ in protobuf, using the definitions from bcl.proto
+
+
+
+
+ Creates a new instance of the specified type, bypassing the constructor.
+
+ The type to create
+ The new instance
+ If the platform does not support constructor-skipping
+
+
+
+ Writes a TimeSpan to a protobuf stream
+
+
+
+
+ Parses a TimeSpan from a protobuf stream
+
+
+
+
+ Parses a DateTime from a protobuf stream
+
+
+
+
+ Writes a DateTime to a protobuf stream
+
+
+
+
+ Parses a decimal from a protobuf stream
+
+
+
+
+ Writes a decimal to a protobuf stream
+
+
+
+
+ Writes a Guid to a protobuf stream
+
+
+
+
+ Parses a Guid from a protobuf stream
+
+
+
+
+ Reads an *implementation specific* bundled .NET object, including (as options) type-metadata, identity/re-use, etc.
+
+
+
+
+ Writes an *implementation specific* bundled .NET object, including (as options) type-metadata, identity/re-use, etc.
+
+
+
+
+ Optional behaviours that introduce .NET-specific functionality
+
+
+
+
+ No special behaviour
+
+
+
+
+ Enables full object-tracking/full-graph support.
+
+
+
+
+ Embeds the type information into the stream, allowing usage with types not known in advance.
+
+
+
+
+ If false, the constructor for the type is bypassed during deserialization, meaning any field initializers
+ or other initialization code is skipped.
+
+
+
+
+ Should the object index be reserved, rather than creating an object promptly
+
+
+
+
+ Provides a simple buffer-based implementation of an extension object.
+
+
+
+
+ Provides addition capability for supporting unexpected fields during
+ protocol-buffer serialization/deserialization. This allows for loss-less
+ round-trip/merge, even when the data is not fully understood.
+
+
+
+
+ Requests a stream into which any unexpected fields can be persisted.
+
+ A new stream suitable for storing data.
+
+
+
+ Indicates that all unexpected fields have now been stored. The
+ implementing class is responsible for closing the stream. If
+ "commit" is not true the data may be discarded.
+
+ The stream originally obtained by BeginAppend.
+ True if the append operation completed successfully.
+
+
+
+ Requests a stream of the unexpected fields previously stored.
+
+ A prepared stream of the unexpected fields.
+
+
+
+ Indicates that all unexpected fields have now been read. The
+ implementing class is responsible for closing the stream.
+
+ The stream originally obtained by BeginQuery.
+
+
+
+ Requests the length of the raw binary stream; this is used
+ when serializing sub-entities to indicate the expected size.
+
+ The length of the binary stream representing unexpected data.
+
+
+ Specifies a method on the root-contract in an hierarchy to be invoked before serialization.
+
+
+ Specifies a method on the root-contract in an hierarchy to be invoked after serialization.
+
+
+ Specifies a method on the root-contract in an hierarchy to be invoked before deserialization.
+
+
+ Specifies a method on the root-contract in an hierarchy to be invoked after deserialization.
+
+
+
+ Pushes a null reference onto the stack. Note that this should only
+ be used to return a null (or set a variable to null); for null-tests
+ use BranchIfTrue / BranchIfFalse.
+
+
+
+
+ Creates a new "using" block (equivalent) around a variable;
+ the variable must exist, and note that (unlike in C#) it is
+ the variables *final* value that gets disposed. If you need
+ *original* disposal, copy your variable first.
+
+ It is the callers responsibility to ensure that the variable's
+ scope fully-encapsulates the "using"; if not, the variable
+ may be re-used (and thus re-assigned) unexpectedly.
+
+
+
+
+ Sub-format to use when serializing/deserializing data
+
+
+
+
+ Uses the default encoding for the data-type.
+
+
+
+
+ When applied to signed integer-based data (including Decimal), this
+ indicates that zigzag variant encoding will be used. This means that values
+ with small magnitude (regardless of sign) take a small amount
+ of space to encode.
+
+
+
+
+ When applied to signed integer-based data (including Decimal), this
+ indicates that two's-complement variant encoding will be used.
+ This means that any -ve number will take 10 bytes (even for 32-bit),
+ so should only be used for compatibility.
+
+
+
+
+ When applied to signed integer-based data (including Decimal), this
+ indicates that a fixed amount of space will be used.
+
+
+
+
+ When applied to a sub-message, indicates that the value should be treated
+ as group-delimited.
+
+
+
+
+ Simple base class for supporting unexpected fields allowing
+ for loss-less round-tips/merge, even if the data is not understod.
+ The additional fields are (by default) stored in-memory in a buffer.
+
+ As an example of an alternative implementation, you might
+ choose to use the file system (temporary files) as the back-end, tracking
+ only the paths [such an object would ideally be IDisposable and use
+ a finalizer to ensure that the files are removed].
+
+
+
+
+ Indicates that the implementing type has support for protocol-buffer
+ extensions.
+
+ Can be implemented by deriving from Extensible.
+
+
+
+ Retrieves the extension object for the current
+ instance, optionally creating it if it does not already exist.
+
+ Should a new extension object be
+ created if it does not already exist?
+ The extension object if it exists (or was created), or null
+ if the extension object does not exist or is not available.
+ The createIfMissing argument is false during serialization,
+ and true during deserialization upon encountering unexpected fields.
+
+
+
+ Retrieves the extension object for the current
+ instance, optionally creating it if it does not already exist.
+
+ Should a new extension object be
+ created if it does not already exist?
+ The extension object if it exists (or was created), or null
+ if the extension object does not exist or is not available.
+ The createIfMissing argument is false during serialization,
+ and true during deserialization upon encountering unexpected fields.
+
+
+
+ Provides a simple, default implementation for extension support,
+ optionally creating it if it does not already exist. Designed to be called by
+ classes implementing .
+
+ Should a new extension object be
+ created if it does not already exist?
+ The extension field to check (and possibly update).
+ The extension object if it exists (or was created), or null
+ if the extension object does not exist or is not available.
+ The createIfMissing argument is false during serialization,
+ and true during deserialization upon encountering unexpected fields.
+
+
+
+ Appends the value as an additional (unexpected) data-field for the instance.
+ Note that for non-repeated sub-objects, this equates to a merge operation;
+ for repeated sub-objects this adds a new instance to the set; for simple
+ values the new value supercedes the old value.
+
+ Note that appending a value does not remove the old value from
+ the stream; avoid repeatedly appending values for the same field.
+ The type of the value to append.
+ The extensible object to append the value to.
+ The field identifier; the tag should not be defined as a known data-field for the instance.
+ The value to append.
+
+
+
+ Appends the value as an additional (unexpected) data-field for the instance.
+ Note that for non-repeated sub-objects, this equates to a merge operation;
+ for repeated sub-objects this adds a new instance to the set; for simple
+ values the new value supercedes the old value.
+
+ Note that appending a value does not remove the old value from
+ the stream; avoid repeatedly appending values for the same field.
+ The data-type of the field.
+ The data-format to use when encoding the value.
+ The extensible object to append the value to.
+ The field identifier; the tag should not be defined as a known data-field for the instance.
+ The value to append.
+
+
+
+ Queries an extensible object for an additional (unexpected) data-field for the instance.
+ The value returned is the composed value after merging any duplicated content; if the
+ value is "repeated" (a list), then use GetValues instead.
+
+ The data-type of the field.
+ The extensible object to obtain the value from.
+ The field identifier; the tag should not be defined as a known data-field for the instance.
+ The effective value of the field, or the default value if not found.
+
+
+
+ Queries an extensible object for an additional (unexpected) data-field for the instance.
+ The value returned is the composed value after merging any duplicated content; if the
+ value is "repeated" (a list), then use GetValues instead.
+
+ The data-type of the field.
+ The extensible object to obtain the value from.
+ The field identifier; the tag should not be defined as a known data-field for the instance.
+ The data-format to use when decoding the value.
+ The effective value of the field, or the default value if not found.
+
+
+
+ Queries an extensible object for an additional (unexpected) data-field for the instance.
+ The value returned (in "value") is the composed value after merging any duplicated content;
+ if the value is "repeated" (a list), then use GetValues instead.
+
+ The data-type of the field.
+ The effective value of the field, or the default value if not found.
+ The extensible object to obtain the value from.
+ The field identifier; the tag should not be defined as a known data-field for the instance.
+ True if data for the field was present, false otherwise.
+
+
+
+ Queries an extensible object for an additional (unexpected) data-field for the instance.
+ The value returned (in "value") is the composed value after merging any duplicated content;
+ if the value is "repeated" (a list), then use GetValues instead.
+
+ The data-type of the field.
+ The effective value of the field, or the default value if not found.
+ The extensible object to obtain the value from.
+ The field identifier; the tag should not be defined as a known data-field for the instance.
+ The data-format to use when decoding the value.
+ True if data for the field was present, false otherwise.
+
+
+
+ Queries an extensible object for an additional (unexpected) data-field for the instance.
+ The value returned (in "value") is the composed value after merging any duplicated content;
+ if the value is "repeated" (a list), then use GetValues instead.
+
+ The data-type of the field.
+ The effective value of the field, or the default value if not found.
+ The extensible object to obtain the value from.
+ The field identifier; the tag should not be defined as a known data-field for the instance.
+ The data-format to use when decoding the value.
+ Allow tags that are present as part of the definition; for example, to query unknown enum values.
+ True if data for the field was present, false otherwise.
+
+
+
+ Queries an extensible object for an additional (unexpected) data-field for the instance.
+ Each occurrence of the field is yielded separately, making this usage suitable for "repeated"
+ (list) fields.
+
+ The extended data is processed lazily as the enumerator is iterated.
+ The data-type of the field.
+ The extensible object to obtain the value from.
+ The field identifier; the tag should not be defined as a known data-field for the instance.
+ An enumerator that yields each occurrence of the field.
+
+
+
+ Queries an extensible object for an additional (unexpected) data-field for the instance.
+ Each occurrence of the field is yielded separately, making this usage suitable for "repeated"
+ (list) fields.
+
+ The extended data is processed lazily as the enumerator is iterated.
+ The data-type of the field.
+ The extensible object to obtain the value from.
+ The field identifier; the tag should not be defined as a known data-field for the instance.
+ The data-format to use when decoding the value.
+ An enumerator that yields each occurrence of the field.
+
+
+
+ Queries an extensible object for an additional (unexpected) data-field for the instance.
+ The value returned (in "value") is the composed value after merging any duplicated content;
+ if the value is "repeated" (a list), then use GetValues instead.
+
+ The data-type of the field.
+ The model to use for configuration.
+ The effective value of the field, or the default value if not found.
+ The extensible object to obtain the value from.
+ The field identifier; the tag should not be defined as a known data-field for the instance.
+ The data-format to use when decoding the value.
+ Allow tags that are present as part of the definition; for example, to query unknown enum values.
+ True if data for the field was present, false otherwise.
+
+
+
+ Queries an extensible object for an additional (unexpected) data-field for the instance.
+ Each occurrence of the field is yielded separately, making this usage suitable for "repeated"
+ (list) fields.
+
+ The extended data is processed lazily as the enumerator is iterated.
+ The model to use for configuration.
+ The data-type of the field.
+ The extensible object to obtain the value from.
+ The field identifier; the tag should not be defined as a known data-field for the instance.
+ The data-format to use when decoding the value.
+ An enumerator that yields each occurrence of the field.
+
+
+
+ Appends the value as an additional (unexpected) data-field for the instance.
+ Note that for non-repeated sub-objects, this equates to a merge operation;
+ for repeated sub-objects this adds a new instance to the set; for simple
+ values the new value supercedes the old value.
+
+ Note that appending a value does not remove the old value from
+ the stream; avoid repeatedly appending values for the same field.
+ The model to use for configuration.
+ The data-format to use when encoding the value.
+ The extensible object to append the value to.
+ The field identifier; the tag should not be defined as a known data-field for the instance.
+ The value to append.
+
+
+
+ This class acts as an internal wrapper allowing us to do a dynamic
+ methodinfo invoke; an't put into Serializer as don't want on public
+ API; can't put into Serializer<T> since we need to invoke
+ accross classes, which isn't allowed in Silverlight)
+
+
+
+
+ All this does is call GetExtendedValuesTyped with the correct type for "instance";
+ this ensures that we don't get issues with subclasses declaring conflicting types -
+ the caller must respect the fields defined for the type they pass in.
+
+
+
+
+ All this does is call GetExtendedValuesTyped with the correct type for "instance";
+ this ensures that we don't get issues with subclasses declaring conflicting types -
+ the caller must respect the fields defined for the type they pass in.
+
+
+
+
+ Not all frameworks are created equal (fx1.1 vs fx2.0,
+ micro-framework, compact-framework,
+ silverlight, etc). This class simply wraps up a few things that would
+ otherwise make the real code unnecessarily messy, providing fallback
+ implementations if necessary.
+
+
+
+
+ Intended to be a direct map to regular TypeCode, but:
+ - with missing types
+ - existing on WinRT
+
+
+
+
+ Specifies the method used to infer field tags for members of the type
+ under consideration. Tags are deduced using the invariant alphabetic
+ sequence of the members' names; this makes implicit field tags very brittle,
+ and susceptible to changes such as field names (normally an isolated
+ change).
+
+
+
+
+ No members are serialized implicitly; all members require a suitable
+ attribute such as [ProtoMember]. This is the recmomended mode for
+ most scenarios.
+
+
+
+
+ Public properties and fields are eligible for implicit serialization;
+ this treats the public API as a contract. Ordering beings from ImplicitFirstTag.
+
+
+
+
+ Public and non-public fields are eligible for implicit serialization;
+ this acts as a state/implementation serializer. Ordering beings from ImplicitFirstTag.
+
+
+
+
+ Represents the set of serialization callbacks to be used when serializing/deserializing a type.
+
+
+
+ Called before serializing an instance
+
+
+ Called before deserializing an instance
+
+
+ Called after serializing an instance
+
+
+ Called after deserializing an instance
+
+
+
+ True if any callback is set, else False
+
+
+
+
+ Represents a type at runtime for use with protobuf, allowing the field mappings (etc) to be defined
+
+
+
+
+ Get the name of the type being represented
+
+
+
+
+ Adds a known sub-type to the inheritance model
+
+
+
+
+ Adds a known sub-type to the inheritance model
+
+
+
+
+ Assigns the callbacks to use during serialiation/deserialization.
+
+ The method (or null) called before serialization begins.
+ The method (or null) called when serialization is complete.
+ The method (or null) called before deserialization begins (or when a new instance is created during deserialization).
+ The method (or null) called when deserialization is complete.
+ The set of callbacks.
+
+
+
+ Assigns the callbacks to use during serialiation/deserialization.
+
+ The name of the method (or null) called before serialization begins.
+ The name of the method (or null) called when serialization is complete.
+ The name of the method (or null) called before deserialization begins (or when a new instance is created during deserialization).
+ The name of the method (or null) called when deserialization is complete.
+ The set of callbacks.
+
+
+
+ Designate a factory-method to use to create instances of this type
+
+
+
+
+ Designate a factory-method to use to create instances of this type
+
+
+
+
+ Throws an exception if the type has been made immutable
+
+
+
+
+ Adds a member (by name) to the MetaType
+
+
+
+
+ Adds a member (by name) to the MetaType, returning the ValueMember rather than the fluent API.
+ This is otherwise identical to Add.
+
+
+
+
+ Adds a member (by name) to the MetaType
+
+
+
+
+ Performs serialization of this type via a surrogate; all
+ other serialization options are ignored and handled
+ by the surrogate's configuration.
+
+
+
+
+ Adds a set of members (by name) to the MetaType
+
+
+
+
+ Adds a member (by name) to the MetaType
+
+
+
+
+ Adds a member (by name) to the MetaType, including an itemType and defaultType for representing lists
+
+
+
+
+ Adds a member (by name) to the MetaType, including an itemType and defaultType for representing lists, returning the ValueMember rather than the fluent API.
+ This is otherwise identical to Add.
+
+
+
+
+ Returns the ValueMember instances associated with this type
+
+
+
+
+ Returns the SubType instances associated with this type
+
+
+
+
+ Compiles the serializer for this type; this is *not* a full
+ standalone compile, but can significantly boost performance
+ while allowing additional types to be added.
+
+ An in-place compile can access non-public types / members
+
+
+
+ Gets the base-type for this type
+
+
+
+
+ When used to compile a model, should public serialization/deserialzation methods
+ be included for this type?
+
+
+
+
+ Should this type be treated as a reference by default?
+
+
+
+
+ Indicates whether the current type has defined callbacks
+
+
+
+
+ Indicates whether the current type has defined subtypes
+
+
+
+
+ Returns the set of callbacks defined for this type
+
+
+
+
+ Gets or sets the name of this contract.
+
+
+
+
+ The runtime type that the meta-type represents
+
+
+
+
+ Gets or sets whether the type should use a parameterless constructor (the default),
+ or whether the type should skip the constructor completely. This option is not supported
+ on compact-framework.
+
+
+
+
+ The concrete type to create when a new instance of this type is needed; this may be useful when dealing
+ with dynamic proxies, or with interface-based APIs
+
+
+
+
+ Returns the ValueMember that matchs a given field number, or null if not found
+
+
+
+
+ Returns the ValueMember that matchs a given member (property/field), or null if not found
+
+
+
+
+ Gets or sets a value indicating that an enum should be treated directly as an int/short/etc, rather
+ than enforcing .proto enum rules. This is useful *in particul* for [Flags] enums.
+
+
+
+
+ Gets or sets a value indicating that this type should NOT be treated as a list, even if it has
+ familiar list-like characteristics (enumerable, add, etc)
+
+
+
+
+ Provides protobuf serialization support for a number of types that can be defined at runtime
+
+
+
+
+ Provides protobuf serialization support for a number of types
+
+
+
+
+ Resolve a System.Type to the compiler-specific type
+
+
+
+
+ Resolve a System.Type to the compiler-specific type
+
+
+
+
+ This is the more "complete" version of Serialize, which handles single instances of mapped types.
+ The value is written as a complete field, including field-header and (for sub-objects) a
+ length-prefix
+ In addition to that, this provides support for:
+ - basic values; individual int / string / Guid / etc
+ - IEnumerable sequences of any type handled by TrySerializeAuxiliaryType
+
+
+
+
+
+ Writes a protocol-buffer representation of the given instance to the supplied stream.
+
+ The existing instance to be serialized (cannot be null).
+ The destination stream to write to.
+
+
+
+ Writes a protocol-buffer representation of the given instance to the supplied stream.
+
+ The existing instance to be serialized (cannot be null).
+ The destination stream to write to.
+ Additional information about this serialization operation.
+
+
+
+ Writes a protocol-buffer representation of the given instance to the supplied writer.
+
+ The existing instance to be serialized (cannot be null).
+ The destination writer to write to.
+
+
+
+ Applies a protocol-buffer stream to an existing instance (or null), using length-prefixed
+ data - useful with network IO.
+
+ The type being merged.
+ The existing instance to be modified (can be null).
+ The binary stream to apply to the instance (cannot be null).
+ How to encode the length prefix.
+ The tag used as a prefix to each record (only used with base-128 style prefixes).
+ The updated instance; this may be different to the instance argument if
+ either the original instance was null, or the stream defines a known sub-type of the
+ original instance.
+
+
+
+ Applies a protocol-buffer stream to an existing instance (or null), using length-prefixed
+ data - useful with network IO.
+
+ The type being merged.
+ The existing instance to be modified (can be null).
+ The binary stream to apply to the instance (cannot be null).
+ How to encode the length prefix.
+ The tag used as a prefix to each record (only used with base-128 style prefixes).
+ Used to resolve types on a per-field basis.
+ The updated instance; this may be different to the instance argument if
+ either the original instance was null, or the stream defines a known sub-type of the
+ original instance.
+
+
+
+ Applies a protocol-buffer stream to an existing instance (or null), using length-prefixed
+ data - useful with network IO.
+
+ The type being merged.
+ The existing instance to be modified (can be null).
+ The binary stream to apply to the instance (cannot be null).
+ How to encode the length prefix.
+ The tag used as a prefix to each record (only used with base-128 style prefixes).
+ Used to resolve types on a per-field basis.
+ Returns the number of bytes consumed by this operation (includes length-prefix overheads and any skipped data).
+ The updated instance; this may be different to the instance argument if
+ either the original instance was null, or the stream defines a known sub-type of the
+ original instance.
+
+
+
+ Reads a sequence of consecutive length-prefixed items from a stream, using
+ either base-128 or fixed-length prefixes. Base-128 prefixes with a tag
+ are directly comparable to serializing multiple items in succession
+ (use the tag to emulate the implicit behavior
+ when serializing a list/array). When a tag is
+ specified, any records with different tags are silently omitted. The
+ tag is ignored. The tag is ignores for fixed-length prefixes.
+
+ The binary stream containing the serialized records.
+ The prefix style used in the data.
+ The tag of records to return (if non-positive, then no tag is
+ expected and all records are returned).
+ On a field-by-field basis, the type of object to deserialize (can be null if "type" is specified).
+ The type of object to deserialize (can be null if "resolver" is specified).
+ The sequence of deserialized objects.
+
+
+
+ Reads a sequence of consecutive length-prefixed items from a stream, using
+ either base-128 or fixed-length prefixes. Base-128 prefixes with a tag
+ are directly comparable to serializing multiple items in succession
+ (use the tag to emulate the implicit behavior
+ when serializing a list/array). When a tag is
+ specified, any records with different tags are silently omitted. The
+ tag is ignored. The tag is ignores for fixed-length prefixes.
+
+ The binary stream containing the serialized records.
+ The prefix style used in the data.
+ The tag of records to return (if non-positive, then no tag is
+ expected and all records are returned).
+ On a field-by-field basis, the type of object to deserialize (can be null if "type" is specified).
+ The type of object to deserialize (can be null if "resolver" is specified).
+ The sequence of deserialized objects.
+ Additional information about this serialization operation.
+
+
+
+ Reads a sequence of consecutive length-prefixed items from a stream, using
+ either base-128 or fixed-length prefixes. Base-128 prefixes with a tag
+ are directly comparable to serializing multiple items in succession
+ (use the tag to emulate the implicit behavior
+ when serializing a list/array). When a tag is
+ specified, any records with different tags are silently omitted. The
+ tag is ignored. The tag is ignores for fixed-length prefixes.
+
+ The type of object to deserialize.
+ The binary stream containing the serialized records.
+ The prefix style used in the data.
+ The tag of records to return (if non-positive, then no tag is
+ expected and all records are returned).
+ The sequence of deserialized objects.
+
+
+
+ Reads a sequence of consecutive length-prefixed items from a stream, using
+ either base-128 or fixed-length prefixes. Base-128 prefixes with a tag
+ are directly comparable to serializing multiple items in succession
+ (use the tag to emulate the implicit behavior
+ when serializing a list/array). When a tag is
+ specified, any records with different tags are silently omitted. The
+ tag is ignored. The tag is ignores for fixed-length prefixes.
+
+ The type of object to deserialize.
+ The binary stream containing the serialized records.
+ The prefix style used in the data.
+ The tag of records to return (if non-positive, then no tag is
+ expected and all records are returned).
+ The sequence of deserialized objects.
+ Additional information about this serialization operation.
+
+
+
+ Writes a protocol-buffer representation of the given instance to the supplied stream,
+ with a length-prefix. This is useful for socket programming,
+ as DeserializeWithLengthPrefix can be used to read the single object back
+ from an ongoing stream.
+
+ The type being serialized.
+ The existing instance to be serialized (cannot be null).
+ How to encode the length prefix.
+ The destination stream to write to.
+ The tag used as a prefix to each record (only used with base-128 style prefixes).
+
+
+
+ Writes a protocol-buffer representation of the given instance to the supplied stream,
+ with a length-prefix. This is useful for socket programming,
+ as DeserializeWithLengthPrefix can be used to read the single object back
+ from an ongoing stream.
+
+ The type being serialized.
+ The existing instance to be serialized (cannot be null).
+ How to encode the length prefix.
+ The destination stream to write to.
+ The tag used as a prefix to each record (only used with base-128 style prefixes).
+ Additional information about this serialization operation.
+
+
+
+ Applies a protocol-buffer stream to an existing instance (which may be null).
+
+ The type (including inheritance) to consider.
+ The existing instance to be modified (can be null).
+ The binary stream to apply to the instance (cannot be null).
+ The updated instance; this may be different to the instance argument if
+ either the original instance was null, or the stream defines a known sub-type of the
+ original instance.
+
+
+
+ Applies a protocol-buffer stream to an existing instance (which may be null).
+
+ The type (including inheritance) to consider.
+ The existing instance to be modified (can be null).
+ The binary stream to apply to the instance (cannot be null).
+ The updated instance; this may be different to the instance argument if
+ either the original instance was null, or the stream defines a known sub-type of the
+ original instance.
+ Additional information about this serialization operation.
+
+
+
+ Applies a protocol-buffer stream to an existing instance (which may be null).
+
+ The type (including inheritance) to consider.
+ The existing instance to be modified (can be null).
+ The binary stream to apply to the instance (cannot be null).
+ The number of bytes to consume.
+ The updated instance; this may be different to the instance argument if
+ either the original instance was null, or the stream defines a known sub-type of the
+ original instance.
+
+
+
+ Applies a protocol-buffer stream to an existing instance (which may be null).
+
+ The type (including inheritance) to consider.
+ The existing instance to be modified (can be null).
+ The binary stream to apply to the instance (cannot be null).
+ The number of bytes to consume (or -1 to read to the end of the stream).
+ The updated instance; this may be different to the instance argument if
+ either the original instance was null, or the stream defines a known sub-type of the
+ original instance.
+ Additional information about this serialization operation.
+
+
+
+ Applies a protocol-buffer reader to an existing instance (which may be null).
+
+ The type (including inheritance) to consider.
+ The existing instance to be modified (can be null).
+ The reader to apply to the instance (cannot be null).
+ The updated instance; this may be different to the instance argument if
+ either the original instance was null, or the stream defines a known sub-type of the
+ original instance.
+
+
+
+ This is the more "complete" version of Deserialize, which handles single instances of mapped types.
+ The value is read as a complete field, including field-header and (for sub-objects) a
+ length-prefix..kmc
+
+ In addition to that, this provides support for:
+ - basic values; individual int / string / Guid / etc
+ - IList sets of any type handled by TryDeserializeAuxiliaryType
+
+
+
+
+ Creates a new runtime model, to which the caller
+ can add support for a range of types. A model
+ can be used "as is", or can be compiled for
+ optimal performance.
+
+
+
+
+ Applies common proxy scenarios, resolving the actual type to consider
+
+
+
+
+ Indicates whether the supplied type is explicitly modelled by the model
+
+
+
+
+ Provides the key that represents a given type in the current model.
+ The type is also normalized for proxies at the same time.
+
+
+
+
+ Provides the key that represents a given type in the current model.
+
+
+
+
+ Writes a protocol-buffer representation of the given instance to the supplied stream.
+
+ Represents the type (including inheritance) to consider.
+ The existing instance to be serialized (cannot be null).
+ The destination stream to write to.
+
+
+
+ Applies a protocol-buffer stream to an existing instance (which may be null).
+
+ Represents the type (including inheritance) to consider.
+ The existing instance to be modified (can be null).
+ The binary stream to apply to the instance (cannot be null).
+ The updated instance; this may be different to the instance argument if
+ either the original instance was null, or the stream defines a known sub-type of the
+ original instance.
+
+
+
+ Create a deep clone of the supplied instance; any sub-items are also cloned.
+
+
+
+
+ Indicates that while an inheritance tree exists, the exact type encountered was not
+ specified in that hierarchy and cannot be processed.
+
+
+
+
+ Indicates that the given type was not expected, and cannot be processed.
+
+
+
+
+ Indicates that the given type cannot be constructed; it may still be possible to
+ deserialize into existing instances.
+
+
+
+
+ Returns true if the type supplied is either a recognised contract type,
+ or a *list* of a recognised contract type.
+
+ Note that primitives always return false, even though the engine
+ will, if forced, try to serialize such
+ True if this type is recognised as a serializable entity, else false
+
+
+
+ Returns true if the type supplied is a basic type with inbuilt handling,
+ a recognised contract type, or a *list* of a basic / contract type.
+
+
+
+
+ Returns true if the type supplied is a basic type with inbuilt handling,
+ or a *list* of a basic type with inbuilt handling
+
+
+
+
+ Suggest a .proto definition for the given type
+
+ The type to generate a .proto definition for, or null to generate a .proto that represents the entire model
+ The .proto definition as a string
+
+
+
+ Creates a new IFormatter that uses protocol-buffer [de]serialization.
+
+ A new IFormatter to be used during [de]serialization.
+ The type of object to be [de]deserialized by the formatter.
+
+
+
+ Used to provide custom services for writing and parsing type names when using dynamic types. Both parsing and formatting
+ are provided on a single API as it is essential that both are mapped identically at all times.
+
+
+
+
+ Indicates the type of callback to be used
+
+
+
+
+ Invoked before an object is serialized
+
+
+
+
+ Invoked after an object is serialized
+
+
+
+
+ Invoked before an object is deserialized (or when a new instance is created)
+
+
+
+
+ Invoked after an object is deserialized
+
+
+
+
+ Returns a sequence of the Type instances that can be
+ processed by this model.
+
+
+
+
+ Suggest a .proto definition for the given type
+
+ The type to generate a .proto definition for, or null to generate a .proto that represents the entire model
+ The .proto definition as a string
+
+
+
+ Adds support for an additional type in this model, optionally
+ appplying inbuilt patterns. If the type is already known to the
+ model, the existing type is returned **without** applying
+ any additional behaviour.
+
+ Inbuilt patterns include:
+ [ProtoContract]/[ProtoMember(n)]
+ [DataContract]/[DataMember(Order=n)]
+ [XmlType]/[XmlElement(Order=n)]
+ [On{Des|S}erializ{ing|ed}]
+ ShouldSerialize*/*Specified
+
+ The type to be supported
+ Whether to apply the inbuilt configuration patterns (via attributes etc), or
+ just add the type with no additional configuration (the type must then be manually configured).
+ The MetaType representing this type, allowing
+ further configuration.
+
+
+
+ Verifies that the model is still open to changes; if not, an exception is thrown
+
+
+
+
+ Prevents further changes to this model
+
+
+
+
+ Provides the key that represents a given type in the current model.
+
+
+
+
+ Writes a protocol-buffer representation of the given instance to the supplied stream.
+
+ Represents the type (including inheritance) to consider.
+ The existing instance to be serialized (cannot be null).
+ The destination stream to write to.
+
+
+
+ Applies a protocol-buffer stream to an existing instance (which may be null).
+
+ Represents the type (including inheritance) to consider.
+ The existing instance to be modified (can be null).
+ The binary stream to apply to the instance (cannot be null).
+ The updated instance; this may be different to the instance argument if
+ either the original instance was null, or the stream defines a known sub-type of the
+ original instance.
+
+
+
+ Compiles the serializers individually; this is *not* a full
+ standalone compile, but can significantly boost performance
+ while allowing additional types to be added.
+
+ An in-place compile can access non-public types / members
+
+
+
+ Fully compiles the current model into a static-compiled model instance
+
+ A full compilation is restricted to accessing public types / members
+ An instance of the newly created compiled type-model
+
+
+
+ Fully compiles the current model into a static-compiled serialization dll
+ (the serialization dll still requires protobuf-net for support services).
+
+ A full compilation is restricted to accessing public types / members
+ The name of the TypeModel class to create
+ The path for the new dll
+ An instance of the newly created compiled type-model
+
+
+
+ Fully compiles the current model into a static-compiled serialization dll
+ (the serialization dll still requires protobuf-net for support services).
+
+ A full compilation is restricted to accessing public types / members
+ An instance of the newly created compiled type-model
+
+
+
+ Designate a factory-method to use to create instances of any type; note that this only affect types seen by the serializer *after* setting the factory.
+
+
+
+
+ Global default that
+ enables/disables automatic tag generation based on the existing name / order
+ of the defined members. See
+ for usage and important warning / explanation.
+ You must set the global default before attempting to serialize/deserialize any
+ impacted type.
+
+
+
+
+ Global default that determines whether types are considered serializable
+ if they have [DataContract] / [XmlType]. With this enabled, ONLY
+ types marked as [ProtoContract] are added automatically.
+
+
+
+
+ Global switch that enables or disables the implicit
+ handling of "zero defaults"; meanning: if no other default is specified,
+ it assumes bools always default to false, integers to zero, etc.
+
+ If this is disabled, no such assumptions are made and only *explicit*
+ default values are processed. This is enabled by default to
+ preserve similar logic to v1.
+
+
+
+
+ Global switch that determines whether types with a .ToString() and a Parse(string)
+ should be serialized as strings.
+
+
+
+
+ The default model, used to support ProtoBuf.Serializer
+
+
+
+
+ Obtains the MetaType associated with a given Type for the current model,
+ allowing additional configuration.
+
+
+
+
+ Should serializers be compiled on demand? It may be useful
+ to disable this for debugging purposes.
+
+
+
+
+ Should support for unexpected types be added automatically?
+ If false, an exception is thrown when unexpected types
+ are encountered.
+
+
+
+
+ The amount of time to wait if there are concurrent metadata access operations
+
+
+
+
+ If a lock-contention is detected, this event signals the *owner* of the lock responsible for the blockage, indicating
+ what caused the problem; this is only raised if the lock-owning code successfully completes.
+
+
+
+
+ Represents configuration options for compiling a model to
+ a standalone assembly.
+
+
+
+
+ Import framework options from an existing type
+
+
+
+
+ The TargetFrameworkAttribute FrameworkName value to burn into the generated assembly
+
+
+
+
+ The TargetFrameworkAttribute FrameworkDisplayName value to burn into the generated assembly
+
+
+
+
+ The name of the TypeModel class to create
+
+
+
+
+ The path for the new dll
+
+
+
+
+ The runtime version for the generated assembly
+
+
+
+
+ The runtime version for the generated assembly
+
+
+
+
+ The acecssibility of the generated serializer
+
+
+
+
+ Type accessibility
+
+
+
+
+ Available to all callers
+
+
+
+
+ Available to all callers in the same assembly, or assemblies specified via [InternalsVisibleTo(...)]
+
+
+
+
+ Contains the stack-trace of the owning code when a lock-contention scenario is detected
+
+
+
+
+ The stack-trace of the code that owned the lock when a lock-contention scenario occurred
+
+
+
+
+ Event-type that is raised when a lock-contention scenario is detected
+
+
+
+
+ Represents an inherited type in a type hierarchy.
+
+
+
+
+ Creates a new SubType instance.
+
+ The field-number that is used to encapsulate the data (as a nested
+ message) for the derived dype.
+ The sub-type to be considered.
+ Specific encoding style to use; in particular, Grouped can be used to avoid buffering, but is not the default.
+
+
+
+ The field-number that is used to encapsulate the data (as a nested
+ message) for the derived dype.
+
+
+
+
+ The sub-type to be considered.
+
+
+
+
+ Event arguments needed to perform type-formatting functions; this could be resolving a Type to a string suitable for serialization, or could
+ be requesting a Type from a string. If no changes are made, a default implementation will be used (from the assembly-qualified names).
+
+
+
+
+ The type involved in this map; if this is initially null, a Type is expected to be provided for the string in FormattedName.
+
+
+
+
+ The formatted-name involved in this map; if this is initially null, a formatted-name is expected from the type in Type.
+
+
+
+
+ Delegate type used to perform type-formatting functions; the sender originates as the type-model.
+
+
+
+
+ Represents a member (property/field) that is mapped to a protobuf field
+
+
+
+
+ Creates a new ValueMember instance
+
+
+
+
+ Creates a new ValueMember instance
+
+
+
+
+ Specifies methods for working with optional data members.
+
+ Provides a method (null for none) to query whether this member should
+ be serialized; it must be of the form "bool {Method}()". The member is only serialized if the
+ method returns true.
+ Provides a method (null for none) to indicate that a member was
+ deserialized; it must be of the form "void {Method}(bool)", and will be called with "true"
+ when data is found.
+
+
+
+ The number that identifies this member in a protobuf stream
+
+
+
+
+ Gets the member (field/property) which this member relates to.
+
+
+
+
+ Within a list / array / etc, the type of object for each item in the list (especially useful with ArrayList)
+
+
+
+
+ The underlying type of the member
+
+
+
+
+ For abstract types (IList etc), the type of concrete object to create (if required)
+
+
+
+
+ The type the defines the member
+
+
+
+
+ The default value of the item (members with this value will not be serialized)
+
+
+
+
+ Specifies the rules used to process the field; this is used to determine the most appropriate
+ wite-type, but also to describe subtypes within that wire-type (such as SignedVariant)
+
+
+
+
+ Indicates whether this field should follow strict encoding rules; this means (for example) that if a "fixed32"
+ is encountered when "variant" is defined, then it will fail (throw an exception) when parsing. Note that
+ when serializing the defined type is always used.
+
+
+
+
+ Indicates whether this field should use packed encoding (which can save lots of space for repeated primitive values).
+ This option only applies to list/array data of primitive types (int, double, etc).
+
+
+
+
+ Indicates whether this field should *repace* existing values (the default is false, meaning *append*).
+ This option only applies to list/array data.
+
+
+
+
+ Indicates whether this field is mandatory.
+
+
+
+
+ Enables full object-tracking/full-graph support.
+
+
+
+
+ Embeds the type information into the stream, allowing usage with types not known in advance.
+
+
+
+
+ Gets the logical name for this member in the schema (this is not critical for binary serialization, but may be used
+ when inferring a schema).
+
+
+
+
+ Should lists have extended support for null values? Note this makes the serialization less efficient.
+
+
+
+
+ Specifies the type of prefix that should be applied to messages.
+
+
+
+
+ No length prefix is applied to the data; the data is terminated only be the end of the stream.
+
+
+
+
+ A base-128 length prefix is applied to the data (efficient for short messages).
+
+
+
+
+ A fixed-length (little-endian) length prefix is applied to the data (useful for compatibility).
+
+
+
+
+ A fixed-length (big-endian) length prefix is applied to the data (useful for compatibility).
+
+
+
+
+ Indicates that a type is defined for protocol-buffer serialization.
+
+
+
+
+ Gets or sets the defined name of the type.
+
+
+
+
+ Gets or sets the fist offset to use with implicit field tags;
+ only uesd if ImplicitFields is set.
+
+
+
+
+ If specified, alternative contract markers (such as markers for XmlSerailizer or DataContractSerializer) are ignored.
+
+
+
+
+ If specified, do NOT treat this type as a list, even if it looks like one.
+
+
+
+
+ Gets or sets the mechanism used to automatically infer field tags
+ for members. This option should be used in advanced scenarios only.
+ Please review the important notes against the ImplicitFields enumeration.
+
+
+
+
+ Enables/disables automatic tag generation based on the existing name / order
+ of the defined members. This option is not used for members marked
+ with ProtoMemberAttribute, as intended to provide compatibility with
+ WCF serialization. WARNING: when adding new fields you must take
+ care to increase the Order for new elements, otherwise data corruption
+ may occur.
+
+ If not explicitly specified, the default is assumed from Serializer.GlobalOptions.InferTagFromName.
+
+
+
+ Has a InferTagFromName value been explicitly set? if not, the default from the type-model is assumed.
+
+
+
+
+ Specifies an offset to apply to [DataMember(Order=...)] markers;
+ this is useful when working with mex-generated classes that have
+ a different origin (usually 1 vs 0) than the original data-contract.
+
+ This value is added to the Order of each member.
+
+
+
+
+ If true, the constructor for the type is bypassed during deserialization, meaning any field initializers
+ or other initialization code is skipped.
+
+
+
+
+ Should this type be treated as a reference by default? Please also see the implications of this,
+ as recorded on ProtoMemberAttribute.AsReference
+
+
+
+
+ Applies only to enums (not to DTO classes themselves); gets or sets a value indicating that an enum should be treated directly as an int/short/etc, rather
+ than enforcing .proto enum rules. This is useful *in particul* for [Flags] enums.
+
+
+
+
+ Has a EnumPassthru value been explicitly set?
+
+
+
+
+ Used to define protocol-buffer specific behavior for
+ enumerated values.
+
+
+
+
+ Indicates whether this instance has a customised value mapping
+
+ true if a specific value is set
+
+
+
+ Gets or sets the specific value to use for this enum during serialization.
+
+
+
+
+ Gets or sets the defined name of the enum, as used in .proto
+ (this name is not used during serialization).
+
+
+
+
+ Indicates an error during serialization/deserialization of a proto stream.
+
+
+
+ Creates a new ProtoException instance.
+
+
+ Creates a new ProtoException instance.
+
+
+ Creates a new ProtoException instance.
+
+
+ Creates a new ProtoException instance.
+
+
+
+ Indicates that a member should be excluded from serialization; this
+ is only normally used when using implict fields.
+
+
+
+
+ Indicates that a member should be excluded from serialization; this
+ is only normally used when using implict fields. This allows
+ ProtoIgnoreAttribute usage
+ even for partial classes where the individual members are not
+ under direct control.
+
+
+
+
+ Creates a new ProtoPartialIgnoreAttribute instance.
+
+ Specifies the member to be ignored.
+
+
+
+ The name of the member to be ignored.
+
+
+
+
+ Indicates the known-types to support for an individual
+ message. This serializes each level in the hierarchy as
+ a nested message to retain wire-compatibility with
+ other protocol-buffer implementations.
+
+
+
+
+ Creates a new instance of the ProtoIncludeAttribute.
+
+ The unique index (within the type) that will identify this data.
+ The additional type to serialize/deserialize.
+
+
+
+ Creates a new instance of the ProtoIncludeAttribute.
+
+ The unique index (within the type) that will identify this data.
+ The additional type to serialize/deserialize.
+
+
+
+ Gets the unique index (within the type) that will identify this data.
+
+
+
+
+ Gets the additional type to serialize/deserialize.
+
+
+
+
+ Gets the additional type to serialize/deserialize.
+
+
+
+
+ Specifies whether the inherited sype's sub-message should be
+ written with a length-prefix (default), or with group markers.
+
+
+
+
+ Declares a member to be used in protocol-buffer serialization, using
+ the given Tag. A DataFormat may be used to optimise the serialization
+ format (for instance, using zigzag encoding for negative numbers, or
+ fixed-length encoding for large values.
+
+
+
+
+ Compare with another ProtoMemberAttribute for sorting purposes
+
+
+
+
+ Compare with another ProtoMemberAttribute for sorting purposes
+
+
+
+
+ Creates a new ProtoMemberAttribute instance.
+
+ Specifies the unique tag used to identify this member within the type.
+
+
+
+ Gets or sets the original name defined in the .proto; not used
+ during serialization.
+
+
+
+
+ Gets or sets the data-format to be used when encoding this value.
+
+
+
+
+ Gets the unique tag used to identify this member within the type.
+
+
+
+
+ Gets or sets a value indicating whether this member is mandatory.
+
+
+
+
+ Gets a value indicating whether this member is packed.
+ This option only applies to list/array data of primitive types (int, double, etc).
+
+
+
+
+ Indicates whether this field should *repace* existing values (the default is false, meaning *append*).
+ This option only applies to list/array data.
+
+
+
+
+ Enables full object-tracking/full-graph support.
+
+
+
+
+ Embeds the type information into the stream, allowing usage with types not known in advance.
+
+
+
+
+ Gets or sets a value indicating whether this member is packed (lists/arrays).
+
+
+
+
+ Additional (optional) settings that control serialization of members
+
+
+
+
+ Default; no additional options
+
+
+
+
+ Indicates that repeated elements should use packed (length-prefixed) encoding
+
+
+
+
+ Indicates that the given item is required
+
+
+
+
+ Enables full object-tracking/full-graph support
+
+
+
+
+ Embeds the type information into the stream, allowing usage with types not known in advance
+
+
+
+
+ Indicates whether this field should *repace* existing values (the default is false, meaning *append*).
+ This option only applies to list/array data.
+
+
+
+
+ Determines whether the types AsReferenceDefault value is used, or whether this member's AsReference should be used
+
+
+
+
+ Declares a member to be used in protocol-buffer serialization, using
+ the given Tag and MemberName. This allows ProtoMemberAttribute usage
+ even for partial classes where the individual members are not
+ under direct control.
+ A DataFormat may be used to optimise the serialization
+ format (for instance, using zigzag encoding for negative numbers, or
+ fixed-length encoding for large values.
+
+
+
+
+ Creates a new ProtoMemberAttribute instance.
+
+ Specifies the unique tag used to identify this member within the type.
+ Specifies the member to be serialized.
+
+
+
+ The name of the member to be serialized.
+
+
+
+
+ A stateful reader, used to read a protobuf stream. Typical usage would be (sequentially) to call
+ ReadFieldHeader and (after matching the field) an appropriate Read* method.
+
+
+
+
+ Creates a new reader against a stream
+
+ The source stream
+ The model to use for serialization; this can be null, but this will impair the ability to deserialize sub-objects
+ Additional context about this serialization operation
+
+
+
+ Creates a new reader against a stream
+
+ The source stream
+ The model to use for serialization; this can be null, but this will impair the ability to deserialize sub-objects
+ Additional context about this serialization operation
+ The number of bytes to read, or -1 to read until the end of the stream
+
+
+
+ Releases resources used by the reader, but importantly does not Dispose the
+ underlying stream; in many typical use-cases the stream is used for different
+ processes, so it is assumed that the consumer will Dispose their stream separately.
+
+
+
+
+ Reads an unsigned 32-bit integer from the stream; supported wire-types: Variant, Fixed32, Fixed64
+
+
+
+
+ Reads a signed 16-bit integer from the stream: Variant, Fixed32, Fixed64, SignedVariant
+
+
+
+
+ Reads an unsigned 16-bit integer from the stream; supported wire-types: Variant, Fixed32, Fixed64
+
+
+
+
+ Reads an unsigned 8-bit integer from the stream; supported wire-types: Variant, Fixed32, Fixed64
+
+
+
+
+ Reads a signed 8-bit integer from the stream; supported wire-types: Variant, Fixed32, Fixed64, SignedVariant
+
+
+
+
+ Reads a signed 32-bit integer from the stream; supported wire-types: Variant, Fixed32, Fixed64, SignedVariant
+
+
+
+
+ Reads a signed 64-bit integer from the stream; supported wire-types: Variant, Fixed32, Fixed64, SignedVariant
+
+
+
+
+ Reads a string from the stream (using UTF8); supported wire-types: String
+
+
+
+
+ Throws an exception indication that the given value cannot be mapped to an enum.
+
+
+
+
+ Reads a double-precision number from the stream; supported wire-types: Fixed32, Fixed64
+
+
+
+
+ Reads (merges) a sub-message from the stream, internally calling StartSubItem and EndSubItem, and (in between)
+ parsing the message in accordance with the model associated with the reader
+
+
+
+
+ Makes the end of consuming a nested message in the stream; the stream must be either at the correct EndGroup
+ marker, or all fields of the sub-message must have been consumed (in either case, this means ReadFieldHeader
+ should return zero)
+
+
+
+
+ Begins consuming a nested message in the stream; supported wire-types: StartGroup, String
+
+ The token returned must be help and used when callining EndSubItem
+
+
+
+ Reads a field header from the stream, setting the wire-type and retuning the field number. If no
+ more fields are available, then 0 is returned. This methods respects sub-messages.
+
+
+
+
+ Looks ahead to see whether the next field in the stream is what we expect
+ (typically; what we've just finished reading - for example ot read successive list items)
+
+
+
+
+ Compares the streams current wire-type to the hinted wire-type, updating the reader if necessary; for example,
+ a Variant may be updated to SignedVariant. If the hinted wire-type is unrelated then no change is made.
+
+
+
+
+ Verifies that the stream's current wire-type is as expected, or a specialized sub-type (for example,
+ SignedVariant) - in which case the current wire-type is updated. Otherwise an exception is thrown.
+
+
+
+
+ Discards the data for the current field.
+
+
+
+
+ Reads an unsigned 64-bit integer from the stream; supported wire-types: Variant, Fixed32, Fixed64
+
+
+
+
+ Reads a single-precision number from the stream; supported wire-types: Fixed32, Fixed64
+
+
+
+
+ Reads a boolean value from the stream; supported wire-types: Variant, Fixed32, Fixed64
+
+
+
+
+
+ Reads a byte-sequence from the stream, appending them to an existing byte-sequence (which can be null); supported wire-types: String
+
+
+
+
+ Reads the length-prefix of a message from a stream without buffering additional data, allowing a fixed-length
+ reader to be created.
+
+
+
+
+ Reads a little-endian encoded integer. An exception is thrown if the data is not all available.
+
+
+
+
+ Reads a big-endian encoded integer. An exception is thrown if the data is not all available.
+
+
+
+
+ Reads a varint encoded integer. An exception is thrown if the data is not all available.
+
+
+
+
+ Reads a string (of a given lenth, in bytes) directly from the source into a pre-existing buffer. An exception is thrown if the data is not all available.
+
+
+
+
+ Reads a given number of bytes directly from the source. An exception is thrown if the data is not all available.
+
+
+
+
+ Reads a string (of a given lenth, in bytes) directly from the source. An exception is thrown if the data is not all available.
+
+
+
+
+ Reads the length-prefix of a message from a stream without buffering additional data, allowing a fixed-length
+ reader to be created.
+
+
+
+ The number of bytes consumed; 0 if no data available
+
+
+
+ Copies the current field into the instance as extension data
+
+
+
+
+ Indicates whether the reader still has data remaining in the current sub-item,
+ additionally setting the wire-type for the next field if there is more data.
+ This is used when decoding packed data.
+
+
+
+
+ Utility method, not intended for public use; this helps maintain the root object is complex scenarios
+
+
+
+
+ Reads a Type from the stream, using the model's DynamicTypeFormatting if appropriate; supported wire-types: String
+
+
+
+
+ Merge two objects using the details from the current reader; this is used to change the type
+ of objects when an inheritance relationship is discovered later than usual during deserilazation.
+
+
+
+
+ Gets the number of the field being processed.
+
+
+
+
+ Indicates the underlying proto serialization format on the wire.
+
+
+
+
+ Gets / sets a flag indicating whether strings should be checked for repetition; if
+ true, any repeated UTF-8 byte sequence will result in the same String instance, rather
+ than a second instance of the same string. Enabled by default. Note that this uses
+ a custom interner - the system-wide string interner is not used.
+
+
+
+
+ Addition information about this deserialization operation.
+
+
+
+
+ Returns the position of the current reader (note that this is not necessarily the same as the position
+ in the underlying stream, if multiple readers are used on the same stream)
+
+
+
+
+ Get the TypeModel associated with this reader
+
+
+
+
+ Represents an output stream for writing protobuf data.
+
+ Why is the API backwards (static methods with writer arguments)?
+ See: http://marcgravell.blogspot.com/2010/03/last-will-be-first-and-first-will-be.html
+
+
+
+
+ Write an encapsulated sub-object, using the supplied unique key (reprasenting a type).
+
+ The object to write.
+ The key that uniquely identifies the type within the model.
+ The destination.
+
+
+
+ Write an encapsulated sub-object, using the supplied unique key (reprasenting a type) - but the
+ caller is asserting that this relationship is non-recursive; no recursion check will be
+ performed.
+
+ The object to write.
+ The key that uniquely identifies the type within the model.
+ The destination.
+
+
+
+ Writes a field-header, indicating the format of the next data we plan to write.
+
+
+
+
+ Writes a byte-array to the stream; supported wire-types: String
+
+
+
+
+ Writes a byte-array to the stream; supported wire-types: String
+
+
+
+
+ Indicates the start of a nested record.
+
+ The instance to write.
+ The destination.
+ A token representing the state of the stream; this token is given to EndSubItem.
+
+
+
+ Indicates the end of a nested record.
+
+ The token obtained from StartubItem.
+ The destination.
+
+
+
+ Creates a new writer against a stream
+
+ The destination stream
+ The model to use for serialization; this can be null, but this will impair the ability to serialize sub-objects
+ Additional context about this serialization operation
+
+
+
+ Flushes data to the underlying stream, and releases any resources. The underlying stream is *not* disposed
+ by this operation.
+
+
+
+
+ Writes any buffered data (if possible) to the underlying stream.
+
+ The writer to flush
+ It is not always possible to fully flush, since some sequences
+ may require values to be back-filled into the byte-stream.
+
+
+
+ Writes an unsigned 32-bit integer to the stream; supported wire-types: Variant, Fixed32, Fixed64
+
+
+
+
+ Writes a string to the stream; supported wire-types: String
+
+
+
+
+ Writes an unsigned 64-bit integer to the stream; supported wire-types: Variant, Fixed32, Fixed64
+
+
+
+
+ Writes a signed 64-bit integer to the stream; supported wire-types: Variant, Fixed32, Fixed64, SignedVariant
+
+
+
+
+ Writes an unsigned 16-bit integer to the stream; supported wire-types: Variant, Fixed32, Fixed64
+
+
+
+
+ Writes a signed 16-bit integer to the stream; supported wire-types: Variant, Fixed32, Fixed64, SignedVariant
+
+
+
+
+ Writes an unsigned 16-bit integer to the stream; supported wire-types: Variant, Fixed32, Fixed64
+
+
+
+
+ Writes an unsigned 8-bit integer to the stream; supported wire-types: Variant, Fixed32, Fixed64
+
+
+
+
+ Writes a signed 8-bit integer to the stream; supported wire-types: Variant, Fixed32, Fixed64, SignedVariant
+
+
+
+
+ Writes a signed 32-bit integer to the stream; supported wire-types: Variant, Fixed32, Fixed64, SignedVariant
+
+
+
+
+ Writes a double-precision number to the stream; supported wire-types: Fixed32, Fixed64
+
+
+
+
+ Writes a single-precision number to the stream; supported wire-types: Fixed32, Fixed64
+
+
+
+
+ Throws an exception indicating that the given enum cannot be mapped to a serialized value.
+
+
+
+
+ Writes a boolean to the stream; supported wire-types: Variant, Fixed32, Fixed64
+
+
+
+
+ Copies any extension data stored for the instance to the underlying stream
+
+
+
+
+ Used for packed encoding; indicates that the next field should be skipped rather than
+ a field header written. Note that the field number must match, else an exception is thrown
+ when the attempt is made to write the (incorrect) field. The wire-type is taken from the
+ subsequent call to WriteFieldHeader. Only primitive types can be packed.
+
+
+
+
+ Specifies a known root object to use during reference-tracked serialization
+
+
+
+
+ Writes a Type to the stream, using the model's DynamicTypeFormatting if appropriate; supported wire-types: String
+
+
+
+
+ Addition information about this serialization operation.
+
+
+
+
+ Get the TypeModel associated with this writer
+
+
+
+
+ Additional information about a serialization operation
+
+
+
+
+ Convert a SerializationContext to a StreamingContext
+
+
+
+
+ Convert a StreamingContext to a SerializationContext
+
+
+
+
+ Gets or sets a user-defined object containing additional information about this serialization/deserialization operation.
+
+
+
+
+ A default SerializationContext, with minimal information.
+
+
+
+
+ Gets or sets the source or destination of the transmitted data.
+
+
+
+
+ Provides protocol-buffer serialization capability for concrete, attributed types. This
+ is a *default* model, but custom serializer models are also supported.
+
+
+ Protocol-buffer serialization is a compact binary format, designed to take
+ advantage of sparse data and knowledge of specific data types; it is also
+ extensible, allowing a type to be deserialized / merged even if some data is
+ not recognised.
+
+
+
+
+ The field number that is used as a default when serializing/deserializing a list of objects.
+ The data is treated as repeated message with field number 1.
+
+
+
+
+ Suggest a .proto definition for the given type
+
+ The type to generate a .proto definition for
+ The .proto definition as a string
+
+
+
+ Create a deep clone of the supplied instance; any sub-items are also cloned.
+
+
+
+
+ Applies a protocol-buffer stream to an existing instance.
+
+ The type being merged.
+ The existing instance to be modified (can be null).
+ The binary stream to apply to the instance (cannot be null).
+ The updated instance; this may be different to the instance argument if
+ either the original instance was null, or the stream defines a known sub-type of the
+ original instance.
+
+
+
+ Creates a new instance from a protocol-buffer stream
+
+ The type to be created.
+ The binary stream to apply to the new instance (cannot be null).
+ A new, initialized instance.
+
+
+
+ Writes a protocol-buffer representation of the given instance to the supplied stream.
+
+ The existing instance to be serialized (cannot be null).
+ The destination stream to write to.
+
+
+
+ Serializes a given instance and deserializes it as a different type;
+ this can be used to translate between wire-compatible objects (where
+ two .NET types represent the same data), or to promote/demote a type
+ through an inheritance hierarchy.
+
+ No assumption of compatibility is made between the types.
+ The type of the object being copied.
+ The type of the new object to be created.
+ The existing instance to use as a template.
+ A new instane of type TNewType, with the data from TOldType.
+
+
+
+ Writes a protocol-buffer representation of the given instance to the supplied SerializationInfo.
+
+ The type being serialized.
+ The existing instance to be serialized (cannot be null).
+ The destination SerializationInfo to write to.
+
+
+
+ Writes a protocol-buffer representation of the given instance to the supplied SerializationInfo.
+
+ The type being serialized.
+ The existing instance to be serialized (cannot be null).
+ The destination SerializationInfo to write to.
+ Additional information about this serialization operation.
+
+
+
+ Writes a protocol-buffer representation of the given instance to the supplied XmlWriter.
+
+ The type being serialized.
+ The existing instance to be serialized (cannot be null).
+ The destination XmlWriter to write to.
+
+
+
+ Applies a protocol-buffer from an XmlReader to an existing instance.
+
+ The type being merged.
+ The existing instance to be modified (cannot be null).
+ The XmlReader containing the data to apply to the instance (cannot be null).
+
+
+
+ Applies a protocol-buffer from a SerializationInfo to an existing instance.
+
+ The type being merged.
+ The existing instance to be modified (cannot be null).
+ The SerializationInfo containing the data to apply to the instance (cannot be null).
+
+
+
+ Applies a protocol-buffer from a SerializationInfo to an existing instance.
+
+ The type being merged.
+ The existing instance to be modified (cannot be null).
+ The SerializationInfo containing the data to apply to the instance (cannot be null).
+ Additional information about this serialization operation.
+
+
+
+ Precompiles the serializer for a given type.
+
+
+
+
+ Creates a new IFormatter that uses protocol-buffer [de]serialization.
+
+ The type of object to be [de]deserialized by the formatter.
+ A new IFormatter to be used during [de]serialization.
+
+
+
+ Reads a sequence of consecutive length-prefixed items from a stream, using
+ either base-128 or fixed-length prefixes. Base-128 prefixes with a tag
+ are directly comparable to serializing multiple items in succession
+ (use the tag to emulate the implicit behavior
+ when serializing a list/array). When a tag is
+ specified, any records with different tags are silently omitted. The
+ tag is ignored. The tag is ignores for fixed-length prefixes.
+
+ The type of object to deserialize.
+ The binary stream containing the serialized records.
+ The prefix style used in the data.
+ The tag of records to return (if non-positive, then no tag is
+ expected and all records are returned).
+ The sequence of deserialized objects.
+
+
+
+ Creates a new instance from a protocol-buffer stream that has a length-prefix
+ on data (to assist with network IO).
+
+ The type to be created.
+ The binary stream to apply to the new instance (cannot be null).
+ How to encode the length prefix.
+ A new, initialized instance.
+
+
+
+ Creates a new instance from a protocol-buffer stream that has a length-prefix
+ on data (to assist with network IO).
+
+ The type to be created.
+ The binary stream to apply to the new instance (cannot be null).
+ How to encode the length prefix.
+ The expected tag of the item (only used with base-128 prefix style).
+ A new, initialized instance.
+
+
+
+ Applies a protocol-buffer stream to an existing instance, using length-prefixed
+ data - useful with network IO.
+
+ The type being merged.
+ The existing instance to be modified (can be null).
+ The binary stream to apply to the instance (cannot be null).
+ How to encode the length prefix.
+ The updated instance; this may be different to the instance argument if
+ either the original instance was null, or the stream defines a known sub-type of the
+ original instance.
+
+
+
+ Writes a protocol-buffer representation of the given instance to the supplied stream,
+ with a length-prefix. This is useful for socket programming,
+ as DeserializeWithLengthPrefix/MergeWithLengthPrefix can be used to read the single object back
+ from an ongoing stream.
+
+ The type being serialized.
+ The existing instance to be serialized (cannot be null).
+ How to encode the length prefix.
+ The destination stream to write to.
+
+
+
+ Writes a protocol-buffer representation of the given instance to the supplied stream,
+ with a length-prefix. This is useful for socket programming,
+ as DeserializeWithLengthPrefix/MergeWithLengthPrefix can be used to read the single object back
+ from an ongoing stream.
+
+ The type being serialized.
+ The existing instance to be serialized (cannot be null).
+ How to encode the length prefix.
+ The destination stream to write to.
+ The tag used as a prefix to each record (only used with base-128 style prefixes).
+
+
+ Indicates the number of bytes expected for the next message.
+ The stream containing the data to investigate for a length.
+ The algorithm used to encode the length.
+ The length of the message, if it could be identified.
+ True if a length could be obtained, false otherwise.
+
+
+ Indicates the number of bytes expected for the next message.
+ The buffer containing the data to investigate for a length.
+ The offset of the first byte to read from the buffer.
+ The number of bytes to read from the buffer.
+ The algorithm used to encode the length.
+ The length of the message, if it could be identified.
+ True if a length could be obtained, false otherwise.
+
+
+
+ Releases any internal buffers that have been reserved for efficiency; this does not affect any serialization
+ operations; simply: it can be used (optionally) to release the buffers for garbage collection (at the expense
+ of having to re-allocate a new buffer for the next operation, rather than re-use prior buffers).
+
+
+
+
+ Provides non-generic access to the default serializer.
+
+
+
+
+ Create a deep clone of the supplied instance; any sub-items are also cloned.
+
+
+
+
+ Writes a protocol-buffer representation of the given instance to the supplied stream.
+
+ The existing instance to be serialized (cannot be null).
+ The destination stream to write to.
+
+
+
+ Creates a new instance from a protocol-buffer stream
+
+ The type to be created.
+ The binary stream to apply to the new instance (cannot be null).
+ A new, initialized instance.
+
+
+ Applies a protocol-buffer stream to an existing instance.
+ The existing instance to be modified (cannot be null).
+ The binary stream to apply to the instance (cannot be null).
+ The updated instance
+
+
+
+ Writes a protocol-buffer representation of the given instance to the supplied stream,
+ with a length-prefix. This is useful for socket programming,
+ as DeserializeWithLengthPrefix/MergeWithLengthPrefix can be used to read the single object back
+ from an ongoing stream.
+
+ The existing instance to be serialized (cannot be null).
+ How to encode the length prefix.
+ The destination stream to write to.
+ The tag used as a prefix to each record (only used with base-128 style prefixes).
+
+
+
+ Applies a protocol-buffer stream to an existing instance (or null), using length-prefixed
+ data - useful with network IO.
+
+ The existing instance to be modified (can be null).
+ The binary stream to apply to the instance (cannot be null).
+ How to encode the length prefix.
+ Used to resolve types on a per-field basis.
+ The updated instance; this may be different to the instance argument if
+ either the original instance was null, or the stream defines a known sub-type of the
+ original instance.
+
+
+
+ Indicates whether the supplied type is explicitly modelled by the model
+
+
+
+
+ Global switches that change the behavior of protobuf-net
+
+
+
+
+
+
+
+
+
+ Maps a field-number to a type
+
+
+
+
+ Perform the steps necessary to serialize this data.
+
+ The value to be serialized.
+ The writer entity that is accumulating the output data.
+
+
+
+ Perform the steps necessary to deserialize this data.
+
+ The current value, if appropriate.
+ The reader providing the input data.
+ The updated / replacement value.
+
+
+ Emit the IL necessary to perform the given actions
+ to serialize this data.
+
+ Details and utilities for the method being generated.
+ The source of the data to work against;
+ If the value is only needed once, then LoadValue is sufficient. If
+ the value is needed multiple times, then note that a "null"
+ means "the top of the stack", in which case you should create your
+ own copy - GetLocalWithValue.
+
+
+
+ Emit the IL necessary to perform the given actions to deserialize this data.
+
+ Details and utilities for the method being generated.
+ For nested values, the instance holding the values; note
+ that this is not always provided - a null means not supplied. Since this is always
+ a variable or argument, it is not necessary to consume this value.
+
+
+
+ The type that this serializer is intended to work for.
+
+
+
+
+ Indicates whether a Read operation replaces the existing value, or
+ extends the value. If false, the "value" parameter to Read is
+ discarded, and should be passed in as null.
+
+
+
+
+ Now all Read operations return a value (although most do); if false no
+ value should be expected.
+
+
+
+
+ Uses protocol buffer serialization on the specified operation; note that this
+ must be enabled on both the client and server.
+
+
+
+
+ Configuration element to swap out DatatContractSerilaizer with the XmlProtoSerializer for a given endpoint.
+
+
+
+
+
+ Creates a new ProtoBehaviorExtension instance.
+
+
+
+
+ Creates a behavior extension based on the current configuration settings.
+
+ The behavior extension.
+
+
+
+ Gets the type of behavior.
+
+
+
+
+ Behavior to swap out DatatContractSerilaizer with the XmlProtoSerializer for a given endpoint.
+
+ Add the following to the server and client app.config in the system.serviceModel section:
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Configure your endpoints to have a behaviorConfiguration as follows:
+
+
+
+
+
+
+
+
+
+
+
+
+ Describes a WCF operation behaviour that can perform protobuf serialization
+
+
+
+
+ Create a new ProtoOperationBehavior instance
+
+
+
+
+ Creates a protobuf serializer if possible (falling back to the default WCF serializer)
+
+
+
+
+ The type-model that should be used with this behaviour
+
+
+
+
+ An xml object serializer that can embed protobuf data in a base-64 hunk (looking like a byte[])
+
+
+
+
+ Attempt to create a new serializer for the given model and type
+
+ A new serializer instance if the type is recognised by the model; null otherwise
+
+
+
+ Creates a new serializer for the given model and type
+
+
+
+
+ Ends an object in the output
+
+
+
+
+ Begins an object in the output
+
+
+
+
+ Writes the body of an object in the output
+
+
+
+
+ Indicates whether this is the start of an object we are prepared to handle
+
+
+
+
+ Reads the body of an object
+
+
+
+
+ Used to hold particulars relating to nested objects. This is opaque to the caller - simply
+ give back the token you are given at the end of an object.
+
+
+
+
+ Indicates the encoding used to represent an individual value in a protobuf stream
+
+
+
+
+ Represents an error condition
+
+
+
+
+ Base-128 variant-length encoding
+
+
+
+
+ Fixed-length 8-byte encoding
+
+
+
+
+ Length-variant-prefixed encoding
+
+
+
+
+ Indicates the start of a group
+
+
+
+
+ Indicates the end of a group
+
+
+
+
+ Fixed-length 4-byte encoding
+ 10
+
+
+
+ This is not a formal wire-type in the "protocol buffers" spec, but
+ denotes a variant integer that should be interpreted using
+ zig-zag semantics (so -ve numbers aren't a significant overhead)
+
+
+
+
diff --git a/packages/protobuf-net.2.0.0.668/lib/netcore45/protobuf-net.XML b/packages/protobuf-net.2.0.0.668/lib/netcore45/protobuf-net.XML
new file mode 100644
index 000000000..e2507cb3a
--- /dev/null
+++ b/packages/protobuf-net.2.0.0.668/lib/netcore45/protobuf-net.XML
@@ -0,0 +1,2539 @@
+
+
+
+ protobuf-net
+
+
+
+
+ Provides support for common .NET types that do not have a direct representation
+ in protobuf, using the definitions from bcl.proto
+
+
+
+
+ Creates a new instance of the specified type, bypassing the constructor.
+
+ The type to create
+ The new instance
+ If the platform does not support constructor-skipping
+
+
+
+ Writes a TimeSpan to a protobuf stream
+
+
+
+
+ Parses a TimeSpan from a protobuf stream
+
+
+
+
+ Parses a DateTime from a protobuf stream
+
+
+
+
+ Writes a DateTime to a protobuf stream
+
+
+
+
+ Parses a decimal from a protobuf stream
+
+
+
+
+ Writes a decimal to a protobuf stream
+
+
+
+
+ Writes a Guid to a protobuf stream
+
+
+
+
+ Parses a Guid from a protobuf stream
+
+
+
+
+ Reads an *implementation specific* bundled .NET object, including (as options) type-metadata, identity/re-use, etc.
+
+
+
+
+ Writes an *implementation specific* bundled .NET object, including (as options) type-metadata, identity/re-use, etc.
+
+
+
+
+ Optional behaviours that introduce .NET-specific functionality
+
+
+
+
+ No special behaviour
+
+
+
+
+ Enables full object-tracking/full-graph support.
+
+
+
+
+ Embeds the type information into the stream, allowing usage with types not known in advance.
+
+
+
+
+ If false, the constructor for the type is bypassed during deserialization, meaning any field initializers
+ or other initialization code is skipped.
+
+
+
+
+ Should the object index be reserved, rather than creating an object promptly
+
+
+
+
+ Provides a simple buffer-based implementation of an extension object.
+
+
+
+
+ Provides addition capability for supporting unexpected fields during
+ protocol-buffer serialization/deserialization. This allows for loss-less
+ round-trip/merge, even when the data is not fully understood.
+
+
+
+
+ Requests a stream into which any unexpected fields can be persisted.
+
+ A new stream suitable for storing data.
+
+
+
+ Indicates that all unexpected fields have now been stored. The
+ implementing class is responsible for closing the stream. If
+ "commit" is not true the data may be discarded.
+
+ The stream originally obtained by BeginAppend.
+ True if the append operation completed successfully.
+
+
+
+ Requests a stream of the unexpected fields previously stored.
+
+ A prepared stream of the unexpected fields.
+
+
+
+ Indicates that all unexpected fields have now been read. The
+ implementing class is responsible for closing the stream.
+
+ The stream originally obtained by BeginQuery.
+
+
+
+ Requests the length of the raw binary stream; this is used
+ when serializing sub-entities to indicate the expected size.
+
+ The length of the binary stream representing unexpected data.
+
+
+ Specifies a method on the root-contract in an hierarchy to be invoked before serialization.
+
+
+ Specifies a method on the root-contract in an hierarchy to be invoked after serialization.
+
+
+ Specifies a method on the root-contract in an hierarchy to be invoked before deserialization.
+
+
+ Specifies a method on the root-contract in an hierarchy to be invoked after deserialization.
+
+
+
+ Sub-format to use when serializing/deserializing data
+
+
+
+
+ Uses the default encoding for the data-type.
+
+
+
+
+ When applied to signed integer-based data (including Decimal), this
+ indicates that zigzag variant encoding will be used. This means that values
+ with small magnitude (regardless of sign) take a small amount
+ of space to encode.
+
+
+
+
+ When applied to signed integer-based data (including Decimal), this
+ indicates that two's-complement variant encoding will be used.
+ This means that any -ve number will take 10 bytes (even for 32-bit),
+ so should only be used for compatibility.
+
+
+
+
+ When applied to signed integer-based data (including Decimal), this
+ indicates that a fixed amount of space will be used.
+
+
+
+
+ When applied to a sub-message, indicates that the value should be treated
+ as group-delimited.
+
+
+
+
+ Simple base class for supporting unexpected fields allowing
+ for loss-less round-tips/merge, even if the data is not understod.
+ The additional fields are (by default) stored in-memory in a buffer.
+
+ As an example of an alternative implementation, you might
+ choose to use the file system (temporary files) as the back-end, tracking
+ only the paths [such an object would ideally be IDisposable and use
+ a finalizer to ensure that the files are removed].
+
+
+
+
+ Indicates that the implementing type has support for protocol-buffer
+ extensions.
+
+ Can be implemented by deriving from Extensible.
+
+
+
+ Retrieves the extension object for the current
+ instance, optionally creating it if it does not already exist.
+
+ Should a new extension object be
+ created if it does not already exist?
+ The extension object if it exists (or was created), or null
+ if the extension object does not exist or is not available.
+ The createIfMissing argument is false during serialization,
+ and true during deserialization upon encountering unexpected fields.
+
+
+
+ Retrieves the extension object for the current
+ instance, optionally creating it if it does not already exist.
+
+ Should a new extension object be
+ created if it does not already exist?
+ The extension object if it exists (or was created), or null
+ if the extension object does not exist or is not available.
+ The createIfMissing argument is false during serialization,
+ and true during deserialization upon encountering unexpected fields.
+
+
+
+ Provides a simple, default implementation for extension support,
+ optionally creating it if it does not already exist. Designed to be called by
+ classes implementing .
+
+ Should a new extension object be
+ created if it does not already exist?
+ The extension field to check (and possibly update).
+ The extension object if it exists (or was created), or null
+ if the extension object does not exist or is not available.
+ The createIfMissing argument is false during serialization,
+ and true during deserialization upon encountering unexpected fields.
+
+
+
+ Appends the value as an additional (unexpected) data-field for the instance.
+ Note that for non-repeated sub-objects, this equates to a merge operation;
+ for repeated sub-objects this adds a new instance to the set; for simple
+ values the new value supercedes the old value.
+
+ Note that appending a value does not remove the old value from
+ the stream; avoid repeatedly appending values for the same field.
+ The type of the value to append.
+ The extensible object to append the value to.
+ The field identifier; the tag should not be defined as a known data-field for the instance.
+ The value to append.
+
+
+
+ Appends the value as an additional (unexpected) data-field for the instance.
+ Note that for non-repeated sub-objects, this equates to a merge operation;
+ for repeated sub-objects this adds a new instance to the set; for simple
+ values the new value supercedes the old value.
+
+ Note that appending a value does not remove the old value from
+ the stream; avoid repeatedly appending values for the same field.
+ The data-type of the field.
+ The data-format to use when encoding the value.
+ The extensible object to append the value to.
+ The field identifier; the tag should not be defined as a known data-field for the instance.
+ The value to append.
+
+
+
+ Queries an extensible object for an additional (unexpected) data-field for the instance.
+ The value returned is the composed value after merging any duplicated content; if the
+ value is "repeated" (a list), then use GetValues instead.
+
+ The data-type of the field.
+ The extensible object to obtain the value from.
+ The field identifier; the tag should not be defined as a known data-field for the instance.
+ The effective value of the field, or the default value if not found.
+
+
+
+ Queries an extensible object for an additional (unexpected) data-field for the instance.
+ The value returned is the composed value after merging any duplicated content; if the
+ value is "repeated" (a list), then use GetValues instead.
+
+ The data-type of the field.
+ The extensible object to obtain the value from.
+ The field identifier; the tag should not be defined as a known data-field for the instance.
+ The data-format to use when decoding the value.
+ The effective value of the field, or the default value if not found.
+
+
+
+ Queries an extensible object for an additional (unexpected) data-field for the instance.
+ The value returned (in "value") is the composed value after merging any duplicated content;
+ if the value is "repeated" (a list), then use GetValues instead.
+
+ The data-type of the field.
+ The effective value of the field, or the default value if not found.
+ The extensible object to obtain the value from.
+ The field identifier; the tag should not be defined as a known data-field for the instance.
+ True if data for the field was present, false otherwise.
+
+
+
+ Queries an extensible object for an additional (unexpected) data-field for the instance.
+ The value returned (in "value") is the composed value after merging any duplicated content;
+ if the value is "repeated" (a list), then use GetValues instead.
+
+ The data-type of the field.
+ The effective value of the field, or the default value if not found.
+ The extensible object to obtain the value from.
+ The field identifier; the tag should not be defined as a known data-field for the instance.
+ The data-format to use when decoding the value.
+ True if data for the field was present, false otherwise.
+
+
+
+ Queries an extensible object for an additional (unexpected) data-field for the instance.
+ The value returned (in "value") is the composed value after merging any duplicated content;
+ if the value is "repeated" (a list), then use GetValues instead.
+
+ The data-type of the field.
+ The effective value of the field, or the default value if not found.
+ The extensible object to obtain the value from.
+ The field identifier; the tag should not be defined as a known data-field for the instance.
+ The data-format to use when decoding the value.
+ Allow tags that are present as part of the definition; for example, to query unknown enum values.
+ True if data for the field was present, false otherwise.
+
+
+
+ Queries an extensible object for an additional (unexpected) data-field for the instance.
+ Each occurrence of the field is yielded separately, making this usage suitable for "repeated"
+ (list) fields.
+
+ The extended data is processed lazily as the enumerator is iterated.
+ The data-type of the field.
+ The extensible object to obtain the value from.
+ The field identifier; the tag should not be defined as a known data-field for the instance.
+ An enumerator that yields each occurrence of the field.
+
+
+
+ Queries an extensible object for an additional (unexpected) data-field for the instance.
+ Each occurrence of the field is yielded separately, making this usage suitable for "repeated"
+ (list) fields.
+
+ The extended data is processed lazily as the enumerator is iterated.
+ The data-type of the field.
+ The extensible object to obtain the value from.
+ The field identifier; the tag should not be defined as a known data-field for the instance.
+ The data-format to use when decoding the value.
+ An enumerator that yields each occurrence of the field.
+
+
+
+ Queries an extensible object for an additional (unexpected) data-field for the instance.
+ The value returned (in "value") is the composed value after merging any duplicated content;
+ if the value is "repeated" (a list), then use GetValues instead.
+
+ The data-type of the field.
+ The model to use for configuration.
+ The effective value of the field, or the default value if not found.
+ The extensible object to obtain the value from.
+ The field identifier; the tag should not be defined as a known data-field for the instance.
+ The data-format to use when decoding the value.
+ Allow tags that are present as part of the definition; for example, to query unknown enum values.
+ True if data for the field was present, false otherwise.
+
+
+
+ Queries an extensible object for an additional (unexpected) data-field for the instance.
+ Each occurrence of the field is yielded separately, making this usage suitable for "repeated"
+ (list) fields.
+
+ The extended data is processed lazily as the enumerator is iterated.
+ The model to use for configuration.
+ The data-type of the field.
+ The extensible object to obtain the value from.
+ The field identifier; the tag should not be defined as a known data-field for the instance.
+ The data-format to use when decoding the value.
+ An enumerator that yields each occurrence of the field.
+
+
+
+ Appends the value as an additional (unexpected) data-field for the instance.
+ Note that for non-repeated sub-objects, this equates to a merge operation;
+ for repeated sub-objects this adds a new instance to the set; for simple
+ values the new value supercedes the old value.
+
+ Note that appending a value does not remove the old value from
+ the stream; avoid repeatedly appending values for the same field.
+ The model to use for configuration.
+ The data-format to use when encoding the value.
+ The extensible object to append the value to.
+ The field identifier; the tag should not be defined as a known data-field for the instance.
+ The value to append.
+
+
+
+ This class acts as an internal wrapper allowing us to do a dynamic
+ methodinfo invoke; an't put into Serializer as don't want on public
+ API; can't put into Serializer<T> since we need to invoke
+ accross classes, which isn't allowed in Silverlight)
+
+
+
+
+ All this does is call GetExtendedValuesTyped with the correct type for "instance";
+ this ensures that we don't get issues with subclasses declaring conflicting types -
+ the caller must respect the fields defined for the type they pass in.
+
+
+
+
+ All this does is call GetExtendedValuesTyped with the correct type for "instance";
+ this ensures that we don't get issues with subclasses declaring conflicting types -
+ the caller must respect the fields defined for the type they pass in.
+
+
+
+
+ Not all frameworks are created equal (fx1.1 vs fx2.0,
+ micro-framework, compact-framework,
+ silverlight, etc). This class simply wraps up a few things that would
+ otherwise make the real code unnecessarily messy, providing fallback
+ implementations if necessary.
+
+
+
+
+ Intended to be a direct map to regular TypeCode, but:
+ - with missing types
+ - existing on WinRT
+
+
+
+
+ Specifies the method used to infer field tags for members of the type
+ under consideration. Tags are deduced using the invariant alphabetic
+ sequence of the members' names; this makes implicit field tags very brittle,
+ and susceptible to changes such as field names (normally an isolated
+ change).
+
+
+
+
+ No members are serialized implicitly; all members require a suitable
+ attribute such as [ProtoMember]. This is the recmomended mode for
+ most scenarios.
+
+
+
+
+ Public properties and fields are eligible for implicit serialization;
+ this treats the public API as a contract. Ordering beings from ImplicitFirstTag.
+
+
+
+
+ Public and non-public fields are eligible for implicit serialization;
+ this acts as a state/implementation serializer. Ordering beings from ImplicitFirstTag.
+
+
+
+
+ Represents the set of serialization callbacks to be used when serializing/deserializing a type.
+
+
+
+ Called before serializing an instance
+
+
+ Called before deserializing an instance
+
+
+ Called after serializing an instance
+
+
+ Called after deserializing an instance
+
+
+
+ True if any callback is set, else False
+
+
+
+
+ Represents a type at runtime for use with protobuf, allowing the field mappings (etc) to be defined
+
+
+
+
+ Get the name of the type being represented
+
+
+
+
+ Adds a known sub-type to the inheritance model
+
+
+
+
+ Adds a known sub-type to the inheritance model
+
+
+
+
+ Assigns the callbacks to use during serialiation/deserialization.
+
+ The method (or null) called before serialization begins.
+ The method (or null) called when serialization is complete.
+ The method (or null) called before deserialization begins (or when a new instance is created during deserialization).
+ The method (or null) called when deserialization is complete.
+ The set of callbacks.
+
+
+
+ Assigns the callbacks to use during serialiation/deserialization.
+
+ The name of the method (or null) called before serialization begins.
+ The name of the method (or null) called when serialization is complete.
+ The name of the method (or null) called before deserialization begins (or when a new instance is created during deserialization).
+ The name of the method (or null) called when deserialization is complete.
+ The set of callbacks.
+
+
+
+ Designate a factory-method to use to create instances of this type
+
+
+
+
+ Designate a factory-method to use to create instances of this type
+
+
+
+
+ Throws an exception if the type has been made immutable
+
+
+
+
+ Adds a member (by name) to the MetaType
+
+
+
+
+ Adds a member (by name) to the MetaType, returning the ValueMember rather than the fluent API.
+ This is otherwise identical to Add.
+
+
+
+
+ Adds a member (by name) to the MetaType
+
+
+
+
+ Performs serialization of this type via a surrogate; all
+ other serialization options are ignored and handled
+ by the surrogate's configuration.
+
+
+
+
+ Adds a set of members (by name) to the MetaType
+
+
+
+
+ Adds a member (by name) to the MetaType
+
+
+
+
+ Adds a member (by name) to the MetaType, including an itemType and defaultType for representing lists
+
+
+
+
+ Adds a member (by name) to the MetaType, including an itemType and defaultType for representing lists, returning the ValueMember rather than the fluent API.
+ This is otherwise identical to Add.
+
+
+
+
+ Returns the ValueMember instances associated with this type
+
+
+
+
+ Returns the SubType instances associated with this type
+
+
+
+
+ Gets the base-type for this type
+
+
+
+
+ When used to compile a model, should public serialization/deserialzation methods
+ be included for this type?
+
+
+
+
+ Should this type be treated as a reference by default?
+
+
+
+
+ Indicates whether the current type has defined callbacks
+
+
+
+
+ Indicates whether the current type has defined subtypes
+
+
+
+
+ Returns the set of callbacks defined for this type
+
+
+
+
+ Gets or sets the name of this contract.
+
+
+
+
+ The runtime type that the meta-type represents
+
+
+
+
+ Gets or sets whether the type should use a parameterless constructor (the default),
+ or whether the type should skip the constructor completely. This option is not supported
+ on compact-framework.
+
+
+
+
+ The concrete type to create when a new instance of this type is needed; this may be useful when dealing
+ with dynamic proxies, or with interface-based APIs
+
+
+
+
+ Returns the ValueMember that matchs a given field number, or null if not found
+
+
+
+
+ Returns the ValueMember that matchs a given member (property/field), or null if not found
+
+
+
+
+ Gets or sets a value indicating that an enum should be treated directly as an int/short/etc, rather
+ than enforcing .proto enum rules. This is useful *in particul* for [Flags] enums.
+
+
+
+
+ Gets or sets a value indicating that this type should NOT be treated as a list, even if it has
+ familiar list-like characteristics (enumerable, add, etc)
+
+
+
+
+ Provides protobuf serialization support for a number of types that can be defined at runtime
+
+
+
+
+ Provides protobuf serialization support for a number of types
+
+
+
+
+ Resolve a System.Type to the compiler-specific type
+
+
+
+
+ Resolve a System.Type to the compiler-specific type
+
+
+
+
+ This is the more "complete" version of Serialize, which handles single instances of mapped types.
+ The value is written as a complete field, including field-header and (for sub-objects) a
+ length-prefix
+ In addition to that, this provides support for:
+ - basic values; individual int / string / Guid / etc
+ - IEnumerable sequences of any type handled by TrySerializeAuxiliaryType
+
+
+
+
+
+ Writes a protocol-buffer representation of the given instance to the supplied stream.
+
+ The existing instance to be serialized (cannot be null).
+ The destination stream to write to.
+
+
+
+ Writes a protocol-buffer representation of the given instance to the supplied stream.
+
+ The existing instance to be serialized (cannot be null).
+ The destination stream to write to.
+ Additional information about this serialization operation.
+
+
+
+ Writes a protocol-buffer representation of the given instance to the supplied writer.
+
+ The existing instance to be serialized (cannot be null).
+ The destination writer to write to.
+
+
+
+ Applies a protocol-buffer stream to an existing instance (or null), using length-prefixed
+ data - useful with network IO.
+
+ The type being merged.
+ The existing instance to be modified (can be null).
+ The binary stream to apply to the instance (cannot be null).
+ How to encode the length prefix.
+ The tag used as a prefix to each record (only used with base-128 style prefixes).
+ The updated instance; this may be different to the instance argument if
+ either the original instance was null, or the stream defines a known sub-type of the
+ original instance.
+
+
+
+ Applies a protocol-buffer stream to an existing instance (or null), using length-prefixed
+ data - useful with network IO.
+
+ The type being merged.
+ The existing instance to be modified (can be null).
+ The binary stream to apply to the instance (cannot be null).
+ How to encode the length prefix.
+ The tag used as a prefix to each record (only used with base-128 style prefixes).
+ Used to resolve types on a per-field basis.
+ The updated instance; this may be different to the instance argument if
+ either the original instance was null, or the stream defines a known sub-type of the
+ original instance.
+
+
+
+ Applies a protocol-buffer stream to an existing instance (or null), using length-prefixed
+ data - useful with network IO.
+
+ The type being merged.
+ The existing instance to be modified (can be null).
+ The binary stream to apply to the instance (cannot be null).
+ How to encode the length prefix.
+ The tag used as a prefix to each record (only used with base-128 style prefixes).
+ Used to resolve types on a per-field basis.
+ Returns the number of bytes consumed by this operation (includes length-prefix overheads and any skipped data).
+ The updated instance; this may be different to the instance argument if
+ either the original instance was null, or the stream defines a known sub-type of the
+ original instance.
+
+
+
+ Reads a sequence of consecutive length-prefixed items from a stream, using
+ either base-128 or fixed-length prefixes. Base-128 prefixes with a tag
+ are directly comparable to serializing multiple items in succession
+ (use the tag to emulate the implicit behavior
+ when serializing a list/array). When a tag is
+ specified, any records with different tags are silently omitted. The
+ tag is ignored. The tag is ignores for fixed-length prefixes.
+
+ The binary stream containing the serialized records.
+ The prefix style used in the data.
+ The tag of records to return (if non-positive, then no tag is
+ expected and all records are returned).
+ On a field-by-field basis, the type of object to deserialize (can be null if "type" is specified).
+ The type of object to deserialize (can be null if "resolver" is specified).
+ The sequence of deserialized objects.
+
+
+
+ Reads a sequence of consecutive length-prefixed items from a stream, using
+ either base-128 or fixed-length prefixes. Base-128 prefixes with a tag
+ are directly comparable to serializing multiple items in succession
+ (use the tag to emulate the implicit behavior
+ when serializing a list/array). When a tag is
+ specified, any records with different tags are silently omitted. The
+ tag is ignored. The tag is ignores for fixed-length prefixes.
+
+ The binary stream containing the serialized records.
+ The prefix style used in the data.
+ The tag of records to return (if non-positive, then no tag is
+ expected and all records are returned).
+ On a field-by-field basis, the type of object to deserialize (can be null if "type" is specified).
+ The type of object to deserialize (can be null if "resolver" is specified).
+ The sequence of deserialized objects.
+ Additional information about this serialization operation.
+
+
+
+ Reads a sequence of consecutive length-prefixed items from a stream, using
+ either base-128 or fixed-length prefixes. Base-128 prefixes with a tag
+ are directly comparable to serializing multiple items in succession
+ (use the tag to emulate the implicit behavior
+ when serializing a list/array). When a tag is
+ specified, any records with different tags are silently omitted. The
+ tag is ignored. The tag is ignores for fixed-length prefixes.
+
+ The type of object to deserialize.
+ The binary stream containing the serialized records.
+ The prefix style used in the data.
+ The tag of records to return (if non-positive, then no tag is
+ expected and all records are returned).
+ The sequence of deserialized objects.
+
+
+
+ Reads a sequence of consecutive length-prefixed items from a stream, using
+ either base-128 or fixed-length prefixes. Base-128 prefixes with a tag
+ are directly comparable to serializing multiple items in succession
+ (use the tag to emulate the implicit behavior
+ when serializing a list/array). When a tag is
+ specified, any records with different tags are silently omitted. The
+ tag is ignored. The tag is ignores for fixed-length prefixes.
+
+ The type of object to deserialize.
+ The binary stream containing the serialized records.
+ The prefix style used in the data.
+ The tag of records to return (if non-positive, then no tag is
+ expected and all records are returned).
+ The sequence of deserialized objects.
+ Additional information about this serialization operation.
+
+
+
+ Writes a protocol-buffer representation of the given instance to the supplied stream,
+ with a length-prefix. This is useful for socket programming,
+ as DeserializeWithLengthPrefix can be used to read the single object back
+ from an ongoing stream.
+
+ The type being serialized.
+ The existing instance to be serialized (cannot be null).
+ How to encode the length prefix.
+ The destination stream to write to.
+ The tag used as a prefix to each record (only used with base-128 style prefixes).
+
+
+
+ Writes a protocol-buffer representation of the given instance to the supplied stream,
+ with a length-prefix. This is useful for socket programming,
+ as DeserializeWithLengthPrefix can be used to read the single object back
+ from an ongoing stream.
+
+ The type being serialized.
+ The existing instance to be serialized (cannot be null).
+ How to encode the length prefix.
+ The destination stream to write to.
+ The tag used as a prefix to each record (only used with base-128 style prefixes).
+ Additional information about this serialization operation.
+
+
+
+ Applies a protocol-buffer stream to an existing instance (which may be null).
+
+ The type (including inheritance) to consider.
+ The existing instance to be modified (can be null).
+ The binary stream to apply to the instance (cannot be null).
+ The updated instance; this may be different to the instance argument if
+ either the original instance was null, or the stream defines a known sub-type of the
+ original instance.
+
+
+
+ Applies a protocol-buffer stream to an existing instance (which may be null).
+
+ The type (including inheritance) to consider.
+ The existing instance to be modified (can be null).
+ The binary stream to apply to the instance (cannot be null).
+ The updated instance; this may be different to the instance argument if
+ either the original instance was null, or the stream defines a known sub-type of the
+ original instance.
+ Additional information about this serialization operation.
+
+
+
+ Applies a protocol-buffer stream to an existing instance (which may be null).
+
+ The type (including inheritance) to consider.
+ The existing instance to be modified (can be null).
+ The binary stream to apply to the instance (cannot be null).
+ The number of bytes to consume.
+ The updated instance; this may be different to the instance argument if
+ either the original instance was null, or the stream defines a known sub-type of the
+ original instance.
+
+
+
+ Applies a protocol-buffer stream to an existing instance (which may be null).
+
+ The type (including inheritance) to consider.
+ The existing instance to be modified (can be null).
+ The binary stream to apply to the instance (cannot be null).
+ The number of bytes to consume (or -1 to read to the end of the stream).
+ The updated instance; this may be different to the instance argument if
+ either the original instance was null, or the stream defines a known sub-type of the
+ original instance.
+ Additional information about this serialization operation.
+
+
+
+ Applies a protocol-buffer reader to an existing instance (which may be null).
+
+ The type (including inheritance) to consider.
+ The existing instance to be modified (can be null).
+ The reader to apply to the instance (cannot be null).
+ The updated instance; this may be different to the instance argument if
+ either the original instance was null, or the stream defines a known sub-type of the
+ original instance.
+
+
+
+ This is the more "complete" version of Deserialize, which handles single instances of mapped types.
+ The value is read as a complete field, including field-header and (for sub-objects) a
+ length-prefix..kmc
+
+ In addition to that, this provides support for:
+ - basic values; individual int / string / Guid / etc
+ - IList sets of any type handled by TryDeserializeAuxiliaryType
+
+
+
+
+ Creates a new runtime model, to which the caller
+ can add support for a range of types. A model
+ can be used "as is", or can be compiled for
+ optimal performance.
+
+
+
+
+ Applies common proxy scenarios, resolving the actual type to consider
+
+
+
+
+ Indicates whether the supplied type is explicitly modelled by the model
+
+
+
+
+ Provides the key that represents a given type in the current model.
+ The type is also normalized for proxies at the same time.
+
+
+
+
+ Provides the key that represents a given type in the current model.
+
+
+
+
+ Writes a protocol-buffer representation of the given instance to the supplied stream.
+
+ Represents the type (including inheritance) to consider.
+ The existing instance to be serialized (cannot be null).
+ The destination stream to write to.
+
+
+
+ Applies a protocol-buffer stream to an existing instance (which may be null).
+
+ Represents the type (including inheritance) to consider.
+ The existing instance to be modified (can be null).
+ The binary stream to apply to the instance (cannot be null).
+ The updated instance; this may be different to the instance argument if
+ either the original instance was null, or the stream defines a known sub-type of the
+ original instance.
+
+
+
+ Create a deep clone of the supplied instance; any sub-items are also cloned.
+
+
+
+
+ Indicates that while an inheritance tree exists, the exact type encountered was not
+ specified in that hierarchy and cannot be processed.
+
+
+
+
+ Indicates that the given type was not expected, and cannot be processed.
+
+
+
+
+ Indicates that the given type cannot be constructed; it may still be possible to
+ deserialize into existing instances.
+
+
+
+
+ Returns true if the type supplied is either a recognised contract type,
+ or a *list* of a recognised contract type.
+
+ Note that primitives always return false, even though the engine
+ will, if forced, try to serialize such
+ True if this type is recognised as a serializable entity, else false
+
+
+
+ Returns true if the type supplied is a basic type with inbuilt handling,
+ a recognised contract type, or a *list* of a basic / contract type.
+
+
+
+
+ Returns true if the type supplied is a basic type with inbuilt handling,
+ or a *list* of a basic type with inbuilt handling
+
+
+
+
+ Suggest a .proto definition for the given type
+
+ The type to generate a .proto definition for, or null to generate a .proto that represents the entire model
+ The .proto definition as a string
+
+
+
+ Used to provide custom services for writing and parsing type names when using dynamic types. Both parsing and formatting
+ are provided on a single API as it is essential that both are mapped identically at all times.
+
+
+
+
+ Indicates the type of callback to be used
+
+
+
+
+ Invoked before an object is serialized
+
+
+
+
+ Invoked after an object is serialized
+
+
+
+
+ Invoked before an object is deserialized (or when a new instance is created)
+
+
+
+
+ Invoked after an object is deserialized
+
+
+
+
+ Returns a sequence of the Type instances that can be
+ processed by this model.
+
+
+
+
+ Suggest a .proto definition for the given type
+
+ The type to generate a .proto definition for, or null to generate a .proto that represents the entire model
+ The .proto definition as a string
+
+
+
+ Adds support for an additional type in this model, optionally
+ appplying inbuilt patterns. If the type is already known to the
+ model, the existing type is returned **without** applying
+ any additional behaviour.
+
+ Inbuilt patterns include:
+ [ProtoContract]/[ProtoMember(n)]
+ [DataContract]/[DataMember(Order=n)]
+ [XmlType]/[XmlElement(Order=n)]
+ [On{Des|S}erializ{ing|ed}]
+ ShouldSerialize*/*Specified
+
+ The type to be supported
+ Whether to apply the inbuilt configuration patterns (via attributes etc), or
+ just add the type with no additional configuration (the type must then be manually configured).
+ The MetaType representing this type, allowing
+ further configuration.
+
+
+
+ Verifies that the model is still open to changes; if not, an exception is thrown
+
+
+
+
+ Prevents further changes to this model
+
+
+
+
+ Provides the key that represents a given type in the current model.
+
+
+
+
+ Writes a protocol-buffer representation of the given instance to the supplied stream.
+
+ Represents the type (including inheritance) to consider.
+ The existing instance to be serialized (cannot be null).
+ The destination stream to write to.
+
+
+
+ Applies a protocol-buffer stream to an existing instance (which may be null).
+
+ Represents the type (including inheritance) to consider.
+ The existing instance to be modified (can be null).
+ The binary stream to apply to the instance (cannot be null).
+ The updated instance; this may be different to the instance argument if
+ either the original instance was null, or the stream defines a known sub-type of the
+ original instance.
+
+
+
+ Designate a factory-method to use to create instances of any type; note that this only affect types seen by the serializer *after* setting the factory.
+
+
+
+
+ Global default that
+ enables/disables automatic tag generation based on the existing name / order
+ of the defined members. See
+ for usage and important warning / explanation.
+ You must set the global default before attempting to serialize/deserialize any
+ impacted type.
+
+
+
+
+ Global default that determines whether types are considered serializable
+ if they have [DataContract] / [XmlType]. With this enabled, ONLY
+ types marked as [ProtoContract] are added automatically.
+
+
+
+
+ Global switch that enables or disables the implicit
+ handling of "zero defaults"; meanning: if no other default is specified,
+ it assumes bools always default to false, integers to zero, etc.
+
+ If this is disabled, no such assumptions are made and only *explicit*
+ default values are processed. This is enabled by default to
+ preserve similar logic to v1.
+
+
+
+
+ Global switch that determines whether types with a .ToString() and a Parse(string)
+ should be serialized as strings.
+
+
+
+
+ The default model, used to support ProtoBuf.Serializer
+
+
+
+
+ Obtains the MetaType associated with a given Type for the current model,
+ allowing additional configuration.
+
+
+
+
+ Should support for unexpected types be added automatically?
+ If false, an exception is thrown when unexpected types
+ are encountered.
+
+
+
+
+ The amount of time to wait if there are concurrent metadata access operations
+
+
+
+
+ If a lock-contention is detected, this event signals the *owner* of the lock responsible for the blockage, indicating
+ what caused the problem; this is only raised if the lock-owning code successfully completes.
+
+
+
+
+ Contains the stack-trace of the owning code when a lock-contention scenario is detected
+
+
+
+
+ The stack-trace of the code that owned the lock when a lock-contention scenario occurred
+
+
+
+
+ Event-type that is raised when a lock-contention scenario is detected
+
+
+
+
+ Represents an inherited type in a type hierarchy.
+
+
+
+
+ Creates a new SubType instance.
+
+ The field-number that is used to encapsulate the data (as a nested
+ message) for the derived dype.
+ The sub-type to be considered.
+ Specific encoding style to use; in particular, Grouped can be used to avoid buffering, but is not the default.
+
+
+
+ The field-number that is used to encapsulate the data (as a nested
+ message) for the derived dype.
+
+
+
+
+ The sub-type to be considered.
+
+
+
+
+ Event arguments needed to perform type-formatting functions; this could be resolving a Type to a string suitable for serialization, or could
+ be requesting a Type from a string. If no changes are made, a default implementation will be used (from the assembly-qualified names).
+
+
+
+
+ The type involved in this map; if this is initially null, a Type is expected to be provided for the string in FormattedName.
+
+
+
+
+ The formatted-name involved in this map; if this is initially null, a formatted-name is expected from the type in Type.
+
+
+
+
+ Delegate type used to perform type-formatting functions; the sender originates as the type-model.
+
+
+
+
+ Represents a member (property/field) that is mapped to a protobuf field
+
+
+
+
+ Creates a new ValueMember instance
+
+
+
+
+ Creates a new ValueMember instance
+
+
+
+
+ Specifies methods for working with optional data members.
+
+ Provides a method (null for none) to query whether this member should
+ be serialized; it must be of the form "bool {Method}()". The member is only serialized if the
+ method returns true.
+ Provides a method (null for none) to indicate that a member was
+ deserialized; it must be of the form "void {Method}(bool)", and will be called with "true"
+ when data is found.
+
+
+
+ The number that identifies this member in a protobuf stream
+
+
+
+
+ Gets the member (field/property) which this member relates to.
+
+
+
+
+ Within a list / array / etc, the type of object for each item in the list (especially useful with ArrayList)
+
+
+
+
+ The underlying type of the member
+
+
+
+
+ For abstract types (IList etc), the type of concrete object to create (if required)
+
+
+
+
+ The type the defines the member
+
+
+
+
+ The default value of the item (members with this value will not be serialized)
+
+
+
+
+ Specifies the rules used to process the field; this is used to determine the most appropriate
+ wite-type, but also to describe subtypes within that wire-type (such as SignedVariant)
+
+
+
+
+ Indicates whether this field should follow strict encoding rules; this means (for example) that if a "fixed32"
+ is encountered when "variant" is defined, then it will fail (throw an exception) when parsing. Note that
+ when serializing the defined type is always used.
+
+
+
+
+ Indicates whether this field should use packed encoding (which can save lots of space for repeated primitive values).
+ This option only applies to list/array data of primitive types (int, double, etc).
+
+
+
+
+ Indicates whether this field should *repace* existing values (the default is false, meaning *append*).
+ This option only applies to list/array data.
+
+
+
+
+ Indicates whether this field is mandatory.
+
+
+
+
+ Enables full object-tracking/full-graph support.
+
+
+
+
+ Embeds the type information into the stream, allowing usage with types not known in advance.
+
+
+
+
+ Gets the logical name for this member in the schema (this is not critical for binary serialization, but may be used
+ when inferring a schema).
+
+
+
+
+ Should lists have extended support for null values? Note this makes the serialization less efficient.
+
+
+
+
+ Specifies the type of prefix that should be applied to messages.
+
+
+
+
+ No length prefix is applied to the data; the data is terminated only be the end of the stream.
+
+
+
+
+ A base-128 length prefix is applied to the data (efficient for short messages).
+
+
+
+
+ A fixed-length (little-endian) length prefix is applied to the data (useful for compatibility).
+
+
+
+
+ A fixed-length (big-endian) length prefix is applied to the data (useful for compatibility).
+
+
+
+
+ Indicates that a type is defined for protocol-buffer serialization.
+
+
+
+
+ Gets or sets the defined name of the type.
+
+
+
+
+ Gets or sets the fist offset to use with implicit field tags;
+ only uesd if ImplicitFields is set.
+
+
+
+
+ If specified, alternative contract markers (such as markers for XmlSerailizer or DataContractSerializer) are ignored.
+
+
+
+
+ If specified, do NOT treat this type as a list, even if it looks like one.
+
+
+
+
+ Gets or sets the mechanism used to automatically infer field tags
+ for members. This option should be used in advanced scenarios only.
+ Please review the important notes against the ImplicitFields enumeration.
+
+
+
+
+ Enables/disables automatic tag generation based on the existing name / order
+ of the defined members. This option is not used for members marked
+ with ProtoMemberAttribute, as intended to provide compatibility with
+ WCF serialization. WARNING: when adding new fields you must take
+ care to increase the Order for new elements, otherwise data corruption
+ may occur.
+
+ If not explicitly specified, the default is assumed from Serializer.GlobalOptions.InferTagFromName.
+
+
+
+ Has a InferTagFromName value been explicitly set? if not, the default from the type-model is assumed.
+
+
+
+
+ Specifies an offset to apply to [DataMember(Order=...)] markers;
+ this is useful when working with mex-generated classes that have
+ a different origin (usually 1 vs 0) than the original data-contract.
+
+ This value is added to the Order of each member.
+
+
+
+
+ If true, the constructor for the type is bypassed during deserialization, meaning any field initializers
+ or other initialization code is skipped.
+
+
+
+
+ Should this type be treated as a reference by default? Please also see the implications of this,
+ as recorded on ProtoMemberAttribute.AsReference
+
+
+
+
+ Applies only to enums (not to DTO classes themselves); gets or sets a value indicating that an enum should be treated directly as an int/short/etc, rather
+ than enforcing .proto enum rules. This is useful *in particul* for [Flags] enums.
+
+
+
+
+ Has a EnumPassthru value been explicitly set?
+
+
+
+
+ Used to define protocol-buffer specific behavior for
+ enumerated values.
+
+
+
+
+ Indicates whether this instance has a customised value mapping
+
+ true if a specific value is set
+
+
+
+ Gets or sets the specific value to use for this enum during serialization.
+
+
+
+
+ Gets or sets the defined name of the enum, as used in .proto
+ (this name is not used during serialization).
+
+
+
+
+ Indicates an error during serialization/deserialization of a proto stream.
+
+
+
+ Creates a new ProtoException instance.
+
+
+ Creates a new ProtoException instance.
+
+
+ Creates a new ProtoException instance.
+
+
+
+ Indicates that a member should be excluded from serialization; this
+ is only normally used when using implict fields.
+
+
+
+
+ Indicates that a member should be excluded from serialization; this
+ is only normally used when using implict fields. This allows
+ ProtoIgnoreAttribute usage
+ even for partial classes where the individual members are not
+ under direct control.
+
+
+
+
+ Creates a new ProtoPartialIgnoreAttribute instance.
+
+ Specifies the member to be ignored.
+
+
+
+ The name of the member to be ignored.
+
+
+
+
+ Indicates the known-types to support for an individual
+ message. This serializes each level in the hierarchy as
+ a nested message to retain wire-compatibility with
+ other protocol-buffer implementations.
+
+
+
+
+ Creates a new instance of the ProtoIncludeAttribute.
+
+ The unique index (within the type) that will identify this data.
+ The additional type to serialize/deserialize.
+
+
+
+ Creates a new instance of the ProtoIncludeAttribute.
+
+ The unique index (within the type) that will identify this data.
+ The additional type to serialize/deserialize.
+
+
+
+ Gets the unique index (within the type) that will identify this data.
+
+
+
+
+ Gets the additional type to serialize/deserialize.
+
+
+
+
+ Gets the additional type to serialize/deserialize.
+
+
+
+
+ Specifies whether the inherited sype's sub-message should be
+ written with a length-prefix (default), or with group markers.
+
+
+
+
+ Declares a member to be used in protocol-buffer serialization, using
+ the given Tag. A DataFormat may be used to optimise the serialization
+ format (for instance, using zigzag encoding for negative numbers, or
+ fixed-length encoding for large values.
+
+
+
+
+ Compare with another ProtoMemberAttribute for sorting purposes
+
+
+
+
+ Compare with another ProtoMemberAttribute for sorting purposes
+
+
+
+
+ Creates a new ProtoMemberAttribute instance.
+
+ Specifies the unique tag used to identify this member within the type.
+
+
+
+ Gets or sets the original name defined in the .proto; not used
+ during serialization.
+
+
+
+
+ Gets or sets the data-format to be used when encoding this value.
+
+
+
+
+ Gets the unique tag used to identify this member within the type.
+
+
+
+
+ Gets or sets a value indicating whether this member is mandatory.
+
+
+
+
+ Gets a value indicating whether this member is packed.
+ This option only applies to list/array data of primitive types (int, double, etc).
+
+
+
+
+ Indicates whether this field should *repace* existing values (the default is false, meaning *append*).
+ This option only applies to list/array data.
+
+
+
+
+ Enables full object-tracking/full-graph support.
+
+
+
+
+ Embeds the type information into the stream, allowing usage with types not known in advance.
+
+
+
+
+ Gets or sets a value indicating whether this member is packed (lists/arrays).
+
+
+
+
+ Additional (optional) settings that control serialization of members
+
+
+
+
+ Default; no additional options
+
+
+
+
+ Indicates that repeated elements should use packed (length-prefixed) encoding
+
+
+
+
+ Indicates that the given item is required
+
+
+
+
+ Enables full object-tracking/full-graph support
+
+
+
+
+ Embeds the type information into the stream, allowing usage with types not known in advance
+
+
+
+
+ Indicates whether this field should *repace* existing values (the default is false, meaning *append*).
+ This option only applies to list/array data.
+
+
+
+
+ Determines whether the types AsReferenceDefault value is used, or whether this member's AsReference should be used
+
+
+
+
+ Declares a member to be used in protocol-buffer serialization, using
+ the given Tag and MemberName. This allows ProtoMemberAttribute usage
+ even for partial classes where the individual members are not
+ under direct control.
+ A DataFormat may be used to optimise the serialization
+ format (for instance, using zigzag encoding for negative numbers, or
+ fixed-length encoding for large values.
+
+
+
+
+ Creates a new ProtoMemberAttribute instance.
+
+ Specifies the unique tag used to identify this member within the type.
+ Specifies the member to be serialized.
+
+
+
+ The name of the member to be serialized.
+
+
+
+
+ A stateful reader, used to read a protobuf stream. Typical usage would be (sequentially) to call
+ ReadFieldHeader and (after matching the field) an appropriate Read* method.
+
+
+
+
+ Creates a new reader against a stream
+
+ The source stream
+ The model to use for serialization; this can be null, but this will impair the ability to deserialize sub-objects
+ Additional context about this serialization operation
+
+
+
+ Creates a new reader against a stream
+
+ The source stream
+ The model to use for serialization; this can be null, but this will impair the ability to deserialize sub-objects
+ Additional context about this serialization operation
+ The number of bytes to read, or -1 to read until the end of the stream
+
+
+
+ Releases resources used by the reader, but importantly does not Dispose the
+ underlying stream; in many typical use-cases the stream is used for different
+ processes, so it is assumed that the consumer will Dispose their stream separately.
+
+
+
+
+ Reads an unsigned 32-bit integer from the stream; supported wire-types: Variant, Fixed32, Fixed64
+
+
+
+
+ Reads a signed 16-bit integer from the stream: Variant, Fixed32, Fixed64, SignedVariant
+
+
+
+
+ Reads an unsigned 16-bit integer from the stream; supported wire-types: Variant, Fixed32, Fixed64
+
+
+
+
+ Reads an unsigned 8-bit integer from the stream; supported wire-types: Variant, Fixed32, Fixed64
+
+
+
+
+ Reads a signed 8-bit integer from the stream; supported wire-types: Variant, Fixed32, Fixed64, SignedVariant
+
+
+
+
+ Reads a signed 32-bit integer from the stream; supported wire-types: Variant, Fixed32, Fixed64, SignedVariant
+
+
+
+
+ Reads a signed 64-bit integer from the stream; supported wire-types: Variant, Fixed32, Fixed64, SignedVariant
+
+
+
+
+ Reads a string from the stream (using UTF8); supported wire-types: String
+
+
+
+
+ Throws an exception indication that the given value cannot be mapped to an enum.
+
+
+
+
+ Reads a double-precision number from the stream; supported wire-types: Fixed32, Fixed64
+
+
+
+
+ Reads (merges) a sub-message from the stream, internally calling StartSubItem and EndSubItem, and (in between)
+ parsing the message in accordance with the model associated with the reader
+
+
+
+
+ Makes the end of consuming a nested message in the stream; the stream must be either at the correct EndGroup
+ marker, or all fields of the sub-message must have been consumed (in either case, this means ReadFieldHeader
+ should return zero)
+
+
+
+
+ Begins consuming a nested message in the stream; supported wire-types: StartGroup, String
+
+ The token returned must be help and used when callining EndSubItem
+
+
+
+ Reads a field header from the stream, setting the wire-type and retuning the field number. If no
+ more fields are available, then 0 is returned. This methods respects sub-messages.
+
+
+
+
+ Looks ahead to see whether the next field in the stream is what we expect
+ (typically; what we've just finished reading - for example ot read successive list items)
+
+
+
+
+ Compares the streams current wire-type to the hinted wire-type, updating the reader if necessary; for example,
+ a Variant may be updated to SignedVariant. If the hinted wire-type is unrelated then no change is made.
+
+
+
+
+ Verifies that the stream's current wire-type is as expected, or a specialized sub-type (for example,
+ SignedVariant) - in which case the current wire-type is updated. Otherwise an exception is thrown.
+
+
+
+
+ Discards the data for the current field.
+
+
+
+
+ Reads an unsigned 64-bit integer from the stream; supported wire-types: Variant, Fixed32, Fixed64
+
+
+
+
+ Reads a single-precision number from the stream; supported wire-types: Fixed32, Fixed64
+
+
+
+
+ Reads a boolean value from the stream; supported wire-types: Variant, Fixed32, Fixed64
+
+
+
+
+
+ Reads a byte-sequence from the stream, appending them to an existing byte-sequence (which can be null); supported wire-types: String
+
+
+
+
+ Reads the length-prefix of a message from a stream without buffering additional data, allowing a fixed-length
+ reader to be created.
+
+
+
+
+ Reads a little-endian encoded integer. An exception is thrown if the data is not all available.
+
+
+
+
+ Reads a big-endian encoded integer. An exception is thrown if the data is not all available.
+
+
+
+
+ Reads a varint encoded integer. An exception is thrown if the data is not all available.
+
+
+
+
+ Reads a string (of a given lenth, in bytes) directly from the source into a pre-existing buffer. An exception is thrown if the data is not all available.
+
+
+
+
+ Reads a given number of bytes directly from the source. An exception is thrown if the data is not all available.
+
+
+
+
+ Reads a string (of a given lenth, in bytes) directly from the source. An exception is thrown if the data is not all available.
+
+
+
+
+ Reads the length-prefix of a message from a stream without buffering additional data, allowing a fixed-length
+ reader to be created.
+
+
+
+ The number of bytes consumed; 0 if no data available
+
+
+
+ Copies the current field into the instance as extension data
+
+
+
+
+ Indicates whether the reader still has data remaining in the current sub-item,
+ additionally setting the wire-type for the next field if there is more data.
+ This is used when decoding packed data.
+
+
+
+
+ Utility method, not intended for public use; this helps maintain the root object is complex scenarios
+
+
+
+
+ Reads a Type from the stream, using the model's DynamicTypeFormatting if appropriate; supported wire-types: String
+
+
+
+
+ Merge two objects using the details from the current reader; this is used to change the type
+ of objects when an inheritance relationship is discovered later than usual during deserilazation.
+
+
+
+
+ Gets the number of the field being processed.
+
+
+
+
+ Indicates the underlying proto serialization format on the wire.
+
+
+
+
+ Gets / sets a flag indicating whether strings should be checked for repetition; if
+ true, any repeated UTF-8 byte sequence will result in the same String instance, rather
+ than a second instance of the same string. Enabled by default. Note that this uses
+ a custom interner - the system-wide string interner is not used.
+
+
+
+
+ Addition information about this deserialization operation.
+
+
+
+
+ Returns the position of the current reader (note that this is not necessarily the same as the position
+ in the underlying stream, if multiple readers are used on the same stream)
+
+
+
+
+ Get the TypeModel associated with this reader
+
+
+
+
+ Represents an output stream for writing protobuf data.
+
+ Why is the API backwards (static methods with writer arguments)?
+ See: http://marcgravell.blogspot.com/2010/03/last-will-be-first-and-first-will-be.html
+
+
+
+
+ Write an encapsulated sub-object, using the supplied unique key (reprasenting a type).
+
+ The object to write.
+ The key that uniquely identifies the type within the model.
+ The destination.
+
+
+
+ Write an encapsulated sub-object, using the supplied unique key (reprasenting a type) - but the
+ caller is asserting that this relationship is non-recursive; no recursion check will be
+ performed.
+
+ The object to write.
+ The key that uniquely identifies the type within the model.
+ The destination.
+
+
+
+ Writes a field-header, indicating the format of the next data we plan to write.
+
+
+
+
+ Writes a byte-array to the stream; supported wire-types: String
+
+
+
+
+ Writes a byte-array to the stream; supported wire-types: String
+
+
+
+
+ Indicates the start of a nested record.
+
+ The instance to write.
+ The destination.
+ A token representing the state of the stream; this token is given to EndSubItem.
+
+
+
+ Indicates the end of a nested record.
+
+ The token obtained from StartubItem.
+ The destination.
+
+
+
+ Creates a new writer against a stream
+
+ The destination stream
+ The model to use for serialization; this can be null, but this will impair the ability to serialize sub-objects
+ Additional context about this serialization operation
+
+
+
+ Flushes data to the underlying stream, and releases any resources. The underlying stream is *not* disposed
+ by this operation.
+
+
+
+
+ Writes any buffered data (if possible) to the underlying stream.
+
+ The writer to flush
+ It is not always possible to fully flush, since some sequences
+ may require values to be back-filled into the byte-stream.
+
+
+
+ Writes an unsigned 32-bit integer to the stream; supported wire-types: Variant, Fixed32, Fixed64
+
+
+
+
+ Writes a string to the stream; supported wire-types: String
+
+
+
+
+ Writes an unsigned 64-bit integer to the stream; supported wire-types: Variant, Fixed32, Fixed64
+
+
+
+
+ Writes a signed 64-bit integer to the stream; supported wire-types: Variant, Fixed32, Fixed64, SignedVariant
+
+
+
+
+ Writes an unsigned 16-bit integer to the stream; supported wire-types: Variant, Fixed32, Fixed64
+
+
+
+
+ Writes a signed 16-bit integer to the stream; supported wire-types: Variant, Fixed32, Fixed64, SignedVariant
+
+
+
+
+ Writes an unsigned 16-bit integer to the stream; supported wire-types: Variant, Fixed32, Fixed64
+
+
+
+
+ Writes an unsigned 8-bit integer to the stream; supported wire-types: Variant, Fixed32, Fixed64
+
+
+
+
+ Writes a signed 8-bit integer to the stream; supported wire-types: Variant, Fixed32, Fixed64, SignedVariant
+
+
+
+
+ Writes a signed 32-bit integer to the stream; supported wire-types: Variant, Fixed32, Fixed64, SignedVariant
+
+
+
+
+ Writes a double-precision number to the stream; supported wire-types: Fixed32, Fixed64
+
+
+
+
+ Writes a single-precision number to the stream; supported wire-types: Fixed32, Fixed64
+
+
+
+
+ Throws an exception indicating that the given enum cannot be mapped to a serialized value.
+
+
+
+
+ Writes a boolean to the stream; supported wire-types: Variant, Fixed32, Fixed64
+
+
+
+
+ Copies any extension data stored for the instance to the underlying stream
+
+
+
+
+ Used for packed encoding; indicates that the next field should be skipped rather than
+ a field header written. Note that the field number must match, else an exception is thrown
+ when the attempt is made to write the (incorrect) field. The wire-type is taken from the
+ subsequent call to WriteFieldHeader. Only primitive types can be packed.
+
+
+
+
+ Specifies a known root object to use during reference-tracked serialization
+
+
+
+
+ Writes a Type to the stream, using the model's DynamicTypeFormatting if appropriate; supported wire-types: String
+
+
+
+
+ Addition information about this serialization operation.
+
+
+
+
+ Get the TypeModel associated with this writer
+
+
+
+
+ Additional information about a serialization operation
+
+
+
+
+ Convert a SerializationContext to a StreamingContext
+
+
+
+
+ Convert a StreamingContext to a SerializationContext
+
+
+
+
+ Gets or sets a user-defined object containing additional information about this serialization/deserialization operation.
+
+
+
+
+ A default SerializationContext, with minimal information.
+
+
+
+
+ Provides protocol-buffer serialization capability for concrete, attributed types. This
+ is a *default* model, but custom serializer models are also supported.
+
+
+ Protocol-buffer serialization is a compact binary format, designed to take
+ advantage of sparse data and knowledge of specific data types; it is also
+ extensible, allowing a type to be deserialized / merged even if some data is
+ not recognised.
+
+
+
+
+ The field number that is used as a default when serializing/deserializing a list of objects.
+ The data is treated as repeated message with field number 1.
+
+
+
+
+ Suggest a .proto definition for the given type
+
+ The type to generate a .proto definition for
+ The .proto definition as a string
+
+
+
+ Create a deep clone of the supplied instance; any sub-items are also cloned.
+
+
+
+
+ Applies a protocol-buffer stream to an existing instance.
+
+ The type being merged.
+ The existing instance to be modified (can be null).
+ The binary stream to apply to the instance (cannot be null).
+ The updated instance; this may be different to the instance argument if
+ either the original instance was null, or the stream defines a known sub-type of the
+ original instance.
+
+
+
+ Creates a new instance from a protocol-buffer stream
+
+ The type to be created.
+ The binary stream to apply to the new instance (cannot be null).
+ A new, initialized instance.
+
+
+
+ Writes a protocol-buffer representation of the given instance to the supplied stream.
+
+ The existing instance to be serialized (cannot be null).
+ The destination stream to write to.
+
+
+
+ Serializes a given instance and deserializes it as a different type;
+ this can be used to translate between wire-compatible objects (where
+ two .NET types represent the same data), or to promote/demote a type
+ through an inheritance hierarchy.
+
+ No assumption of compatibility is made between the types.
+ The type of the object being copied.
+ The type of the new object to be created.
+ The existing instance to use as a template.
+ A new instane of type TNewType, with the data from TOldType.
+
+
+
+ Precompiles the serializer for a given type.
+
+
+
+
+ Reads a sequence of consecutive length-prefixed items from a stream, using
+ either base-128 or fixed-length prefixes. Base-128 prefixes with a tag
+ are directly comparable to serializing multiple items in succession
+ (use the tag to emulate the implicit behavior
+ when serializing a list/array). When a tag is
+ specified, any records with different tags are silently omitted. The
+ tag is ignored. The tag is ignores for fixed-length prefixes.
+
+ The type of object to deserialize.
+ The binary stream containing the serialized records.
+ The prefix style used in the data.
+ The tag of records to return (if non-positive, then no tag is
+ expected and all records are returned).
+ The sequence of deserialized objects.
+
+
+
+ Creates a new instance from a protocol-buffer stream that has a length-prefix
+ on data (to assist with network IO).
+
+ The type to be created.
+ The binary stream to apply to the new instance (cannot be null).
+ How to encode the length prefix.
+ A new, initialized instance.
+
+
+
+ Creates a new instance from a protocol-buffer stream that has a length-prefix
+ on data (to assist with network IO).
+
+ The type to be created.
+ The binary stream to apply to the new instance (cannot be null).
+ How to encode the length prefix.
+ The expected tag of the item (only used with base-128 prefix style).
+ A new, initialized instance.
+
+
+
+ Applies a protocol-buffer stream to an existing instance, using length-prefixed
+ data - useful with network IO.
+
+ The type being merged.
+ The existing instance to be modified (can be null).
+ The binary stream to apply to the instance (cannot be null).
+ How to encode the length prefix.
+ The updated instance; this may be different to the instance argument if
+ either the original instance was null, or the stream defines a known sub-type of the
+ original instance.
+
+
+
+ Writes a protocol-buffer representation of the given instance to the supplied stream,
+ with a length-prefix. This is useful for socket programming,
+ as DeserializeWithLengthPrefix/MergeWithLengthPrefix can be used to read the single object back
+ from an ongoing stream.
+
+ The type being serialized.
+ The existing instance to be serialized (cannot be null).
+ How to encode the length prefix.
+ The destination stream to write to.
+
+
+
+ Writes a protocol-buffer representation of the given instance to the supplied stream,
+ with a length-prefix. This is useful for socket programming,
+ as DeserializeWithLengthPrefix/MergeWithLengthPrefix can be used to read the single object back
+ from an ongoing stream.
+
+ The type being serialized.
+ The existing instance to be serialized (cannot be null).
+ How to encode the length prefix.
+ The destination stream to write to.
+ The tag used as a prefix to each record (only used with base-128 style prefixes).
+
+
+ Indicates the number of bytes expected for the next message.
+ The stream containing the data to investigate for a length.
+ The algorithm used to encode the length.
+ The length of the message, if it could be identified.
+ True if a length could be obtained, false otherwise.
+
+
+ Indicates the number of bytes expected for the next message.
+ The buffer containing the data to investigate for a length.
+ The offset of the first byte to read from the buffer.
+ The number of bytes to read from the buffer.
+ The algorithm used to encode the length.
+ The length of the message, if it could be identified.
+ True if a length could be obtained, false otherwise.
+
+
+
+ Releases any internal buffers that have been reserved for efficiency; this does not affect any serialization
+ operations; simply: it can be used (optionally) to release the buffers for garbage collection (at the expense
+ of having to re-allocate a new buffer for the next operation, rather than re-use prior buffers).
+
+
+
+
+ Provides non-generic access to the default serializer.
+
+
+
+
+ Create a deep clone of the supplied instance; any sub-items are also cloned.
+
+
+
+
+ Writes a protocol-buffer representation of the given instance to the supplied stream.
+
+ The existing instance to be serialized (cannot be null).
+ The destination stream to write to.
+
+
+
+ Creates a new instance from a protocol-buffer stream
+
+ The type to be created.
+ The binary stream to apply to the new instance (cannot be null).
+ A new, initialized instance.
+
+
+ Applies a protocol-buffer stream to an existing instance.
+ The existing instance to be modified (cannot be null).
+ The binary stream to apply to the instance (cannot be null).
+ The updated instance
+
+
+
+ Writes a protocol-buffer representation of the given instance to the supplied stream,
+ with a length-prefix. This is useful for socket programming,
+ as DeserializeWithLengthPrefix/MergeWithLengthPrefix can be used to read the single object back
+ from an ongoing stream.
+
+ The existing instance to be serialized (cannot be null).
+ How to encode the length prefix.
+ The destination stream to write to.
+ The tag used as a prefix to each record (only used with base-128 style prefixes).
+
+
+
+ Applies a protocol-buffer stream to an existing instance (or null), using length-prefixed
+ data - useful with network IO.
+
+ The existing instance to be modified (can be null).
+ The binary stream to apply to the instance (cannot be null).
+ How to encode the length prefix.
+ Used to resolve types on a per-field basis.
+ The updated instance; this may be different to the instance argument if
+ either the original instance was null, or the stream defines a known sub-type of the
+ original instance.
+
+
+
+ Indicates whether the supplied type is explicitly modelled by the model
+
+
+
+
+ Global switches that change the behavior of protobuf-net
+
+
+
+
+
+
+
+
+
+ Maps a field-number to a type
+
+
+
+
+ Perform the steps necessary to serialize this data.
+
+ The value to be serialized.
+ The writer entity that is accumulating the output data.
+
+
+
+ Perform the steps necessary to deserialize this data.
+
+ The current value, if appropriate.
+ The reader providing the input data.
+ The updated / replacement value.
+
+
+
+ The type that this serializer is intended to work for.
+
+
+
+
+ Indicates whether a Read operation replaces the existing value, or
+ extends the value. If false, the "value" parameter to Read is
+ discarded, and should be passed in as null.
+
+
+
+
+ Now all Read operations return a value (although most do); if false no
+ value should be expected.
+
+
+
+
+ Used to hold particulars relating to nested objects. This is opaque to the caller - simply
+ give back the token you are given at the end of an object.
+
+
+
+
+ Indicates the encoding used to represent an individual value in a protobuf stream
+
+
+
+
+ Represents an error condition
+
+
+
+
+ Base-128 variant-length encoding
+
+
+
+
+ Fixed-length 8-byte encoding
+
+
+
+
+ Length-variant-prefixed encoding
+
+
+
+
+ Indicates the start of a group
+
+
+
+
+ Indicates the end of a group
+
+
+
+
+ Fixed-length 4-byte encoding
+ 10
+
+
+
+ This is not a formal wire-type in the "protocol buffers" spec, but
+ denotes a variant integer that should be interpreted using
+ zig-zag semantics (so -ve numbers aren't a significant overhead)
+
+
+
+
diff --git a/packages/protobuf-net.2.0.0.668/lib/netcore45/protobuf-net.dll b/packages/protobuf-net.2.0.0.668/lib/netcore45/protobuf-net.dll
new file mode 100644
index 000000000..836679d1a
Binary files /dev/null and b/packages/protobuf-net.2.0.0.668/lib/netcore45/protobuf-net.dll differ
diff --git a/packages/protobuf-net.2.0.0.668/lib/netcore45/protobuf-net.pri b/packages/protobuf-net.2.0.0.668/lib/netcore45/protobuf-net.pri
new file mode 100644
index 000000000..03574cc24
Binary files /dev/null and b/packages/protobuf-net.2.0.0.668/lib/netcore45/protobuf-net.pri differ
diff --git a/packages/protobuf-net.2.0.0.668/lib/portable-sl4+net40+wp7+windows8/protobuf-net.dll b/packages/protobuf-net.2.0.0.668/lib/portable-sl4+net40+wp7+windows8/protobuf-net.dll
new file mode 100644
index 000000000..ec90e6073
Binary files /dev/null and b/packages/protobuf-net.2.0.0.668/lib/portable-sl4+net40+wp7+windows8/protobuf-net.dll differ
diff --git a/packages/protobuf-net.2.0.0.668/lib/portable-sl4+net40+wp7+windows8/protobuf-net.xml b/packages/protobuf-net.2.0.0.668/lib/portable-sl4+net40+wp7+windows8/protobuf-net.xml
new file mode 100644
index 000000000..dcbe26f6d
--- /dev/null
+++ b/packages/protobuf-net.2.0.0.668/lib/portable-sl4+net40+wp7+windows8/protobuf-net.xml
@@ -0,0 +1,2529 @@
+
+
+
+ protobuf-net
+
+
+
+
+ Provides support for common .NET types that do not have a direct representation
+ in protobuf, using the definitions from bcl.proto
+
+
+
+
+ Creates a new instance of the specified type, bypassing the constructor.
+
+ The type to create
+ The new instance
+ If the platform does not support constructor-skipping
+
+
+
+ Writes a TimeSpan to a protobuf stream
+
+
+
+
+ Parses a TimeSpan from a protobuf stream
+
+
+
+
+ Parses a DateTime from a protobuf stream
+
+
+
+
+ Writes a DateTime to a protobuf stream
+
+
+
+
+ Parses a decimal from a protobuf stream
+
+
+
+
+ Writes a decimal to a protobuf stream
+
+
+
+
+ Writes a Guid to a protobuf stream
+
+
+
+
+ Parses a Guid from a protobuf stream
+
+
+
+
+ Reads an *implementation specific* bundled .NET object, including (as options) type-metadata, identity/re-use, etc.
+
+
+
+
+ Writes an *implementation specific* bundled .NET object, including (as options) type-metadata, identity/re-use, etc.
+
+
+
+
+ Optional behaviours that introduce .NET-specific functionality
+
+
+
+
+ No special behaviour
+
+
+
+
+ Enables full object-tracking/full-graph support.
+
+
+
+
+ Embeds the type information into the stream, allowing usage with types not known in advance.
+
+
+
+
+ If false, the constructor for the type is bypassed during deserialization, meaning any field initializers
+ or other initialization code is skipped.
+
+
+
+
+ Should the object index be reserved, rather than creating an object promptly
+
+
+
+
+ Provides a simple buffer-based implementation of an extension object.
+
+
+
+
+ Provides addition capability for supporting unexpected fields during
+ protocol-buffer serialization/deserialization. This allows for loss-less
+ round-trip/merge, even when the data is not fully understood.
+
+
+
+
+ Requests a stream into which any unexpected fields can be persisted.
+
+ A new stream suitable for storing data.
+
+
+
+ Indicates that all unexpected fields have now been stored. The
+ implementing class is responsible for closing the stream. If
+ "commit" is not true the data may be discarded.
+
+ The stream originally obtained by BeginAppend.
+ True if the append operation completed successfully.
+
+
+
+ Requests a stream of the unexpected fields previously stored.
+
+ A prepared stream of the unexpected fields.
+
+
+
+ Indicates that all unexpected fields have now been read. The
+ implementing class is responsible for closing the stream.
+
+ The stream originally obtained by BeginQuery.
+
+
+
+ Requests the length of the raw binary stream; this is used
+ when serializing sub-entities to indicate the expected size.
+
+ The length of the binary stream representing unexpected data.
+
+
+ Specifies a method on the root-contract in an hierarchy to be invoked before serialization.
+
+
+ Specifies a method on the root-contract in an hierarchy to be invoked after serialization.
+
+
+ Specifies a method on the root-contract in an hierarchy to be invoked before deserialization.
+
+
+ Specifies a method on the root-contract in an hierarchy to be invoked after deserialization.
+
+
+
+ Sub-format to use when serializing/deserializing data
+
+
+
+
+ Uses the default encoding for the data-type.
+
+
+
+
+ When applied to signed integer-based data (including Decimal), this
+ indicates that zigzag variant encoding will be used. This means that values
+ with small magnitude (regardless of sign) take a small amount
+ of space to encode.
+
+
+
+
+ When applied to signed integer-based data (including Decimal), this
+ indicates that two's-complement variant encoding will be used.
+ This means that any -ve number will take 10 bytes (even for 32-bit),
+ so should only be used for compatibility.
+
+
+
+
+ When applied to signed integer-based data (including Decimal), this
+ indicates that a fixed amount of space will be used.
+
+
+
+
+ When applied to a sub-message, indicates that the value should be treated
+ as group-delimited.
+
+
+
+
+ Simple base class for supporting unexpected fields allowing
+ for loss-less round-tips/merge, even if the data is not understod.
+ The additional fields are (by default) stored in-memory in a buffer.
+
+ As an example of an alternative implementation, you might
+ choose to use the file system (temporary files) as the back-end, tracking
+ only the paths [such an object would ideally be IDisposable and use
+ a finalizer to ensure that the files are removed].
+
+
+
+
+ Indicates that the implementing type has support for protocol-buffer
+ extensions.
+
+ Can be implemented by deriving from Extensible.
+
+
+
+ Retrieves the extension object for the current
+ instance, optionally creating it if it does not already exist.
+
+ Should a new extension object be
+ created if it does not already exist?
+ The extension object if it exists (or was created), or null
+ if the extension object does not exist or is not available.
+ The createIfMissing argument is false during serialization,
+ and true during deserialization upon encountering unexpected fields.
+
+
+
+ Retrieves the extension object for the current
+ instance, optionally creating it if it does not already exist.
+
+ Should a new extension object be
+ created if it does not already exist?
+ The extension object if it exists (or was created), or null
+ if the extension object does not exist or is not available.
+ The createIfMissing argument is false during serialization,
+ and true during deserialization upon encountering unexpected fields.
+
+
+
+ Provides a simple, default implementation for extension support,
+ optionally creating it if it does not already exist. Designed to be called by
+ classes implementing .
+
+ Should a new extension object be
+ created if it does not already exist?
+ The extension field to check (and possibly update).
+ The extension object if it exists (or was created), or null
+ if the extension object does not exist or is not available.
+ The createIfMissing argument is false during serialization,
+ and true during deserialization upon encountering unexpected fields.
+
+
+
+ Appends the value as an additional (unexpected) data-field for the instance.
+ Note that for non-repeated sub-objects, this equates to a merge operation;
+ for repeated sub-objects this adds a new instance to the set; for simple
+ values the new value supercedes the old value.
+
+ Note that appending a value does not remove the old value from
+ the stream; avoid repeatedly appending values for the same field.
+ The type of the value to append.
+ The extensible object to append the value to.
+ The field identifier; the tag should not be defined as a known data-field for the instance.
+ The value to append.
+
+
+
+ Appends the value as an additional (unexpected) data-field for the instance.
+ Note that for non-repeated sub-objects, this equates to a merge operation;
+ for repeated sub-objects this adds a new instance to the set; for simple
+ values the new value supercedes the old value.
+
+ Note that appending a value does not remove the old value from
+ the stream; avoid repeatedly appending values for the same field.
+ The data-type of the field.
+ The data-format to use when encoding the value.
+ The extensible object to append the value to.
+ The field identifier; the tag should not be defined as a known data-field for the instance.
+ The value to append.
+
+
+
+ Queries an extensible object for an additional (unexpected) data-field for the instance.
+ The value returned is the composed value after merging any duplicated content; if the
+ value is "repeated" (a list), then use GetValues instead.
+
+ The data-type of the field.
+ The extensible object to obtain the value from.
+ The field identifier; the tag should not be defined as a known data-field for the instance.
+ The effective value of the field, or the default value if not found.
+
+
+
+ Queries an extensible object for an additional (unexpected) data-field for the instance.
+ The value returned is the composed value after merging any duplicated content; if the
+ value is "repeated" (a list), then use GetValues instead.
+
+ The data-type of the field.
+ The extensible object to obtain the value from.
+ The field identifier; the tag should not be defined as a known data-field for the instance.
+ The data-format to use when decoding the value.
+ The effective value of the field, or the default value if not found.
+
+
+
+ Queries an extensible object for an additional (unexpected) data-field for the instance.
+ The value returned (in "value") is the composed value after merging any duplicated content;
+ if the value is "repeated" (a list), then use GetValues instead.
+
+ The data-type of the field.
+ The effective value of the field, or the default value if not found.
+ The extensible object to obtain the value from.
+ The field identifier; the tag should not be defined as a known data-field for the instance.
+ True if data for the field was present, false otherwise.
+
+
+
+ Queries an extensible object for an additional (unexpected) data-field for the instance.
+ The value returned (in "value") is the composed value after merging any duplicated content;
+ if the value is "repeated" (a list), then use GetValues instead.
+
+ The data-type of the field.
+ The effective value of the field, or the default value if not found.
+ The extensible object to obtain the value from.
+ The field identifier; the tag should not be defined as a known data-field for the instance.
+ The data-format to use when decoding the value.
+ True if data for the field was present, false otherwise.
+
+
+
+ Queries an extensible object for an additional (unexpected) data-field for the instance.
+ The value returned (in "value") is the composed value after merging any duplicated content;
+ if the value is "repeated" (a list), then use GetValues instead.
+
+ The data-type of the field.
+ The effective value of the field, or the default value if not found.
+ The extensible object to obtain the value from.
+ The field identifier; the tag should not be defined as a known data-field for the instance.
+ The data-format to use when decoding the value.
+ Allow tags that are present as part of the definition; for example, to query unknown enum values.
+ True if data for the field was present, false otherwise.
+
+
+
+ Queries an extensible object for an additional (unexpected) data-field for the instance.
+ Each occurrence of the field is yielded separately, making this usage suitable for "repeated"
+ (list) fields.
+
+ The extended data is processed lazily as the enumerator is iterated.
+ The data-type of the field.
+ The extensible object to obtain the value from.
+ The field identifier; the tag should not be defined as a known data-field for the instance.
+ An enumerator that yields each occurrence of the field.
+
+
+
+ Queries an extensible object for an additional (unexpected) data-field for the instance.
+ Each occurrence of the field is yielded separately, making this usage suitable for "repeated"
+ (list) fields.
+
+ The extended data is processed lazily as the enumerator is iterated.
+ The data-type of the field.
+ The extensible object to obtain the value from.
+ The field identifier; the tag should not be defined as a known data-field for the instance.
+ The data-format to use when decoding the value.
+ An enumerator that yields each occurrence of the field.
+
+
+
+ Queries an extensible object for an additional (unexpected) data-field for the instance.
+ The value returned (in "value") is the composed value after merging any duplicated content;
+ if the value is "repeated" (a list), then use GetValues instead.
+
+ The data-type of the field.
+ The model to use for configuration.
+ The effective value of the field, or the default value if not found.
+ The extensible object to obtain the value from.
+ The field identifier; the tag should not be defined as a known data-field for the instance.
+ The data-format to use when decoding the value.
+ Allow tags that are present as part of the definition; for example, to query unknown enum values.
+ True if data for the field was present, false otherwise.
+
+
+
+ Queries an extensible object for an additional (unexpected) data-field for the instance.
+ Each occurrence of the field is yielded separately, making this usage suitable for "repeated"
+ (list) fields.
+
+ The extended data is processed lazily as the enumerator is iterated.
+ The model to use for configuration.
+ The data-type of the field.
+ The extensible object to obtain the value from.
+ The field identifier; the tag should not be defined as a known data-field for the instance.
+ The data-format to use when decoding the value.
+ An enumerator that yields each occurrence of the field.
+
+
+
+ Appends the value as an additional (unexpected) data-field for the instance.
+ Note that for non-repeated sub-objects, this equates to a merge operation;
+ for repeated sub-objects this adds a new instance to the set; for simple
+ values the new value supercedes the old value.
+
+ Note that appending a value does not remove the old value from
+ the stream; avoid repeatedly appending values for the same field.
+ The model to use for configuration.
+ The data-format to use when encoding the value.
+ The extensible object to append the value to.
+ The field identifier; the tag should not be defined as a known data-field for the instance.
+ The value to append.
+
+
+
+ This class acts as an internal wrapper allowing us to do a dynamic
+ methodinfo invoke; an't put into Serializer as don't want on public
+ API; can't put into Serializer<T> since we need to invoke
+ accross classes, which isn't allowed in Silverlight)
+
+
+
+
+ All this does is call GetExtendedValuesTyped with the correct type for "instance";
+ this ensures that we don't get issues with subclasses declaring conflicting types -
+ the caller must respect the fields defined for the type they pass in.
+
+
+
+
+ All this does is call GetExtendedValuesTyped with the correct type for "instance";
+ this ensures that we don't get issues with subclasses declaring conflicting types -
+ the caller must respect the fields defined for the type they pass in.
+
+
+
+
+ Not all frameworks are created equal (fx1.1 vs fx2.0,
+ micro-framework, compact-framework,
+ silverlight, etc). This class simply wraps up a few things that would
+ otherwise make the real code unnecessarily messy, providing fallback
+ implementations if necessary.
+
+
+
+
+ Intended to be a direct map to regular TypeCode, but:
+ - with missing types
+ - existing on WinRT
+
+
+
+
+ Specifies the method used to infer field tags for members of the type
+ under consideration. Tags are deduced using the invariant alphabetic
+ sequence of the members' names; this makes implicit field tags very brittle,
+ and susceptible to changes such as field names (normally an isolated
+ change).
+
+
+
+
+ No members are serialized implicitly; all members require a suitable
+ attribute such as [ProtoMember]. This is the recmomended mode for
+ most scenarios.
+
+
+
+
+ Public properties and fields are eligible for implicit serialization;
+ this treats the public API as a contract. Ordering beings from ImplicitFirstTag.
+
+
+
+
+ Public and non-public fields are eligible for implicit serialization;
+ this acts as a state/implementation serializer. Ordering beings from ImplicitFirstTag.
+
+
+
+
+ Represents the set of serialization callbacks to be used when serializing/deserializing a type.
+
+
+
+ Called before serializing an instance
+
+
+ Called before deserializing an instance
+
+
+ Called after serializing an instance
+
+
+ Called after deserializing an instance
+
+
+
+ True if any callback is set, else False
+
+
+
+
+ Represents a type at runtime for use with protobuf, allowing the field mappings (etc) to be defined
+
+
+
+
+ Get the name of the type being represented
+
+
+
+
+ Adds a known sub-type to the inheritance model
+
+
+
+
+ Adds a known sub-type to the inheritance model
+
+
+
+
+ Assigns the callbacks to use during serialiation/deserialization.
+
+ The method (or null) called before serialization begins.
+ The method (or null) called when serialization is complete.
+ The method (or null) called before deserialization begins (or when a new instance is created during deserialization).
+ The method (or null) called when deserialization is complete.
+ The set of callbacks.
+
+
+
+ Assigns the callbacks to use during serialiation/deserialization.
+
+ The name of the method (or null) called before serialization begins.
+ The name of the method (or null) called when serialization is complete.
+ The name of the method (or null) called before deserialization begins (or when a new instance is created during deserialization).
+ The name of the method (or null) called when deserialization is complete.
+ The set of callbacks.
+
+
+
+ Designate a factory-method to use to create instances of this type
+
+
+
+
+ Designate a factory-method to use to create instances of this type
+
+
+
+
+ Throws an exception if the type has been made immutable
+
+
+
+
+ Adds a member (by name) to the MetaType
+
+
+
+
+ Adds a member (by name) to the MetaType, returning the ValueMember rather than the fluent API.
+ This is otherwise identical to Add.
+
+
+
+
+ Adds a member (by name) to the MetaType
+
+
+
+
+ Performs serialization of this type via a surrogate; all
+ other serialization options are ignored and handled
+ by the surrogate's configuration.
+
+
+
+
+ Adds a set of members (by name) to the MetaType
+
+
+
+
+ Adds a member (by name) to the MetaType
+
+
+
+
+ Adds a member (by name) to the MetaType, including an itemType and defaultType for representing lists
+
+
+
+
+ Adds a member (by name) to the MetaType, including an itemType and defaultType for representing lists, returning the ValueMember rather than the fluent API.
+ This is otherwise identical to Add.
+
+
+
+
+ Returns the ValueMember instances associated with this type
+
+
+
+
+ Returns the SubType instances associated with this type
+
+
+
+
+ Gets the base-type for this type
+
+
+
+
+ When used to compile a model, should public serialization/deserialzation methods
+ be included for this type?
+
+
+
+
+ Should this type be treated as a reference by default?
+
+
+
+
+ Indicates whether the current type has defined callbacks
+
+
+
+
+ Indicates whether the current type has defined subtypes
+
+
+
+
+ Returns the set of callbacks defined for this type
+
+
+
+
+ Gets or sets the name of this contract.
+
+
+
+
+ The runtime type that the meta-type represents
+
+
+
+
+ Gets or sets whether the type should use a parameterless constructor (the default),
+ or whether the type should skip the constructor completely. This option is not supported
+ on compact-framework.
+
+
+
+
+ The concrete type to create when a new instance of this type is needed; this may be useful when dealing
+ with dynamic proxies, or with interface-based APIs
+
+
+
+
+ Returns the ValueMember that matchs a given field number, or null if not found
+
+
+
+
+ Returns the ValueMember that matchs a given member (property/field), or null if not found
+
+
+
+
+ Gets or sets a value indicating that an enum should be treated directly as an int/short/etc, rather
+ than enforcing .proto enum rules. This is useful *in particul* for [Flags] enums.
+
+
+
+
+ Gets or sets a value indicating that this type should NOT be treated as a list, even if it has
+ familiar list-like characteristics (enumerable, add, etc)
+
+
+
+
+ Provides protobuf serialization support for a number of types that can be defined at runtime
+
+
+
+
+ Provides protobuf serialization support for a number of types
+
+
+
+
+ Resolve a System.Type to the compiler-specific type
+
+
+
+
+ Resolve a System.Type to the compiler-specific type
+
+
+
+
+ This is the more "complete" version of Serialize, which handles single instances of mapped types.
+ The value is written as a complete field, including field-header and (for sub-objects) a
+ length-prefix
+ In addition to that, this provides support for:
+ - basic values; individual int / string / Guid / etc
+ - IEnumerable sequences of any type handled by TrySerializeAuxiliaryType
+
+
+
+
+
+ Writes a protocol-buffer representation of the given instance to the supplied stream.
+
+ The existing instance to be serialized (cannot be null).
+ The destination stream to write to.
+
+
+
+ Writes a protocol-buffer representation of the given instance to the supplied stream.
+
+ The existing instance to be serialized (cannot be null).
+ The destination stream to write to.
+ Additional information about this serialization operation.
+
+
+
+ Writes a protocol-buffer representation of the given instance to the supplied writer.
+
+ The existing instance to be serialized (cannot be null).
+ The destination writer to write to.
+
+
+
+ Applies a protocol-buffer stream to an existing instance (or null), using length-prefixed
+ data - useful with network IO.
+
+ The type being merged.
+ The existing instance to be modified (can be null).
+ The binary stream to apply to the instance (cannot be null).
+ How to encode the length prefix.
+ The tag used as a prefix to each record (only used with base-128 style prefixes).
+ The updated instance; this may be different to the instance argument if
+ either the original instance was null, or the stream defines a known sub-type of the
+ original instance.
+
+
+
+ Applies a protocol-buffer stream to an existing instance (or null), using length-prefixed
+ data - useful with network IO.
+
+ The type being merged.
+ The existing instance to be modified (can be null).
+ The binary stream to apply to the instance (cannot be null).
+ How to encode the length prefix.
+ The tag used as a prefix to each record (only used with base-128 style prefixes).
+ Used to resolve types on a per-field basis.
+ The updated instance; this may be different to the instance argument if
+ either the original instance was null, or the stream defines a known sub-type of the
+ original instance.
+
+
+
+ Applies a protocol-buffer stream to an existing instance (or null), using length-prefixed
+ data - useful with network IO.
+
+ The type being merged.
+ The existing instance to be modified (can be null).
+ The binary stream to apply to the instance (cannot be null).
+ How to encode the length prefix.
+ The tag used as a prefix to each record (only used with base-128 style prefixes).
+ Used to resolve types on a per-field basis.
+ Returns the number of bytes consumed by this operation (includes length-prefix overheads and any skipped data).
+ The updated instance; this may be different to the instance argument if
+ either the original instance was null, or the stream defines a known sub-type of the
+ original instance.
+
+
+
+ Reads a sequence of consecutive length-prefixed items from a stream, using
+ either base-128 or fixed-length prefixes. Base-128 prefixes with a tag
+ are directly comparable to serializing multiple items in succession
+ (use the tag to emulate the implicit behavior
+ when serializing a list/array). When a tag is
+ specified, any records with different tags are silently omitted. The
+ tag is ignored. The tag is ignores for fixed-length prefixes.
+
+ The binary stream containing the serialized records.
+ The prefix style used in the data.
+ The tag of records to return (if non-positive, then no tag is
+ expected and all records are returned).
+ On a field-by-field basis, the type of object to deserialize (can be null if "type" is specified).
+ The type of object to deserialize (can be null if "resolver" is specified).
+ The sequence of deserialized objects.
+
+
+
+ Reads a sequence of consecutive length-prefixed items from a stream, using
+ either base-128 or fixed-length prefixes. Base-128 prefixes with a tag
+ are directly comparable to serializing multiple items in succession
+ (use the tag to emulate the implicit behavior
+ when serializing a list/array). When a tag is
+ specified, any records with different tags are silently omitted. The
+ tag is ignored. The tag is ignores for fixed-length prefixes.
+
+ The binary stream containing the serialized records.
+ The prefix style used in the data.
+ The tag of records to return (if non-positive, then no tag is
+ expected and all records are returned).
+ On a field-by-field basis, the type of object to deserialize (can be null if "type" is specified).
+ The type of object to deserialize (can be null if "resolver" is specified).
+ The sequence of deserialized objects.
+ Additional information about this serialization operation.
+
+
+
+ Reads a sequence of consecutive length-prefixed items from a stream, using
+ either base-128 or fixed-length prefixes. Base-128 prefixes with a tag
+ are directly comparable to serializing multiple items in succession
+ (use the tag to emulate the implicit behavior
+ when serializing a list/array). When a tag is
+ specified, any records with different tags are silently omitted. The
+ tag is ignored. The tag is ignores for fixed-length prefixes.
+
+ The type of object to deserialize.
+ The binary stream containing the serialized records.
+ The prefix style used in the data.
+ The tag of records to return (if non-positive, then no tag is
+ expected and all records are returned).
+ The sequence of deserialized objects.
+
+
+
+ Reads a sequence of consecutive length-prefixed items from a stream, using
+ either base-128 or fixed-length prefixes. Base-128 prefixes with a tag
+ are directly comparable to serializing multiple items in succession
+ (use the tag to emulate the implicit behavior
+ when serializing a list/array). When a tag is
+ specified, any records with different tags are silently omitted. The
+ tag is ignored. The tag is ignores for fixed-length prefixes.
+
+ The type of object to deserialize.
+ The binary stream containing the serialized records.
+ The prefix style used in the data.
+ The tag of records to return (if non-positive, then no tag is
+ expected and all records are returned).
+ The sequence of deserialized objects.
+ Additional information about this serialization operation.
+
+
+
+ Writes a protocol-buffer representation of the given instance to the supplied stream,
+ with a length-prefix. This is useful for socket programming,
+ as DeserializeWithLengthPrefix can be used to read the single object back
+ from an ongoing stream.
+
+ The type being serialized.
+ The existing instance to be serialized (cannot be null).
+ How to encode the length prefix.
+ The destination stream to write to.
+ The tag used as a prefix to each record (only used with base-128 style prefixes).
+
+
+
+ Writes a protocol-buffer representation of the given instance to the supplied stream,
+ with a length-prefix. This is useful for socket programming,
+ as DeserializeWithLengthPrefix can be used to read the single object back
+ from an ongoing stream.
+
+ The type being serialized.
+ The existing instance to be serialized (cannot be null).
+ How to encode the length prefix.
+ The destination stream to write to.
+ The tag used as a prefix to each record (only used with base-128 style prefixes).
+ Additional information about this serialization operation.
+
+
+
+ Applies a protocol-buffer stream to an existing instance (which may be null).
+
+ The type (including inheritance) to consider.
+ The existing instance to be modified (can be null).
+ The binary stream to apply to the instance (cannot be null).
+ The updated instance; this may be different to the instance argument if
+ either the original instance was null, or the stream defines a known sub-type of the
+ original instance.
+
+
+
+ Applies a protocol-buffer stream to an existing instance (which may be null).
+
+ The type (including inheritance) to consider.
+ The existing instance to be modified (can be null).
+ The binary stream to apply to the instance (cannot be null).
+ The updated instance; this may be different to the instance argument if
+ either the original instance was null, or the stream defines a known sub-type of the
+ original instance.
+ Additional information about this serialization operation.
+
+
+
+ Applies a protocol-buffer stream to an existing instance (which may be null).
+
+ The type (including inheritance) to consider.
+ The existing instance to be modified (can be null).
+ The binary stream to apply to the instance (cannot be null).
+ The number of bytes to consume.
+ The updated instance; this may be different to the instance argument if
+ either the original instance was null, or the stream defines a known sub-type of the
+ original instance.
+
+
+
+ Applies a protocol-buffer stream to an existing instance (which may be null).
+
+ The type (including inheritance) to consider.
+ The existing instance to be modified (can be null).
+ The binary stream to apply to the instance (cannot be null).
+ The number of bytes to consume (or -1 to read to the end of the stream).
+ The updated instance; this may be different to the instance argument if
+ either the original instance was null, or the stream defines a known sub-type of the
+ original instance.
+ Additional information about this serialization operation.
+
+
+
+ Applies a protocol-buffer reader to an existing instance (which may be null).
+
+ The type (including inheritance) to consider.
+ The existing instance to be modified (can be null).
+ The reader to apply to the instance (cannot be null).
+ The updated instance; this may be different to the instance argument if
+ either the original instance was null, or the stream defines a known sub-type of the
+ original instance.
+
+
+
+ This is the more "complete" version of Deserialize, which handles single instances of mapped types.
+ The value is read as a complete field, including field-header and (for sub-objects) a
+ length-prefix..kmc
+
+ In addition to that, this provides support for:
+ - basic values; individual int / string / Guid / etc
+ - IList sets of any type handled by TryDeserializeAuxiliaryType
+
+
+
+
+ Creates a new runtime model, to which the caller
+ can add support for a range of types. A model
+ can be used "as is", or can be compiled for
+ optimal performance.
+
+
+
+
+ Applies common proxy scenarios, resolving the actual type to consider
+
+
+
+
+ Indicates whether the supplied type is explicitly modelled by the model
+
+
+
+
+ Provides the key that represents a given type in the current model.
+ The type is also normalized for proxies at the same time.
+
+
+
+
+ Provides the key that represents a given type in the current model.
+
+
+
+
+ Writes a protocol-buffer representation of the given instance to the supplied stream.
+
+ Represents the type (including inheritance) to consider.
+ The existing instance to be serialized (cannot be null).
+ The destination stream to write to.
+
+
+
+ Applies a protocol-buffer stream to an existing instance (which may be null).
+
+ Represents the type (including inheritance) to consider.
+ The existing instance to be modified (can be null).
+ The binary stream to apply to the instance (cannot be null).
+ The updated instance; this may be different to the instance argument if
+ either the original instance was null, or the stream defines a known sub-type of the
+ original instance.
+
+
+
+ Create a deep clone of the supplied instance; any sub-items are also cloned.
+
+
+
+
+ Indicates that while an inheritance tree exists, the exact type encountered was not
+ specified in that hierarchy and cannot be processed.
+
+
+
+
+ Indicates that the given type was not expected, and cannot be processed.
+
+
+
+
+ Indicates that the given type cannot be constructed; it may still be possible to
+ deserialize into existing instances.
+
+
+
+
+ Returns true if the type supplied is either a recognised contract type,
+ or a *list* of a recognised contract type.
+
+ Note that primitives always return false, even though the engine
+ will, if forced, try to serialize such
+ True if this type is recognised as a serializable entity, else false
+
+
+
+ Returns true if the type supplied is a basic type with inbuilt handling,
+ a recognised contract type, or a *list* of a basic / contract type.
+
+
+
+
+ Returns true if the type supplied is a basic type with inbuilt handling,
+ or a *list* of a basic type with inbuilt handling
+
+
+
+
+ Suggest a .proto definition for the given type
+
+ The type to generate a .proto definition for, or null to generate a .proto that represents the entire model
+ The .proto definition as a string
+
+
+
+ Used to provide custom services for writing and parsing type names when using dynamic types. Both parsing and formatting
+ are provided on a single API as it is essential that both are mapped identically at all times.
+
+
+
+
+ Indicates the type of callback to be used
+
+
+
+
+ Invoked before an object is serialized
+
+
+
+
+ Invoked after an object is serialized
+
+
+
+
+ Invoked before an object is deserialized (or when a new instance is created)
+
+
+
+
+ Invoked after an object is deserialized
+
+
+
+
+ Returns a sequence of the Type instances that can be
+ processed by this model.
+
+
+
+
+ Suggest a .proto definition for the given type
+
+ The type to generate a .proto definition for, or null to generate a .proto that represents the entire model
+ The .proto definition as a string
+
+
+
+ Adds support for an additional type in this model, optionally
+ appplying inbuilt patterns. If the type is already known to the
+ model, the existing type is returned **without** applying
+ any additional behaviour.
+
+ Inbuilt patterns include:
+ [ProtoContract]/[ProtoMember(n)]
+ [DataContract]/[DataMember(Order=n)]
+ [XmlType]/[XmlElement(Order=n)]
+ [On{Des|S}erializ{ing|ed}]
+ ShouldSerialize*/*Specified
+
+ The type to be supported
+ Whether to apply the inbuilt configuration patterns (via attributes etc), or
+ just add the type with no additional configuration (the type must then be manually configured).
+ The MetaType representing this type, allowing
+ further configuration.
+
+
+
+ Verifies that the model is still open to changes; if not, an exception is thrown
+
+
+
+
+ Prevents further changes to this model
+
+
+
+
+ Provides the key that represents a given type in the current model.
+
+
+
+
+ Writes a protocol-buffer representation of the given instance to the supplied stream.
+
+ Represents the type (including inheritance) to consider.
+ The existing instance to be serialized (cannot be null).
+ The destination stream to write to.
+
+
+
+ Applies a protocol-buffer stream to an existing instance (which may be null).
+
+ Represents the type (including inheritance) to consider.
+ The existing instance to be modified (can be null).
+ The binary stream to apply to the instance (cannot be null).
+ The updated instance; this may be different to the instance argument if
+ either the original instance was null, or the stream defines a known sub-type of the
+ original instance.
+
+
+
+ Designate a factory-method to use to create instances of any type; note that this only affect types seen by the serializer *after* setting the factory.
+
+
+
+
+ Global default that
+ enables/disables automatic tag generation based on the existing name / order
+ of the defined members. See
+ for usage and important warning / explanation.
+ You must set the global default before attempting to serialize/deserialize any
+ impacted type.
+
+
+
+
+ Global default that determines whether types are considered serializable
+ if they have [DataContract] / [XmlType]. With this enabled, ONLY
+ types marked as [ProtoContract] are added automatically.
+
+
+
+
+ Global switch that enables or disables the implicit
+ handling of "zero defaults"; meanning: if no other default is specified,
+ it assumes bools always default to false, integers to zero, etc.
+
+ If this is disabled, no such assumptions are made and only *explicit*
+ default values are processed. This is enabled by default to
+ preserve similar logic to v1.
+
+
+
+
+ Global switch that determines whether types with a .ToString() and a Parse(string)
+ should be serialized as strings.
+
+
+
+
+ The default model, used to support ProtoBuf.Serializer
+
+
+
+
+ Obtains the MetaType associated with a given Type for the current model,
+ allowing additional configuration.
+
+
+
+
+ Should support for unexpected types be added automatically?
+ If false, an exception is thrown when unexpected types
+ are encountered.
+
+
+
+
+ The amount of time to wait if there are concurrent metadata access operations
+
+
+
+
+ If a lock-contention is detected, this event signals the *owner* of the lock responsible for the blockage, indicating
+ what caused the problem; this is only raised if the lock-owning code successfully completes.
+
+
+
+
+ Contains the stack-trace of the owning code when a lock-contention scenario is detected
+
+
+
+
+ The stack-trace of the code that owned the lock when a lock-contention scenario occurred
+
+
+
+
+ Event-type that is raised when a lock-contention scenario is detected
+
+
+
+
+ Represents an inherited type in a type hierarchy.
+
+
+
+
+ Creates a new SubType instance.
+
+ The field-number that is used to encapsulate the data (as a nested
+ message) for the derived dype.
+ The sub-type to be considered.
+ Specific encoding style to use; in particular, Grouped can be used to avoid buffering, but is not the default.
+
+
+
+ The field-number that is used to encapsulate the data (as a nested
+ message) for the derived dype.
+
+
+
+
+ The sub-type to be considered.
+
+
+
+
+ Event arguments needed to perform type-formatting functions; this could be resolving a Type to a string suitable for serialization, or could
+ be requesting a Type from a string. If no changes are made, a default implementation will be used (from the assembly-qualified names).
+
+
+
+
+ The type involved in this map; if this is initially null, a Type is expected to be provided for the string in FormattedName.
+
+
+
+
+ The formatted-name involved in this map; if this is initially null, a formatted-name is expected from the type in Type.
+
+
+
+
+ Delegate type used to perform type-formatting functions; the sender originates as the type-model.
+
+
+
+
+ Represents a member (property/field) that is mapped to a protobuf field
+
+
+
+
+ Creates a new ValueMember instance
+
+
+
+
+ Creates a new ValueMember instance
+
+
+
+
+ Specifies methods for working with optional data members.
+
+ Provides a method (null for none) to query whether this member should
+ be serialized; it must be of the form "bool {Method}()". The member is only serialized if the
+ method returns true.
+ Provides a method (null for none) to indicate that a member was
+ deserialized; it must be of the form "void {Method}(bool)", and will be called with "true"
+ when data is found.
+
+
+
+ The number that identifies this member in a protobuf stream
+
+
+
+
+ Gets the member (field/property) which this member relates to.
+
+
+
+
+ Within a list / array / etc, the type of object for each item in the list (especially useful with ArrayList)
+
+
+
+
+ The underlying type of the member
+
+
+
+
+ For abstract types (IList etc), the type of concrete object to create (if required)
+
+
+
+
+ The type the defines the member
+
+
+
+
+ The default value of the item (members with this value will not be serialized)
+
+
+
+
+ Specifies the rules used to process the field; this is used to determine the most appropriate
+ wite-type, but also to describe subtypes within that wire-type (such as SignedVariant)
+
+
+
+
+ Indicates whether this field should follow strict encoding rules; this means (for example) that if a "fixed32"
+ is encountered when "variant" is defined, then it will fail (throw an exception) when parsing. Note that
+ when serializing the defined type is always used.
+
+
+
+
+ Indicates whether this field should use packed encoding (which can save lots of space for repeated primitive values).
+ This option only applies to list/array data of primitive types (int, double, etc).
+
+
+
+
+ Indicates whether this field should *repace* existing values (the default is false, meaning *append*).
+ This option only applies to list/array data.
+
+
+
+
+ Indicates whether this field is mandatory.
+
+
+
+
+ Enables full object-tracking/full-graph support.
+
+
+
+
+ Embeds the type information into the stream, allowing usage with types not known in advance.
+
+
+
+
+ Gets the logical name for this member in the schema (this is not critical for binary serialization, but may be used
+ when inferring a schema).
+
+
+
+
+ Should lists have extended support for null values? Note this makes the serialization less efficient.
+
+
+
+
+ Specifies the type of prefix that should be applied to messages.
+
+
+
+
+ No length prefix is applied to the data; the data is terminated only be the end of the stream.
+
+
+
+
+ A base-128 length prefix is applied to the data (efficient for short messages).
+
+
+
+
+ A fixed-length (little-endian) length prefix is applied to the data (useful for compatibility).
+
+
+
+
+ A fixed-length (big-endian) length prefix is applied to the data (useful for compatibility).
+
+
+
+
+ Indicates that a type is defined for protocol-buffer serialization.
+
+
+
+
+ Gets or sets the defined name of the type.
+
+
+
+
+ Gets or sets the fist offset to use with implicit field tags;
+ only uesd if ImplicitFields is set.
+
+
+
+
+ If specified, alternative contract markers (such as markers for XmlSerailizer or DataContractSerializer) are ignored.
+
+
+
+
+ If specified, do NOT treat this type as a list, even if it looks like one.
+
+
+
+
+ Gets or sets the mechanism used to automatically infer field tags
+ for members. This option should be used in advanced scenarios only.
+ Please review the important notes against the ImplicitFields enumeration.
+
+
+
+
+ Enables/disables automatic tag generation based on the existing name / order
+ of the defined members. This option is not used for members marked
+ with ProtoMemberAttribute, as intended to provide compatibility with
+ WCF serialization. WARNING: when adding new fields you must take
+ care to increase the Order for new elements, otherwise data corruption
+ may occur.
+
+ If not explicitly specified, the default is assumed from Serializer.GlobalOptions.InferTagFromName.
+
+
+
+ Has a InferTagFromName value been explicitly set? if not, the default from the type-model is assumed.
+
+
+
+
+ Specifies an offset to apply to [DataMember(Order=...)] markers;
+ this is useful when working with mex-generated classes that have
+ a different origin (usually 1 vs 0) than the original data-contract.
+
+ This value is added to the Order of each member.
+
+
+
+
+ If true, the constructor for the type is bypassed during deserialization, meaning any field initializers
+ or other initialization code is skipped.
+
+
+
+
+ Should this type be treated as a reference by default? Please also see the implications of this,
+ as recorded on ProtoMemberAttribute.AsReference
+
+
+
+
+ Applies only to enums (not to DTO classes themselves); gets or sets a value indicating that an enum should be treated directly as an int/short/etc, rather
+ than enforcing .proto enum rules. This is useful *in particul* for [Flags] enums.
+
+
+
+
+ Has a EnumPassthru value been explicitly set?
+
+
+
+
+ Used to define protocol-buffer specific behavior for
+ enumerated values.
+
+
+
+
+ Indicates whether this instance has a customised value mapping
+
+ true if a specific value is set
+
+
+
+ Gets or sets the specific value to use for this enum during serialization.
+
+
+
+
+ Gets or sets the defined name of the enum, as used in .proto
+ (this name is not used during serialization).
+
+
+
+
+ Indicates an error during serialization/deserialization of a proto stream.
+
+
+
+ Creates a new ProtoException instance.
+
+
+ Creates a new ProtoException instance.
+
+
+ Creates a new ProtoException instance.
+
+
+
+ Indicates that a member should be excluded from serialization; this
+ is only normally used when using implict fields.
+
+
+
+
+ Indicates that a member should be excluded from serialization; this
+ is only normally used when using implict fields. This allows
+ ProtoIgnoreAttribute usage
+ even for partial classes where the individual members are not
+ under direct control.
+
+
+
+
+ Creates a new ProtoPartialIgnoreAttribute instance.
+
+ Specifies the member to be ignored.
+
+
+
+ The name of the member to be ignored.
+
+
+
+
+ Indicates the known-types to support for an individual
+ message. This serializes each level in the hierarchy as
+ a nested message to retain wire-compatibility with
+ other protocol-buffer implementations.
+
+
+
+
+ Creates a new instance of the ProtoIncludeAttribute.
+
+ The unique index (within the type) that will identify this data.
+ The additional type to serialize/deserialize.
+
+
+
+ Creates a new instance of the ProtoIncludeAttribute.
+
+ The unique index (within the type) that will identify this data.
+ The additional type to serialize/deserialize.
+
+
+
+ Gets the unique index (within the type) that will identify this data.
+
+
+
+
+ Gets the additional type to serialize/deserialize.
+
+
+
+
+ Gets the additional type to serialize/deserialize.
+
+
+
+
+ Specifies whether the inherited sype's sub-message should be
+ written with a length-prefix (default), or with group markers.
+
+
+
+
+ Declares a member to be used in protocol-buffer serialization, using
+ the given Tag. A DataFormat may be used to optimise the serialization
+ format (for instance, using zigzag encoding for negative numbers, or
+ fixed-length encoding for large values.
+
+
+
+
+ Compare with another ProtoMemberAttribute for sorting purposes
+
+
+
+
+ Compare with another ProtoMemberAttribute for sorting purposes
+
+
+
+
+ Creates a new ProtoMemberAttribute instance.
+
+ Specifies the unique tag used to identify this member within the type.
+
+
+
+ Gets or sets the original name defined in the .proto; not used
+ during serialization.
+
+
+
+
+ Gets or sets the data-format to be used when encoding this value.
+
+
+
+
+ Gets the unique tag used to identify this member within the type.
+
+
+
+
+ Gets or sets a value indicating whether this member is mandatory.
+
+
+
+
+ Gets a value indicating whether this member is packed.
+ This option only applies to list/array data of primitive types (int, double, etc).
+
+
+
+
+ Indicates whether this field should *repace* existing values (the default is false, meaning *append*).
+ This option only applies to list/array data.
+
+
+
+
+ Enables full object-tracking/full-graph support.
+
+
+
+
+ Embeds the type information into the stream, allowing usage with types not known in advance.
+
+
+
+
+ Gets or sets a value indicating whether this member is packed (lists/arrays).
+
+
+
+
+ Additional (optional) settings that control serialization of members
+
+
+
+
+ Default; no additional options
+
+
+
+
+ Indicates that repeated elements should use packed (length-prefixed) encoding
+
+
+
+
+ Indicates that the given item is required
+
+
+
+
+ Enables full object-tracking/full-graph support
+
+
+
+
+ Embeds the type information into the stream, allowing usage with types not known in advance
+
+
+
+
+ Indicates whether this field should *repace* existing values (the default is false, meaning *append*).
+ This option only applies to list/array data.
+
+
+
+
+ Determines whether the types AsReferenceDefault value is used, or whether this member's AsReference should be used
+
+
+
+
+ Declares a member to be used in protocol-buffer serialization, using
+ the given Tag and MemberName. This allows ProtoMemberAttribute usage
+ even for partial classes where the individual members are not
+ under direct control.
+ A DataFormat may be used to optimise the serialization
+ format (for instance, using zigzag encoding for negative numbers, or
+ fixed-length encoding for large values.
+
+
+
+
+ Creates a new ProtoMemberAttribute instance.
+
+ Specifies the unique tag used to identify this member within the type.
+ Specifies the member to be serialized.
+
+
+
+ The name of the member to be serialized.
+
+
+
+
+ A stateful reader, used to read a protobuf stream. Typical usage would be (sequentially) to call
+ ReadFieldHeader and (after matching the field) an appropriate Read* method.
+
+
+
+
+ Creates a new reader against a stream
+
+ The source stream
+ The model to use for serialization; this can be null, but this will impair the ability to deserialize sub-objects
+ Additional context about this serialization operation
+
+
+
+ Creates a new reader against a stream
+
+ The source stream
+ The model to use for serialization; this can be null, but this will impair the ability to deserialize sub-objects
+ Additional context about this serialization operation
+ The number of bytes to read, or -1 to read until the end of the stream
+
+
+
+ Releases resources used by the reader, but importantly does not Dispose the
+ underlying stream; in many typical use-cases the stream is used for different
+ processes, so it is assumed that the consumer will Dispose their stream separately.
+
+
+
+
+ Reads an unsigned 32-bit integer from the stream; supported wire-types: Variant, Fixed32, Fixed64
+
+
+
+
+ Reads a signed 16-bit integer from the stream: Variant, Fixed32, Fixed64, SignedVariant
+
+
+
+
+ Reads an unsigned 16-bit integer from the stream; supported wire-types: Variant, Fixed32, Fixed64
+
+
+
+
+ Reads an unsigned 8-bit integer from the stream; supported wire-types: Variant, Fixed32, Fixed64
+
+
+
+
+ Reads a signed 8-bit integer from the stream; supported wire-types: Variant, Fixed32, Fixed64, SignedVariant
+
+
+
+
+ Reads a signed 32-bit integer from the stream; supported wire-types: Variant, Fixed32, Fixed64, SignedVariant
+
+
+
+
+ Reads a signed 64-bit integer from the stream; supported wire-types: Variant, Fixed32, Fixed64, SignedVariant
+
+
+
+
+ Reads a string from the stream (using UTF8); supported wire-types: String
+
+
+
+
+ Throws an exception indication that the given value cannot be mapped to an enum.
+
+
+
+
+ Reads a double-precision number from the stream; supported wire-types: Fixed32, Fixed64
+
+
+
+
+ Reads (merges) a sub-message from the stream, internally calling StartSubItem and EndSubItem, and (in between)
+ parsing the message in accordance with the model associated with the reader
+
+
+
+
+ Makes the end of consuming a nested message in the stream; the stream must be either at the correct EndGroup
+ marker, or all fields of the sub-message must have been consumed (in either case, this means ReadFieldHeader
+ should return zero)
+
+
+
+
+ Begins consuming a nested message in the stream; supported wire-types: StartGroup, String
+
+ The token returned must be help and used when callining EndSubItem
+
+
+
+ Reads a field header from the stream, setting the wire-type and retuning the field number. If no
+ more fields are available, then 0 is returned. This methods respects sub-messages.
+
+
+
+
+ Looks ahead to see whether the next field in the stream is what we expect
+ (typically; what we've just finished reading - for example ot read successive list items)
+
+
+
+
+ Compares the streams current wire-type to the hinted wire-type, updating the reader if necessary; for example,
+ a Variant may be updated to SignedVariant. If the hinted wire-type is unrelated then no change is made.
+
+
+
+
+ Verifies that the stream's current wire-type is as expected, or a specialized sub-type (for example,
+ SignedVariant) - in which case the current wire-type is updated. Otherwise an exception is thrown.
+
+
+
+
+ Discards the data for the current field.
+
+
+
+
+ Reads an unsigned 64-bit integer from the stream; supported wire-types: Variant, Fixed32, Fixed64
+
+
+
+
+ Reads a single-precision number from the stream; supported wire-types: Fixed32, Fixed64
+
+
+
+
+ Reads a boolean value from the stream; supported wire-types: Variant, Fixed32, Fixed64
+
+
+
+
+
+ Reads a byte-sequence from the stream, appending them to an existing byte-sequence (which can be null); supported wire-types: String
+
+
+
+
+ Reads the length-prefix of a message from a stream without buffering additional data, allowing a fixed-length
+ reader to be created.
+
+
+
+
+ Reads a little-endian encoded integer. An exception is thrown if the data is not all available.
+
+
+
+
+ Reads a big-endian encoded integer. An exception is thrown if the data is not all available.
+
+
+
+
+ Reads a varint encoded integer. An exception is thrown if the data is not all available.
+
+
+
+
+ Reads a string (of a given lenth, in bytes) directly from the source into a pre-existing buffer. An exception is thrown if the data is not all available.
+
+
+
+
+ Reads a given number of bytes directly from the source. An exception is thrown if the data is not all available.
+
+
+
+
+ Reads a string (of a given lenth, in bytes) directly from the source. An exception is thrown if the data is not all available.
+
+
+
+
+ Reads the length-prefix of a message from a stream without buffering additional data, allowing a fixed-length
+ reader to be created.
+
+
+
+ The number of bytes consumed; 0 if no data available
+
+
+
+ Copies the current field into the instance as extension data
+
+
+
+
+ Indicates whether the reader still has data remaining in the current sub-item,
+ additionally setting the wire-type for the next field if there is more data.
+ This is used when decoding packed data.
+
+
+
+
+ Utility method, not intended for public use; this helps maintain the root object is complex scenarios
+
+
+
+
+ Reads a Type from the stream, using the model's DynamicTypeFormatting if appropriate; supported wire-types: String
+
+
+
+
+ Merge two objects using the details from the current reader; this is used to change the type
+ of objects when an inheritance relationship is discovered later than usual during deserilazation.
+
+
+
+
+ Gets the number of the field being processed.
+
+
+
+
+ Indicates the underlying proto serialization format on the wire.
+
+
+
+
+ Gets / sets a flag indicating whether strings should be checked for repetition; if
+ true, any repeated UTF-8 byte sequence will result in the same String instance, rather
+ than a second instance of the same string. Enabled by default. Note that this uses
+ a custom interner - the system-wide string interner is not used.
+
+
+
+
+ Addition information about this deserialization operation.
+
+
+
+
+ Returns the position of the current reader (note that this is not necessarily the same as the position
+ in the underlying stream, if multiple readers are used on the same stream)
+
+
+
+
+ Get the TypeModel associated with this reader
+
+
+
+
+ Represents an output stream for writing protobuf data.
+
+ Why is the API backwards (static methods with writer arguments)?
+ See: http://marcgravell.blogspot.com/2010/03/last-will-be-first-and-first-will-be.html
+
+
+
+
+ Write an encapsulated sub-object, using the supplied unique key (reprasenting a type).
+
+ The object to write.
+ The key that uniquely identifies the type within the model.
+ The destination.
+
+
+
+ Write an encapsulated sub-object, using the supplied unique key (reprasenting a type) - but the
+ caller is asserting that this relationship is non-recursive; no recursion check will be
+ performed.
+
+ The object to write.
+ The key that uniquely identifies the type within the model.
+ The destination.
+
+
+
+ Writes a field-header, indicating the format of the next data we plan to write.
+
+
+
+
+ Writes a byte-array to the stream; supported wire-types: String
+
+
+
+
+ Writes a byte-array to the stream; supported wire-types: String
+
+
+
+
+ Indicates the start of a nested record.
+
+ The instance to write.
+ The destination.
+ A token representing the state of the stream; this token is given to EndSubItem.
+
+
+
+ Indicates the end of a nested record.
+
+ The token obtained from StartubItem.
+ The destination.
+
+
+
+ Creates a new writer against a stream
+
+ The destination stream
+ The model to use for serialization; this can be null, but this will impair the ability to serialize sub-objects
+ Additional context about this serialization operation
+
+
+
+ Flushes data to the underlying stream, and releases any resources. The underlying stream is *not* disposed
+ by this operation.
+
+
+
+
+ Writes any buffered data (if possible) to the underlying stream.
+
+ The writer to flush
+ It is not always possible to fully flush, since some sequences
+ may require values to be back-filled into the byte-stream.
+
+
+
+ Writes an unsigned 32-bit integer to the stream; supported wire-types: Variant, Fixed32, Fixed64
+
+
+
+
+ Writes a string to the stream; supported wire-types: String
+
+
+
+
+ Writes an unsigned 64-bit integer to the stream; supported wire-types: Variant, Fixed32, Fixed64
+
+
+
+
+ Writes a signed 64-bit integer to the stream; supported wire-types: Variant, Fixed32, Fixed64, SignedVariant
+
+
+
+
+ Writes an unsigned 16-bit integer to the stream; supported wire-types: Variant, Fixed32, Fixed64
+
+
+
+
+ Writes a signed 16-bit integer to the stream; supported wire-types: Variant, Fixed32, Fixed64, SignedVariant
+
+
+
+
+ Writes an unsigned 16-bit integer to the stream; supported wire-types: Variant, Fixed32, Fixed64
+
+
+
+
+ Writes an unsigned 8-bit integer to the stream; supported wire-types: Variant, Fixed32, Fixed64
+
+
+
+
+ Writes a signed 8-bit integer to the stream; supported wire-types: Variant, Fixed32, Fixed64, SignedVariant
+
+
+
+
+ Writes a signed 32-bit integer to the stream; supported wire-types: Variant, Fixed32, Fixed64, SignedVariant
+
+
+
+
+ Writes a double-precision number to the stream; supported wire-types: Fixed32, Fixed64
+
+
+
+
+ Writes a single-precision number to the stream; supported wire-types: Fixed32, Fixed64
+
+
+
+
+ Throws an exception indicating that the given enum cannot be mapped to a serialized value.
+
+
+
+
+ Writes a boolean to the stream; supported wire-types: Variant, Fixed32, Fixed64
+
+
+
+
+ Copies any extension data stored for the instance to the underlying stream
+
+
+
+
+ Used for packed encoding; indicates that the next field should be skipped rather than
+ a field header written. Note that the field number must match, else an exception is thrown
+ when the attempt is made to write the (incorrect) field. The wire-type is taken from the
+ subsequent call to WriteFieldHeader. Only primitive types can be packed.
+
+
+
+
+ Specifies a known root object to use during reference-tracked serialization
+
+
+
+
+ Writes a Type to the stream, using the model's DynamicTypeFormatting if appropriate; supported wire-types: String
+
+
+
+
+ Addition information about this serialization operation.
+
+
+
+
+ Get the TypeModel associated with this writer
+
+
+
+
+ Additional information about a serialization operation
+
+
+
+
+ Gets or sets a user-defined object containing additional information about this serialization/deserialization operation.
+
+
+
+
+ A default SerializationContext, with minimal information.
+
+
+
+
+ Provides protocol-buffer serialization capability for concrete, attributed types. This
+ is a *default* model, but custom serializer models are also supported.
+
+
+ Protocol-buffer serialization is a compact binary format, designed to take
+ advantage of sparse data and knowledge of specific data types; it is also
+ extensible, allowing a type to be deserialized / merged even if some data is
+ not recognised.
+
+
+
+
+ The field number that is used as a default when serializing/deserializing a list of objects.
+ The data is treated as repeated message with field number 1.
+
+
+
+
+ Suggest a .proto definition for the given type
+
+ The type to generate a .proto definition for
+ The .proto definition as a string
+
+
+
+ Create a deep clone of the supplied instance; any sub-items are also cloned.
+
+
+
+
+ Applies a protocol-buffer stream to an existing instance.
+
+ The type being merged.
+ The existing instance to be modified (can be null).
+ The binary stream to apply to the instance (cannot be null).
+ The updated instance; this may be different to the instance argument if
+ either the original instance was null, or the stream defines a known sub-type of the
+ original instance.
+
+
+
+ Creates a new instance from a protocol-buffer stream
+
+ The type to be created.
+ The binary stream to apply to the new instance (cannot be null).
+ A new, initialized instance.
+
+
+
+ Writes a protocol-buffer representation of the given instance to the supplied stream.
+
+ The existing instance to be serialized (cannot be null).
+ The destination stream to write to.
+
+
+
+ Serializes a given instance and deserializes it as a different type;
+ this can be used to translate between wire-compatible objects (where
+ two .NET types represent the same data), or to promote/demote a type
+ through an inheritance hierarchy.
+
+ No assumption of compatibility is made between the types.
+ The type of the object being copied.
+ The type of the new object to be created.
+ The existing instance to use as a template.
+ A new instane of type TNewType, with the data from TOldType.
+
+
+
+ Precompiles the serializer for a given type.
+
+
+
+
+ Reads a sequence of consecutive length-prefixed items from a stream, using
+ either base-128 or fixed-length prefixes. Base-128 prefixes with a tag
+ are directly comparable to serializing multiple items in succession
+ (use the tag to emulate the implicit behavior
+ when serializing a list/array). When a tag is
+ specified, any records with different tags are silently omitted. The
+ tag is ignored. The tag is ignores for fixed-length prefixes.
+
+ The type of object to deserialize.
+ The binary stream containing the serialized records.
+ The prefix style used in the data.
+ The tag of records to return (if non-positive, then no tag is
+ expected and all records are returned).
+ The sequence of deserialized objects.
+
+
+
+ Creates a new instance from a protocol-buffer stream that has a length-prefix
+ on data (to assist with network IO).
+
+ The type to be created.
+ The binary stream to apply to the new instance (cannot be null).
+ How to encode the length prefix.
+ A new, initialized instance.
+
+
+
+ Creates a new instance from a protocol-buffer stream that has a length-prefix
+ on data (to assist with network IO).
+
+ The type to be created.
+ The binary stream to apply to the new instance (cannot be null).
+ How to encode the length prefix.
+ The expected tag of the item (only used with base-128 prefix style).
+ A new, initialized instance.
+
+
+
+ Applies a protocol-buffer stream to an existing instance, using length-prefixed
+ data - useful with network IO.
+
+ The type being merged.
+ The existing instance to be modified (can be null).
+ The binary stream to apply to the instance (cannot be null).
+ How to encode the length prefix.
+ The updated instance; this may be different to the instance argument if
+ either the original instance was null, or the stream defines a known sub-type of the
+ original instance.
+
+
+
+ Writes a protocol-buffer representation of the given instance to the supplied stream,
+ with a length-prefix. This is useful for socket programming,
+ as DeserializeWithLengthPrefix/MergeWithLengthPrefix can be used to read the single object back
+ from an ongoing stream.
+
+ The type being serialized.
+ The existing instance to be serialized (cannot be null).
+ How to encode the length prefix.
+ The destination stream to write to.
+
+
+
+ Writes a protocol-buffer representation of the given instance to the supplied stream,
+ with a length-prefix. This is useful for socket programming,
+ as DeserializeWithLengthPrefix/MergeWithLengthPrefix can be used to read the single object back
+ from an ongoing stream.
+
+ The type being serialized.
+ The existing instance to be serialized (cannot be null).
+ How to encode the length prefix.
+ The destination stream to write to.
+ The tag used as a prefix to each record (only used with base-128 style prefixes).
+
+
+ Indicates the number of bytes expected for the next message.
+ The stream containing the data to investigate for a length.
+ The algorithm used to encode the length.
+ The length of the message, if it could be identified.
+ True if a length could be obtained, false otherwise.
+
+
+ Indicates the number of bytes expected for the next message.
+ The buffer containing the data to investigate for a length.
+ The offset of the first byte to read from the buffer.
+ The number of bytes to read from the buffer.
+ The algorithm used to encode the length.
+ The length of the message, if it could be identified.
+ True if a length could be obtained, false otherwise.
+
+
+
+ Releases any internal buffers that have been reserved for efficiency; this does not affect any serialization
+ operations; simply: it can be used (optionally) to release the buffers for garbage collection (at the expense
+ of having to re-allocate a new buffer for the next operation, rather than re-use prior buffers).
+
+
+
+
+ Provides non-generic access to the default serializer.
+
+
+
+
+ Create a deep clone of the supplied instance; any sub-items are also cloned.
+
+
+
+
+ Writes a protocol-buffer representation of the given instance to the supplied stream.
+
+ The existing instance to be serialized (cannot be null).
+ The destination stream to write to.
+
+
+
+ Creates a new instance from a protocol-buffer stream
+
+ The type to be created.
+ The binary stream to apply to the new instance (cannot be null).
+ A new, initialized instance.
+
+
+ Applies a protocol-buffer stream to an existing instance.
+ The existing instance to be modified (cannot be null).
+ The binary stream to apply to the instance (cannot be null).
+ The updated instance
+
+
+
+ Writes a protocol-buffer representation of the given instance to the supplied stream,
+ with a length-prefix. This is useful for socket programming,
+ as DeserializeWithLengthPrefix/MergeWithLengthPrefix can be used to read the single object back
+ from an ongoing stream.
+
+ The existing instance to be serialized (cannot be null).
+ How to encode the length prefix.
+ The destination stream to write to.
+ The tag used as a prefix to each record (only used with base-128 style prefixes).
+
+
+
+ Applies a protocol-buffer stream to an existing instance (or null), using length-prefixed
+ data - useful with network IO.
+
+ The existing instance to be modified (can be null).
+ The binary stream to apply to the instance (cannot be null).
+ How to encode the length prefix.
+ Used to resolve types on a per-field basis.
+ The updated instance; this may be different to the instance argument if
+ either the original instance was null, or the stream defines a known sub-type of the
+ original instance.
+
+
+
+ Indicates whether the supplied type is explicitly modelled by the model
+
+
+
+
+ Global switches that change the behavior of protobuf-net
+
+
+
+
+
+
+
+
+
+ Maps a field-number to a type
+
+
+
+
+ Perform the steps necessary to serialize this data.
+
+ The value to be serialized.
+ The writer entity that is accumulating the output data.
+
+
+
+ Perform the steps necessary to deserialize this data.
+
+ The current value, if appropriate.
+ The reader providing the input data.
+ The updated / replacement value.
+
+
+
+ The type that this serializer is intended to work for.
+
+
+
+
+ Indicates whether a Read operation replaces the existing value, or
+ extends the value. If false, the "value" parameter to Read is
+ discarded, and should be passed in as null.
+
+
+
+
+ Now all Read operations return a value (although most do); if false no
+ value should be expected.
+
+
+
+
+ Used to hold particulars relating to nested objects. This is opaque to the caller - simply
+ give back the token you are given at the end of an object.
+
+
+
+
+ Indicates the encoding used to represent an individual value in a protobuf stream
+
+
+
+
+ Represents an error condition
+
+
+
+
+ Base-128 variant-length encoding
+
+
+
+
+ Fixed-length 8-byte encoding
+
+
+
+
+ Length-variant-prefixed encoding
+
+
+
+
+ Indicates the start of a group
+
+
+
+
+ Indicates the end of a group
+
+
+
+
+ Fixed-length 4-byte encoding
+ 10
+
+
+
+ This is not a formal wire-type in the "protocol buffers" spec, but
+ denotes a variant integer that should be interpreted using
+ zig-zag semantics (so -ve numbers aren't a significant overhead)
+
+
+
+
diff --git a/packages/protobuf-net.2.0.0.668/lib/sl3-wp/protobuf-net.dll b/packages/protobuf-net.2.0.0.668/lib/sl3-wp/protobuf-net.dll
new file mode 100644
index 000000000..a34b9ca12
Binary files /dev/null and b/packages/protobuf-net.2.0.0.668/lib/sl3-wp/protobuf-net.dll differ
diff --git a/packages/protobuf-net.2.0.0.668/lib/sl3-wp/protobuf-net.xml b/packages/protobuf-net.2.0.0.668/lib/sl3-wp/protobuf-net.xml
new file mode 100644
index 000000000..e2507cb3a
--- /dev/null
+++ b/packages/protobuf-net.2.0.0.668/lib/sl3-wp/protobuf-net.xml
@@ -0,0 +1,2539 @@
+
+
+
+ protobuf-net
+
+
+
+
+ Provides support for common .NET types that do not have a direct representation
+ in protobuf, using the definitions from bcl.proto
+
+
+
+
+ Creates a new instance of the specified type, bypassing the constructor.
+
+ The type to create
+ The new instance
+ If the platform does not support constructor-skipping
+
+
+
+ Writes a TimeSpan to a protobuf stream
+
+
+
+
+ Parses a TimeSpan from a protobuf stream
+
+
+
+
+ Parses a DateTime from a protobuf stream
+
+
+
+
+ Writes a DateTime to a protobuf stream
+
+
+
+
+ Parses a decimal from a protobuf stream
+
+
+
+
+ Writes a decimal to a protobuf stream
+
+
+
+
+ Writes a Guid to a protobuf stream
+
+
+
+
+ Parses a Guid from a protobuf stream
+
+
+
+
+ Reads an *implementation specific* bundled .NET object, including (as options) type-metadata, identity/re-use, etc.
+
+
+
+
+ Writes an *implementation specific* bundled .NET object, including (as options) type-metadata, identity/re-use, etc.
+
+
+
+
+ Optional behaviours that introduce .NET-specific functionality
+
+
+
+
+ No special behaviour
+
+
+
+
+ Enables full object-tracking/full-graph support.
+
+
+
+
+ Embeds the type information into the stream, allowing usage with types not known in advance.
+
+
+
+
+ If false, the constructor for the type is bypassed during deserialization, meaning any field initializers
+ or other initialization code is skipped.
+
+
+
+
+ Should the object index be reserved, rather than creating an object promptly
+
+
+
+
+ Provides a simple buffer-based implementation of an extension object.
+
+
+
+
+ Provides addition capability for supporting unexpected fields during
+ protocol-buffer serialization/deserialization. This allows for loss-less
+ round-trip/merge, even when the data is not fully understood.
+
+
+
+
+ Requests a stream into which any unexpected fields can be persisted.
+
+ A new stream suitable for storing data.
+
+
+
+ Indicates that all unexpected fields have now been stored. The
+ implementing class is responsible for closing the stream. If
+ "commit" is not true the data may be discarded.
+
+ The stream originally obtained by BeginAppend.
+ True if the append operation completed successfully.
+
+
+
+ Requests a stream of the unexpected fields previously stored.
+
+ A prepared stream of the unexpected fields.
+
+
+
+ Indicates that all unexpected fields have now been read. The
+ implementing class is responsible for closing the stream.
+
+ The stream originally obtained by BeginQuery.
+
+
+
+ Requests the length of the raw binary stream; this is used
+ when serializing sub-entities to indicate the expected size.
+
+ The length of the binary stream representing unexpected data.
+
+
+ Specifies a method on the root-contract in an hierarchy to be invoked before serialization.
+
+
+ Specifies a method on the root-contract in an hierarchy to be invoked after serialization.
+
+
+ Specifies a method on the root-contract in an hierarchy to be invoked before deserialization.
+
+
+ Specifies a method on the root-contract in an hierarchy to be invoked after deserialization.
+
+
+
+ Sub-format to use when serializing/deserializing data
+
+
+
+
+ Uses the default encoding for the data-type.
+
+
+
+
+ When applied to signed integer-based data (including Decimal), this
+ indicates that zigzag variant encoding will be used. This means that values
+ with small magnitude (regardless of sign) take a small amount
+ of space to encode.
+
+
+
+
+ When applied to signed integer-based data (including Decimal), this
+ indicates that two's-complement variant encoding will be used.
+ This means that any -ve number will take 10 bytes (even for 32-bit),
+ so should only be used for compatibility.
+
+
+
+
+ When applied to signed integer-based data (including Decimal), this
+ indicates that a fixed amount of space will be used.
+
+
+
+
+ When applied to a sub-message, indicates that the value should be treated
+ as group-delimited.
+
+
+
+
+ Simple base class for supporting unexpected fields allowing
+ for loss-less round-tips/merge, even if the data is not understod.
+ The additional fields are (by default) stored in-memory in a buffer.
+
+ As an example of an alternative implementation, you might
+ choose to use the file system (temporary files) as the back-end, tracking
+ only the paths [such an object would ideally be IDisposable and use
+ a finalizer to ensure that the files are removed].
+
+
+
+
+ Indicates that the implementing type has support for protocol-buffer
+ extensions.
+
+ Can be implemented by deriving from Extensible.
+
+
+
+ Retrieves the extension object for the current
+ instance, optionally creating it if it does not already exist.
+
+ Should a new extension object be
+ created if it does not already exist?
+ The extension object if it exists (or was created), or null
+ if the extension object does not exist or is not available.
+ The createIfMissing argument is false during serialization,
+ and true during deserialization upon encountering unexpected fields.
+
+
+
+ Retrieves the extension object for the current
+ instance, optionally creating it if it does not already exist.
+
+ Should a new extension object be
+ created if it does not already exist?
+ The extension object if it exists (or was created), or null
+ if the extension object does not exist or is not available.
+ The createIfMissing argument is false during serialization,
+ and true during deserialization upon encountering unexpected fields.
+
+
+
+ Provides a simple, default implementation for extension support,
+ optionally creating it if it does not already exist. Designed to be called by
+ classes implementing .
+
+ Should a new extension object be
+ created if it does not already exist?
+ The extension field to check (and possibly update).
+ The extension object if it exists (or was created), or null
+ if the extension object does not exist or is not available.
+ The createIfMissing argument is false during serialization,
+ and true during deserialization upon encountering unexpected fields.
+
+
+
+ Appends the value as an additional (unexpected) data-field for the instance.
+ Note that for non-repeated sub-objects, this equates to a merge operation;
+ for repeated sub-objects this adds a new instance to the set; for simple
+ values the new value supercedes the old value.
+
+ Note that appending a value does not remove the old value from
+ the stream; avoid repeatedly appending values for the same field.
+ The type of the value to append.
+ The extensible object to append the value to.
+ The field identifier; the tag should not be defined as a known data-field for the instance.
+ The value to append.
+
+
+
+ Appends the value as an additional (unexpected) data-field for the instance.
+ Note that for non-repeated sub-objects, this equates to a merge operation;
+ for repeated sub-objects this adds a new instance to the set; for simple
+ values the new value supercedes the old value.
+
+ Note that appending a value does not remove the old value from
+ the stream; avoid repeatedly appending values for the same field.
+ The data-type of the field.
+ The data-format to use when encoding the value.
+ The extensible object to append the value to.
+ The field identifier; the tag should not be defined as a known data-field for the instance.
+ The value to append.
+
+
+
+ Queries an extensible object for an additional (unexpected) data-field for the instance.
+ The value returned is the composed value after merging any duplicated content; if the
+ value is "repeated" (a list), then use GetValues instead.
+
+ The data-type of the field.
+ The extensible object to obtain the value from.
+ The field identifier; the tag should not be defined as a known data-field for the instance.
+ The effective value of the field, or the default value if not found.
+
+
+
+ Queries an extensible object for an additional (unexpected) data-field for the instance.
+ The value returned is the composed value after merging any duplicated content; if the
+ value is "repeated" (a list), then use GetValues instead.
+
+ The data-type of the field.
+ The extensible object to obtain the value from.
+ The field identifier; the tag should not be defined as a known data-field for the instance.
+ The data-format to use when decoding the value.
+ The effective value of the field, or the default value if not found.
+
+
+
+ Queries an extensible object for an additional (unexpected) data-field for the instance.
+ The value returned (in "value") is the composed value after merging any duplicated content;
+ if the value is "repeated" (a list), then use GetValues instead.
+
+ The data-type of the field.
+ The effective value of the field, or the default value if not found.
+ The extensible object to obtain the value from.
+ The field identifier; the tag should not be defined as a known data-field for the instance.
+ True if data for the field was present, false otherwise.
+
+
+
+ Queries an extensible object for an additional (unexpected) data-field for the instance.
+ The value returned (in "value") is the composed value after merging any duplicated content;
+ if the value is "repeated" (a list), then use GetValues instead.
+
+ The data-type of the field.
+ The effective value of the field, or the default value if not found.
+ The extensible object to obtain the value from.
+ The field identifier; the tag should not be defined as a known data-field for the instance.
+ The data-format to use when decoding the value.
+ True if data for the field was present, false otherwise.
+
+
+
+ Queries an extensible object for an additional (unexpected) data-field for the instance.
+ The value returned (in "value") is the composed value after merging any duplicated content;
+ if the value is "repeated" (a list), then use GetValues instead.
+
+ The data-type of the field.
+ The effective value of the field, or the default value if not found.
+ The extensible object to obtain the value from.
+ The field identifier; the tag should not be defined as a known data-field for the instance.
+ The data-format to use when decoding the value.
+ Allow tags that are present as part of the definition; for example, to query unknown enum values.
+ True if data for the field was present, false otherwise.
+
+
+
+ Queries an extensible object for an additional (unexpected) data-field for the instance.
+ Each occurrence of the field is yielded separately, making this usage suitable for "repeated"
+ (list) fields.
+
+ The extended data is processed lazily as the enumerator is iterated.
+ The data-type of the field.
+ The extensible object to obtain the value from.
+ The field identifier; the tag should not be defined as a known data-field for the instance.
+ An enumerator that yields each occurrence of the field.
+
+
+
+ Queries an extensible object for an additional (unexpected) data-field for the instance.
+ Each occurrence of the field is yielded separately, making this usage suitable for "repeated"
+ (list) fields.
+
+ The extended data is processed lazily as the enumerator is iterated.
+ The data-type of the field.
+ The extensible object to obtain the value from.
+ The field identifier; the tag should not be defined as a known data-field for the instance.
+ The data-format to use when decoding the value.
+ An enumerator that yields each occurrence of the field.
+
+
+
+ Queries an extensible object for an additional (unexpected) data-field for the instance.
+ The value returned (in "value") is the composed value after merging any duplicated content;
+ if the value is "repeated" (a list), then use GetValues instead.
+
+ The data-type of the field.
+ The model to use for configuration.
+ The effective value of the field, or the default value if not found.
+ The extensible object to obtain the value from.
+ The field identifier; the tag should not be defined as a known data-field for the instance.
+ The data-format to use when decoding the value.
+ Allow tags that are present as part of the definition; for example, to query unknown enum values.
+ True if data for the field was present, false otherwise.
+
+
+
+ Queries an extensible object for an additional (unexpected) data-field for the instance.
+ Each occurrence of the field is yielded separately, making this usage suitable for "repeated"
+ (list) fields.
+
+ The extended data is processed lazily as the enumerator is iterated.
+ The model to use for configuration.
+ The data-type of the field.
+ The extensible object to obtain the value from.
+ The field identifier; the tag should not be defined as a known data-field for the instance.
+ The data-format to use when decoding the value.
+ An enumerator that yields each occurrence of the field.
+
+
+
+ Appends the value as an additional (unexpected) data-field for the instance.
+ Note that for non-repeated sub-objects, this equates to a merge operation;
+ for repeated sub-objects this adds a new instance to the set; for simple
+ values the new value supercedes the old value.
+
+ Note that appending a value does not remove the old value from
+ the stream; avoid repeatedly appending values for the same field.
+ The model to use for configuration.
+ The data-format to use when encoding the value.
+ The extensible object to append the value to.
+ The field identifier; the tag should not be defined as a known data-field for the instance.
+ The value to append.
+
+
+
+ This class acts as an internal wrapper allowing us to do a dynamic
+ methodinfo invoke; an't put into Serializer as don't want on public
+ API; can't put into Serializer<T> since we need to invoke
+ accross classes, which isn't allowed in Silverlight)
+
+
+
+
+ All this does is call GetExtendedValuesTyped with the correct type for "instance";
+ this ensures that we don't get issues with subclasses declaring conflicting types -
+ the caller must respect the fields defined for the type they pass in.
+
+
+
+
+ All this does is call GetExtendedValuesTyped with the correct type for "instance";
+ this ensures that we don't get issues with subclasses declaring conflicting types -
+ the caller must respect the fields defined for the type they pass in.
+
+
+
+
+ Not all frameworks are created equal (fx1.1 vs fx2.0,
+ micro-framework, compact-framework,
+ silverlight, etc). This class simply wraps up a few things that would
+ otherwise make the real code unnecessarily messy, providing fallback
+ implementations if necessary.
+
+
+
+
+ Intended to be a direct map to regular TypeCode, but:
+ - with missing types
+ - existing on WinRT
+
+
+
+
+ Specifies the method used to infer field tags for members of the type
+ under consideration. Tags are deduced using the invariant alphabetic
+ sequence of the members' names; this makes implicit field tags very brittle,
+ and susceptible to changes such as field names (normally an isolated
+ change).
+
+
+
+
+ No members are serialized implicitly; all members require a suitable
+ attribute such as [ProtoMember]. This is the recmomended mode for
+ most scenarios.
+
+
+
+
+ Public properties and fields are eligible for implicit serialization;
+ this treats the public API as a contract. Ordering beings from ImplicitFirstTag.
+
+
+
+
+ Public and non-public fields are eligible for implicit serialization;
+ this acts as a state/implementation serializer. Ordering beings from ImplicitFirstTag.
+
+
+
+
+ Represents the set of serialization callbacks to be used when serializing/deserializing a type.
+
+
+
+ Called before serializing an instance
+
+
+ Called before deserializing an instance
+
+
+ Called after serializing an instance
+
+
+ Called after deserializing an instance
+
+
+
+ True if any callback is set, else False
+
+
+
+
+ Represents a type at runtime for use with protobuf, allowing the field mappings (etc) to be defined
+
+
+
+
+ Get the name of the type being represented
+
+
+
+
+ Adds a known sub-type to the inheritance model
+
+
+
+
+ Adds a known sub-type to the inheritance model
+
+
+
+
+ Assigns the callbacks to use during serialiation/deserialization.
+
+ The method (or null) called before serialization begins.
+ The method (or null) called when serialization is complete.
+ The method (or null) called before deserialization begins (or when a new instance is created during deserialization).
+ The method (or null) called when deserialization is complete.
+ The set of callbacks.
+
+
+
+ Assigns the callbacks to use during serialiation/deserialization.
+
+ The name of the method (or null) called before serialization begins.
+ The name of the method (or null) called when serialization is complete.
+ The name of the method (or null) called before deserialization begins (or when a new instance is created during deserialization).
+ The name of the method (or null) called when deserialization is complete.
+ The set of callbacks.
+
+
+
+ Designate a factory-method to use to create instances of this type
+
+
+
+
+ Designate a factory-method to use to create instances of this type
+
+
+
+
+ Throws an exception if the type has been made immutable
+
+
+
+
+ Adds a member (by name) to the MetaType
+
+
+
+
+ Adds a member (by name) to the MetaType, returning the ValueMember rather than the fluent API.
+ This is otherwise identical to Add.
+
+
+
+
+ Adds a member (by name) to the MetaType
+
+
+
+
+ Performs serialization of this type via a surrogate; all
+ other serialization options are ignored and handled
+ by the surrogate's configuration.
+
+
+
+
+ Adds a set of members (by name) to the MetaType
+
+
+
+
+ Adds a member (by name) to the MetaType
+
+
+
+
+ Adds a member (by name) to the MetaType, including an itemType and defaultType for representing lists
+
+
+
+
+ Adds a member (by name) to the MetaType, including an itemType and defaultType for representing lists, returning the ValueMember rather than the fluent API.
+ This is otherwise identical to Add.
+
+
+
+
+ Returns the ValueMember instances associated with this type
+
+
+
+
+ Returns the SubType instances associated with this type
+
+
+
+
+ Gets the base-type for this type
+
+
+
+
+ When used to compile a model, should public serialization/deserialzation methods
+ be included for this type?
+
+
+
+
+ Should this type be treated as a reference by default?
+
+
+
+
+ Indicates whether the current type has defined callbacks
+
+
+
+
+ Indicates whether the current type has defined subtypes
+
+
+
+
+ Returns the set of callbacks defined for this type
+
+
+
+
+ Gets or sets the name of this contract.
+
+
+
+
+ The runtime type that the meta-type represents
+
+
+
+
+ Gets or sets whether the type should use a parameterless constructor (the default),
+ or whether the type should skip the constructor completely. This option is not supported
+ on compact-framework.
+
+
+
+
+ The concrete type to create when a new instance of this type is needed; this may be useful when dealing
+ with dynamic proxies, or with interface-based APIs
+
+
+
+
+ Returns the ValueMember that matchs a given field number, or null if not found
+
+
+
+
+ Returns the ValueMember that matchs a given member (property/field), or null if not found
+
+
+
+
+ Gets or sets a value indicating that an enum should be treated directly as an int/short/etc, rather
+ than enforcing .proto enum rules. This is useful *in particul* for [Flags] enums.
+
+
+
+
+ Gets or sets a value indicating that this type should NOT be treated as a list, even if it has
+ familiar list-like characteristics (enumerable, add, etc)
+
+
+
+
+ Provides protobuf serialization support for a number of types that can be defined at runtime
+
+
+
+
+ Provides protobuf serialization support for a number of types
+
+
+
+
+ Resolve a System.Type to the compiler-specific type
+
+
+
+
+ Resolve a System.Type to the compiler-specific type
+
+
+
+
+ This is the more "complete" version of Serialize, which handles single instances of mapped types.
+ The value is written as a complete field, including field-header and (for sub-objects) a
+ length-prefix
+ In addition to that, this provides support for:
+ - basic values; individual int / string / Guid / etc
+ - IEnumerable sequences of any type handled by TrySerializeAuxiliaryType
+
+
+
+
+
+ Writes a protocol-buffer representation of the given instance to the supplied stream.
+
+ The existing instance to be serialized (cannot be null).
+ The destination stream to write to.
+
+
+
+ Writes a protocol-buffer representation of the given instance to the supplied stream.
+
+ The existing instance to be serialized (cannot be null).
+ The destination stream to write to.
+ Additional information about this serialization operation.
+
+
+
+ Writes a protocol-buffer representation of the given instance to the supplied writer.
+
+ The existing instance to be serialized (cannot be null).
+ The destination writer to write to.
+
+
+
+ Applies a protocol-buffer stream to an existing instance (or null), using length-prefixed
+ data - useful with network IO.
+
+ The type being merged.
+ The existing instance to be modified (can be null).
+ The binary stream to apply to the instance (cannot be null).
+ How to encode the length prefix.
+ The tag used as a prefix to each record (only used with base-128 style prefixes).
+ The updated instance; this may be different to the instance argument if
+ either the original instance was null, or the stream defines a known sub-type of the
+ original instance.
+
+
+
+ Applies a protocol-buffer stream to an existing instance (or null), using length-prefixed
+ data - useful with network IO.
+
+ The type being merged.
+ The existing instance to be modified (can be null).
+ The binary stream to apply to the instance (cannot be null).
+ How to encode the length prefix.
+ The tag used as a prefix to each record (only used with base-128 style prefixes).
+ Used to resolve types on a per-field basis.
+ The updated instance; this may be different to the instance argument if
+ either the original instance was null, or the stream defines a known sub-type of the
+ original instance.
+
+
+
+ Applies a protocol-buffer stream to an existing instance (or null), using length-prefixed
+ data - useful with network IO.
+
+ The type being merged.
+ The existing instance to be modified (can be null).
+ The binary stream to apply to the instance (cannot be null).
+ How to encode the length prefix.
+ The tag used as a prefix to each record (only used with base-128 style prefixes).
+ Used to resolve types on a per-field basis.
+ Returns the number of bytes consumed by this operation (includes length-prefix overheads and any skipped data).
+ The updated instance; this may be different to the instance argument if
+ either the original instance was null, or the stream defines a known sub-type of the
+ original instance.
+
+
+
+ Reads a sequence of consecutive length-prefixed items from a stream, using
+ either base-128 or fixed-length prefixes. Base-128 prefixes with a tag
+ are directly comparable to serializing multiple items in succession
+ (use the tag to emulate the implicit behavior
+ when serializing a list/array). When a tag is
+ specified, any records with different tags are silently omitted. The
+ tag is ignored. The tag is ignores for fixed-length prefixes.
+
+ The binary stream containing the serialized records.
+ The prefix style used in the data.
+ The tag of records to return (if non-positive, then no tag is
+ expected and all records are returned).
+ On a field-by-field basis, the type of object to deserialize (can be null if "type" is specified).
+ The type of object to deserialize (can be null if "resolver" is specified).
+ The sequence of deserialized objects.
+
+
+
+ Reads a sequence of consecutive length-prefixed items from a stream, using
+ either base-128 or fixed-length prefixes. Base-128 prefixes with a tag
+ are directly comparable to serializing multiple items in succession
+ (use the tag to emulate the implicit behavior
+ when serializing a list/array). When a tag is
+ specified, any records with different tags are silently omitted. The
+ tag is ignored. The tag is ignores for fixed-length prefixes.
+
+ The binary stream containing the serialized records.
+ The prefix style used in the data.
+ The tag of records to return (if non-positive, then no tag is
+ expected and all records are returned).
+ On a field-by-field basis, the type of object to deserialize (can be null if "type" is specified).
+ The type of object to deserialize (can be null if "resolver" is specified).
+ The sequence of deserialized objects.
+ Additional information about this serialization operation.
+
+
+
+ Reads a sequence of consecutive length-prefixed items from a stream, using
+ either base-128 or fixed-length prefixes. Base-128 prefixes with a tag
+ are directly comparable to serializing multiple items in succession
+ (use the tag to emulate the implicit behavior
+ when serializing a list/array). When a tag is
+ specified, any records with different tags are silently omitted. The
+ tag is ignored. The tag is ignores for fixed-length prefixes.
+
+ The type of object to deserialize.
+ The binary stream containing the serialized records.
+ The prefix style used in the data.
+ The tag of records to return (if non-positive, then no tag is
+ expected and all records are returned).
+ The sequence of deserialized objects.
+
+
+
+ Reads a sequence of consecutive length-prefixed items from a stream, using
+ either base-128 or fixed-length prefixes. Base-128 prefixes with a tag
+ are directly comparable to serializing multiple items in succession
+ (use the tag to emulate the implicit behavior
+ when serializing a list/array). When a tag is
+ specified, any records with different tags are silently omitted. The
+ tag is ignored. The tag is ignores for fixed-length prefixes.
+
+ The type of object to deserialize.
+ The binary stream containing the serialized records.
+ The prefix style used in the data.
+ The tag of records to return (if non-positive, then no tag is
+ expected and all records are returned).
+ The sequence of deserialized objects.
+ Additional information about this serialization operation.
+
+
+
+ Writes a protocol-buffer representation of the given instance to the supplied stream,
+ with a length-prefix. This is useful for socket programming,
+ as DeserializeWithLengthPrefix can be used to read the single object back
+ from an ongoing stream.
+
+ The type being serialized.
+ The existing instance to be serialized (cannot be null).
+ How to encode the length prefix.
+ The destination stream to write to.
+ The tag used as a prefix to each record (only used with base-128 style prefixes).
+
+
+
+ Writes a protocol-buffer representation of the given instance to the supplied stream,
+ with a length-prefix. This is useful for socket programming,
+ as DeserializeWithLengthPrefix can be used to read the single object back
+ from an ongoing stream.
+
+ The type being serialized.
+ The existing instance to be serialized (cannot be null).
+ How to encode the length prefix.
+ The destination stream to write to.
+ The tag used as a prefix to each record (only used with base-128 style prefixes).
+ Additional information about this serialization operation.
+
+
+
+ Applies a protocol-buffer stream to an existing instance (which may be null).
+
+ The type (including inheritance) to consider.
+ The existing instance to be modified (can be null).
+ The binary stream to apply to the instance (cannot be null).
+ The updated instance; this may be different to the instance argument if
+ either the original instance was null, or the stream defines a known sub-type of the
+ original instance.
+
+
+
+ Applies a protocol-buffer stream to an existing instance (which may be null).
+
+ The type (including inheritance) to consider.
+ The existing instance to be modified (can be null).
+ The binary stream to apply to the instance (cannot be null).
+ The updated instance; this may be different to the instance argument if
+ either the original instance was null, or the stream defines a known sub-type of the
+ original instance.
+ Additional information about this serialization operation.
+
+
+
+ Applies a protocol-buffer stream to an existing instance (which may be null).
+
+ The type (including inheritance) to consider.
+ The existing instance to be modified (can be null).
+ The binary stream to apply to the instance (cannot be null).
+ The number of bytes to consume.
+ The updated instance; this may be different to the instance argument if
+ either the original instance was null, or the stream defines a known sub-type of the
+ original instance.
+
+
+
+ Applies a protocol-buffer stream to an existing instance (which may be null).
+
+ The type (including inheritance) to consider.
+ The existing instance to be modified (can be null).
+ The binary stream to apply to the instance (cannot be null).
+ The number of bytes to consume (or -1 to read to the end of the stream).
+ The updated instance; this may be different to the instance argument if
+ either the original instance was null, or the stream defines a known sub-type of the
+ original instance.
+ Additional information about this serialization operation.
+
+
+
+ Applies a protocol-buffer reader to an existing instance (which may be null).
+
+ The type (including inheritance) to consider.
+ The existing instance to be modified (can be null).
+ The reader to apply to the instance (cannot be null).
+ The updated instance; this may be different to the instance argument if
+ either the original instance was null, or the stream defines a known sub-type of the
+ original instance.
+
+
+
+ This is the more "complete" version of Deserialize, which handles single instances of mapped types.
+ The value is read as a complete field, including field-header and (for sub-objects) a
+ length-prefix..kmc
+
+ In addition to that, this provides support for:
+ - basic values; individual int / string / Guid / etc
+ - IList sets of any type handled by TryDeserializeAuxiliaryType
+
+
+
+
+ Creates a new runtime model, to which the caller
+ can add support for a range of types. A model
+ can be used "as is", or can be compiled for
+ optimal performance.
+
+
+
+
+ Applies common proxy scenarios, resolving the actual type to consider
+
+
+
+
+ Indicates whether the supplied type is explicitly modelled by the model
+
+
+
+
+ Provides the key that represents a given type in the current model.
+ The type is also normalized for proxies at the same time.
+
+
+
+
+ Provides the key that represents a given type in the current model.
+
+
+
+
+ Writes a protocol-buffer representation of the given instance to the supplied stream.
+
+ Represents the type (including inheritance) to consider.
+ The existing instance to be serialized (cannot be null).
+ The destination stream to write to.
+
+
+
+ Applies a protocol-buffer stream to an existing instance (which may be null).
+
+ Represents the type (including inheritance) to consider.
+ The existing instance to be modified (can be null).
+ The binary stream to apply to the instance (cannot be null).
+ The updated instance; this may be different to the instance argument if
+ either the original instance was null, or the stream defines a known sub-type of the
+ original instance.
+
+
+
+ Create a deep clone of the supplied instance; any sub-items are also cloned.
+
+
+
+
+ Indicates that while an inheritance tree exists, the exact type encountered was not
+ specified in that hierarchy and cannot be processed.
+
+
+
+
+ Indicates that the given type was not expected, and cannot be processed.
+
+
+
+
+ Indicates that the given type cannot be constructed; it may still be possible to
+ deserialize into existing instances.
+
+
+
+
+ Returns true if the type supplied is either a recognised contract type,
+ or a *list* of a recognised contract type.
+
+ Note that primitives always return false, even though the engine
+ will, if forced, try to serialize such
+ True if this type is recognised as a serializable entity, else false
+
+
+
+ Returns true if the type supplied is a basic type with inbuilt handling,
+ a recognised contract type, or a *list* of a basic / contract type.
+
+
+
+
+ Returns true if the type supplied is a basic type with inbuilt handling,
+ or a *list* of a basic type with inbuilt handling
+
+
+
+
+ Suggest a .proto definition for the given type
+
+ The type to generate a .proto definition for, or null to generate a .proto that represents the entire model
+ The .proto definition as a string
+
+
+
+ Used to provide custom services for writing and parsing type names when using dynamic types. Both parsing and formatting
+ are provided on a single API as it is essential that both are mapped identically at all times.
+
+
+
+
+ Indicates the type of callback to be used
+
+
+
+
+ Invoked before an object is serialized
+
+
+
+
+ Invoked after an object is serialized
+
+
+
+
+ Invoked before an object is deserialized (or when a new instance is created)
+
+
+
+
+ Invoked after an object is deserialized
+
+
+
+
+ Returns a sequence of the Type instances that can be
+ processed by this model.
+
+
+
+
+ Suggest a .proto definition for the given type
+
+ The type to generate a .proto definition for, or null to generate a .proto that represents the entire model
+ The .proto definition as a string
+
+
+
+ Adds support for an additional type in this model, optionally
+ appplying inbuilt patterns. If the type is already known to the
+ model, the existing type is returned **without** applying
+ any additional behaviour.
+
+ Inbuilt patterns include:
+ [ProtoContract]/[ProtoMember(n)]
+ [DataContract]/[DataMember(Order=n)]
+ [XmlType]/[XmlElement(Order=n)]
+ [On{Des|S}erializ{ing|ed}]
+ ShouldSerialize*/*Specified
+
+ The type to be supported
+ Whether to apply the inbuilt configuration patterns (via attributes etc), or
+ just add the type with no additional configuration (the type must then be manually configured).
+ The MetaType representing this type, allowing
+ further configuration.
+
+
+
+ Verifies that the model is still open to changes; if not, an exception is thrown
+
+
+
+
+ Prevents further changes to this model
+
+
+
+
+ Provides the key that represents a given type in the current model.
+
+
+
+
+ Writes a protocol-buffer representation of the given instance to the supplied stream.
+
+ Represents the type (including inheritance) to consider.
+ The existing instance to be serialized (cannot be null).
+ The destination stream to write to.
+
+
+
+ Applies a protocol-buffer stream to an existing instance (which may be null).
+
+ Represents the type (including inheritance) to consider.
+ The existing instance to be modified (can be null).
+ The binary stream to apply to the instance (cannot be null).
+ The updated instance; this may be different to the instance argument if
+ either the original instance was null, or the stream defines a known sub-type of the
+ original instance.
+
+
+
+ Designate a factory-method to use to create instances of any type; note that this only affect types seen by the serializer *after* setting the factory.
+
+
+
+
+ Global default that
+ enables/disables automatic tag generation based on the existing name / order
+ of the defined members. See
+ for usage and important warning / explanation.
+ You must set the global default before attempting to serialize/deserialize any
+ impacted type.
+
+
+
+
+ Global default that determines whether types are considered serializable
+ if they have [DataContract] / [XmlType]. With this enabled, ONLY
+ types marked as [ProtoContract] are added automatically.
+
+
+
+
+ Global switch that enables or disables the implicit
+ handling of "zero defaults"; meanning: if no other default is specified,
+ it assumes bools always default to false, integers to zero, etc.
+
+ If this is disabled, no such assumptions are made and only *explicit*
+ default values are processed. This is enabled by default to
+ preserve similar logic to v1.
+
+
+
+
+ Global switch that determines whether types with a .ToString() and a Parse(string)
+ should be serialized as strings.
+
+
+
+
+ The default model, used to support ProtoBuf.Serializer
+
+
+
+
+ Obtains the MetaType associated with a given Type for the current model,
+ allowing additional configuration.
+
+
+
+
+ Should support for unexpected types be added automatically?
+ If false, an exception is thrown when unexpected types
+ are encountered.
+
+
+
+
+ The amount of time to wait if there are concurrent metadata access operations
+
+
+
+
+ If a lock-contention is detected, this event signals the *owner* of the lock responsible for the blockage, indicating
+ what caused the problem; this is only raised if the lock-owning code successfully completes.
+
+
+
+
+ Contains the stack-trace of the owning code when a lock-contention scenario is detected
+
+
+
+
+ The stack-trace of the code that owned the lock when a lock-contention scenario occurred
+
+
+
+
+ Event-type that is raised when a lock-contention scenario is detected
+
+
+
+
+ Represents an inherited type in a type hierarchy.
+
+
+
+
+ Creates a new SubType instance.
+
+ The field-number that is used to encapsulate the data (as a nested
+ message) for the derived dype.
+ The sub-type to be considered.
+ Specific encoding style to use; in particular, Grouped can be used to avoid buffering, but is not the default.
+
+
+
+ The field-number that is used to encapsulate the data (as a nested
+ message) for the derived dype.
+
+
+
+
+ The sub-type to be considered.
+
+
+
+
+ Event arguments needed to perform type-formatting functions; this could be resolving a Type to a string suitable for serialization, or could
+ be requesting a Type from a string. If no changes are made, a default implementation will be used (from the assembly-qualified names).
+
+
+
+
+ The type involved in this map; if this is initially null, a Type is expected to be provided for the string in FormattedName.
+
+
+
+
+ The formatted-name involved in this map; if this is initially null, a formatted-name is expected from the type in Type.
+
+
+
+
+ Delegate type used to perform type-formatting functions; the sender originates as the type-model.
+
+
+
+
+ Represents a member (property/field) that is mapped to a protobuf field
+
+
+
+
+ Creates a new ValueMember instance
+
+
+
+
+ Creates a new ValueMember instance
+
+
+
+
+ Specifies methods for working with optional data members.
+
+ Provides a method (null for none) to query whether this member should
+ be serialized; it must be of the form "bool {Method}()". The member is only serialized if the
+ method returns true.
+ Provides a method (null for none) to indicate that a member was
+ deserialized; it must be of the form "void {Method}(bool)", and will be called with "true"
+ when data is found.
+
+
+
+ The number that identifies this member in a protobuf stream
+
+
+
+
+ Gets the member (field/property) which this member relates to.
+
+
+
+
+ Within a list / array / etc, the type of object for each item in the list (especially useful with ArrayList)
+
+
+
+
+ The underlying type of the member
+
+
+
+
+ For abstract types (IList etc), the type of concrete object to create (if required)
+
+
+
+
+ The type the defines the member
+
+
+
+
+ The default value of the item (members with this value will not be serialized)
+
+
+
+
+ Specifies the rules used to process the field; this is used to determine the most appropriate
+ wite-type, but also to describe subtypes within that wire-type (such as SignedVariant)
+
+
+
+
+ Indicates whether this field should follow strict encoding rules; this means (for example) that if a "fixed32"
+ is encountered when "variant" is defined, then it will fail (throw an exception) when parsing. Note that
+ when serializing the defined type is always used.
+
+
+
+
+ Indicates whether this field should use packed encoding (which can save lots of space for repeated primitive values).
+ This option only applies to list/array data of primitive types (int, double, etc).
+
+
+
+
+ Indicates whether this field should *repace* existing values (the default is false, meaning *append*).
+ This option only applies to list/array data.
+
+
+
+
+ Indicates whether this field is mandatory.
+
+
+
+
+ Enables full object-tracking/full-graph support.
+
+
+
+
+ Embeds the type information into the stream, allowing usage with types not known in advance.
+
+
+
+
+ Gets the logical name for this member in the schema (this is not critical for binary serialization, but may be used
+ when inferring a schema).
+
+
+
+
+ Should lists have extended support for null values? Note this makes the serialization less efficient.
+
+
+
+
+ Specifies the type of prefix that should be applied to messages.
+
+
+
+
+ No length prefix is applied to the data; the data is terminated only be the end of the stream.
+
+
+
+
+ A base-128 length prefix is applied to the data (efficient for short messages).
+
+
+
+
+ A fixed-length (little-endian) length prefix is applied to the data (useful for compatibility).
+
+
+
+
+ A fixed-length (big-endian) length prefix is applied to the data (useful for compatibility).
+
+
+
+
+ Indicates that a type is defined for protocol-buffer serialization.
+
+
+
+
+ Gets or sets the defined name of the type.
+
+
+
+
+ Gets or sets the fist offset to use with implicit field tags;
+ only uesd if ImplicitFields is set.
+
+
+
+
+ If specified, alternative contract markers (such as markers for XmlSerailizer or DataContractSerializer) are ignored.
+
+
+
+
+ If specified, do NOT treat this type as a list, even if it looks like one.
+
+
+
+
+ Gets or sets the mechanism used to automatically infer field tags
+ for members. This option should be used in advanced scenarios only.
+ Please review the important notes against the ImplicitFields enumeration.
+
+
+
+
+ Enables/disables automatic tag generation based on the existing name / order
+ of the defined members. This option is not used for members marked
+ with ProtoMemberAttribute, as intended to provide compatibility with
+ WCF serialization. WARNING: when adding new fields you must take
+ care to increase the Order for new elements, otherwise data corruption
+ may occur.
+
+ If not explicitly specified, the default is assumed from Serializer.GlobalOptions.InferTagFromName.
+
+
+
+ Has a InferTagFromName value been explicitly set? if not, the default from the type-model is assumed.
+
+
+
+
+ Specifies an offset to apply to [DataMember(Order=...)] markers;
+ this is useful when working with mex-generated classes that have
+ a different origin (usually 1 vs 0) than the original data-contract.
+
+ This value is added to the Order of each member.
+
+
+
+
+ If true, the constructor for the type is bypassed during deserialization, meaning any field initializers
+ or other initialization code is skipped.
+
+
+
+
+ Should this type be treated as a reference by default? Please also see the implications of this,
+ as recorded on ProtoMemberAttribute.AsReference
+
+
+
+
+ Applies only to enums (not to DTO classes themselves); gets or sets a value indicating that an enum should be treated directly as an int/short/etc, rather
+ than enforcing .proto enum rules. This is useful *in particul* for [Flags] enums.
+
+
+
+
+ Has a EnumPassthru value been explicitly set?
+
+
+
+
+ Used to define protocol-buffer specific behavior for
+ enumerated values.
+
+
+
+
+ Indicates whether this instance has a customised value mapping
+
+ true if a specific value is set
+
+
+
+ Gets or sets the specific value to use for this enum during serialization.
+
+
+
+
+ Gets or sets the defined name of the enum, as used in .proto
+ (this name is not used during serialization).
+
+
+
+
+ Indicates an error during serialization/deserialization of a proto stream.
+
+
+
+ Creates a new ProtoException instance.
+
+
+ Creates a new ProtoException instance.
+
+
+ Creates a new ProtoException instance.
+
+
+
+ Indicates that a member should be excluded from serialization; this
+ is only normally used when using implict fields.
+
+
+
+
+ Indicates that a member should be excluded from serialization; this
+ is only normally used when using implict fields. This allows
+ ProtoIgnoreAttribute usage
+ even for partial classes where the individual members are not
+ under direct control.
+
+
+
+
+ Creates a new ProtoPartialIgnoreAttribute instance.
+
+ Specifies the member to be ignored.
+
+
+
+ The name of the member to be ignored.
+
+
+
+
+ Indicates the known-types to support for an individual
+ message. This serializes each level in the hierarchy as
+ a nested message to retain wire-compatibility with
+ other protocol-buffer implementations.
+
+
+
+
+ Creates a new instance of the ProtoIncludeAttribute.
+
+ The unique index (within the type) that will identify this data.
+ The additional type to serialize/deserialize.
+
+
+
+ Creates a new instance of the ProtoIncludeAttribute.
+
+ The unique index (within the type) that will identify this data.
+ The additional type to serialize/deserialize.
+
+
+
+ Gets the unique index (within the type) that will identify this data.
+
+
+
+
+ Gets the additional type to serialize/deserialize.
+
+
+
+
+ Gets the additional type to serialize/deserialize.
+
+
+
+
+ Specifies whether the inherited sype's sub-message should be
+ written with a length-prefix (default), or with group markers.
+
+
+
+
+ Declares a member to be used in protocol-buffer serialization, using
+ the given Tag. A DataFormat may be used to optimise the serialization
+ format (for instance, using zigzag encoding for negative numbers, or
+ fixed-length encoding for large values.
+
+
+
+
+ Compare with another ProtoMemberAttribute for sorting purposes
+
+
+
+
+ Compare with another ProtoMemberAttribute for sorting purposes
+
+
+
+
+ Creates a new ProtoMemberAttribute instance.
+
+ Specifies the unique tag used to identify this member within the type.
+
+
+
+ Gets or sets the original name defined in the .proto; not used
+ during serialization.
+
+
+
+
+ Gets or sets the data-format to be used when encoding this value.
+
+
+
+
+ Gets the unique tag used to identify this member within the type.
+
+
+
+
+ Gets or sets a value indicating whether this member is mandatory.
+
+
+
+
+ Gets a value indicating whether this member is packed.
+ This option only applies to list/array data of primitive types (int, double, etc).
+
+
+
+
+ Indicates whether this field should *repace* existing values (the default is false, meaning *append*).
+ This option only applies to list/array data.
+
+
+
+
+ Enables full object-tracking/full-graph support.
+
+
+
+
+ Embeds the type information into the stream, allowing usage with types not known in advance.
+
+
+
+
+ Gets or sets a value indicating whether this member is packed (lists/arrays).
+
+
+
+
+ Additional (optional) settings that control serialization of members
+
+
+
+
+ Default; no additional options
+
+
+
+
+ Indicates that repeated elements should use packed (length-prefixed) encoding
+
+
+
+
+ Indicates that the given item is required
+
+
+
+
+ Enables full object-tracking/full-graph support
+
+
+
+
+ Embeds the type information into the stream, allowing usage with types not known in advance
+
+
+
+
+ Indicates whether this field should *repace* existing values (the default is false, meaning *append*).
+ This option only applies to list/array data.
+
+
+
+
+ Determines whether the types AsReferenceDefault value is used, or whether this member's AsReference should be used
+
+
+
+
+ Declares a member to be used in protocol-buffer serialization, using
+ the given Tag and MemberName. This allows ProtoMemberAttribute usage
+ even for partial classes where the individual members are not
+ under direct control.
+ A DataFormat may be used to optimise the serialization
+ format (for instance, using zigzag encoding for negative numbers, or
+ fixed-length encoding for large values.
+
+
+
+
+ Creates a new ProtoMemberAttribute instance.
+
+ Specifies the unique tag used to identify this member within the type.
+ Specifies the member to be serialized.
+
+
+
+ The name of the member to be serialized.
+
+
+
+
+ A stateful reader, used to read a protobuf stream. Typical usage would be (sequentially) to call
+ ReadFieldHeader and (after matching the field) an appropriate Read* method.
+
+
+
+
+ Creates a new reader against a stream
+
+ The source stream
+ The model to use for serialization; this can be null, but this will impair the ability to deserialize sub-objects
+ Additional context about this serialization operation
+
+
+
+ Creates a new reader against a stream
+
+ The source stream
+ The model to use for serialization; this can be null, but this will impair the ability to deserialize sub-objects
+ Additional context about this serialization operation
+ The number of bytes to read, or -1 to read until the end of the stream
+
+
+
+ Releases resources used by the reader, but importantly does not Dispose the
+ underlying stream; in many typical use-cases the stream is used for different
+ processes, so it is assumed that the consumer will Dispose their stream separately.
+
+
+
+
+ Reads an unsigned 32-bit integer from the stream; supported wire-types: Variant, Fixed32, Fixed64
+
+
+
+
+ Reads a signed 16-bit integer from the stream: Variant, Fixed32, Fixed64, SignedVariant
+
+
+
+
+ Reads an unsigned 16-bit integer from the stream; supported wire-types: Variant, Fixed32, Fixed64
+
+
+
+
+ Reads an unsigned 8-bit integer from the stream; supported wire-types: Variant, Fixed32, Fixed64
+
+
+
+
+ Reads a signed 8-bit integer from the stream; supported wire-types: Variant, Fixed32, Fixed64, SignedVariant
+
+
+
+
+ Reads a signed 32-bit integer from the stream; supported wire-types: Variant, Fixed32, Fixed64, SignedVariant
+
+
+
+
+ Reads a signed 64-bit integer from the stream; supported wire-types: Variant, Fixed32, Fixed64, SignedVariant
+
+
+
+
+ Reads a string from the stream (using UTF8); supported wire-types: String
+
+
+
+
+ Throws an exception indication that the given value cannot be mapped to an enum.
+
+
+
+
+ Reads a double-precision number from the stream; supported wire-types: Fixed32, Fixed64
+
+
+
+
+ Reads (merges) a sub-message from the stream, internally calling StartSubItem and EndSubItem, and (in between)
+ parsing the message in accordance with the model associated with the reader
+
+
+
+
+ Makes the end of consuming a nested message in the stream; the stream must be either at the correct EndGroup
+ marker, or all fields of the sub-message must have been consumed (in either case, this means ReadFieldHeader
+ should return zero)
+
+
+
+
+ Begins consuming a nested message in the stream; supported wire-types: StartGroup, String
+
+ The token returned must be help and used when callining EndSubItem
+
+
+
+ Reads a field header from the stream, setting the wire-type and retuning the field number. If no
+ more fields are available, then 0 is returned. This methods respects sub-messages.
+
+
+
+
+ Looks ahead to see whether the next field in the stream is what we expect
+ (typically; what we've just finished reading - for example ot read successive list items)
+
+
+
+
+ Compares the streams current wire-type to the hinted wire-type, updating the reader if necessary; for example,
+ a Variant may be updated to SignedVariant. If the hinted wire-type is unrelated then no change is made.
+
+
+
+
+ Verifies that the stream's current wire-type is as expected, or a specialized sub-type (for example,
+ SignedVariant) - in which case the current wire-type is updated. Otherwise an exception is thrown.
+
+
+
+
+ Discards the data for the current field.
+
+
+
+
+ Reads an unsigned 64-bit integer from the stream; supported wire-types: Variant, Fixed32, Fixed64
+
+
+
+
+ Reads a single-precision number from the stream; supported wire-types: Fixed32, Fixed64
+
+
+
+
+ Reads a boolean value from the stream; supported wire-types: Variant, Fixed32, Fixed64
+
+
+
+
+
+ Reads a byte-sequence from the stream, appending them to an existing byte-sequence (which can be null); supported wire-types: String
+
+
+
+
+ Reads the length-prefix of a message from a stream without buffering additional data, allowing a fixed-length
+ reader to be created.
+
+
+
+
+ Reads a little-endian encoded integer. An exception is thrown if the data is not all available.
+
+
+
+
+ Reads a big-endian encoded integer. An exception is thrown if the data is not all available.
+
+
+
+
+ Reads a varint encoded integer. An exception is thrown if the data is not all available.
+
+
+
+
+ Reads a string (of a given lenth, in bytes) directly from the source into a pre-existing buffer. An exception is thrown if the data is not all available.
+
+
+
+
+ Reads a given number of bytes directly from the source. An exception is thrown if the data is not all available.
+
+
+
+
+ Reads a string (of a given lenth, in bytes) directly from the source. An exception is thrown if the data is not all available.
+
+
+
+
+ Reads the length-prefix of a message from a stream without buffering additional data, allowing a fixed-length
+ reader to be created.
+
+
+
+ The number of bytes consumed; 0 if no data available
+
+
+
+ Copies the current field into the instance as extension data
+
+
+
+
+ Indicates whether the reader still has data remaining in the current sub-item,
+ additionally setting the wire-type for the next field if there is more data.
+ This is used when decoding packed data.
+
+
+
+
+ Utility method, not intended for public use; this helps maintain the root object is complex scenarios
+
+
+
+
+ Reads a Type from the stream, using the model's DynamicTypeFormatting if appropriate; supported wire-types: String
+
+
+
+
+ Merge two objects using the details from the current reader; this is used to change the type
+ of objects when an inheritance relationship is discovered later than usual during deserilazation.
+
+
+
+
+ Gets the number of the field being processed.
+
+
+
+
+ Indicates the underlying proto serialization format on the wire.
+
+
+
+
+ Gets / sets a flag indicating whether strings should be checked for repetition; if
+ true, any repeated UTF-8 byte sequence will result in the same String instance, rather
+ than a second instance of the same string. Enabled by default. Note that this uses
+ a custom interner - the system-wide string interner is not used.
+
+
+
+
+ Addition information about this deserialization operation.
+
+
+
+
+ Returns the position of the current reader (note that this is not necessarily the same as the position
+ in the underlying stream, if multiple readers are used on the same stream)
+
+
+
+
+ Get the TypeModel associated with this reader
+
+
+
+
+ Represents an output stream for writing protobuf data.
+
+ Why is the API backwards (static methods with writer arguments)?
+ See: http://marcgravell.blogspot.com/2010/03/last-will-be-first-and-first-will-be.html
+
+
+
+
+ Write an encapsulated sub-object, using the supplied unique key (reprasenting a type).
+
+ The object to write.
+ The key that uniquely identifies the type within the model.
+ The destination.
+
+
+
+ Write an encapsulated sub-object, using the supplied unique key (reprasenting a type) - but the
+ caller is asserting that this relationship is non-recursive; no recursion check will be
+ performed.
+
+ The object to write.
+ The key that uniquely identifies the type within the model.
+ The destination.
+
+
+
+ Writes a field-header, indicating the format of the next data we plan to write.
+
+
+
+
+ Writes a byte-array to the stream; supported wire-types: String
+
+
+
+
+ Writes a byte-array to the stream; supported wire-types: String
+
+
+
+
+ Indicates the start of a nested record.
+
+ The instance to write.
+ The destination.
+ A token representing the state of the stream; this token is given to EndSubItem.
+
+
+
+ Indicates the end of a nested record.
+
+ The token obtained from StartubItem.
+ The destination.
+
+
+
+ Creates a new writer against a stream
+
+ The destination stream
+ The model to use for serialization; this can be null, but this will impair the ability to serialize sub-objects
+ Additional context about this serialization operation
+
+
+
+ Flushes data to the underlying stream, and releases any resources. The underlying stream is *not* disposed
+ by this operation.
+
+
+
+
+ Writes any buffered data (if possible) to the underlying stream.
+
+ The writer to flush
+ It is not always possible to fully flush, since some sequences
+ may require values to be back-filled into the byte-stream.
+
+
+
+ Writes an unsigned 32-bit integer to the stream; supported wire-types: Variant, Fixed32, Fixed64
+
+
+
+
+ Writes a string to the stream; supported wire-types: String
+
+
+
+
+ Writes an unsigned 64-bit integer to the stream; supported wire-types: Variant, Fixed32, Fixed64
+
+
+
+
+ Writes a signed 64-bit integer to the stream; supported wire-types: Variant, Fixed32, Fixed64, SignedVariant
+
+
+
+
+ Writes an unsigned 16-bit integer to the stream; supported wire-types: Variant, Fixed32, Fixed64
+
+
+
+
+ Writes a signed 16-bit integer to the stream; supported wire-types: Variant, Fixed32, Fixed64, SignedVariant
+
+
+
+
+ Writes an unsigned 16-bit integer to the stream; supported wire-types: Variant, Fixed32, Fixed64
+
+
+
+
+ Writes an unsigned 8-bit integer to the stream; supported wire-types: Variant, Fixed32, Fixed64
+
+
+
+
+ Writes a signed 8-bit integer to the stream; supported wire-types: Variant, Fixed32, Fixed64, SignedVariant
+
+
+
+
+ Writes a signed 32-bit integer to the stream; supported wire-types: Variant, Fixed32, Fixed64, SignedVariant
+
+
+
+
+ Writes a double-precision number to the stream; supported wire-types: Fixed32, Fixed64
+
+
+
+
+ Writes a single-precision number to the stream; supported wire-types: Fixed32, Fixed64
+
+
+
+
+ Throws an exception indicating that the given enum cannot be mapped to a serialized value.
+
+
+
+
+ Writes a boolean to the stream; supported wire-types: Variant, Fixed32, Fixed64
+
+
+
+
+ Copies any extension data stored for the instance to the underlying stream
+
+
+
+
+ Used for packed encoding; indicates that the next field should be skipped rather than
+ a field header written. Note that the field number must match, else an exception is thrown
+ when the attempt is made to write the (incorrect) field. The wire-type is taken from the
+ subsequent call to WriteFieldHeader. Only primitive types can be packed.
+
+
+
+
+ Specifies a known root object to use during reference-tracked serialization
+
+
+
+
+ Writes a Type to the stream, using the model's DynamicTypeFormatting if appropriate; supported wire-types: String
+
+
+
+
+ Addition information about this serialization operation.
+
+
+
+
+ Get the TypeModel associated with this writer
+
+
+
+
+ Additional information about a serialization operation
+
+
+
+
+ Convert a SerializationContext to a StreamingContext
+
+
+
+
+ Convert a StreamingContext to a SerializationContext
+
+
+
+
+ Gets or sets a user-defined object containing additional information about this serialization/deserialization operation.
+
+
+
+
+ A default SerializationContext, with minimal information.
+
+
+
+
+ Provides protocol-buffer serialization capability for concrete, attributed types. This
+ is a *default* model, but custom serializer models are also supported.
+
+
+ Protocol-buffer serialization is a compact binary format, designed to take
+ advantage of sparse data and knowledge of specific data types; it is also
+ extensible, allowing a type to be deserialized / merged even if some data is
+ not recognised.
+
+
+
+
+ The field number that is used as a default when serializing/deserializing a list of objects.
+ The data is treated as repeated message with field number 1.
+
+
+
+
+ Suggest a .proto definition for the given type
+
+ The type to generate a .proto definition for
+ The .proto definition as a string
+
+
+
+ Create a deep clone of the supplied instance; any sub-items are also cloned.
+
+
+
+
+ Applies a protocol-buffer stream to an existing instance.
+
+ The type being merged.
+ The existing instance to be modified (can be null).
+ The binary stream to apply to the instance (cannot be null).
+ The updated instance; this may be different to the instance argument if
+ either the original instance was null, or the stream defines a known sub-type of the
+ original instance.
+
+
+
+ Creates a new instance from a protocol-buffer stream
+
+ The type to be created.
+ The binary stream to apply to the new instance (cannot be null).
+ A new, initialized instance.
+
+
+
+ Writes a protocol-buffer representation of the given instance to the supplied stream.
+
+ The existing instance to be serialized (cannot be null).
+ The destination stream to write to.
+
+
+
+ Serializes a given instance and deserializes it as a different type;
+ this can be used to translate between wire-compatible objects (where
+ two .NET types represent the same data), or to promote/demote a type
+ through an inheritance hierarchy.
+
+ No assumption of compatibility is made between the types.
+ The type of the object being copied.
+ The type of the new object to be created.
+ The existing instance to use as a template.
+ A new instane of type TNewType, with the data from TOldType.
+
+
+
+ Precompiles the serializer for a given type.
+
+
+
+
+ Reads a sequence of consecutive length-prefixed items from a stream, using
+ either base-128 or fixed-length prefixes. Base-128 prefixes with a tag
+ are directly comparable to serializing multiple items in succession
+ (use the tag to emulate the implicit behavior
+ when serializing a list/array). When a tag is
+ specified, any records with different tags are silently omitted. The
+ tag is ignored. The tag is ignores for fixed-length prefixes.
+
+ The type of object to deserialize.
+ The binary stream containing the serialized records.
+ The prefix style used in the data.
+ The tag of records to return (if non-positive, then no tag is
+ expected and all records are returned).
+ The sequence of deserialized objects.
+
+
+
+ Creates a new instance from a protocol-buffer stream that has a length-prefix
+ on data (to assist with network IO).
+
+ The type to be created.
+ The binary stream to apply to the new instance (cannot be null).
+ How to encode the length prefix.
+ A new, initialized instance.
+
+
+
+ Creates a new instance from a protocol-buffer stream that has a length-prefix
+ on data (to assist with network IO).
+
+ The type to be created.
+ The binary stream to apply to the new instance (cannot be null).
+ How to encode the length prefix.
+ The expected tag of the item (only used with base-128 prefix style).
+ A new, initialized instance.
+
+
+
+ Applies a protocol-buffer stream to an existing instance, using length-prefixed
+ data - useful with network IO.
+
+ The type being merged.
+ The existing instance to be modified (can be null).
+ The binary stream to apply to the instance (cannot be null).
+ How to encode the length prefix.
+ The updated instance; this may be different to the instance argument if
+ either the original instance was null, or the stream defines a known sub-type of the
+ original instance.
+
+
+
+ Writes a protocol-buffer representation of the given instance to the supplied stream,
+ with a length-prefix. This is useful for socket programming,
+ as DeserializeWithLengthPrefix/MergeWithLengthPrefix can be used to read the single object back
+ from an ongoing stream.
+
+ The type being serialized.
+ The existing instance to be serialized (cannot be null).
+ How to encode the length prefix.
+ The destination stream to write to.
+
+
+
+ Writes a protocol-buffer representation of the given instance to the supplied stream,
+ with a length-prefix. This is useful for socket programming,
+ as DeserializeWithLengthPrefix/MergeWithLengthPrefix can be used to read the single object back
+ from an ongoing stream.
+
+ The type being serialized.
+ The existing instance to be serialized (cannot be null).
+ How to encode the length prefix.
+ The destination stream to write to.
+ The tag used as a prefix to each record (only used with base-128 style prefixes).
+
+
+ Indicates the number of bytes expected for the next message.
+ The stream containing the data to investigate for a length.
+ The algorithm used to encode the length.
+ The length of the message, if it could be identified.
+ True if a length could be obtained, false otherwise.
+
+
+ Indicates the number of bytes expected for the next message.
+ The buffer containing the data to investigate for a length.
+ The offset of the first byte to read from the buffer.
+ The number of bytes to read from the buffer.
+ The algorithm used to encode the length.
+ The length of the message, if it could be identified.
+ True if a length could be obtained, false otherwise.
+
+
+
+ Releases any internal buffers that have been reserved for efficiency; this does not affect any serialization
+ operations; simply: it can be used (optionally) to release the buffers for garbage collection (at the expense
+ of having to re-allocate a new buffer for the next operation, rather than re-use prior buffers).
+
+
+
+
+ Provides non-generic access to the default serializer.
+
+
+
+
+ Create a deep clone of the supplied instance; any sub-items are also cloned.
+
+
+
+
+ Writes a protocol-buffer representation of the given instance to the supplied stream.
+
+ The existing instance to be serialized (cannot be null).
+ The destination stream to write to.
+
+
+
+ Creates a new instance from a protocol-buffer stream
+
+ The type to be created.
+ The binary stream to apply to the new instance (cannot be null).
+ A new, initialized instance.
+
+
+ Applies a protocol-buffer stream to an existing instance.
+ The existing instance to be modified (cannot be null).
+ The binary stream to apply to the instance (cannot be null).
+ The updated instance
+
+
+
+ Writes a protocol-buffer representation of the given instance to the supplied stream,
+ with a length-prefix. This is useful for socket programming,
+ as DeserializeWithLengthPrefix/MergeWithLengthPrefix can be used to read the single object back
+ from an ongoing stream.
+
+ The existing instance to be serialized (cannot be null).
+ How to encode the length prefix.
+ The destination stream to write to.
+ The tag used as a prefix to each record (only used with base-128 style prefixes).
+
+
+
+ Applies a protocol-buffer stream to an existing instance (or null), using length-prefixed
+ data - useful with network IO.
+
+ The existing instance to be modified (can be null).
+ The binary stream to apply to the instance (cannot be null).
+ How to encode the length prefix.
+ Used to resolve types on a per-field basis.
+ The updated instance; this may be different to the instance argument if
+ either the original instance was null, or the stream defines a known sub-type of the
+ original instance.
+
+
+
+ Indicates whether the supplied type is explicitly modelled by the model
+
+
+
+
+ Global switches that change the behavior of protobuf-net
+
+
+
+
+
+
+
+
+
+ Maps a field-number to a type
+
+
+
+
+ Perform the steps necessary to serialize this data.
+
+ The value to be serialized.
+ The writer entity that is accumulating the output data.
+
+
+
+ Perform the steps necessary to deserialize this data.
+
+ The current value, if appropriate.
+ The reader providing the input data.
+ The updated / replacement value.
+
+
+
+ The type that this serializer is intended to work for.
+
+
+
+
+ Indicates whether a Read operation replaces the existing value, or
+ extends the value. If false, the "value" parameter to Read is
+ discarded, and should be passed in as null.
+
+
+
+
+ Now all Read operations return a value (although most do); if false no
+ value should be expected.
+
+
+
+
+ Used to hold particulars relating to nested objects. This is opaque to the caller - simply
+ give back the token you are given at the end of an object.
+
+
+
+
+ Indicates the encoding used to represent an individual value in a protobuf stream
+
+
+
+
+ Represents an error condition
+
+
+
+
+ Base-128 variant-length encoding
+
+
+
+
+ Fixed-length 8-byte encoding
+
+
+
+
+ Length-variant-prefixed encoding
+
+
+
+
+ Indicates the start of a group
+
+
+
+
+ Indicates the end of a group
+
+
+
+
+ Fixed-length 4-byte encoding
+ 10
+
+
+
+ This is not a formal wire-type in the "protocol buffers" spec, but
+ denotes a variant integer that should be interpreted using
+ zig-zag semantics (so -ve numbers aren't a significant overhead)
+
+
+
+
diff --git a/packages/protobuf-net.2.0.0.668/lib/sl4-windowsphone71/protobuf-net.dll b/packages/protobuf-net.2.0.0.668/lib/sl4-windowsphone71/protobuf-net.dll
new file mode 100644
index 000000000..a34b9ca12
Binary files /dev/null and b/packages/protobuf-net.2.0.0.668/lib/sl4-windowsphone71/protobuf-net.dll differ
diff --git a/packages/protobuf-net.2.0.0.668/lib/sl4-windowsphone71/protobuf-net.xml b/packages/protobuf-net.2.0.0.668/lib/sl4-windowsphone71/protobuf-net.xml
new file mode 100644
index 000000000..e2507cb3a
--- /dev/null
+++ b/packages/protobuf-net.2.0.0.668/lib/sl4-windowsphone71/protobuf-net.xml
@@ -0,0 +1,2539 @@
+
+
+
+ protobuf-net
+
+
+
+
+ Provides support for common .NET types that do not have a direct representation
+ in protobuf, using the definitions from bcl.proto
+
+
+
+
+ Creates a new instance of the specified type, bypassing the constructor.
+
+ The type to create
+ The new instance
+ If the platform does not support constructor-skipping
+
+
+
+ Writes a TimeSpan to a protobuf stream
+
+
+
+
+ Parses a TimeSpan from a protobuf stream
+
+
+
+
+ Parses a DateTime from a protobuf stream
+
+
+
+
+ Writes a DateTime to a protobuf stream
+
+
+
+
+ Parses a decimal from a protobuf stream
+
+
+
+
+ Writes a decimal to a protobuf stream
+
+
+
+
+ Writes a Guid to a protobuf stream
+
+
+
+
+ Parses a Guid from a protobuf stream
+
+
+
+
+ Reads an *implementation specific* bundled .NET object, including (as options) type-metadata, identity/re-use, etc.
+
+
+
+
+ Writes an *implementation specific* bundled .NET object, including (as options) type-metadata, identity/re-use, etc.
+
+
+
+
+ Optional behaviours that introduce .NET-specific functionality
+
+
+
+
+ No special behaviour
+
+
+
+
+ Enables full object-tracking/full-graph support.
+
+
+
+
+ Embeds the type information into the stream, allowing usage with types not known in advance.
+
+
+
+
+ If false, the constructor for the type is bypassed during deserialization, meaning any field initializers
+ or other initialization code is skipped.
+
+
+
+
+ Should the object index be reserved, rather than creating an object promptly
+
+
+
+
+ Provides a simple buffer-based implementation of an extension object.
+
+
+
+
+ Provides addition capability for supporting unexpected fields during
+ protocol-buffer serialization/deserialization. This allows for loss-less
+ round-trip/merge, even when the data is not fully understood.
+
+
+
+
+ Requests a stream into which any unexpected fields can be persisted.
+
+ A new stream suitable for storing data.
+
+
+
+ Indicates that all unexpected fields have now been stored. The
+ implementing class is responsible for closing the stream. If
+ "commit" is not true the data may be discarded.
+
+ The stream originally obtained by BeginAppend.
+ True if the append operation completed successfully.
+
+
+
+ Requests a stream of the unexpected fields previously stored.
+
+ A prepared stream of the unexpected fields.
+
+
+
+ Indicates that all unexpected fields have now been read. The
+ implementing class is responsible for closing the stream.
+
+ The stream originally obtained by BeginQuery.
+
+
+
+ Requests the length of the raw binary stream; this is used
+ when serializing sub-entities to indicate the expected size.
+
+ The length of the binary stream representing unexpected data.
+
+
+ Specifies a method on the root-contract in an hierarchy to be invoked before serialization.
+
+
+ Specifies a method on the root-contract in an hierarchy to be invoked after serialization.
+
+
+ Specifies a method on the root-contract in an hierarchy to be invoked before deserialization.
+
+
+ Specifies a method on the root-contract in an hierarchy to be invoked after deserialization.
+
+
+
+ Sub-format to use when serializing/deserializing data
+
+
+
+
+ Uses the default encoding for the data-type.
+
+
+
+
+ When applied to signed integer-based data (including Decimal), this
+ indicates that zigzag variant encoding will be used. This means that values
+ with small magnitude (regardless of sign) take a small amount
+ of space to encode.
+
+
+
+
+ When applied to signed integer-based data (including Decimal), this
+ indicates that two's-complement variant encoding will be used.
+ This means that any -ve number will take 10 bytes (even for 32-bit),
+ so should only be used for compatibility.
+
+
+
+
+ When applied to signed integer-based data (including Decimal), this
+ indicates that a fixed amount of space will be used.
+
+
+
+
+ When applied to a sub-message, indicates that the value should be treated
+ as group-delimited.
+
+
+
+
+ Simple base class for supporting unexpected fields allowing
+ for loss-less round-tips/merge, even if the data is not understod.
+ The additional fields are (by default) stored in-memory in a buffer.
+
+ As an example of an alternative implementation, you might
+ choose to use the file system (temporary files) as the back-end, tracking
+ only the paths [such an object would ideally be IDisposable and use
+ a finalizer to ensure that the files are removed].
+
+
+
+
+ Indicates that the implementing type has support for protocol-buffer
+ extensions.
+
+ Can be implemented by deriving from Extensible.
+
+
+
+ Retrieves the extension object for the current
+ instance, optionally creating it if it does not already exist.
+
+ Should a new extension object be
+ created if it does not already exist?
+ The extension object if it exists (or was created), or null
+ if the extension object does not exist or is not available.
+ The createIfMissing argument is false during serialization,
+ and true during deserialization upon encountering unexpected fields.
+
+
+
+ Retrieves the extension object for the current
+ instance, optionally creating it if it does not already exist.
+
+ Should a new extension object be
+ created if it does not already exist?
+ The extension object if it exists (or was created), or null
+ if the extension object does not exist or is not available.
+ The createIfMissing argument is false during serialization,
+ and true during deserialization upon encountering unexpected fields.
+
+
+
+ Provides a simple, default implementation for extension support,
+ optionally creating it if it does not already exist. Designed to be called by
+ classes implementing .
+
+ Should a new extension object be
+ created if it does not already exist?
+ The extension field to check (and possibly update).
+ The extension object if it exists (or was created), or null
+ if the extension object does not exist or is not available.
+ The createIfMissing argument is false during serialization,
+ and true during deserialization upon encountering unexpected fields.
+
+
+
+ Appends the value as an additional (unexpected) data-field for the instance.
+ Note that for non-repeated sub-objects, this equates to a merge operation;
+ for repeated sub-objects this adds a new instance to the set; for simple
+ values the new value supercedes the old value.
+
+ Note that appending a value does not remove the old value from
+ the stream; avoid repeatedly appending values for the same field.
+ The type of the value to append.
+ The extensible object to append the value to.
+ The field identifier; the tag should not be defined as a known data-field for the instance.
+ The value to append.
+
+
+
+ Appends the value as an additional (unexpected) data-field for the instance.
+ Note that for non-repeated sub-objects, this equates to a merge operation;
+ for repeated sub-objects this adds a new instance to the set; for simple
+ values the new value supercedes the old value.
+
+ Note that appending a value does not remove the old value from
+ the stream; avoid repeatedly appending values for the same field.
+ The data-type of the field.
+ The data-format to use when encoding the value.
+ The extensible object to append the value to.
+ The field identifier; the tag should not be defined as a known data-field for the instance.
+ The value to append.
+
+
+
+ Queries an extensible object for an additional (unexpected) data-field for the instance.
+ The value returned is the composed value after merging any duplicated content; if the
+ value is "repeated" (a list), then use GetValues instead.
+
+ The data-type of the field.
+ The extensible object to obtain the value from.
+ The field identifier; the tag should not be defined as a known data-field for the instance.
+ The effective value of the field, or the default value if not found.
+
+
+
+ Queries an extensible object for an additional (unexpected) data-field for the instance.
+ The value returned is the composed value after merging any duplicated content; if the
+ value is "repeated" (a list), then use GetValues instead.
+
+ The data-type of the field.
+ The extensible object to obtain the value from.
+ The field identifier; the tag should not be defined as a known data-field for the instance.
+ The data-format to use when decoding the value.
+ The effective value of the field, or the default value if not found.
+
+
+
+ Queries an extensible object for an additional (unexpected) data-field for the instance.
+ The value returned (in "value") is the composed value after merging any duplicated content;
+ if the value is "repeated" (a list), then use GetValues instead.
+
+ The data-type of the field.
+ The effective value of the field, or the default value if not found.
+ The extensible object to obtain the value from.
+ The field identifier; the tag should not be defined as a known data-field for the instance.
+ True if data for the field was present, false otherwise.
+
+
+
+ Queries an extensible object for an additional (unexpected) data-field for the instance.
+ The value returned (in "value") is the composed value after merging any duplicated content;
+ if the value is "repeated" (a list), then use GetValues instead.
+
+ The data-type of the field.
+ The effective value of the field, or the default value if not found.
+ The extensible object to obtain the value from.
+ The field identifier; the tag should not be defined as a known data-field for the instance.
+ The data-format to use when decoding the value.
+ True if data for the field was present, false otherwise.
+
+
+
+ Queries an extensible object for an additional (unexpected) data-field for the instance.
+ The value returned (in "value") is the composed value after merging any duplicated content;
+ if the value is "repeated" (a list), then use GetValues instead.
+
+ The data-type of the field.
+ The effective value of the field, or the default value if not found.
+ The extensible object to obtain the value from.
+ The field identifier; the tag should not be defined as a known data-field for the instance.
+ The data-format to use when decoding the value.
+ Allow tags that are present as part of the definition; for example, to query unknown enum values.
+ True if data for the field was present, false otherwise.
+
+
+
+ Queries an extensible object for an additional (unexpected) data-field for the instance.
+ Each occurrence of the field is yielded separately, making this usage suitable for "repeated"
+ (list) fields.
+
+ The extended data is processed lazily as the enumerator is iterated.
+ The data-type of the field.
+ The extensible object to obtain the value from.
+ The field identifier; the tag should not be defined as a known data-field for the instance.
+ An enumerator that yields each occurrence of the field.
+
+
+
+ Queries an extensible object for an additional (unexpected) data-field for the instance.
+ Each occurrence of the field is yielded separately, making this usage suitable for "repeated"
+ (list) fields.
+
+ The extended data is processed lazily as the enumerator is iterated.
+ The data-type of the field.
+ The extensible object to obtain the value from.
+ The field identifier; the tag should not be defined as a known data-field for the instance.
+ The data-format to use when decoding the value.
+ An enumerator that yields each occurrence of the field.
+
+
+
+ Queries an extensible object for an additional (unexpected) data-field for the instance.
+ The value returned (in "value") is the composed value after merging any duplicated content;
+ if the value is "repeated" (a list), then use GetValues instead.
+
+ The data-type of the field.
+ The model to use for configuration.
+ The effective value of the field, or the default value if not found.
+ The extensible object to obtain the value from.
+ The field identifier; the tag should not be defined as a known data-field for the instance.
+ The data-format to use when decoding the value.
+ Allow tags that are present as part of the definition; for example, to query unknown enum values.
+ True if data for the field was present, false otherwise.
+
+
+
+ Queries an extensible object for an additional (unexpected) data-field for the instance.
+ Each occurrence of the field is yielded separately, making this usage suitable for "repeated"
+ (list) fields.
+
+ The extended data is processed lazily as the enumerator is iterated.
+ The model to use for configuration.
+ The data-type of the field.
+ The extensible object to obtain the value from.
+ The field identifier; the tag should not be defined as a known data-field for the instance.
+ The data-format to use when decoding the value.
+ An enumerator that yields each occurrence of the field.
+
+
+
+ Appends the value as an additional (unexpected) data-field for the instance.
+ Note that for non-repeated sub-objects, this equates to a merge operation;
+ for repeated sub-objects this adds a new instance to the set; for simple
+ values the new value supercedes the old value.
+
+ Note that appending a value does not remove the old value from
+ the stream; avoid repeatedly appending values for the same field.
+ The model to use for configuration.
+ The data-format to use when encoding the value.
+ The extensible object to append the value to.
+ The field identifier; the tag should not be defined as a known data-field for the instance.
+ The value to append.
+
+
+
+ This class acts as an internal wrapper allowing us to do a dynamic
+ methodinfo invoke; an't put into Serializer as don't want on public
+ API; can't put into Serializer<T> since we need to invoke
+ accross classes, which isn't allowed in Silverlight)
+
+
+
+
+ All this does is call GetExtendedValuesTyped with the correct type for "instance";
+ this ensures that we don't get issues with subclasses declaring conflicting types -
+ the caller must respect the fields defined for the type they pass in.
+
+
+
+
+ All this does is call GetExtendedValuesTyped with the correct type for "instance";
+ this ensures that we don't get issues with subclasses declaring conflicting types -
+ the caller must respect the fields defined for the type they pass in.
+
+
+
+
+ Not all frameworks are created equal (fx1.1 vs fx2.0,
+ micro-framework, compact-framework,
+ silverlight, etc). This class simply wraps up a few things that would
+ otherwise make the real code unnecessarily messy, providing fallback
+ implementations if necessary.
+
+
+
+
+ Intended to be a direct map to regular TypeCode, but:
+ - with missing types
+ - existing on WinRT
+
+
+
+
+ Specifies the method used to infer field tags for members of the type
+ under consideration. Tags are deduced using the invariant alphabetic
+ sequence of the members' names; this makes implicit field tags very brittle,
+ and susceptible to changes such as field names (normally an isolated
+ change).
+
+
+
+
+ No members are serialized implicitly; all members require a suitable
+ attribute such as [ProtoMember]. This is the recmomended mode for
+ most scenarios.
+
+
+
+
+ Public properties and fields are eligible for implicit serialization;
+ this treats the public API as a contract. Ordering beings from ImplicitFirstTag.
+
+
+
+
+ Public and non-public fields are eligible for implicit serialization;
+ this acts as a state/implementation serializer. Ordering beings from ImplicitFirstTag.
+
+
+
+
+ Represents the set of serialization callbacks to be used when serializing/deserializing a type.
+
+
+
+ Called before serializing an instance
+
+
+ Called before deserializing an instance
+
+
+ Called after serializing an instance
+
+
+ Called after deserializing an instance
+
+
+
+ True if any callback is set, else False
+
+
+
+
+ Represents a type at runtime for use with protobuf, allowing the field mappings (etc) to be defined
+
+
+
+
+ Get the name of the type being represented
+
+
+
+
+ Adds a known sub-type to the inheritance model
+
+
+
+
+ Adds a known sub-type to the inheritance model
+
+
+
+
+ Assigns the callbacks to use during serialiation/deserialization.
+
+ The method (or null) called before serialization begins.
+ The method (or null) called when serialization is complete.
+ The method (or null) called before deserialization begins (or when a new instance is created during deserialization).
+ The method (or null) called when deserialization is complete.
+ The set of callbacks.
+
+
+
+ Assigns the callbacks to use during serialiation/deserialization.
+
+ The name of the method (or null) called before serialization begins.
+ The name of the method (or null) called when serialization is complete.
+ The name of the method (or null) called before deserialization begins (or when a new instance is created during deserialization).
+ The name of the method (or null) called when deserialization is complete.
+ The set of callbacks.
+
+
+
+ Designate a factory-method to use to create instances of this type
+
+
+
+
+ Designate a factory-method to use to create instances of this type
+
+
+
+
+ Throws an exception if the type has been made immutable
+
+
+
+
+ Adds a member (by name) to the MetaType
+
+
+
+
+ Adds a member (by name) to the MetaType, returning the ValueMember rather than the fluent API.
+ This is otherwise identical to Add.
+
+
+
+
+ Adds a member (by name) to the MetaType
+
+
+
+
+ Performs serialization of this type via a surrogate; all
+ other serialization options are ignored and handled
+ by the surrogate's configuration.
+
+
+
+
+ Adds a set of members (by name) to the MetaType
+
+
+
+
+ Adds a member (by name) to the MetaType
+
+
+
+
+ Adds a member (by name) to the MetaType, including an itemType and defaultType for representing lists
+
+
+
+
+ Adds a member (by name) to the MetaType, including an itemType and defaultType for representing lists, returning the ValueMember rather than the fluent API.
+ This is otherwise identical to Add.
+
+
+
+
+ Returns the ValueMember instances associated with this type
+
+
+
+
+ Returns the SubType instances associated with this type
+
+
+
+
+ Gets the base-type for this type
+
+
+
+
+ When used to compile a model, should public serialization/deserialzation methods
+ be included for this type?
+
+
+
+
+ Should this type be treated as a reference by default?
+
+
+
+
+ Indicates whether the current type has defined callbacks
+
+
+
+
+ Indicates whether the current type has defined subtypes
+
+
+
+
+ Returns the set of callbacks defined for this type
+
+
+
+
+ Gets or sets the name of this contract.
+
+
+
+
+ The runtime type that the meta-type represents
+
+
+
+
+ Gets or sets whether the type should use a parameterless constructor (the default),
+ or whether the type should skip the constructor completely. This option is not supported
+ on compact-framework.
+
+
+
+
+ The concrete type to create when a new instance of this type is needed; this may be useful when dealing
+ with dynamic proxies, or with interface-based APIs
+
+
+
+
+ Returns the ValueMember that matchs a given field number, or null if not found
+
+
+
+
+ Returns the ValueMember that matchs a given member (property/field), or null if not found
+
+
+
+
+ Gets or sets a value indicating that an enum should be treated directly as an int/short/etc, rather
+ than enforcing .proto enum rules. This is useful *in particul* for [Flags] enums.
+
+
+
+
+ Gets or sets a value indicating that this type should NOT be treated as a list, even if it has
+ familiar list-like characteristics (enumerable, add, etc)
+
+
+
+
+ Provides protobuf serialization support for a number of types that can be defined at runtime
+
+
+
+
+ Provides protobuf serialization support for a number of types
+
+
+
+
+ Resolve a System.Type to the compiler-specific type
+
+
+
+
+ Resolve a System.Type to the compiler-specific type
+
+
+
+
+ This is the more "complete" version of Serialize, which handles single instances of mapped types.
+ The value is written as a complete field, including field-header and (for sub-objects) a
+ length-prefix
+ In addition to that, this provides support for:
+ - basic values; individual int / string / Guid / etc
+ - IEnumerable sequences of any type handled by TrySerializeAuxiliaryType
+
+
+
+
+
+ Writes a protocol-buffer representation of the given instance to the supplied stream.
+
+ The existing instance to be serialized (cannot be null).
+ The destination stream to write to.
+
+
+
+ Writes a protocol-buffer representation of the given instance to the supplied stream.
+
+ The existing instance to be serialized (cannot be null).
+ The destination stream to write to.
+ Additional information about this serialization operation.
+
+
+
+ Writes a protocol-buffer representation of the given instance to the supplied writer.
+
+ The existing instance to be serialized (cannot be null).
+ The destination writer to write to.
+
+
+
+ Applies a protocol-buffer stream to an existing instance (or null), using length-prefixed
+ data - useful with network IO.
+
+ The type being merged.
+ The existing instance to be modified (can be null).
+ The binary stream to apply to the instance (cannot be null).
+ How to encode the length prefix.
+ The tag used as a prefix to each record (only used with base-128 style prefixes).
+ The updated instance; this may be different to the instance argument if
+ either the original instance was null, or the stream defines a known sub-type of the
+ original instance.
+
+
+
+ Applies a protocol-buffer stream to an existing instance (or null), using length-prefixed
+ data - useful with network IO.
+
+ The type being merged.
+ The existing instance to be modified (can be null).
+ The binary stream to apply to the instance (cannot be null).
+ How to encode the length prefix.
+ The tag used as a prefix to each record (only used with base-128 style prefixes).
+ Used to resolve types on a per-field basis.
+ The updated instance; this may be different to the instance argument if
+ either the original instance was null, or the stream defines a known sub-type of the
+ original instance.
+
+
+
+ Applies a protocol-buffer stream to an existing instance (or null), using length-prefixed
+ data - useful with network IO.
+
+ The type being merged.
+ The existing instance to be modified (can be null).
+ The binary stream to apply to the instance (cannot be null).
+ How to encode the length prefix.
+ The tag used as a prefix to each record (only used with base-128 style prefixes).
+ Used to resolve types on a per-field basis.
+ Returns the number of bytes consumed by this operation (includes length-prefix overheads and any skipped data).
+ The updated instance; this may be different to the instance argument if
+ either the original instance was null, or the stream defines a known sub-type of the
+ original instance.
+
+
+
+ Reads a sequence of consecutive length-prefixed items from a stream, using
+ either base-128 or fixed-length prefixes. Base-128 prefixes with a tag
+ are directly comparable to serializing multiple items in succession
+ (use the tag to emulate the implicit behavior
+ when serializing a list/array). When a tag is
+ specified, any records with different tags are silently omitted. The
+ tag is ignored. The tag is ignores for fixed-length prefixes.
+
+ The binary stream containing the serialized records.
+ The prefix style used in the data.
+ The tag of records to return (if non-positive, then no tag is
+ expected and all records are returned).
+ On a field-by-field basis, the type of object to deserialize (can be null if "type" is specified).
+ The type of object to deserialize (can be null if "resolver" is specified).
+ The sequence of deserialized objects.
+
+
+
+ Reads a sequence of consecutive length-prefixed items from a stream, using
+ either base-128 or fixed-length prefixes. Base-128 prefixes with a tag
+ are directly comparable to serializing multiple items in succession
+ (use the tag to emulate the implicit behavior
+ when serializing a list/array). When a tag is
+ specified, any records with different tags are silently omitted. The
+ tag is ignored. The tag is ignores for fixed-length prefixes.
+
+ The binary stream containing the serialized records.
+ The prefix style used in the data.
+ The tag of records to return (if non-positive, then no tag is
+ expected and all records are returned).
+ On a field-by-field basis, the type of object to deserialize (can be null if "type" is specified).
+ The type of object to deserialize (can be null if "resolver" is specified).
+ The sequence of deserialized objects.
+ Additional information about this serialization operation.
+
+
+
+ Reads a sequence of consecutive length-prefixed items from a stream, using
+ either base-128 or fixed-length prefixes. Base-128 prefixes with a tag
+ are directly comparable to serializing multiple items in succession
+ (use the tag to emulate the implicit behavior
+ when serializing a list/array). When a tag is
+ specified, any records with different tags are silently omitted. The
+ tag is ignored. The tag is ignores for fixed-length prefixes.
+
+ The type of object to deserialize.
+ The binary stream containing the serialized records.
+ The prefix style used in the data.
+ The tag of records to return (if non-positive, then no tag is
+ expected and all records are returned).
+ The sequence of deserialized objects.
+
+
+
+ Reads a sequence of consecutive length-prefixed items from a stream, using
+ either base-128 or fixed-length prefixes. Base-128 prefixes with a tag
+ are directly comparable to serializing multiple items in succession
+ (use the tag to emulate the implicit behavior
+ when serializing a list/array). When a tag is
+ specified, any records with different tags are silently omitted. The
+ tag is ignored. The tag is ignores for fixed-length prefixes.
+
+ The type of object to deserialize.
+ The binary stream containing the serialized records.
+ The prefix style used in the data.
+ The tag of records to return (if non-positive, then no tag is
+ expected and all records are returned).
+ The sequence of deserialized objects.
+ Additional information about this serialization operation.
+
+
+
+ Writes a protocol-buffer representation of the given instance to the supplied stream,
+ with a length-prefix. This is useful for socket programming,
+ as DeserializeWithLengthPrefix can be used to read the single object back
+ from an ongoing stream.
+
+ The type being serialized.
+ The existing instance to be serialized (cannot be null).
+ How to encode the length prefix.
+ The destination stream to write to.
+ The tag used as a prefix to each record (only used with base-128 style prefixes).
+
+
+
+ Writes a protocol-buffer representation of the given instance to the supplied stream,
+ with a length-prefix. This is useful for socket programming,
+ as DeserializeWithLengthPrefix can be used to read the single object back
+ from an ongoing stream.
+
+ The type being serialized.
+ The existing instance to be serialized (cannot be null).
+ How to encode the length prefix.
+ The destination stream to write to.
+ The tag used as a prefix to each record (only used with base-128 style prefixes).
+ Additional information about this serialization operation.
+
+
+
+ Applies a protocol-buffer stream to an existing instance (which may be null).
+
+ The type (including inheritance) to consider.
+ The existing instance to be modified (can be null).
+ The binary stream to apply to the instance (cannot be null).
+ The updated instance; this may be different to the instance argument if
+ either the original instance was null, or the stream defines a known sub-type of the
+ original instance.
+
+
+
+ Applies a protocol-buffer stream to an existing instance (which may be null).
+
+ The type (including inheritance) to consider.
+ The existing instance to be modified (can be null).
+ The binary stream to apply to the instance (cannot be null).
+ The updated instance; this may be different to the instance argument if
+ either the original instance was null, or the stream defines a known sub-type of the
+ original instance.
+ Additional information about this serialization operation.
+
+
+
+ Applies a protocol-buffer stream to an existing instance (which may be null).
+
+ The type (including inheritance) to consider.
+ The existing instance to be modified (can be null).
+ The binary stream to apply to the instance (cannot be null).
+ The number of bytes to consume.
+ The updated instance; this may be different to the instance argument if
+ either the original instance was null, or the stream defines a known sub-type of the
+ original instance.
+
+
+
+ Applies a protocol-buffer stream to an existing instance (which may be null).
+
+ The type (including inheritance) to consider.
+ The existing instance to be modified (can be null).
+ The binary stream to apply to the instance (cannot be null).
+ The number of bytes to consume (or -1 to read to the end of the stream).
+ The updated instance; this may be different to the instance argument if
+ either the original instance was null, or the stream defines a known sub-type of the
+ original instance.
+ Additional information about this serialization operation.
+
+
+
+ Applies a protocol-buffer reader to an existing instance (which may be null).
+
+ The type (including inheritance) to consider.
+ The existing instance to be modified (can be null).
+ The reader to apply to the instance (cannot be null).
+ The updated instance; this may be different to the instance argument if
+ either the original instance was null, or the stream defines a known sub-type of the
+ original instance.
+
+
+
+ This is the more "complete" version of Deserialize, which handles single instances of mapped types.
+ The value is read as a complete field, including field-header and (for sub-objects) a
+ length-prefix..kmc
+
+ In addition to that, this provides support for:
+ - basic values; individual int / string / Guid / etc
+ - IList sets of any type handled by TryDeserializeAuxiliaryType
+
+
+
+
+ Creates a new runtime model, to which the caller
+ can add support for a range of types. A model
+ can be used "as is", or can be compiled for
+ optimal performance.
+
+
+
+
+ Applies common proxy scenarios, resolving the actual type to consider
+
+
+
+
+ Indicates whether the supplied type is explicitly modelled by the model
+
+
+
+
+ Provides the key that represents a given type in the current model.
+ The type is also normalized for proxies at the same time.
+
+
+
+
+ Provides the key that represents a given type in the current model.
+
+
+
+
+ Writes a protocol-buffer representation of the given instance to the supplied stream.
+
+ Represents the type (including inheritance) to consider.
+ The existing instance to be serialized (cannot be null).
+ The destination stream to write to.
+
+
+
+ Applies a protocol-buffer stream to an existing instance (which may be null).
+
+ Represents the type (including inheritance) to consider.
+ The existing instance to be modified (can be null).
+ The binary stream to apply to the instance (cannot be null).
+ The updated instance; this may be different to the instance argument if
+ either the original instance was null, or the stream defines a known sub-type of the
+ original instance.
+
+
+
+ Create a deep clone of the supplied instance; any sub-items are also cloned.
+
+
+
+
+ Indicates that while an inheritance tree exists, the exact type encountered was not
+ specified in that hierarchy and cannot be processed.
+
+
+
+
+ Indicates that the given type was not expected, and cannot be processed.
+
+
+
+
+ Indicates that the given type cannot be constructed; it may still be possible to
+ deserialize into existing instances.
+
+
+
+
+ Returns true if the type supplied is either a recognised contract type,
+ or a *list* of a recognised contract type.
+
+ Note that primitives always return false, even though the engine
+ will, if forced, try to serialize such
+ True if this type is recognised as a serializable entity, else false
+
+
+
+ Returns true if the type supplied is a basic type with inbuilt handling,
+ a recognised contract type, or a *list* of a basic / contract type.
+
+
+
+
+ Returns true if the type supplied is a basic type with inbuilt handling,
+ or a *list* of a basic type with inbuilt handling
+
+
+
+
+ Suggest a .proto definition for the given type
+
+ The type to generate a .proto definition for, or null to generate a .proto that represents the entire model
+ The .proto definition as a string
+
+
+
+ Used to provide custom services for writing and parsing type names when using dynamic types. Both parsing and formatting
+ are provided on a single API as it is essential that both are mapped identically at all times.
+
+
+
+
+ Indicates the type of callback to be used
+
+
+
+
+ Invoked before an object is serialized
+
+
+
+
+ Invoked after an object is serialized
+
+
+
+
+ Invoked before an object is deserialized (or when a new instance is created)
+
+
+
+
+ Invoked after an object is deserialized
+
+
+
+
+ Returns a sequence of the Type instances that can be
+ processed by this model.
+
+
+
+
+ Suggest a .proto definition for the given type
+
+ The type to generate a .proto definition for, or null to generate a .proto that represents the entire model
+ The .proto definition as a string
+
+
+
+ Adds support for an additional type in this model, optionally
+ appplying inbuilt patterns. If the type is already known to the
+ model, the existing type is returned **without** applying
+ any additional behaviour.
+
+ Inbuilt patterns include:
+ [ProtoContract]/[ProtoMember(n)]
+ [DataContract]/[DataMember(Order=n)]
+ [XmlType]/[XmlElement(Order=n)]
+ [On{Des|S}erializ{ing|ed}]
+ ShouldSerialize*/*Specified
+
+ The type to be supported
+ Whether to apply the inbuilt configuration patterns (via attributes etc), or
+ just add the type with no additional configuration (the type must then be manually configured).
+ The MetaType representing this type, allowing
+ further configuration.
+
+
+
+ Verifies that the model is still open to changes; if not, an exception is thrown
+
+
+
+
+ Prevents further changes to this model
+
+
+
+
+ Provides the key that represents a given type in the current model.
+
+
+
+
+ Writes a protocol-buffer representation of the given instance to the supplied stream.
+
+ Represents the type (including inheritance) to consider.
+ The existing instance to be serialized (cannot be null).
+ The destination stream to write to.
+
+
+
+ Applies a protocol-buffer stream to an existing instance (which may be null).
+
+ Represents the type (including inheritance) to consider.
+ The existing instance to be modified (can be null).
+ The binary stream to apply to the instance (cannot be null).
+ The updated instance; this may be different to the instance argument if
+ either the original instance was null, or the stream defines a known sub-type of the
+ original instance.
+
+
+
+ Designate a factory-method to use to create instances of any type; note that this only affect types seen by the serializer *after* setting the factory.
+
+
+
+
+ Global default that
+ enables/disables automatic tag generation based on the existing name / order
+ of the defined members. See
+ for usage and important warning / explanation.
+ You must set the global default before attempting to serialize/deserialize any
+ impacted type.
+
+
+
+
+ Global default that determines whether types are considered serializable
+ if they have [DataContract] / [XmlType]. With this enabled, ONLY
+ types marked as [ProtoContract] are added automatically.
+
+
+
+
+ Global switch that enables or disables the implicit
+ handling of "zero defaults"; meanning: if no other default is specified,
+ it assumes bools always default to false, integers to zero, etc.
+
+ If this is disabled, no such assumptions are made and only *explicit*
+ default values are processed. This is enabled by default to
+ preserve similar logic to v1.
+
+
+
+
+ Global switch that determines whether types with a .ToString() and a Parse(string)
+ should be serialized as strings.
+
+
+
+
+ The default model, used to support ProtoBuf.Serializer
+
+
+
+
+ Obtains the MetaType associated with a given Type for the current model,
+ allowing additional configuration.
+
+
+
+
+ Should support for unexpected types be added automatically?
+ If false, an exception is thrown when unexpected types
+ are encountered.
+
+
+
+
+ The amount of time to wait if there are concurrent metadata access operations
+
+
+
+
+ If a lock-contention is detected, this event signals the *owner* of the lock responsible for the blockage, indicating
+ what caused the problem; this is only raised if the lock-owning code successfully completes.
+
+
+
+
+ Contains the stack-trace of the owning code when a lock-contention scenario is detected
+
+
+
+
+ The stack-trace of the code that owned the lock when a lock-contention scenario occurred
+
+
+
+
+ Event-type that is raised when a lock-contention scenario is detected
+
+
+
+
+ Represents an inherited type in a type hierarchy.
+
+
+
+
+ Creates a new SubType instance.
+
+ The field-number that is used to encapsulate the data (as a nested
+ message) for the derived dype.
+ The sub-type to be considered.
+ Specific encoding style to use; in particular, Grouped can be used to avoid buffering, but is not the default.
+
+
+
+ The field-number that is used to encapsulate the data (as a nested
+ message) for the derived dype.
+
+
+
+
+ The sub-type to be considered.
+
+
+
+
+ Event arguments needed to perform type-formatting functions; this could be resolving a Type to a string suitable for serialization, or could
+ be requesting a Type from a string. If no changes are made, a default implementation will be used (from the assembly-qualified names).
+
+
+
+
+ The type involved in this map; if this is initially null, a Type is expected to be provided for the string in FormattedName.
+
+
+
+
+ The formatted-name involved in this map; if this is initially null, a formatted-name is expected from the type in Type.
+
+
+
+
+ Delegate type used to perform type-formatting functions; the sender originates as the type-model.
+
+
+
+
+ Represents a member (property/field) that is mapped to a protobuf field
+
+
+
+
+ Creates a new ValueMember instance
+
+
+
+
+ Creates a new ValueMember instance
+
+
+
+
+ Specifies methods for working with optional data members.
+
+ Provides a method (null for none) to query whether this member should
+ be serialized; it must be of the form "bool {Method}()". The member is only serialized if the
+ method returns true.
+ Provides a method (null for none) to indicate that a member was
+ deserialized; it must be of the form "void {Method}(bool)", and will be called with "true"
+ when data is found.
+
+
+
+ The number that identifies this member in a protobuf stream
+
+
+
+
+ Gets the member (field/property) which this member relates to.
+
+
+
+
+ Within a list / array / etc, the type of object for each item in the list (especially useful with ArrayList)
+
+
+
+
+ The underlying type of the member
+
+
+
+
+ For abstract types (IList etc), the type of concrete object to create (if required)
+
+
+
+
+ The type the defines the member
+
+
+
+
+ The default value of the item (members with this value will not be serialized)
+
+
+
+
+ Specifies the rules used to process the field; this is used to determine the most appropriate
+ wite-type, but also to describe subtypes within that wire-type (such as SignedVariant)
+
+
+
+
+ Indicates whether this field should follow strict encoding rules; this means (for example) that if a "fixed32"
+ is encountered when "variant" is defined, then it will fail (throw an exception) when parsing. Note that
+ when serializing the defined type is always used.
+
+
+
+
+ Indicates whether this field should use packed encoding (which can save lots of space for repeated primitive values).
+ This option only applies to list/array data of primitive types (int, double, etc).
+
+
+
+
+ Indicates whether this field should *repace* existing values (the default is false, meaning *append*).
+ This option only applies to list/array data.
+
+
+
+
+ Indicates whether this field is mandatory.
+
+
+
+
+ Enables full object-tracking/full-graph support.
+
+
+
+
+ Embeds the type information into the stream, allowing usage with types not known in advance.
+
+
+
+
+ Gets the logical name for this member in the schema (this is not critical for binary serialization, but may be used
+ when inferring a schema).
+
+
+
+
+ Should lists have extended support for null values? Note this makes the serialization less efficient.
+
+
+
+
+ Specifies the type of prefix that should be applied to messages.
+
+
+
+
+ No length prefix is applied to the data; the data is terminated only be the end of the stream.
+
+
+
+
+ A base-128 length prefix is applied to the data (efficient for short messages).
+
+
+
+
+ A fixed-length (little-endian) length prefix is applied to the data (useful for compatibility).
+
+
+
+
+ A fixed-length (big-endian) length prefix is applied to the data (useful for compatibility).
+
+
+
+
+ Indicates that a type is defined for protocol-buffer serialization.
+
+
+
+
+ Gets or sets the defined name of the type.
+
+
+
+
+ Gets or sets the fist offset to use with implicit field tags;
+ only uesd if ImplicitFields is set.
+
+
+
+
+ If specified, alternative contract markers (such as markers for XmlSerailizer or DataContractSerializer) are ignored.
+
+
+
+
+ If specified, do NOT treat this type as a list, even if it looks like one.
+
+
+
+
+ Gets or sets the mechanism used to automatically infer field tags
+ for members. This option should be used in advanced scenarios only.
+ Please review the important notes against the ImplicitFields enumeration.
+
+
+
+
+ Enables/disables automatic tag generation based on the existing name / order
+ of the defined members. This option is not used for members marked
+ with ProtoMemberAttribute, as intended to provide compatibility with
+ WCF serialization. WARNING: when adding new fields you must take
+ care to increase the Order for new elements, otherwise data corruption
+ may occur.
+
+ If not explicitly specified, the default is assumed from Serializer.GlobalOptions.InferTagFromName.
+
+
+
+ Has a InferTagFromName value been explicitly set? if not, the default from the type-model is assumed.
+
+
+
+
+ Specifies an offset to apply to [DataMember(Order=...)] markers;
+ this is useful when working with mex-generated classes that have
+ a different origin (usually 1 vs 0) than the original data-contract.
+
+ This value is added to the Order of each member.
+
+
+
+
+ If true, the constructor for the type is bypassed during deserialization, meaning any field initializers
+ or other initialization code is skipped.
+
+
+
+
+ Should this type be treated as a reference by default? Please also see the implications of this,
+ as recorded on ProtoMemberAttribute.AsReference
+
+
+
+
+ Applies only to enums (not to DTO classes themselves); gets or sets a value indicating that an enum should be treated directly as an int/short/etc, rather
+ than enforcing .proto enum rules. This is useful *in particul* for [Flags] enums.
+
+
+
+
+ Has a EnumPassthru value been explicitly set?
+
+
+
+
+ Used to define protocol-buffer specific behavior for
+ enumerated values.
+
+
+
+
+ Indicates whether this instance has a customised value mapping
+
+ true if a specific value is set
+
+
+
+ Gets or sets the specific value to use for this enum during serialization.
+
+
+
+
+ Gets or sets the defined name of the enum, as used in .proto
+ (this name is not used during serialization).
+
+
+
+
+ Indicates an error during serialization/deserialization of a proto stream.
+
+
+
+ Creates a new ProtoException instance.
+
+
+ Creates a new ProtoException instance.
+
+
+ Creates a new ProtoException instance.
+
+
+
+ Indicates that a member should be excluded from serialization; this
+ is only normally used when using implict fields.
+
+
+
+
+ Indicates that a member should be excluded from serialization; this
+ is only normally used when using implict fields. This allows
+ ProtoIgnoreAttribute usage
+ even for partial classes where the individual members are not
+ under direct control.
+
+
+
+
+ Creates a new ProtoPartialIgnoreAttribute instance.
+
+ Specifies the member to be ignored.
+
+
+
+ The name of the member to be ignored.
+
+
+
+
+ Indicates the known-types to support for an individual
+ message. This serializes each level in the hierarchy as
+ a nested message to retain wire-compatibility with
+ other protocol-buffer implementations.
+
+
+
+
+ Creates a new instance of the ProtoIncludeAttribute.
+
+ The unique index (within the type) that will identify this data.
+ The additional type to serialize/deserialize.
+
+
+
+ Creates a new instance of the ProtoIncludeAttribute.
+
+ The unique index (within the type) that will identify this data.
+ The additional type to serialize/deserialize.
+
+
+
+ Gets the unique index (within the type) that will identify this data.
+
+
+
+
+ Gets the additional type to serialize/deserialize.
+
+
+
+
+ Gets the additional type to serialize/deserialize.
+
+
+
+
+ Specifies whether the inherited sype's sub-message should be
+ written with a length-prefix (default), or with group markers.
+
+
+
+
+ Declares a member to be used in protocol-buffer serialization, using
+ the given Tag. A DataFormat may be used to optimise the serialization
+ format (for instance, using zigzag encoding for negative numbers, or
+ fixed-length encoding for large values.
+
+
+
+
+ Compare with another ProtoMemberAttribute for sorting purposes
+
+
+
+
+ Compare with another ProtoMemberAttribute for sorting purposes
+
+
+
+
+ Creates a new ProtoMemberAttribute instance.
+
+ Specifies the unique tag used to identify this member within the type.
+
+
+
+ Gets or sets the original name defined in the .proto; not used
+ during serialization.
+
+
+
+
+ Gets or sets the data-format to be used when encoding this value.
+
+
+
+
+ Gets the unique tag used to identify this member within the type.
+
+
+
+
+ Gets or sets a value indicating whether this member is mandatory.
+
+
+
+
+ Gets a value indicating whether this member is packed.
+ This option only applies to list/array data of primitive types (int, double, etc).
+
+
+
+
+ Indicates whether this field should *repace* existing values (the default is false, meaning *append*).
+ This option only applies to list/array data.
+
+
+
+
+ Enables full object-tracking/full-graph support.
+
+
+
+
+ Embeds the type information into the stream, allowing usage with types not known in advance.
+
+
+
+
+ Gets or sets a value indicating whether this member is packed (lists/arrays).
+
+
+
+
+ Additional (optional) settings that control serialization of members
+
+
+
+
+ Default; no additional options
+
+
+
+
+ Indicates that repeated elements should use packed (length-prefixed) encoding
+
+
+
+
+ Indicates that the given item is required
+
+
+
+
+ Enables full object-tracking/full-graph support
+
+
+
+
+ Embeds the type information into the stream, allowing usage with types not known in advance
+
+
+
+
+ Indicates whether this field should *repace* existing values (the default is false, meaning *append*).
+ This option only applies to list/array data.
+
+
+
+
+ Determines whether the types AsReferenceDefault value is used, or whether this member's AsReference should be used
+
+
+
+
+ Declares a member to be used in protocol-buffer serialization, using
+ the given Tag and MemberName. This allows ProtoMemberAttribute usage
+ even for partial classes where the individual members are not
+ under direct control.
+ A DataFormat may be used to optimise the serialization
+ format (for instance, using zigzag encoding for negative numbers, or
+ fixed-length encoding for large values.
+
+
+
+
+ Creates a new ProtoMemberAttribute instance.
+
+ Specifies the unique tag used to identify this member within the type.
+ Specifies the member to be serialized.
+
+
+
+ The name of the member to be serialized.
+
+
+
+
+ A stateful reader, used to read a protobuf stream. Typical usage would be (sequentially) to call
+ ReadFieldHeader and (after matching the field) an appropriate Read* method.
+
+
+
+
+ Creates a new reader against a stream
+
+ The source stream
+ The model to use for serialization; this can be null, but this will impair the ability to deserialize sub-objects
+ Additional context about this serialization operation
+
+
+
+ Creates a new reader against a stream
+
+ The source stream
+ The model to use for serialization; this can be null, but this will impair the ability to deserialize sub-objects
+ Additional context about this serialization operation
+ The number of bytes to read, or -1 to read until the end of the stream
+
+
+
+ Releases resources used by the reader, but importantly does not Dispose the
+ underlying stream; in many typical use-cases the stream is used for different
+ processes, so it is assumed that the consumer will Dispose their stream separately.
+
+
+
+
+ Reads an unsigned 32-bit integer from the stream; supported wire-types: Variant, Fixed32, Fixed64
+
+
+
+
+ Reads a signed 16-bit integer from the stream: Variant, Fixed32, Fixed64, SignedVariant
+
+
+
+
+ Reads an unsigned 16-bit integer from the stream; supported wire-types: Variant, Fixed32, Fixed64
+
+
+
+
+ Reads an unsigned 8-bit integer from the stream; supported wire-types: Variant, Fixed32, Fixed64
+
+
+
+
+ Reads a signed 8-bit integer from the stream; supported wire-types: Variant, Fixed32, Fixed64, SignedVariant
+
+
+
+
+ Reads a signed 32-bit integer from the stream; supported wire-types: Variant, Fixed32, Fixed64, SignedVariant
+
+
+
+
+ Reads a signed 64-bit integer from the stream; supported wire-types: Variant, Fixed32, Fixed64, SignedVariant
+
+
+
+
+ Reads a string from the stream (using UTF8); supported wire-types: String
+
+
+
+
+ Throws an exception indication that the given value cannot be mapped to an enum.
+
+
+
+
+ Reads a double-precision number from the stream; supported wire-types: Fixed32, Fixed64
+
+
+
+
+ Reads (merges) a sub-message from the stream, internally calling StartSubItem and EndSubItem, and (in between)
+ parsing the message in accordance with the model associated with the reader
+
+
+
+
+ Makes the end of consuming a nested message in the stream; the stream must be either at the correct EndGroup
+ marker, or all fields of the sub-message must have been consumed (in either case, this means ReadFieldHeader
+ should return zero)
+
+
+
+
+ Begins consuming a nested message in the stream; supported wire-types: StartGroup, String
+
+ The token returned must be help and used when callining EndSubItem
+
+
+
+ Reads a field header from the stream, setting the wire-type and retuning the field number. If no
+ more fields are available, then 0 is returned. This methods respects sub-messages.
+
+
+
+
+ Looks ahead to see whether the next field in the stream is what we expect
+ (typically; what we've just finished reading - for example ot read successive list items)
+
+
+
+
+ Compares the streams current wire-type to the hinted wire-type, updating the reader if necessary; for example,
+ a Variant may be updated to SignedVariant. If the hinted wire-type is unrelated then no change is made.
+
+
+
+
+ Verifies that the stream's current wire-type is as expected, or a specialized sub-type (for example,
+ SignedVariant) - in which case the current wire-type is updated. Otherwise an exception is thrown.
+
+
+
+
+ Discards the data for the current field.
+
+
+
+
+ Reads an unsigned 64-bit integer from the stream; supported wire-types: Variant, Fixed32, Fixed64
+
+
+
+
+ Reads a single-precision number from the stream; supported wire-types: Fixed32, Fixed64
+
+
+
+
+ Reads a boolean value from the stream; supported wire-types: Variant, Fixed32, Fixed64
+
+
+
+
+
+ Reads a byte-sequence from the stream, appending them to an existing byte-sequence (which can be null); supported wire-types: String
+
+
+
+
+ Reads the length-prefix of a message from a stream without buffering additional data, allowing a fixed-length
+ reader to be created.
+
+
+
+
+ Reads a little-endian encoded integer. An exception is thrown if the data is not all available.
+
+
+
+
+ Reads a big-endian encoded integer. An exception is thrown if the data is not all available.
+
+
+
+
+ Reads a varint encoded integer. An exception is thrown if the data is not all available.
+
+
+
+
+ Reads a string (of a given lenth, in bytes) directly from the source into a pre-existing buffer. An exception is thrown if the data is not all available.
+
+
+
+
+ Reads a given number of bytes directly from the source. An exception is thrown if the data is not all available.
+
+
+
+
+ Reads a string (of a given lenth, in bytes) directly from the source. An exception is thrown if the data is not all available.
+
+
+
+
+ Reads the length-prefix of a message from a stream without buffering additional data, allowing a fixed-length
+ reader to be created.
+
+
+
+ The number of bytes consumed; 0 if no data available
+
+
+
+ Copies the current field into the instance as extension data
+
+
+
+
+ Indicates whether the reader still has data remaining in the current sub-item,
+ additionally setting the wire-type for the next field if there is more data.
+ This is used when decoding packed data.
+
+
+
+
+ Utility method, not intended for public use; this helps maintain the root object is complex scenarios
+
+
+
+
+ Reads a Type from the stream, using the model's DynamicTypeFormatting if appropriate; supported wire-types: String
+
+
+
+
+ Merge two objects using the details from the current reader; this is used to change the type
+ of objects when an inheritance relationship is discovered later than usual during deserilazation.
+
+
+
+
+ Gets the number of the field being processed.
+
+
+
+
+ Indicates the underlying proto serialization format on the wire.
+
+
+
+
+ Gets / sets a flag indicating whether strings should be checked for repetition; if
+ true, any repeated UTF-8 byte sequence will result in the same String instance, rather
+ than a second instance of the same string. Enabled by default. Note that this uses
+ a custom interner - the system-wide string interner is not used.
+
+
+
+
+ Addition information about this deserialization operation.
+
+
+
+
+ Returns the position of the current reader (note that this is not necessarily the same as the position
+ in the underlying stream, if multiple readers are used on the same stream)
+
+
+
+
+ Get the TypeModel associated with this reader
+
+
+
+
+ Represents an output stream for writing protobuf data.
+
+ Why is the API backwards (static methods with writer arguments)?
+ See: http://marcgravell.blogspot.com/2010/03/last-will-be-first-and-first-will-be.html
+
+
+
+
+ Write an encapsulated sub-object, using the supplied unique key (reprasenting a type).
+
+ The object to write.
+ The key that uniquely identifies the type within the model.
+ The destination.
+
+
+
+ Write an encapsulated sub-object, using the supplied unique key (reprasenting a type) - but the
+ caller is asserting that this relationship is non-recursive; no recursion check will be
+ performed.
+
+ The object to write.
+ The key that uniquely identifies the type within the model.
+ The destination.
+
+
+
+ Writes a field-header, indicating the format of the next data we plan to write.
+
+
+
+
+ Writes a byte-array to the stream; supported wire-types: String
+
+
+
+
+ Writes a byte-array to the stream; supported wire-types: String
+
+
+
+
+ Indicates the start of a nested record.
+
+ The instance to write.
+ The destination.
+ A token representing the state of the stream; this token is given to EndSubItem.
+
+
+
+ Indicates the end of a nested record.
+
+ The token obtained from StartubItem.
+ The destination.
+
+
+
+ Creates a new writer against a stream
+
+ The destination stream
+ The model to use for serialization; this can be null, but this will impair the ability to serialize sub-objects
+ Additional context about this serialization operation
+
+
+
+ Flushes data to the underlying stream, and releases any resources. The underlying stream is *not* disposed
+ by this operation.
+
+
+
+
+ Writes any buffered data (if possible) to the underlying stream.
+
+ The writer to flush
+ It is not always possible to fully flush, since some sequences
+ may require values to be back-filled into the byte-stream.
+
+
+
+ Writes an unsigned 32-bit integer to the stream; supported wire-types: Variant, Fixed32, Fixed64
+
+
+
+
+ Writes a string to the stream; supported wire-types: String
+
+
+
+
+ Writes an unsigned 64-bit integer to the stream; supported wire-types: Variant, Fixed32, Fixed64
+
+
+
+
+ Writes a signed 64-bit integer to the stream; supported wire-types: Variant, Fixed32, Fixed64, SignedVariant
+
+
+
+
+ Writes an unsigned 16-bit integer to the stream; supported wire-types: Variant, Fixed32, Fixed64
+
+
+
+
+ Writes a signed 16-bit integer to the stream; supported wire-types: Variant, Fixed32, Fixed64, SignedVariant
+
+
+
+
+ Writes an unsigned 16-bit integer to the stream; supported wire-types: Variant, Fixed32, Fixed64
+
+
+
+
+ Writes an unsigned 8-bit integer to the stream; supported wire-types: Variant, Fixed32, Fixed64
+
+
+
+
+ Writes a signed 8-bit integer to the stream; supported wire-types: Variant, Fixed32, Fixed64, SignedVariant
+
+
+
+
+ Writes a signed 32-bit integer to the stream; supported wire-types: Variant, Fixed32, Fixed64, SignedVariant
+
+
+
+
+ Writes a double-precision number to the stream; supported wire-types: Fixed32, Fixed64
+
+
+
+
+ Writes a single-precision number to the stream; supported wire-types: Fixed32, Fixed64
+
+
+
+
+ Throws an exception indicating that the given enum cannot be mapped to a serialized value.
+
+
+
+
+ Writes a boolean to the stream; supported wire-types: Variant, Fixed32, Fixed64
+
+
+
+
+ Copies any extension data stored for the instance to the underlying stream
+
+
+
+
+ Used for packed encoding; indicates that the next field should be skipped rather than
+ a field header written. Note that the field number must match, else an exception is thrown
+ when the attempt is made to write the (incorrect) field. The wire-type is taken from the
+ subsequent call to WriteFieldHeader. Only primitive types can be packed.
+
+
+
+
+ Specifies a known root object to use during reference-tracked serialization
+
+
+
+
+ Writes a Type to the stream, using the model's DynamicTypeFormatting if appropriate; supported wire-types: String
+
+
+
+
+ Addition information about this serialization operation.
+
+
+
+
+ Get the TypeModel associated with this writer
+
+
+
+
+ Additional information about a serialization operation
+
+
+
+
+ Convert a SerializationContext to a StreamingContext
+
+
+
+
+ Convert a StreamingContext to a SerializationContext
+
+
+
+
+ Gets or sets a user-defined object containing additional information about this serialization/deserialization operation.
+
+
+
+
+ A default SerializationContext, with minimal information.
+
+
+
+
+ Provides protocol-buffer serialization capability for concrete, attributed types. This
+ is a *default* model, but custom serializer models are also supported.
+
+
+ Protocol-buffer serialization is a compact binary format, designed to take
+ advantage of sparse data and knowledge of specific data types; it is also
+ extensible, allowing a type to be deserialized / merged even if some data is
+ not recognised.
+
+
+
+
+ The field number that is used as a default when serializing/deserializing a list of objects.
+ The data is treated as repeated message with field number 1.
+
+
+
+
+ Suggest a .proto definition for the given type
+
+ The type to generate a .proto definition for
+ The .proto definition as a string
+
+
+
+ Create a deep clone of the supplied instance; any sub-items are also cloned.
+
+
+
+
+ Applies a protocol-buffer stream to an existing instance.
+
+ The type being merged.
+ The existing instance to be modified (can be null).
+ The binary stream to apply to the instance (cannot be null).
+ The updated instance; this may be different to the instance argument if
+ either the original instance was null, or the stream defines a known sub-type of the
+ original instance.
+
+
+
+ Creates a new instance from a protocol-buffer stream
+
+ The type to be created.
+ The binary stream to apply to the new instance (cannot be null).
+ A new, initialized instance.
+
+
+
+ Writes a protocol-buffer representation of the given instance to the supplied stream.
+
+ The existing instance to be serialized (cannot be null).
+ The destination stream to write to.
+
+
+
+ Serializes a given instance and deserializes it as a different type;
+ this can be used to translate between wire-compatible objects (where
+ two .NET types represent the same data), or to promote/demote a type
+ through an inheritance hierarchy.
+
+ No assumption of compatibility is made between the types.
+ The type of the object being copied.
+ The type of the new object to be created.
+ The existing instance to use as a template.
+ A new instane of type TNewType, with the data from TOldType.
+
+
+
+ Precompiles the serializer for a given type.
+
+
+
+
+ Reads a sequence of consecutive length-prefixed items from a stream, using
+ either base-128 or fixed-length prefixes. Base-128 prefixes with a tag
+ are directly comparable to serializing multiple items in succession
+ (use the tag to emulate the implicit behavior
+ when serializing a list/array). When a tag is
+ specified, any records with different tags are silently omitted. The
+ tag is ignored. The tag is ignores for fixed-length prefixes.
+
+ The type of object to deserialize.
+ The binary stream containing the serialized records.
+ The prefix style used in the data.
+ The tag of records to return (if non-positive, then no tag is
+ expected and all records are returned).
+ The sequence of deserialized objects.
+
+
+
+ Creates a new instance from a protocol-buffer stream that has a length-prefix
+ on data (to assist with network IO).
+
+ The type to be created.
+ The binary stream to apply to the new instance (cannot be null).
+ How to encode the length prefix.
+ A new, initialized instance.
+
+
+
+ Creates a new instance from a protocol-buffer stream that has a length-prefix
+ on data (to assist with network IO).
+
+ The type to be created.
+ The binary stream to apply to the new instance (cannot be null).
+ How to encode the length prefix.
+ The expected tag of the item (only used with base-128 prefix style).
+ A new, initialized instance.
+
+
+
+ Applies a protocol-buffer stream to an existing instance, using length-prefixed
+ data - useful with network IO.
+
+ The type being merged.
+ The existing instance to be modified (can be null).
+ The binary stream to apply to the instance (cannot be null).
+ How to encode the length prefix.
+ The updated instance; this may be different to the instance argument if
+ either the original instance was null, or the stream defines a known sub-type of the
+ original instance.
+
+
+
+ Writes a protocol-buffer representation of the given instance to the supplied stream,
+ with a length-prefix. This is useful for socket programming,
+ as DeserializeWithLengthPrefix/MergeWithLengthPrefix can be used to read the single object back
+ from an ongoing stream.
+
+ The type being serialized.
+ The existing instance to be serialized (cannot be null).
+ How to encode the length prefix.
+ The destination stream to write to.
+
+
+
+ Writes a protocol-buffer representation of the given instance to the supplied stream,
+ with a length-prefix. This is useful for socket programming,
+ as DeserializeWithLengthPrefix/MergeWithLengthPrefix can be used to read the single object back
+ from an ongoing stream.
+
+ The type being serialized.
+ The existing instance to be serialized (cannot be null).
+ How to encode the length prefix.
+ The destination stream to write to.
+ The tag used as a prefix to each record (only used with base-128 style prefixes).
+
+
+ Indicates the number of bytes expected for the next message.
+ The stream containing the data to investigate for a length.
+ The algorithm used to encode the length.
+ The length of the message, if it could be identified.
+ True if a length could be obtained, false otherwise.
+
+
+ Indicates the number of bytes expected for the next message.
+ The buffer containing the data to investigate for a length.
+ The offset of the first byte to read from the buffer.
+ The number of bytes to read from the buffer.
+ The algorithm used to encode the length.
+ The length of the message, if it could be identified.
+ True if a length could be obtained, false otherwise.
+
+
+
+ Releases any internal buffers that have been reserved for efficiency; this does not affect any serialization
+ operations; simply: it can be used (optionally) to release the buffers for garbage collection (at the expense
+ of having to re-allocate a new buffer for the next operation, rather than re-use prior buffers).
+
+
+
+
+ Provides non-generic access to the default serializer.
+
+
+
+
+ Create a deep clone of the supplied instance; any sub-items are also cloned.
+
+
+
+
+ Writes a protocol-buffer representation of the given instance to the supplied stream.
+
+ The existing instance to be serialized (cannot be null).
+ The destination stream to write to.
+
+
+
+ Creates a new instance from a protocol-buffer stream
+
+ The type to be created.
+ The binary stream to apply to the new instance (cannot be null).
+ A new, initialized instance.
+
+
+ Applies a protocol-buffer stream to an existing instance.
+ The existing instance to be modified (cannot be null).
+ The binary stream to apply to the instance (cannot be null).
+ The updated instance
+
+
+
+ Writes a protocol-buffer representation of the given instance to the supplied stream,
+ with a length-prefix. This is useful for socket programming,
+ as DeserializeWithLengthPrefix/MergeWithLengthPrefix can be used to read the single object back
+ from an ongoing stream.
+
+ The existing instance to be serialized (cannot be null).
+ How to encode the length prefix.
+ The destination stream to write to.
+ The tag used as a prefix to each record (only used with base-128 style prefixes).
+
+
+
+ Applies a protocol-buffer stream to an existing instance (or null), using length-prefixed
+ data - useful with network IO.
+
+ The existing instance to be modified (can be null).
+ The binary stream to apply to the instance (cannot be null).
+ How to encode the length prefix.
+ Used to resolve types on a per-field basis.
+ The updated instance; this may be different to the instance argument if
+ either the original instance was null, or the stream defines a known sub-type of the
+ original instance.
+
+
+
+ Indicates whether the supplied type is explicitly modelled by the model
+
+
+
+
+ Global switches that change the behavior of protobuf-net
+
+
+
+
+
+
+
+
+
+ Maps a field-number to a type
+
+
+
+
+ Perform the steps necessary to serialize this data.
+
+ The value to be serialized.
+ The writer entity that is accumulating the output data.
+
+
+
+ Perform the steps necessary to deserialize this data.
+
+ The current value, if appropriate.
+ The reader providing the input data.
+ The updated / replacement value.
+
+
+
+ The type that this serializer is intended to work for.
+
+
+
+
+ Indicates whether a Read operation replaces the existing value, or
+ extends the value. If false, the "value" parameter to Read is
+ discarded, and should be passed in as null.
+
+
+
+
+ Now all Read operations return a value (although most do); if false no
+ value should be expected.
+
+
+
+
+ Used to hold particulars relating to nested objects. This is opaque to the caller - simply
+ give back the token you are given at the end of an object.
+
+
+
+
+ Indicates the encoding used to represent an individual value in a protobuf stream
+
+
+
+
+ Represents an error condition
+
+
+
+
+ Base-128 variant-length encoding
+
+
+
+
+ Fixed-length 8-byte encoding
+
+
+
+
+ Length-variant-prefixed encoding
+
+
+
+
+ Indicates the start of a group
+
+
+
+
+ Indicates the end of a group
+
+
+
+
+ Fixed-length 4-byte encoding
+ 10
+
+
+
+ This is not a formal wire-type in the "protocol buffers" spec, but
+ denotes a variant integer that should be interpreted using
+ zig-zag semantics (so -ve numbers aren't a significant overhead)
+
+
+
+
diff --git a/packages/protobuf-net.2.0.0.668/lib/sl4/protobuf-net.dll b/packages/protobuf-net.2.0.0.668/lib/sl4/protobuf-net.dll
new file mode 100644
index 000000000..dd405e40d
Binary files /dev/null and b/packages/protobuf-net.2.0.0.668/lib/sl4/protobuf-net.dll differ
diff --git a/packages/protobuf-net.2.0.0.668/lib/sl4/protobuf-net.xml b/packages/protobuf-net.2.0.0.668/lib/sl4/protobuf-net.xml
new file mode 100644
index 000000000..788e3794d
--- /dev/null
+++ b/packages/protobuf-net.2.0.0.668/lib/sl4/protobuf-net.xml
@@ -0,0 +1,2585 @@
+
+
+
+ protobuf-net
+
+
+
+
+ Provides support for common .NET types that do not have a direct representation
+ in protobuf, using the definitions from bcl.proto
+
+
+
+
+ Creates a new instance of the specified type, bypassing the constructor.
+
+ The type to create
+ The new instance
+ If the platform does not support constructor-skipping
+
+
+
+ Writes a TimeSpan to a protobuf stream
+
+
+
+
+ Parses a TimeSpan from a protobuf stream
+
+
+
+
+ Parses a DateTime from a protobuf stream
+
+
+
+
+ Writes a DateTime to a protobuf stream
+
+
+
+
+ Parses a decimal from a protobuf stream
+
+
+
+
+ Writes a decimal to a protobuf stream
+
+
+
+
+ Writes a Guid to a protobuf stream
+
+
+
+
+ Parses a Guid from a protobuf stream
+
+
+
+
+ Reads an *implementation specific* bundled .NET object, including (as options) type-metadata, identity/re-use, etc.
+
+
+
+
+ Writes an *implementation specific* bundled .NET object, including (as options) type-metadata, identity/re-use, etc.
+
+
+
+
+ Optional behaviours that introduce .NET-specific functionality
+
+
+
+
+ No special behaviour
+
+
+
+
+ Enables full object-tracking/full-graph support.
+
+
+
+
+ Embeds the type information into the stream, allowing usage with types not known in advance.
+
+
+
+
+ If false, the constructor for the type is bypassed during deserialization, meaning any field initializers
+ or other initialization code is skipped.
+
+
+
+
+ Should the object index be reserved, rather than creating an object promptly
+
+
+
+
+ Provides a simple buffer-based implementation of an extension object.
+
+
+
+
+ Provides addition capability for supporting unexpected fields during
+ protocol-buffer serialization/deserialization. This allows for loss-less
+ round-trip/merge, even when the data is not fully understood.
+
+
+
+
+ Requests a stream into which any unexpected fields can be persisted.
+
+ A new stream suitable for storing data.
+
+
+
+ Indicates that all unexpected fields have now been stored. The
+ implementing class is responsible for closing the stream. If
+ "commit" is not true the data may be discarded.
+
+ The stream originally obtained by BeginAppend.
+ True if the append operation completed successfully.
+
+
+
+ Requests a stream of the unexpected fields previously stored.
+
+ A prepared stream of the unexpected fields.
+
+
+
+ Indicates that all unexpected fields have now been read. The
+ implementing class is responsible for closing the stream.
+
+ The stream originally obtained by BeginQuery.
+
+
+
+ Requests the length of the raw binary stream; this is used
+ when serializing sub-entities to indicate the expected size.
+
+ The length of the binary stream representing unexpected data.
+
+
+ Specifies a method on the root-contract in an hierarchy to be invoked before serialization.
+
+
+ Specifies a method on the root-contract in an hierarchy to be invoked after serialization.
+
+
+ Specifies a method on the root-contract in an hierarchy to be invoked before deserialization.
+
+
+ Specifies a method on the root-contract in an hierarchy to be invoked after deserialization.
+
+
+
+ Sub-format to use when serializing/deserializing data
+
+
+
+
+ Uses the default encoding for the data-type.
+
+
+
+
+ When applied to signed integer-based data (including Decimal), this
+ indicates that zigzag variant encoding will be used. This means that values
+ with small magnitude (regardless of sign) take a small amount
+ of space to encode.
+
+
+
+
+ When applied to signed integer-based data (including Decimal), this
+ indicates that two's-complement variant encoding will be used.
+ This means that any -ve number will take 10 bytes (even for 32-bit),
+ so should only be used for compatibility.
+
+
+
+
+ When applied to signed integer-based data (including Decimal), this
+ indicates that a fixed amount of space will be used.
+
+
+
+
+ When applied to a sub-message, indicates that the value should be treated
+ as group-delimited.
+
+
+
+
+ Simple base class for supporting unexpected fields allowing
+ for loss-less round-tips/merge, even if the data is not understod.
+ The additional fields are (by default) stored in-memory in a buffer.
+
+ As an example of an alternative implementation, you might
+ choose to use the file system (temporary files) as the back-end, tracking
+ only the paths [such an object would ideally be IDisposable and use
+ a finalizer to ensure that the files are removed].
+
+
+
+
+ Indicates that the implementing type has support for protocol-buffer
+ extensions.
+
+ Can be implemented by deriving from Extensible.
+
+
+
+ Retrieves the extension object for the current
+ instance, optionally creating it if it does not already exist.
+
+ Should a new extension object be
+ created if it does not already exist?
+ The extension object if it exists (or was created), or null
+ if the extension object does not exist or is not available.
+ The createIfMissing argument is false during serialization,
+ and true during deserialization upon encountering unexpected fields.
+
+
+
+ Retrieves the extension object for the current
+ instance, optionally creating it if it does not already exist.
+
+ Should a new extension object be
+ created if it does not already exist?
+ The extension object if it exists (or was created), or null
+ if the extension object does not exist or is not available.
+ The createIfMissing argument is false during serialization,
+ and true during deserialization upon encountering unexpected fields.
+
+
+
+ Provides a simple, default implementation for extension support,
+ optionally creating it if it does not already exist. Designed to be called by
+ classes implementing .
+
+ Should a new extension object be
+ created if it does not already exist?
+ The extension field to check (and possibly update).
+ The extension object if it exists (or was created), or null
+ if the extension object does not exist or is not available.
+ The createIfMissing argument is false during serialization,
+ and true during deserialization upon encountering unexpected fields.
+
+
+
+ Appends the value as an additional (unexpected) data-field for the instance.
+ Note that for non-repeated sub-objects, this equates to a merge operation;
+ for repeated sub-objects this adds a new instance to the set; for simple
+ values the new value supercedes the old value.
+
+ Note that appending a value does not remove the old value from
+ the stream; avoid repeatedly appending values for the same field.
+ The type of the value to append.
+ The extensible object to append the value to.
+ The field identifier; the tag should not be defined as a known data-field for the instance.
+ The value to append.
+
+
+
+ Appends the value as an additional (unexpected) data-field for the instance.
+ Note that for non-repeated sub-objects, this equates to a merge operation;
+ for repeated sub-objects this adds a new instance to the set; for simple
+ values the new value supercedes the old value.
+
+ Note that appending a value does not remove the old value from
+ the stream; avoid repeatedly appending values for the same field.
+ The data-type of the field.
+ The data-format to use when encoding the value.
+ The extensible object to append the value to.
+ The field identifier; the tag should not be defined as a known data-field for the instance.
+ The value to append.
+
+
+
+ Queries an extensible object for an additional (unexpected) data-field for the instance.
+ The value returned is the composed value after merging any duplicated content; if the
+ value is "repeated" (a list), then use GetValues instead.
+
+ The data-type of the field.
+ The extensible object to obtain the value from.
+ The field identifier; the tag should not be defined as a known data-field for the instance.
+ The effective value of the field, or the default value if not found.
+
+
+
+ Queries an extensible object for an additional (unexpected) data-field for the instance.
+ The value returned is the composed value after merging any duplicated content; if the
+ value is "repeated" (a list), then use GetValues instead.
+
+ The data-type of the field.
+ The extensible object to obtain the value from.
+ The field identifier; the tag should not be defined as a known data-field for the instance.
+ The data-format to use when decoding the value.
+ The effective value of the field, or the default value if not found.
+
+
+
+ Queries an extensible object for an additional (unexpected) data-field for the instance.
+ The value returned (in "value") is the composed value after merging any duplicated content;
+ if the value is "repeated" (a list), then use GetValues instead.
+
+ The data-type of the field.
+ The effective value of the field, or the default value if not found.
+ The extensible object to obtain the value from.
+ The field identifier; the tag should not be defined as a known data-field for the instance.
+ True if data for the field was present, false otherwise.
+
+
+
+ Queries an extensible object for an additional (unexpected) data-field for the instance.
+ The value returned (in "value") is the composed value after merging any duplicated content;
+ if the value is "repeated" (a list), then use GetValues instead.
+
+ The data-type of the field.
+ The effective value of the field, or the default value if not found.
+ The extensible object to obtain the value from.
+ The field identifier; the tag should not be defined as a known data-field for the instance.
+ The data-format to use when decoding the value.
+ True if data for the field was present, false otherwise.
+
+
+
+ Queries an extensible object for an additional (unexpected) data-field for the instance.
+ The value returned (in "value") is the composed value after merging any duplicated content;
+ if the value is "repeated" (a list), then use GetValues instead.
+
+ The data-type of the field.
+ The effective value of the field, or the default value if not found.
+ The extensible object to obtain the value from.
+ The field identifier; the tag should not be defined as a known data-field for the instance.
+ The data-format to use when decoding the value.
+ Allow tags that are present as part of the definition; for example, to query unknown enum values.
+ True if data for the field was present, false otherwise.
+
+
+
+ Queries an extensible object for an additional (unexpected) data-field for the instance.
+ Each occurrence of the field is yielded separately, making this usage suitable for "repeated"
+ (list) fields.
+
+ The extended data is processed lazily as the enumerator is iterated.
+ The data-type of the field.
+ The extensible object to obtain the value from.
+ The field identifier; the tag should not be defined as a known data-field for the instance.
+ An enumerator that yields each occurrence of the field.
+
+
+
+ Queries an extensible object for an additional (unexpected) data-field for the instance.
+ Each occurrence of the field is yielded separately, making this usage suitable for "repeated"
+ (list) fields.
+
+ The extended data is processed lazily as the enumerator is iterated.
+ The data-type of the field.
+ The extensible object to obtain the value from.
+ The field identifier; the tag should not be defined as a known data-field for the instance.
+ The data-format to use when decoding the value.
+ An enumerator that yields each occurrence of the field.
+
+
+
+ Queries an extensible object for an additional (unexpected) data-field for the instance.
+ The value returned (in "value") is the composed value after merging any duplicated content;
+ if the value is "repeated" (a list), then use GetValues instead.
+
+ The data-type of the field.
+ The model to use for configuration.
+ The effective value of the field, or the default value if not found.
+ The extensible object to obtain the value from.
+ The field identifier; the tag should not be defined as a known data-field for the instance.
+ The data-format to use when decoding the value.
+ Allow tags that are present as part of the definition; for example, to query unknown enum values.
+ True if data for the field was present, false otherwise.
+
+
+
+ Queries an extensible object for an additional (unexpected) data-field for the instance.
+ Each occurrence of the field is yielded separately, making this usage suitable for "repeated"
+ (list) fields.
+
+ The extended data is processed lazily as the enumerator is iterated.
+ The model to use for configuration.
+ The data-type of the field.
+ The extensible object to obtain the value from.
+ The field identifier; the tag should not be defined as a known data-field for the instance.
+ The data-format to use when decoding the value.
+ An enumerator that yields each occurrence of the field.
+
+
+
+ Appends the value as an additional (unexpected) data-field for the instance.
+ Note that for non-repeated sub-objects, this equates to a merge operation;
+ for repeated sub-objects this adds a new instance to the set; for simple
+ values the new value supercedes the old value.
+
+ Note that appending a value does not remove the old value from
+ the stream; avoid repeatedly appending values for the same field.
+ The model to use for configuration.
+ The data-format to use when encoding the value.
+ The extensible object to append the value to.
+ The field identifier; the tag should not be defined as a known data-field for the instance.
+ The value to append.
+
+
+
+ This class acts as an internal wrapper allowing us to do a dynamic
+ methodinfo invoke; an't put into Serializer as don't want on public
+ API; can't put into Serializer<T> since we need to invoke
+ accross classes, which isn't allowed in Silverlight)
+
+
+
+
+ All this does is call GetExtendedValuesTyped with the correct type for "instance";
+ this ensures that we don't get issues with subclasses declaring conflicting types -
+ the caller must respect the fields defined for the type they pass in.
+
+
+
+
+ All this does is call GetExtendedValuesTyped with the correct type for "instance";
+ this ensures that we don't get issues with subclasses declaring conflicting types -
+ the caller must respect the fields defined for the type they pass in.
+
+
+
+
+ Not all frameworks are created equal (fx1.1 vs fx2.0,
+ micro-framework, compact-framework,
+ silverlight, etc). This class simply wraps up a few things that would
+ otherwise make the real code unnecessarily messy, providing fallback
+ implementations if necessary.
+
+
+
+
+ Intended to be a direct map to regular TypeCode, but:
+ - with missing types
+ - existing on WinRT
+
+
+
+
+ Specifies the method used to infer field tags for members of the type
+ under consideration. Tags are deduced using the invariant alphabetic
+ sequence of the members' names; this makes implicit field tags very brittle,
+ and susceptible to changes such as field names (normally an isolated
+ change).
+
+
+
+
+ No members are serialized implicitly; all members require a suitable
+ attribute such as [ProtoMember]. This is the recmomended mode for
+ most scenarios.
+
+
+
+
+ Public properties and fields are eligible for implicit serialization;
+ this treats the public API as a contract. Ordering beings from ImplicitFirstTag.
+
+
+
+
+ Public and non-public fields are eligible for implicit serialization;
+ this acts as a state/implementation serializer. Ordering beings from ImplicitFirstTag.
+
+
+
+
+ Represents the set of serialization callbacks to be used when serializing/deserializing a type.
+
+
+
+ Called before serializing an instance
+
+
+ Called before deserializing an instance
+
+
+ Called after serializing an instance
+
+
+ Called after deserializing an instance
+
+
+
+ True if any callback is set, else False
+
+
+
+
+ Represents a type at runtime for use with protobuf, allowing the field mappings (etc) to be defined
+
+
+
+
+ Get the name of the type being represented
+
+
+
+
+ Adds a known sub-type to the inheritance model
+
+
+
+
+ Adds a known sub-type to the inheritance model
+
+
+
+
+ Assigns the callbacks to use during serialiation/deserialization.
+
+ The method (or null) called before serialization begins.
+ The method (or null) called when serialization is complete.
+ The method (or null) called before deserialization begins (or when a new instance is created during deserialization).
+ The method (or null) called when deserialization is complete.
+ The set of callbacks.
+
+
+
+ Assigns the callbacks to use during serialiation/deserialization.
+
+ The name of the method (or null) called before serialization begins.
+ The name of the method (or null) called when serialization is complete.
+ The name of the method (or null) called before deserialization begins (or when a new instance is created during deserialization).
+ The name of the method (or null) called when deserialization is complete.
+ The set of callbacks.
+
+
+
+ Designate a factory-method to use to create instances of this type
+
+
+
+
+ Designate a factory-method to use to create instances of this type
+
+
+
+
+ Throws an exception if the type has been made immutable
+
+
+
+
+ Adds a member (by name) to the MetaType
+
+
+
+
+ Adds a member (by name) to the MetaType, returning the ValueMember rather than the fluent API.
+ This is otherwise identical to Add.
+
+
+
+
+ Adds a member (by name) to the MetaType
+
+
+
+
+ Performs serialization of this type via a surrogate; all
+ other serialization options are ignored and handled
+ by the surrogate's configuration.
+
+
+
+
+ Adds a set of members (by name) to the MetaType
+
+
+
+
+ Adds a member (by name) to the MetaType
+
+
+
+
+ Adds a member (by name) to the MetaType, including an itemType and defaultType for representing lists
+
+
+
+
+ Adds a member (by name) to the MetaType, including an itemType and defaultType for representing lists, returning the ValueMember rather than the fluent API.
+ This is otherwise identical to Add.
+
+
+
+
+ Returns the ValueMember instances associated with this type
+
+
+
+
+ Returns the SubType instances associated with this type
+
+
+
+
+ Gets the base-type for this type
+
+
+
+
+ When used to compile a model, should public serialization/deserialzation methods
+ be included for this type?
+
+
+
+
+ Should this type be treated as a reference by default?
+
+
+
+
+ Indicates whether the current type has defined callbacks
+
+
+
+
+ Indicates whether the current type has defined subtypes
+
+
+
+
+ Returns the set of callbacks defined for this type
+
+
+
+
+ Gets or sets the name of this contract.
+
+
+
+
+ The runtime type that the meta-type represents
+
+
+
+
+ Gets or sets whether the type should use a parameterless constructor (the default),
+ or whether the type should skip the constructor completely. This option is not supported
+ on compact-framework.
+
+
+
+
+ The concrete type to create when a new instance of this type is needed; this may be useful when dealing
+ with dynamic proxies, or with interface-based APIs
+
+
+
+
+ Returns the ValueMember that matchs a given field number, or null if not found
+
+
+
+
+ Returns the ValueMember that matchs a given member (property/field), or null if not found
+
+
+
+
+ Gets or sets a value indicating that an enum should be treated directly as an int/short/etc, rather
+ than enforcing .proto enum rules. This is useful *in particul* for [Flags] enums.
+
+
+
+
+ Gets or sets a value indicating that this type should NOT be treated as a list, even if it has
+ familiar list-like characteristics (enumerable, add, etc)
+
+
+
+
+ Provides protobuf serialization support for a number of types that can be defined at runtime
+
+
+
+
+ Provides protobuf serialization support for a number of types
+
+
+
+
+ Resolve a System.Type to the compiler-specific type
+
+
+
+
+ Resolve a System.Type to the compiler-specific type
+
+
+
+
+ This is the more "complete" version of Serialize, which handles single instances of mapped types.
+ The value is written as a complete field, including field-header and (for sub-objects) a
+ length-prefix
+ In addition to that, this provides support for:
+ - basic values; individual int / string / Guid / etc
+ - IEnumerable sequences of any type handled by TrySerializeAuxiliaryType
+
+
+
+
+
+ Writes a protocol-buffer representation of the given instance to the supplied stream.
+
+ The existing instance to be serialized (cannot be null).
+ The destination stream to write to.
+
+
+
+ Writes a protocol-buffer representation of the given instance to the supplied stream.
+
+ The existing instance to be serialized (cannot be null).
+ The destination stream to write to.
+ Additional information about this serialization operation.
+
+
+
+ Writes a protocol-buffer representation of the given instance to the supplied writer.
+
+ The existing instance to be serialized (cannot be null).
+ The destination writer to write to.
+
+
+
+ Applies a protocol-buffer stream to an existing instance (or null), using length-prefixed
+ data - useful with network IO.
+
+ The type being merged.
+ The existing instance to be modified (can be null).
+ The binary stream to apply to the instance (cannot be null).
+ How to encode the length prefix.
+ The tag used as a prefix to each record (only used with base-128 style prefixes).
+ The updated instance; this may be different to the instance argument if
+ either the original instance was null, or the stream defines a known sub-type of the
+ original instance.
+
+
+
+ Applies a protocol-buffer stream to an existing instance (or null), using length-prefixed
+ data - useful with network IO.
+
+ The type being merged.
+ The existing instance to be modified (can be null).
+ The binary stream to apply to the instance (cannot be null).
+ How to encode the length prefix.
+ The tag used as a prefix to each record (only used with base-128 style prefixes).
+ Used to resolve types on a per-field basis.
+ The updated instance; this may be different to the instance argument if
+ either the original instance was null, or the stream defines a known sub-type of the
+ original instance.
+
+
+
+ Applies a protocol-buffer stream to an existing instance (or null), using length-prefixed
+ data - useful with network IO.
+
+ The type being merged.
+ The existing instance to be modified (can be null).
+ The binary stream to apply to the instance (cannot be null).
+ How to encode the length prefix.
+ The tag used as a prefix to each record (only used with base-128 style prefixes).
+ Used to resolve types on a per-field basis.
+ Returns the number of bytes consumed by this operation (includes length-prefix overheads and any skipped data).
+ The updated instance; this may be different to the instance argument if
+ either the original instance was null, or the stream defines a known sub-type of the
+ original instance.
+
+
+
+ Reads a sequence of consecutive length-prefixed items from a stream, using
+ either base-128 or fixed-length prefixes. Base-128 prefixes with a tag
+ are directly comparable to serializing multiple items in succession
+ (use the tag to emulate the implicit behavior
+ when serializing a list/array). When a tag is
+ specified, any records with different tags are silently omitted. The
+ tag is ignored. The tag is ignores for fixed-length prefixes.
+
+ The binary stream containing the serialized records.
+ The prefix style used in the data.
+ The tag of records to return (if non-positive, then no tag is
+ expected and all records are returned).
+ On a field-by-field basis, the type of object to deserialize (can be null if "type" is specified).
+ The type of object to deserialize (can be null if "resolver" is specified).
+ The sequence of deserialized objects.
+
+
+
+ Reads a sequence of consecutive length-prefixed items from a stream, using
+ either base-128 or fixed-length prefixes. Base-128 prefixes with a tag
+ are directly comparable to serializing multiple items in succession
+ (use the tag to emulate the implicit behavior
+ when serializing a list/array). When a tag is
+ specified, any records with different tags are silently omitted. The
+ tag is ignored. The tag is ignores for fixed-length prefixes.
+
+ The binary stream containing the serialized records.
+ The prefix style used in the data.
+ The tag of records to return (if non-positive, then no tag is
+ expected and all records are returned).
+ On a field-by-field basis, the type of object to deserialize (can be null if "type" is specified).
+ The type of object to deserialize (can be null if "resolver" is specified).
+ The sequence of deserialized objects.
+ Additional information about this serialization operation.
+
+
+
+ Reads a sequence of consecutive length-prefixed items from a stream, using
+ either base-128 or fixed-length prefixes. Base-128 prefixes with a tag
+ are directly comparable to serializing multiple items in succession
+ (use the tag to emulate the implicit behavior
+ when serializing a list/array). When a tag is
+ specified, any records with different tags are silently omitted. The
+ tag is ignored. The tag is ignores for fixed-length prefixes.
+
+ The type of object to deserialize.
+ The binary stream containing the serialized records.
+ The prefix style used in the data.
+ The tag of records to return (if non-positive, then no tag is
+ expected and all records are returned).
+ The sequence of deserialized objects.
+
+
+
+ Reads a sequence of consecutive length-prefixed items from a stream, using
+ either base-128 or fixed-length prefixes. Base-128 prefixes with a tag
+ are directly comparable to serializing multiple items in succession
+ (use the tag to emulate the implicit behavior
+ when serializing a list/array). When a tag is
+ specified, any records with different tags are silently omitted. The
+ tag is ignored. The tag is ignores for fixed-length prefixes.
+
+ The type of object to deserialize.
+ The binary stream containing the serialized records.
+ The prefix style used in the data.
+ The tag of records to return (if non-positive, then no tag is
+ expected and all records are returned).
+ The sequence of deserialized objects.
+ Additional information about this serialization operation.
+
+
+
+ Writes a protocol-buffer representation of the given instance to the supplied stream,
+ with a length-prefix. This is useful for socket programming,
+ as DeserializeWithLengthPrefix can be used to read the single object back
+ from an ongoing stream.
+
+ The type being serialized.
+ The existing instance to be serialized (cannot be null).
+ How to encode the length prefix.
+ The destination stream to write to.
+ The tag used as a prefix to each record (only used with base-128 style prefixes).
+
+
+
+ Writes a protocol-buffer representation of the given instance to the supplied stream,
+ with a length-prefix. This is useful for socket programming,
+ as DeserializeWithLengthPrefix can be used to read the single object back
+ from an ongoing stream.
+
+ The type being serialized.
+ The existing instance to be serialized (cannot be null).
+ How to encode the length prefix.
+ The destination stream to write to.
+ The tag used as a prefix to each record (only used with base-128 style prefixes).
+ Additional information about this serialization operation.
+
+
+
+ Applies a protocol-buffer stream to an existing instance (which may be null).
+
+ The type (including inheritance) to consider.
+ The existing instance to be modified (can be null).
+ The binary stream to apply to the instance (cannot be null).
+ The updated instance; this may be different to the instance argument if
+ either the original instance was null, or the stream defines a known sub-type of the
+ original instance.
+
+
+
+ Applies a protocol-buffer stream to an existing instance (which may be null).
+
+ The type (including inheritance) to consider.
+ The existing instance to be modified (can be null).
+ The binary stream to apply to the instance (cannot be null).
+ The updated instance; this may be different to the instance argument if
+ either the original instance was null, or the stream defines a known sub-type of the
+ original instance.
+ Additional information about this serialization operation.
+
+
+
+ Applies a protocol-buffer stream to an existing instance (which may be null).
+
+ The type (including inheritance) to consider.
+ The existing instance to be modified (can be null).
+ The binary stream to apply to the instance (cannot be null).
+ The number of bytes to consume.
+ The updated instance; this may be different to the instance argument if
+ either the original instance was null, or the stream defines a known sub-type of the
+ original instance.
+
+
+
+ Applies a protocol-buffer stream to an existing instance (which may be null).
+
+ The type (including inheritance) to consider.
+ The existing instance to be modified (can be null).
+ The binary stream to apply to the instance (cannot be null).
+ The number of bytes to consume (or -1 to read to the end of the stream).
+ The updated instance; this may be different to the instance argument if
+ either the original instance was null, or the stream defines a known sub-type of the
+ original instance.
+ Additional information about this serialization operation.
+
+
+
+ Applies a protocol-buffer reader to an existing instance (which may be null).
+
+ The type (including inheritance) to consider.
+ The existing instance to be modified (can be null).
+ The reader to apply to the instance (cannot be null).
+ The updated instance; this may be different to the instance argument if
+ either the original instance was null, or the stream defines a known sub-type of the
+ original instance.
+
+
+
+ This is the more "complete" version of Deserialize, which handles single instances of mapped types.
+ The value is read as a complete field, including field-header and (for sub-objects) a
+ length-prefix..kmc
+
+ In addition to that, this provides support for:
+ - basic values; individual int / string / Guid / etc
+ - IList sets of any type handled by TryDeserializeAuxiliaryType
+
+
+
+
+ Creates a new runtime model, to which the caller
+ can add support for a range of types. A model
+ can be used "as is", or can be compiled for
+ optimal performance.
+
+
+
+
+ Applies common proxy scenarios, resolving the actual type to consider
+
+
+
+
+ Indicates whether the supplied type is explicitly modelled by the model
+
+
+
+
+ Provides the key that represents a given type in the current model.
+ The type is also normalized for proxies at the same time.
+
+
+
+
+ Provides the key that represents a given type in the current model.
+
+
+
+
+ Writes a protocol-buffer representation of the given instance to the supplied stream.
+
+ Represents the type (including inheritance) to consider.
+ The existing instance to be serialized (cannot be null).
+ The destination stream to write to.
+
+
+
+ Applies a protocol-buffer stream to an existing instance (which may be null).
+
+ Represents the type (including inheritance) to consider.
+ The existing instance to be modified (can be null).
+ The binary stream to apply to the instance (cannot be null).
+ The updated instance; this may be different to the instance argument if
+ either the original instance was null, or the stream defines a known sub-type of the
+ original instance.
+
+
+
+ Create a deep clone of the supplied instance; any sub-items are also cloned.
+
+
+
+
+ Indicates that while an inheritance tree exists, the exact type encountered was not
+ specified in that hierarchy and cannot be processed.
+
+
+
+
+ Indicates that the given type was not expected, and cannot be processed.
+
+
+
+
+ Indicates that the given type cannot be constructed; it may still be possible to
+ deserialize into existing instances.
+
+
+
+
+ Returns true if the type supplied is either a recognised contract type,
+ or a *list* of a recognised contract type.
+
+ Note that primitives always return false, even though the engine
+ will, if forced, try to serialize such
+ True if this type is recognised as a serializable entity, else false
+
+
+
+ Returns true if the type supplied is a basic type with inbuilt handling,
+ a recognised contract type, or a *list* of a basic / contract type.
+
+
+
+
+ Returns true if the type supplied is a basic type with inbuilt handling,
+ or a *list* of a basic type with inbuilt handling
+
+
+
+
+ Suggest a .proto definition for the given type
+
+ The type to generate a .proto definition for, or null to generate a .proto that represents the entire model
+ The .proto definition as a string
+
+
+
+ Used to provide custom services for writing and parsing type names when using dynamic types. Both parsing and formatting
+ are provided on a single API as it is essential that both are mapped identically at all times.
+
+
+
+
+ Indicates the type of callback to be used
+
+
+
+
+ Invoked before an object is serialized
+
+
+
+
+ Invoked after an object is serialized
+
+
+
+
+ Invoked before an object is deserialized (or when a new instance is created)
+
+
+
+
+ Invoked after an object is deserialized
+
+
+
+
+ Returns a sequence of the Type instances that can be
+ processed by this model.
+
+
+
+
+ Suggest a .proto definition for the given type
+
+ The type to generate a .proto definition for, or null to generate a .proto that represents the entire model
+ The .proto definition as a string
+
+
+
+ Adds support for an additional type in this model, optionally
+ appplying inbuilt patterns. If the type is already known to the
+ model, the existing type is returned **without** applying
+ any additional behaviour.
+
+ Inbuilt patterns include:
+ [ProtoContract]/[ProtoMember(n)]
+ [DataContract]/[DataMember(Order=n)]
+ [XmlType]/[XmlElement(Order=n)]
+ [On{Des|S}erializ{ing|ed}]
+ ShouldSerialize*/*Specified
+
+ The type to be supported
+ Whether to apply the inbuilt configuration patterns (via attributes etc), or
+ just add the type with no additional configuration (the type must then be manually configured).
+ The MetaType representing this type, allowing
+ further configuration.
+
+
+
+ Verifies that the model is still open to changes; if not, an exception is thrown
+
+
+
+
+ Prevents further changes to this model
+
+
+
+
+ Provides the key that represents a given type in the current model.
+
+
+
+
+ Writes a protocol-buffer representation of the given instance to the supplied stream.
+
+ Represents the type (including inheritance) to consider.
+ The existing instance to be serialized (cannot be null).
+ The destination stream to write to.
+
+
+
+ Applies a protocol-buffer stream to an existing instance (which may be null).
+
+ Represents the type (including inheritance) to consider.
+ The existing instance to be modified (can be null).
+ The binary stream to apply to the instance (cannot be null).
+ The updated instance; this may be different to the instance argument if
+ either the original instance was null, or the stream defines a known sub-type of the
+ original instance.
+
+
+
+ Designate a factory-method to use to create instances of any type; note that this only affect types seen by the serializer *after* setting the factory.
+
+
+
+
+ Global default that
+ enables/disables automatic tag generation based on the existing name / order
+ of the defined members. See
+ for usage and important warning / explanation.
+ You must set the global default before attempting to serialize/deserialize any
+ impacted type.
+
+
+
+
+ Global default that determines whether types are considered serializable
+ if they have [DataContract] / [XmlType]. With this enabled, ONLY
+ types marked as [ProtoContract] are added automatically.
+
+
+
+
+ Global switch that enables or disables the implicit
+ handling of "zero defaults"; meanning: if no other default is specified,
+ it assumes bools always default to false, integers to zero, etc.
+
+ If this is disabled, no such assumptions are made and only *explicit*
+ default values are processed. This is enabled by default to
+ preserve similar logic to v1.
+
+
+
+
+ Global switch that determines whether types with a .ToString() and a Parse(string)
+ should be serialized as strings.
+
+
+
+
+ The default model, used to support ProtoBuf.Serializer
+
+
+
+
+ Obtains the MetaType associated with a given Type for the current model,
+ allowing additional configuration.
+
+
+
+
+ Should support for unexpected types be added automatically?
+ If false, an exception is thrown when unexpected types
+ are encountered.
+
+
+
+
+ The amount of time to wait if there are concurrent metadata access operations
+
+
+
+
+ If a lock-contention is detected, this event signals the *owner* of the lock responsible for the blockage, indicating
+ what caused the problem; this is only raised if the lock-owning code successfully completes.
+
+
+
+
+ Contains the stack-trace of the owning code when a lock-contention scenario is detected
+
+
+
+
+ The stack-trace of the code that owned the lock when a lock-contention scenario occurred
+
+
+
+
+ Event-type that is raised when a lock-contention scenario is detected
+
+
+
+
+ Represents an inherited type in a type hierarchy.
+
+
+
+
+ Creates a new SubType instance.
+
+ The field-number that is used to encapsulate the data (as a nested
+ message) for the derived dype.
+ The sub-type to be considered.
+ Specific encoding style to use; in particular, Grouped can be used to avoid buffering, but is not the default.
+
+
+
+ The field-number that is used to encapsulate the data (as a nested
+ message) for the derived dype.
+
+
+
+
+ The sub-type to be considered.
+
+
+
+
+ Event arguments needed to perform type-formatting functions; this could be resolving a Type to a string suitable for serialization, or could
+ be requesting a Type from a string. If no changes are made, a default implementation will be used (from the assembly-qualified names).
+
+
+
+
+ The type involved in this map; if this is initially null, a Type is expected to be provided for the string in FormattedName.
+
+
+
+
+ The formatted-name involved in this map; if this is initially null, a formatted-name is expected from the type in Type.
+
+
+
+
+ Delegate type used to perform type-formatting functions; the sender originates as the type-model.
+
+
+
+
+ Represents a member (property/field) that is mapped to a protobuf field
+
+
+
+
+ Creates a new ValueMember instance
+
+
+
+
+ Creates a new ValueMember instance
+
+
+
+
+ Specifies methods for working with optional data members.
+
+ Provides a method (null for none) to query whether this member should
+ be serialized; it must be of the form "bool {Method}()". The member is only serialized if the
+ method returns true.
+ Provides a method (null for none) to indicate that a member was
+ deserialized; it must be of the form "void {Method}(bool)", and will be called with "true"
+ when data is found.
+
+
+
+ The number that identifies this member in a protobuf stream
+
+
+
+
+ Gets the member (field/property) which this member relates to.
+
+
+
+
+ Within a list / array / etc, the type of object for each item in the list (especially useful with ArrayList)
+
+
+
+
+ The underlying type of the member
+
+
+
+
+ For abstract types (IList etc), the type of concrete object to create (if required)
+
+
+
+
+ The type the defines the member
+
+
+
+
+ The default value of the item (members with this value will not be serialized)
+
+
+
+
+ Specifies the rules used to process the field; this is used to determine the most appropriate
+ wite-type, but also to describe subtypes within that wire-type (such as SignedVariant)
+
+
+
+
+ Indicates whether this field should follow strict encoding rules; this means (for example) that if a "fixed32"
+ is encountered when "variant" is defined, then it will fail (throw an exception) when parsing. Note that
+ when serializing the defined type is always used.
+
+
+
+
+ Indicates whether this field should use packed encoding (which can save lots of space for repeated primitive values).
+ This option only applies to list/array data of primitive types (int, double, etc).
+
+
+
+
+ Indicates whether this field should *repace* existing values (the default is false, meaning *append*).
+ This option only applies to list/array data.
+
+
+
+
+ Indicates whether this field is mandatory.
+
+
+
+
+ Enables full object-tracking/full-graph support.
+
+
+
+
+ Embeds the type information into the stream, allowing usage with types not known in advance.
+
+
+
+
+ Gets the logical name for this member in the schema (this is not critical for binary serialization, but may be used
+ when inferring a schema).
+
+
+
+
+ Should lists have extended support for null values? Note this makes the serialization less efficient.
+
+
+
+
+ Specifies the type of prefix that should be applied to messages.
+
+
+
+
+ No length prefix is applied to the data; the data is terminated only be the end of the stream.
+
+
+
+
+ A base-128 length prefix is applied to the data (efficient for short messages).
+
+
+
+
+ A fixed-length (little-endian) length prefix is applied to the data (useful for compatibility).
+
+
+
+
+ A fixed-length (big-endian) length prefix is applied to the data (useful for compatibility).
+
+
+
+
+ Indicates that a type is defined for protocol-buffer serialization.
+
+
+
+
+ Gets or sets the defined name of the type.
+
+
+
+
+ Gets or sets the fist offset to use with implicit field tags;
+ only uesd if ImplicitFields is set.
+
+
+
+
+ If specified, alternative contract markers (such as markers for XmlSerailizer or DataContractSerializer) are ignored.
+
+
+
+
+ If specified, do NOT treat this type as a list, even if it looks like one.
+
+
+
+
+ Gets or sets the mechanism used to automatically infer field tags
+ for members. This option should be used in advanced scenarios only.
+ Please review the important notes against the ImplicitFields enumeration.
+
+
+
+
+ Enables/disables automatic tag generation based on the existing name / order
+ of the defined members. This option is not used for members marked
+ with ProtoMemberAttribute, as intended to provide compatibility with
+ WCF serialization. WARNING: when adding new fields you must take
+ care to increase the Order for new elements, otherwise data corruption
+ may occur.
+
+ If not explicitly specified, the default is assumed from Serializer.GlobalOptions.InferTagFromName.
+
+
+
+ Has a InferTagFromName value been explicitly set? if not, the default from the type-model is assumed.
+
+
+
+
+ Specifies an offset to apply to [DataMember(Order=...)] markers;
+ this is useful when working with mex-generated classes that have
+ a different origin (usually 1 vs 0) than the original data-contract.
+
+ This value is added to the Order of each member.
+
+
+
+
+ If true, the constructor for the type is bypassed during deserialization, meaning any field initializers
+ or other initialization code is skipped.
+
+
+
+
+ Should this type be treated as a reference by default? Please also see the implications of this,
+ as recorded on ProtoMemberAttribute.AsReference
+
+
+
+
+ Applies only to enums (not to DTO classes themselves); gets or sets a value indicating that an enum should be treated directly as an int/short/etc, rather
+ than enforcing .proto enum rules. This is useful *in particul* for [Flags] enums.
+
+
+
+
+ Has a EnumPassthru value been explicitly set?
+
+
+
+
+ Used to define protocol-buffer specific behavior for
+ enumerated values.
+
+
+
+
+ Indicates whether this instance has a customised value mapping
+
+ true if a specific value is set
+
+
+
+ Gets or sets the specific value to use for this enum during serialization.
+
+
+
+
+ Gets or sets the defined name of the enum, as used in .proto
+ (this name is not used during serialization).
+
+
+
+
+ Indicates an error during serialization/deserialization of a proto stream.
+
+
+
+ Creates a new ProtoException instance.
+
+
+ Creates a new ProtoException instance.
+
+
+ Creates a new ProtoException instance.
+
+
+
+ Indicates that a member should be excluded from serialization; this
+ is only normally used when using implict fields.
+
+
+
+
+ Indicates that a member should be excluded from serialization; this
+ is only normally used when using implict fields. This allows
+ ProtoIgnoreAttribute usage
+ even for partial classes where the individual members are not
+ under direct control.
+
+
+
+
+ Creates a new ProtoPartialIgnoreAttribute instance.
+
+ Specifies the member to be ignored.
+
+
+
+ The name of the member to be ignored.
+
+
+
+
+ Indicates the known-types to support for an individual
+ message. This serializes each level in the hierarchy as
+ a nested message to retain wire-compatibility with
+ other protocol-buffer implementations.
+
+
+
+
+ Creates a new instance of the ProtoIncludeAttribute.
+
+ The unique index (within the type) that will identify this data.
+ The additional type to serialize/deserialize.
+
+
+
+ Creates a new instance of the ProtoIncludeAttribute.
+
+ The unique index (within the type) that will identify this data.
+ The additional type to serialize/deserialize.
+
+
+
+ Gets the unique index (within the type) that will identify this data.
+
+
+
+
+ Gets the additional type to serialize/deserialize.
+
+
+
+
+ Gets the additional type to serialize/deserialize.
+
+
+
+
+ Specifies whether the inherited sype's sub-message should be
+ written with a length-prefix (default), or with group markers.
+
+
+
+
+ Declares a member to be used in protocol-buffer serialization, using
+ the given Tag. A DataFormat may be used to optimise the serialization
+ format (for instance, using zigzag encoding for negative numbers, or
+ fixed-length encoding for large values.
+
+
+
+
+ Compare with another ProtoMemberAttribute for sorting purposes
+
+
+
+
+ Compare with another ProtoMemberAttribute for sorting purposes
+
+
+
+
+ Creates a new ProtoMemberAttribute instance.
+
+ Specifies the unique tag used to identify this member within the type.
+
+
+
+ Gets or sets the original name defined in the .proto; not used
+ during serialization.
+
+
+
+
+ Gets or sets the data-format to be used when encoding this value.
+
+
+
+
+ Gets the unique tag used to identify this member within the type.
+
+
+
+
+ Gets or sets a value indicating whether this member is mandatory.
+
+
+
+
+ Gets a value indicating whether this member is packed.
+ This option only applies to list/array data of primitive types (int, double, etc).
+
+
+
+
+ Indicates whether this field should *repace* existing values (the default is false, meaning *append*).
+ This option only applies to list/array data.
+
+
+
+
+ Enables full object-tracking/full-graph support.
+
+
+
+
+ Embeds the type information into the stream, allowing usage with types not known in advance.
+
+
+
+
+ Gets or sets a value indicating whether this member is packed (lists/arrays).
+
+
+
+
+ Additional (optional) settings that control serialization of members
+
+
+
+
+ Default; no additional options
+
+
+
+
+ Indicates that repeated elements should use packed (length-prefixed) encoding
+
+
+
+
+ Indicates that the given item is required
+
+
+
+
+ Enables full object-tracking/full-graph support
+
+
+
+
+ Embeds the type information into the stream, allowing usage with types not known in advance
+
+
+
+
+ Indicates whether this field should *repace* existing values (the default is false, meaning *append*).
+ This option only applies to list/array data.
+
+
+
+
+ Determines whether the types AsReferenceDefault value is used, or whether this member's AsReference should be used
+
+
+
+
+ Declares a member to be used in protocol-buffer serialization, using
+ the given Tag and MemberName. This allows ProtoMemberAttribute usage
+ even for partial classes where the individual members are not
+ under direct control.
+ A DataFormat may be used to optimise the serialization
+ format (for instance, using zigzag encoding for negative numbers, or
+ fixed-length encoding for large values.
+
+
+
+
+ Creates a new ProtoMemberAttribute instance.
+
+ Specifies the unique tag used to identify this member within the type.
+ Specifies the member to be serialized.
+
+
+
+ The name of the member to be serialized.
+
+
+
+
+ A stateful reader, used to read a protobuf stream. Typical usage would be (sequentially) to call
+ ReadFieldHeader and (after matching the field) an appropriate Read* method.
+
+
+
+
+ Creates a new reader against a stream
+
+ The source stream
+ The model to use for serialization; this can be null, but this will impair the ability to deserialize sub-objects
+ Additional context about this serialization operation
+
+
+
+ Creates a new reader against a stream
+
+ The source stream
+ The model to use for serialization; this can be null, but this will impair the ability to deserialize sub-objects
+ Additional context about this serialization operation
+ The number of bytes to read, or -1 to read until the end of the stream
+
+
+
+ Releases resources used by the reader, but importantly does not Dispose the
+ underlying stream; in many typical use-cases the stream is used for different
+ processes, so it is assumed that the consumer will Dispose their stream separately.
+
+
+
+
+ Reads an unsigned 32-bit integer from the stream; supported wire-types: Variant, Fixed32, Fixed64
+
+
+
+
+ Reads a signed 16-bit integer from the stream: Variant, Fixed32, Fixed64, SignedVariant
+
+
+
+
+ Reads an unsigned 16-bit integer from the stream; supported wire-types: Variant, Fixed32, Fixed64
+
+
+
+
+ Reads an unsigned 8-bit integer from the stream; supported wire-types: Variant, Fixed32, Fixed64
+
+
+
+
+ Reads a signed 8-bit integer from the stream; supported wire-types: Variant, Fixed32, Fixed64, SignedVariant
+
+
+
+
+ Reads a signed 32-bit integer from the stream; supported wire-types: Variant, Fixed32, Fixed64, SignedVariant
+
+
+
+
+ Reads a signed 64-bit integer from the stream; supported wire-types: Variant, Fixed32, Fixed64, SignedVariant
+
+
+
+
+ Reads a string from the stream (using UTF8); supported wire-types: String
+
+
+
+
+ Throws an exception indication that the given value cannot be mapped to an enum.
+
+
+
+
+ Reads a double-precision number from the stream; supported wire-types: Fixed32, Fixed64
+
+
+
+
+ Reads (merges) a sub-message from the stream, internally calling StartSubItem and EndSubItem, and (in between)
+ parsing the message in accordance with the model associated with the reader
+
+
+
+
+ Makes the end of consuming a nested message in the stream; the stream must be either at the correct EndGroup
+ marker, or all fields of the sub-message must have been consumed (in either case, this means ReadFieldHeader
+ should return zero)
+
+
+
+
+ Begins consuming a nested message in the stream; supported wire-types: StartGroup, String
+
+ The token returned must be help and used when callining EndSubItem
+
+
+
+ Reads a field header from the stream, setting the wire-type and retuning the field number. If no
+ more fields are available, then 0 is returned. This methods respects sub-messages.
+
+
+
+
+ Looks ahead to see whether the next field in the stream is what we expect
+ (typically; what we've just finished reading - for example ot read successive list items)
+
+
+
+
+ Compares the streams current wire-type to the hinted wire-type, updating the reader if necessary; for example,
+ a Variant may be updated to SignedVariant. If the hinted wire-type is unrelated then no change is made.
+
+
+
+
+ Verifies that the stream's current wire-type is as expected, or a specialized sub-type (for example,
+ SignedVariant) - in which case the current wire-type is updated. Otherwise an exception is thrown.
+
+
+
+
+ Discards the data for the current field.
+
+
+
+
+ Reads an unsigned 64-bit integer from the stream; supported wire-types: Variant, Fixed32, Fixed64
+
+
+
+
+ Reads a single-precision number from the stream; supported wire-types: Fixed32, Fixed64
+
+
+
+
+ Reads a boolean value from the stream; supported wire-types: Variant, Fixed32, Fixed64
+
+
+
+
+
+ Reads a byte-sequence from the stream, appending them to an existing byte-sequence (which can be null); supported wire-types: String
+
+
+
+
+ Reads the length-prefix of a message from a stream without buffering additional data, allowing a fixed-length
+ reader to be created.
+
+
+
+
+ Reads a little-endian encoded integer. An exception is thrown if the data is not all available.
+
+
+
+
+ Reads a big-endian encoded integer. An exception is thrown if the data is not all available.
+
+
+
+
+ Reads a varint encoded integer. An exception is thrown if the data is not all available.
+
+
+
+
+ Reads a string (of a given lenth, in bytes) directly from the source into a pre-existing buffer. An exception is thrown if the data is not all available.
+
+
+
+
+ Reads a given number of bytes directly from the source. An exception is thrown if the data is not all available.
+
+
+
+
+ Reads a string (of a given lenth, in bytes) directly from the source. An exception is thrown if the data is not all available.
+
+
+
+
+ Reads the length-prefix of a message from a stream without buffering additional data, allowing a fixed-length
+ reader to be created.
+
+
+
+ The number of bytes consumed; 0 if no data available
+
+
+
+ Copies the current field into the instance as extension data
+
+
+
+
+ Indicates whether the reader still has data remaining in the current sub-item,
+ additionally setting the wire-type for the next field if there is more data.
+ This is used when decoding packed data.
+
+
+
+
+ Utility method, not intended for public use; this helps maintain the root object is complex scenarios
+
+
+
+
+ Reads a Type from the stream, using the model's DynamicTypeFormatting if appropriate; supported wire-types: String
+
+
+
+
+ Merge two objects using the details from the current reader; this is used to change the type
+ of objects when an inheritance relationship is discovered later than usual during deserilazation.
+
+
+
+
+ Gets the number of the field being processed.
+
+
+
+
+ Indicates the underlying proto serialization format on the wire.
+
+
+
+
+ Gets / sets a flag indicating whether strings should be checked for repetition; if
+ true, any repeated UTF-8 byte sequence will result in the same String instance, rather
+ than a second instance of the same string. Enabled by default. Note that this uses
+ a custom interner - the system-wide string interner is not used.
+
+
+
+
+ Addition information about this deserialization operation.
+
+
+
+
+ Returns the position of the current reader (note that this is not necessarily the same as the position
+ in the underlying stream, if multiple readers are used on the same stream)
+
+
+
+
+ Get the TypeModel associated with this reader
+
+
+
+
+ Represents an output stream for writing protobuf data.
+
+ Why is the API backwards (static methods with writer arguments)?
+ See: http://marcgravell.blogspot.com/2010/03/last-will-be-first-and-first-will-be.html
+
+
+
+
+ Write an encapsulated sub-object, using the supplied unique key (reprasenting a type).
+
+ The object to write.
+ The key that uniquely identifies the type within the model.
+ The destination.
+
+
+
+ Write an encapsulated sub-object, using the supplied unique key (reprasenting a type) - but the
+ caller is asserting that this relationship is non-recursive; no recursion check will be
+ performed.
+
+ The object to write.
+ The key that uniquely identifies the type within the model.
+ The destination.
+
+
+
+ Writes a field-header, indicating the format of the next data we plan to write.
+
+
+
+
+ Writes a byte-array to the stream; supported wire-types: String
+
+
+
+
+ Writes a byte-array to the stream; supported wire-types: String
+
+
+
+
+ Indicates the start of a nested record.
+
+ The instance to write.
+ The destination.
+ A token representing the state of the stream; this token is given to EndSubItem.
+
+
+
+ Indicates the end of a nested record.
+
+ The token obtained from StartubItem.
+ The destination.
+
+
+
+ Creates a new writer against a stream
+
+ The destination stream
+ The model to use for serialization; this can be null, but this will impair the ability to serialize sub-objects
+ Additional context about this serialization operation
+
+
+
+ Flushes data to the underlying stream, and releases any resources. The underlying stream is *not* disposed
+ by this operation.
+
+
+
+
+ Writes any buffered data (if possible) to the underlying stream.
+
+ The writer to flush
+ It is not always possible to fully flush, since some sequences
+ may require values to be back-filled into the byte-stream.
+
+
+
+ Writes an unsigned 32-bit integer to the stream; supported wire-types: Variant, Fixed32, Fixed64
+
+
+
+
+ Writes a string to the stream; supported wire-types: String
+
+
+
+
+ Writes an unsigned 64-bit integer to the stream; supported wire-types: Variant, Fixed32, Fixed64
+
+
+
+
+ Writes a signed 64-bit integer to the stream; supported wire-types: Variant, Fixed32, Fixed64, SignedVariant
+
+
+
+
+ Writes an unsigned 16-bit integer to the stream; supported wire-types: Variant, Fixed32, Fixed64
+
+
+
+
+ Writes a signed 16-bit integer to the stream; supported wire-types: Variant, Fixed32, Fixed64, SignedVariant
+
+
+
+
+ Writes an unsigned 16-bit integer to the stream; supported wire-types: Variant, Fixed32, Fixed64
+
+
+
+
+ Writes an unsigned 8-bit integer to the stream; supported wire-types: Variant, Fixed32, Fixed64
+
+
+
+
+ Writes a signed 8-bit integer to the stream; supported wire-types: Variant, Fixed32, Fixed64, SignedVariant
+
+
+
+
+ Writes a signed 32-bit integer to the stream; supported wire-types: Variant, Fixed32, Fixed64, SignedVariant
+
+
+
+
+ Writes a double-precision number to the stream; supported wire-types: Fixed32, Fixed64
+
+
+
+
+ Writes a single-precision number to the stream; supported wire-types: Fixed32, Fixed64
+
+
+
+
+ Throws an exception indicating that the given enum cannot be mapped to a serialized value.
+
+
+
+
+ Writes a boolean to the stream; supported wire-types: Variant, Fixed32, Fixed64
+
+
+
+
+ Copies any extension data stored for the instance to the underlying stream
+
+
+
+
+ Used for packed encoding; indicates that the next field should be skipped rather than
+ a field header written. Note that the field number must match, else an exception is thrown
+ when the attempt is made to write the (incorrect) field. The wire-type is taken from the
+ subsequent call to WriteFieldHeader. Only primitive types can be packed.
+
+
+
+
+ Specifies a known root object to use during reference-tracked serialization
+
+
+
+
+ Writes a Type to the stream, using the model's DynamicTypeFormatting if appropriate; supported wire-types: String
+
+
+
+
+ Addition information about this serialization operation.
+
+
+
+
+ Get the TypeModel associated with this writer
+
+
+
+
+ Additional information about a serialization operation
+
+
+
+
+ Convert a SerializationContext to a StreamingContext
+
+
+
+
+ Convert a StreamingContext to a SerializationContext
+
+
+
+
+ Gets or sets a user-defined object containing additional information about this serialization/deserialization operation.
+
+
+
+
+ A default SerializationContext, with minimal information.
+
+
+
+
+ Gets or sets the source or destination of the transmitted data.
+
+
+
+
+ Provides protocol-buffer serialization capability for concrete, attributed types. This
+ is a *default* model, but custom serializer models are also supported.
+
+
+ Protocol-buffer serialization is a compact binary format, designed to take
+ advantage of sparse data and knowledge of specific data types; it is also
+ extensible, allowing a type to be deserialized / merged even if some data is
+ not recognised.
+
+
+
+
+ The field number that is used as a default when serializing/deserializing a list of objects.
+ The data is treated as repeated message with field number 1.
+
+
+
+
+ Suggest a .proto definition for the given type
+
+ The type to generate a .proto definition for
+ The .proto definition as a string
+
+
+
+ Create a deep clone of the supplied instance; any sub-items are also cloned.
+
+
+
+
+ Applies a protocol-buffer stream to an existing instance.
+
+ The type being merged.
+ The existing instance to be modified (can be null).
+ The binary stream to apply to the instance (cannot be null).
+ The updated instance; this may be different to the instance argument if
+ either the original instance was null, or the stream defines a known sub-type of the
+ original instance.
+
+
+
+ Creates a new instance from a protocol-buffer stream
+
+ The type to be created.
+ The binary stream to apply to the new instance (cannot be null).
+ A new, initialized instance.
+
+
+
+ Writes a protocol-buffer representation of the given instance to the supplied stream.
+
+ The existing instance to be serialized (cannot be null).
+ The destination stream to write to.
+
+
+
+ Serializes a given instance and deserializes it as a different type;
+ this can be used to translate between wire-compatible objects (where
+ two .NET types represent the same data), or to promote/demote a type
+ through an inheritance hierarchy.
+
+ No assumption of compatibility is made between the types.
+ The type of the object being copied.
+ The type of the new object to be created.
+ The existing instance to use as a template.
+ A new instane of type TNewType, with the data from TOldType.
+
+
+
+ Precompiles the serializer for a given type.
+
+
+
+
+ Reads a sequence of consecutive length-prefixed items from a stream, using
+ either base-128 or fixed-length prefixes. Base-128 prefixes with a tag
+ are directly comparable to serializing multiple items in succession
+ (use the tag to emulate the implicit behavior
+ when serializing a list/array). When a tag is
+ specified, any records with different tags are silently omitted. The
+ tag is ignored. The tag is ignores for fixed-length prefixes.
+
+ The type of object to deserialize.
+ The binary stream containing the serialized records.
+ The prefix style used in the data.
+ The tag of records to return (if non-positive, then no tag is
+ expected and all records are returned).
+ The sequence of deserialized objects.
+
+
+
+ Creates a new instance from a protocol-buffer stream that has a length-prefix
+ on data (to assist with network IO).
+
+ The type to be created.
+ The binary stream to apply to the new instance (cannot be null).
+ How to encode the length prefix.
+ A new, initialized instance.
+
+
+
+ Creates a new instance from a protocol-buffer stream that has a length-prefix
+ on data (to assist with network IO).
+
+ The type to be created.
+ The binary stream to apply to the new instance (cannot be null).
+ How to encode the length prefix.
+ The expected tag of the item (only used with base-128 prefix style).
+ A new, initialized instance.
+
+
+
+ Applies a protocol-buffer stream to an existing instance, using length-prefixed
+ data - useful with network IO.
+
+ The type being merged.
+ The existing instance to be modified (can be null).
+ The binary stream to apply to the instance (cannot be null).
+ How to encode the length prefix.
+ The updated instance; this may be different to the instance argument if
+ either the original instance was null, or the stream defines a known sub-type of the
+ original instance.
+
+
+
+ Writes a protocol-buffer representation of the given instance to the supplied stream,
+ with a length-prefix. This is useful for socket programming,
+ as DeserializeWithLengthPrefix/MergeWithLengthPrefix can be used to read the single object back
+ from an ongoing stream.
+
+ The type being serialized.
+ The existing instance to be serialized (cannot be null).
+ How to encode the length prefix.
+ The destination stream to write to.
+
+
+
+ Writes a protocol-buffer representation of the given instance to the supplied stream,
+ with a length-prefix. This is useful for socket programming,
+ as DeserializeWithLengthPrefix/MergeWithLengthPrefix can be used to read the single object back
+ from an ongoing stream.
+
+ The type being serialized.
+ The existing instance to be serialized (cannot be null).
+ How to encode the length prefix.
+ The destination stream to write to.
+ The tag used as a prefix to each record (only used with base-128 style prefixes).
+
+
+ Indicates the number of bytes expected for the next message.
+ The stream containing the data to investigate for a length.
+ The algorithm used to encode the length.
+ The length of the message, if it could be identified.
+ True if a length could be obtained, false otherwise.
+
+
+ Indicates the number of bytes expected for the next message.
+ The buffer containing the data to investigate for a length.
+ The offset of the first byte to read from the buffer.
+ The number of bytes to read from the buffer.
+ The algorithm used to encode the length.
+ The length of the message, if it could be identified.
+ True if a length could be obtained, false otherwise.
+
+
+
+ Releases any internal buffers that have been reserved for efficiency; this does not affect any serialization
+ operations; simply: it can be used (optionally) to release the buffers for garbage collection (at the expense
+ of having to re-allocate a new buffer for the next operation, rather than re-use prior buffers).
+
+
+
+
+ Provides non-generic access to the default serializer.
+
+
+
+
+ Create a deep clone of the supplied instance; any sub-items are also cloned.
+
+
+
+
+ Writes a protocol-buffer representation of the given instance to the supplied stream.
+
+ The existing instance to be serialized (cannot be null).
+ The destination stream to write to.
+
+
+
+ Creates a new instance from a protocol-buffer stream
+
+ The type to be created.
+ The binary stream to apply to the new instance (cannot be null).
+ A new, initialized instance.
+
+
+ Applies a protocol-buffer stream to an existing instance.
+ The existing instance to be modified (cannot be null).
+ The binary stream to apply to the instance (cannot be null).
+ The updated instance
+
+
+
+ Writes a protocol-buffer representation of the given instance to the supplied stream,
+ with a length-prefix. This is useful for socket programming,
+ as DeserializeWithLengthPrefix/MergeWithLengthPrefix can be used to read the single object back
+ from an ongoing stream.
+
+ The existing instance to be serialized (cannot be null).
+ How to encode the length prefix.
+ The destination stream to write to.
+ The tag used as a prefix to each record (only used with base-128 style prefixes).
+
+
+
+ Applies a protocol-buffer stream to an existing instance (or null), using length-prefixed
+ data - useful with network IO.
+
+ The existing instance to be modified (can be null).
+ The binary stream to apply to the instance (cannot be null).
+ How to encode the length prefix.
+ Used to resolve types on a per-field basis.
+ The updated instance; this may be different to the instance argument if
+ either the original instance was null, or the stream defines a known sub-type of the
+ original instance.
+
+
+
+ Indicates whether the supplied type is explicitly modelled by the model
+
+
+
+
+ Global switches that change the behavior of protobuf-net
+
+
+
+
+
+
+
+
+
+ Maps a field-number to a type
+
+
+
+
+ Perform the steps necessary to serialize this data.
+
+ The value to be serialized.
+ The writer entity that is accumulating the output data.
+
+
+
+ Perform the steps necessary to deserialize this data.
+
+ The current value, if appropriate.
+ The reader providing the input data.
+ The updated / replacement value.
+
+
+
+ The type that this serializer is intended to work for.
+
+
+
+
+ Indicates whether a Read operation replaces the existing value, or
+ extends the value. If false, the "value" parameter to Read is
+ discarded, and should be passed in as null.
+
+
+
+
+ Now all Read operations return a value (although most do); if false no
+ value should be expected.
+
+
+
+
+ An xml object serializer that can embed protobuf data in a base-64 hunk (looking like a byte[])
+
+
+
+
+ Attempt to create a new serializer for the given model and type
+
+ A new serializer instance if the type is recognised by the model; null otherwise
+
+
+
+ Creates a new serializer for the given model and type
+
+
+
+
+ Ends an object in the output
+
+
+
+
+ Begins an object in the output
+
+
+
+
+ Writes the body of an object in the output
+
+
+
+
+ Indicates whether this is the start of an object we are prepared to handle
+
+
+
+
+ Reads the body of an object
+
+
+
+
+ Used to hold particulars relating to nested objects. This is opaque to the caller - simply
+ give back the token you are given at the end of an object.
+
+
+
+
+ Indicates the encoding used to represent an individual value in a protobuf stream
+
+
+
+
+ Represents an error condition
+
+
+
+
+ Base-128 variant-length encoding
+
+
+
+
+ Fixed-length 8-byte encoding
+
+
+
+
+ Length-variant-prefixed encoding
+
+
+
+
+ Indicates the start of a group
+
+
+
+
+ Indicates the end of a group
+
+
+
+
+ Fixed-length 4-byte encoding
+ 10
+
+
+
+ This is not a formal wire-type in the "protocol buffers" spec, but
+ denotes a variant integer that should be interpreted using
+ zig-zag semantics (so -ve numbers aren't a significant overhead)
+
+
+
+
diff --git a/packages/protobuf-net.2.0.0.668/lib/windowsphone8/protobuf-net.dll b/packages/protobuf-net.2.0.0.668/lib/windowsphone8/protobuf-net.dll
new file mode 100644
index 000000000..909ab4ce2
Binary files /dev/null and b/packages/protobuf-net.2.0.0.668/lib/windowsphone8/protobuf-net.dll differ
diff --git a/packages/protobuf-net.2.0.0.668/lib/windowsphone8/protobuf-net.xml b/packages/protobuf-net.2.0.0.668/lib/windowsphone8/protobuf-net.xml
new file mode 100644
index 000000000..f97baa83e
--- /dev/null
+++ b/packages/protobuf-net.2.0.0.668/lib/windowsphone8/protobuf-net.xml
@@ -0,0 +1,2641 @@
+
+
+
+ protobuf-net
+
+
+
+
+ Provides support for common .NET types that do not have a direct representation
+ in protobuf, using the definitions from bcl.proto
+
+
+
+
+ Creates a new instance of the specified type, bypassing the constructor.
+
+ The type to create
+ The new instance
+ If the platform does not support constructor-skipping
+
+
+
+ Writes a TimeSpan to a protobuf stream
+
+
+
+
+ Parses a TimeSpan from a protobuf stream
+
+
+
+
+ Parses a DateTime from a protobuf stream
+
+
+
+
+ Writes a DateTime to a protobuf stream
+
+
+
+
+ Parses a decimal from a protobuf stream
+
+
+
+
+ Writes a decimal to a protobuf stream
+
+
+
+
+ Writes a Guid to a protobuf stream
+
+
+
+
+ Parses a Guid from a protobuf stream
+
+
+
+
+ Reads an *implementation specific* bundled .NET object, including (as options) type-metadata, identity/re-use, etc.
+
+
+
+
+ Writes an *implementation specific* bundled .NET object, including (as options) type-metadata, identity/re-use, etc.
+
+
+
+
+ Optional behaviours that introduce .NET-specific functionality
+
+
+
+
+ No special behaviour
+
+
+
+
+ Enables full object-tracking/full-graph support.
+
+
+
+
+ Embeds the type information into the stream, allowing usage with types not known in advance.
+
+
+
+
+ If false, the constructor for the type is bypassed during deserialization, meaning any field initializers
+ or other initialization code is skipped.
+
+
+
+
+ Should the object index be reserved, rather than creating an object promptly
+
+
+
+
+ Provides a simple buffer-based implementation of an extension object.
+
+
+
+
+ Provides addition capability for supporting unexpected fields during
+ protocol-buffer serialization/deserialization. This allows for loss-less
+ round-trip/merge, even when the data is not fully understood.
+
+
+
+
+ Requests a stream into which any unexpected fields can be persisted.
+
+ A new stream suitable for storing data.
+
+
+
+ Indicates that all unexpected fields have now been stored. The
+ implementing class is responsible for closing the stream. If
+ "commit" is not true the data may be discarded.
+
+ The stream originally obtained by BeginAppend.
+ True if the append operation completed successfully.
+
+
+
+ Requests a stream of the unexpected fields previously stored.
+
+ A prepared stream of the unexpected fields.
+
+
+
+ Indicates that all unexpected fields have now been read. The
+ implementing class is responsible for closing the stream.
+
+ The stream originally obtained by BeginQuery.
+
+
+
+ Requests the length of the raw binary stream; this is used
+ when serializing sub-entities to indicate the expected size.
+
+ The length of the binary stream representing unexpected data.
+
+
+ Specifies a method on the root-contract in an hierarchy to be invoked before serialization.
+
+
+ Specifies a method on the root-contract in an hierarchy to be invoked after serialization.
+
+
+ Specifies a method on the root-contract in an hierarchy to be invoked before deserialization.
+
+
+ Specifies a method on the root-contract in an hierarchy to be invoked after deserialization.
+
+
+
+ Pushes a null reference onto the stack. Note that this should only
+ be used to return a null (or set a variable to null); for null-tests
+ use BranchIfTrue / BranchIfFalse.
+
+
+
+
+ Creates a new "using" block (equivalent) around a variable;
+ the variable must exist, and note that (unlike in C#) it is
+ the variables *final* value that gets disposed. If you need
+ *original* disposal, copy your variable first.
+
+ It is the callers responsibility to ensure that the variable's
+ scope fully-encapsulates the "using"; if not, the variable
+ may be re-used (and thus re-assigned) unexpectedly.
+
+
+
+
+ Sub-format to use when serializing/deserializing data
+
+
+
+
+ Uses the default encoding for the data-type.
+
+
+
+
+ When applied to signed integer-based data (including Decimal), this
+ indicates that zigzag variant encoding will be used. This means that values
+ with small magnitude (regardless of sign) take a small amount
+ of space to encode.
+
+
+
+
+ When applied to signed integer-based data (including Decimal), this
+ indicates that two's-complement variant encoding will be used.
+ This means that any -ve number will take 10 bytes (even for 32-bit),
+ so should only be used for compatibility.
+
+
+
+
+ When applied to signed integer-based data (including Decimal), this
+ indicates that a fixed amount of space will be used.
+
+
+
+
+ When applied to a sub-message, indicates that the value should be treated
+ as group-delimited.
+
+
+
+
+ Simple base class for supporting unexpected fields allowing
+ for loss-less round-tips/merge, even if the data is not understod.
+ The additional fields are (by default) stored in-memory in a buffer.
+
+ As an example of an alternative implementation, you might
+ choose to use the file system (temporary files) as the back-end, tracking
+ only the paths [such an object would ideally be IDisposable and use
+ a finalizer to ensure that the files are removed].
+
+
+
+
+ Indicates that the implementing type has support for protocol-buffer
+ extensions.
+
+ Can be implemented by deriving from Extensible.
+
+
+
+ Retrieves the extension object for the current
+ instance, optionally creating it if it does not already exist.
+
+ Should a new extension object be
+ created if it does not already exist?
+ The extension object if it exists (or was created), or null
+ if the extension object does not exist or is not available.
+ The createIfMissing argument is false during serialization,
+ and true during deserialization upon encountering unexpected fields.
+
+
+
+ Retrieves the extension object for the current
+ instance, optionally creating it if it does not already exist.
+
+ Should a new extension object be
+ created if it does not already exist?
+ The extension object if it exists (or was created), or null
+ if the extension object does not exist or is not available.
+ The createIfMissing argument is false during serialization,
+ and true during deserialization upon encountering unexpected fields.
+
+
+
+ Provides a simple, default implementation for extension support,
+ optionally creating it if it does not already exist. Designed to be called by
+ classes implementing .
+
+ Should a new extension object be
+ created if it does not already exist?
+ The extension field to check (and possibly update).
+ The extension object if it exists (or was created), or null
+ if the extension object does not exist or is not available.
+ The createIfMissing argument is false during serialization,
+ and true during deserialization upon encountering unexpected fields.
+
+
+
+ Appends the value as an additional (unexpected) data-field for the instance.
+ Note that for non-repeated sub-objects, this equates to a merge operation;
+ for repeated sub-objects this adds a new instance to the set; for simple
+ values the new value supercedes the old value.
+
+ Note that appending a value does not remove the old value from
+ the stream; avoid repeatedly appending values for the same field.
+ The type of the value to append.
+ The extensible object to append the value to.
+ The field identifier; the tag should not be defined as a known data-field for the instance.
+ The value to append.
+
+
+
+ Appends the value as an additional (unexpected) data-field for the instance.
+ Note that for non-repeated sub-objects, this equates to a merge operation;
+ for repeated sub-objects this adds a new instance to the set; for simple
+ values the new value supercedes the old value.
+
+ Note that appending a value does not remove the old value from
+ the stream; avoid repeatedly appending values for the same field.
+ The data-type of the field.
+ The data-format to use when encoding the value.
+ The extensible object to append the value to.
+ The field identifier; the tag should not be defined as a known data-field for the instance.
+ The value to append.
+
+
+
+ Queries an extensible object for an additional (unexpected) data-field for the instance.
+ The value returned is the composed value after merging any duplicated content; if the
+ value is "repeated" (a list), then use GetValues instead.
+
+ The data-type of the field.
+ The extensible object to obtain the value from.
+ The field identifier; the tag should not be defined as a known data-field for the instance.
+ The effective value of the field, or the default value if not found.
+
+
+
+ Queries an extensible object for an additional (unexpected) data-field for the instance.
+ The value returned is the composed value after merging any duplicated content; if the
+ value is "repeated" (a list), then use GetValues instead.
+
+ The data-type of the field.
+ The extensible object to obtain the value from.
+ The field identifier; the tag should not be defined as a known data-field for the instance.
+ The data-format to use when decoding the value.
+ The effective value of the field, or the default value if not found.
+
+
+
+ Queries an extensible object for an additional (unexpected) data-field for the instance.
+ The value returned (in "value") is the composed value after merging any duplicated content;
+ if the value is "repeated" (a list), then use GetValues instead.
+
+ The data-type of the field.
+ The effective value of the field, or the default value if not found.
+ The extensible object to obtain the value from.
+ The field identifier; the tag should not be defined as a known data-field for the instance.
+ True if data for the field was present, false otherwise.
+
+
+
+ Queries an extensible object for an additional (unexpected) data-field for the instance.
+ The value returned (in "value") is the composed value after merging any duplicated content;
+ if the value is "repeated" (a list), then use GetValues instead.
+
+ The data-type of the field.
+ The effective value of the field, or the default value if not found.
+ The extensible object to obtain the value from.
+ The field identifier; the tag should not be defined as a known data-field for the instance.
+ The data-format to use when decoding the value.
+ True if data for the field was present, false otherwise.
+
+
+
+ Queries an extensible object for an additional (unexpected) data-field for the instance.
+ The value returned (in "value") is the composed value after merging any duplicated content;
+ if the value is "repeated" (a list), then use GetValues instead.
+
+ The data-type of the field.
+ The effective value of the field, or the default value if not found.
+ The extensible object to obtain the value from.
+ The field identifier; the tag should not be defined as a known data-field for the instance.
+ The data-format to use when decoding the value.
+ Allow tags that are present as part of the definition; for example, to query unknown enum values.
+ True if data for the field was present, false otherwise.
+
+
+
+ Queries an extensible object for an additional (unexpected) data-field for the instance.
+ Each occurrence of the field is yielded separately, making this usage suitable for "repeated"
+ (list) fields.
+
+ The extended data is processed lazily as the enumerator is iterated.
+ The data-type of the field.
+ The extensible object to obtain the value from.
+ The field identifier; the tag should not be defined as a known data-field for the instance.
+ An enumerator that yields each occurrence of the field.
+
+
+
+ Queries an extensible object for an additional (unexpected) data-field for the instance.
+ Each occurrence of the field is yielded separately, making this usage suitable for "repeated"
+ (list) fields.
+
+ The extended data is processed lazily as the enumerator is iterated.
+ The data-type of the field.
+ The extensible object to obtain the value from.
+ The field identifier; the tag should not be defined as a known data-field for the instance.
+ The data-format to use when decoding the value.
+ An enumerator that yields each occurrence of the field.
+
+
+
+ Queries an extensible object for an additional (unexpected) data-field for the instance.
+ The value returned (in "value") is the composed value after merging any duplicated content;
+ if the value is "repeated" (a list), then use GetValues instead.
+
+ The data-type of the field.
+ The model to use for configuration.
+ The effective value of the field, or the default value if not found.
+ The extensible object to obtain the value from.
+ The field identifier; the tag should not be defined as a known data-field for the instance.
+ The data-format to use when decoding the value.
+ Allow tags that are present as part of the definition; for example, to query unknown enum values.
+ True if data for the field was present, false otherwise.
+
+
+
+ Queries an extensible object for an additional (unexpected) data-field for the instance.
+ Each occurrence of the field is yielded separately, making this usage suitable for "repeated"
+ (list) fields.
+
+ The extended data is processed lazily as the enumerator is iterated.
+ The model to use for configuration.
+ The data-type of the field.
+ The extensible object to obtain the value from.
+ The field identifier; the tag should not be defined as a known data-field for the instance.
+ The data-format to use when decoding the value.
+ An enumerator that yields each occurrence of the field.
+
+
+
+ Appends the value as an additional (unexpected) data-field for the instance.
+ Note that for non-repeated sub-objects, this equates to a merge operation;
+ for repeated sub-objects this adds a new instance to the set; for simple
+ values the new value supercedes the old value.
+
+ Note that appending a value does not remove the old value from
+ the stream; avoid repeatedly appending values for the same field.
+ The model to use for configuration.
+ The data-format to use when encoding the value.
+ The extensible object to append the value to.
+ The field identifier; the tag should not be defined as a known data-field for the instance.
+ The value to append.
+
+
+
+ This class acts as an internal wrapper allowing us to do a dynamic
+ methodinfo invoke; an't put into Serializer as don't want on public
+ API; can't put into Serializer<T> since we need to invoke
+ accross classes, which isn't allowed in Silverlight)
+
+
+
+
+ All this does is call GetExtendedValuesTyped with the correct type for "instance";
+ this ensures that we don't get issues with subclasses declaring conflicting types -
+ the caller must respect the fields defined for the type they pass in.
+
+
+
+
+ All this does is call GetExtendedValuesTyped with the correct type for "instance";
+ this ensures that we don't get issues with subclasses declaring conflicting types -
+ the caller must respect the fields defined for the type they pass in.
+
+
+
+
+ Not all frameworks are created equal (fx1.1 vs fx2.0,
+ micro-framework, compact-framework,
+ silverlight, etc). This class simply wraps up a few things that would
+ otherwise make the real code unnecessarily messy, providing fallback
+ implementations if necessary.
+
+
+
+
+ Intended to be a direct map to regular TypeCode, but:
+ - with missing types
+ - existing on WinRT
+
+
+
+
+ Specifies the method used to infer field tags for members of the type
+ under consideration. Tags are deduced using the invariant alphabetic
+ sequence of the members' names; this makes implicit field tags very brittle,
+ and susceptible to changes such as field names (normally an isolated
+ change).
+
+
+
+
+ No members are serialized implicitly; all members require a suitable
+ attribute such as [ProtoMember]. This is the recmomended mode for
+ most scenarios.
+
+
+
+
+ Public properties and fields are eligible for implicit serialization;
+ this treats the public API as a contract. Ordering beings from ImplicitFirstTag.
+
+
+
+
+ Public and non-public fields are eligible for implicit serialization;
+ this acts as a state/implementation serializer. Ordering beings from ImplicitFirstTag.
+
+
+
+
+ Represents the set of serialization callbacks to be used when serializing/deserializing a type.
+
+
+
+ Called before serializing an instance
+
+
+ Called before deserializing an instance
+
+
+ Called after serializing an instance
+
+
+ Called after deserializing an instance
+
+
+
+ True if any callback is set, else False
+
+
+
+
+ Represents a type at runtime for use with protobuf, allowing the field mappings (etc) to be defined
+
+
+
+
+ Get the name of the type being represented
+
+
+
+
+ Adds a known sub-type to the inheritance model
+
+
+
+
+ Adds a known sub-type to the inheritance model
+
+
+
+
+ Assigns the callbacks to use during serialiation/deserialization.
+
+ The method (or null) called before serialization begins.
+ The method (or null) called when serialization is complete.
+ The method (or null) called before deserialization begins (or when a new instance is created during deserialization).
+ The method (or null) called when deserialization is complete.
+ The set of callbacks.
+
+
+
+ Assigns the callbacks to use during serialiation/deserialization.
+
+ The name of the method (or null) called before serialization begins.
+ The name of the method (or null) called when serialization is complete.
+ The name of the method (or null) called before deserialization begins (or when a new instance is created during deserialization).
+ The name of the method (or null) called when deserialization is complete.
+ The set of callbacks.
+
+
+
+ Designate a factory-method to use to create instances of this type
+
+
+
+
+ Designate a factory-method to use to create instances of this type
+
+
+
+
+ Throws an exception if the type has been made immutable
+
+
+
+
+ Adds a member (by name) to the MetaType
+
+
+
+
+ Adds a member (by name) to the MetaType, returning the ValueMember rather than the fluent API.
+ This is otherwise identical to Add.
+
+
+
+
+ Adds a member (by name) to the MetaType
+
+
+
+
+ Performs serialization of this type via a surrogate; all
+ other serialization options are ignored and handled
+ by the surrogate's configuration.
+
+
+
+
+ Adds a set of members (by name) to the MetaType
+
+
+
+
+ Adds a member (by name) to the MetaType
+
+
+
+
+ Adds a member (by name) to the MetaType, including an itemType and defaultType for representing lists
+
+
+
+
+ Adds a member (by name) to the MetaType, including an itemType and defaultType for representing lists, returning the ValueMember rather than the fluent API.
+ This is otherwise identical to Add.
+
+
+
+
+ Returns the ValueMember instances associated with this type
+
+
+
+
+ Returns the SubType instances associated with this type
+
+
+
+
+ Compiles the serializer for this type; this is *not* a full
+ standalone compile, but can significantly boost performance
+ while allowing additional types to be added.
+
+ An in-place compile can access non-public types / members
+
+
+
+ Gets the base-type for this type
+
+
+
+
+ When used to compile a model, should public serialization/deserialzation methods
+ be included for this type?
+
+
+
+
+ Should this type be treated as a reference by default?
+
+
+
+
+ Indicates whether the current type has defined callbacks
+
+
+
+
+ Indicates whether the current type has defined subtypes
+
+
+
+
+ Returns the set of callbacks defined for this type
+
+
+
+
+ Gets or sets the name of this contract.
+
+
+
+
+ The runtime type that the meta-type represents
+
+
+
+
+ Gets or sets whether the type should use a parameterless constructor (the default),
+ or whether the type should skip the constructor completely. This option is not supported
+ on compact-framework.
+
+
+
+
+ The concrete type to create when a new instance of this type is needed; this may be useful when dealing
+ with dynamic proxies, or with interface-based APIs
+
+
+
+
+ Returns the ValueMember that matchs a given field number, or null if not found
+
+
+
+
+ Returns the ValueMember that matchs a given member (property/field), or null if not found
+
+
+
+
+ Gets or sets a value indicating that an enum should be treated directly as an int/short/etc, rather
+ than enforcing .proto enum rules. This is useful *in particul* for [Flags] enums.
+
+
+
+
+ Gets or sets a value indicating that this type should NOT be treated as a list, even if it has
+ familiar list-like characteristics (enumerable, add, etc)
+
+
+
+
+ Provides protobuf serialization support for a number of types that can be defined at runtime
+
+
+
+
+ Provides protobuf serialization support for a number of types
+
+
+
+
+ Resolve a System.Type to the compiler-specific type
+
+
+
+
+ Resolve a System.Type to the compiler-specific type
+
+
+
+
+ This is the more "complete" version of Serialize, which handles single instances of mapped types.
+ The value is written as a complete field, including field-header and (for sub-objects) a
+ length-prefix
+ In addition to that, this provides support for:
+ - basic values; individual int / string / Guid / etc
+ - IEnumerable sequences of any type handled by TrySerializeAuxiliaryType
+
+
+
+
+
+ Writes a protocol-buffer representation of the given instance to the supplied stream.
+
+ The existing instance to be serialized (cannot be null).
+ The destination stream to write to.
+
+
+
+ Writes a protocol-buffer representation of the given instance to the supplied stream.
+
+ The existing instance to be serialized (cannot be null).
+ The destination stream to write to.
+ Additional information about this serialization operation.
+
+
+
+ Writes a protocol-buffer representation of the given instance to the supplied writer.
+
+ The existing instance to be serialized (cannot be null).
+ The destination writer to write to.
+
+
+
+ Applies a protocol-buffer stream to an existing instance (or null), using length-prefixed
+ data - useful with network IO.
+
+ The type being merged.
+ The existing instance to be modified (can be null).
+ The binary stream to apply to the instance (cannot be null).
+ How to encode the length prefix.
+ The tag used as a prefix to each record (only used with base-128 style prefixes).
+ The updated instance; this may be different to the instance argument if
+ either the original instance was null, or the stream defines a known sub-type of the
+ original instance.
+
+
+
+ Applies a protocol-buffer stream to an existing instance (or null), using length-prefixed
+ data - useful with network IO.
+
+ The type being merged.
+ The existing instance to be modified (can be null).
+ The binary stream to apply to the instance (cannot be null).
+ How to encode the length prefix.
+ The tag used as a prefix to each record (only used with base-128 style prefixes).
+ Used to resolve types on a per-field basis.
+ The updated instance; this may be different to the instance argument if
+ either the original instance was null, or the stream defines a known sub-type of the
+ original instance.
+
+
+
+ Applies a protocol-buffer stream to an existing instance (or null), using length-prefixed
+ data - useful with network IO.
+
+ The type being merged.
+ The existing instance to be modified (can be null).
+ The binary stream to apply to the instance (cannot be null).
+ How to encode the length prefix.
+ The tag used as a prefix to each record (only used with base-128 style prefixes).
+ Used to resolve types on a per-field basis.
+ Returns the number of bytes consumed by this operation (includes length-prefix overheads and any skipped data).
+ The updated instance; this may be different to the instance argument if
+ either the original instance was null, or the stream defines a known sub-type of the
+ original instance.
+
+
+
+ Reads a sequence of consecutive length-prefixed items from a stream, using
+ either base-128 or fixed-length prefixes. Base-128 prefixes with a tag
+ are directly comparable to serializing multiple items in succession
+ (use the tag to emulate the implicit behavior
+ when serializing a list/array). When a tag is
+ specified, any records with different tags are silently omitted. The
+ tag is ignored. The tag is ignores for fixed-length prefixes.
+
+ The binary stream containing the serialized records.
+ The prefix style used in the data.
+ The tag of records to return (if non-positive, then no tag is
+ expected and all records are returned).
+ On a field-by-field basis, the type of object to deserialize (can be null if "type" is specified).
+ The type of object to deserialize (can be null if "resolver" is specified).
+ The sequence of deserialized objects.
+
+
+
+ Reads a sequence of consecutive length-prefixed items from a stream, using
+ either base-128 or fixed-length prefixes. Base-128 prefixes with a tag
+ are directly comparable to serializing multiple items in succession
+ (use the tag to emulate the implicit behavior
+ when serializing a list/array). When a tag is
+ specified, any records with different tags are silently omitted. The
+ tag is ignored. The tag is ignores for fixed-length prefixes.
+
+ The binary stream containing the serialized records.
+ The prefix style used in the data.
+ The tag of records to return (if non-positive, then no tag is
+ expected and all records are returned).
+ On a field-by-field basis, the type of object to deserialize (can be null if "type" is specified).
+ The type of object to deserialize (can be null if "resolver" is specified).
+ The sequence of deserialized objects.
+ Additional information about this serialization operation.
+
+
+
+ Reads a sequence of consecutive length-prefixed items from a stream, using
+ either base-128 or fixed-length prefixes. Base-128 prefixes with a tag
+ are directly comparable to serializing multiple items in succession
+ (use the tag to emulate the implicit behavior
+ when serializing a list/array). When a tag is
+ specified, any records with different tags are silently omitted. The
+ tag is ignored. The tag is ignores for fixed-length prefixes.
+
+ The type of object to deserialize.
+ The binary stream containing the serialized records.
+ The prefix style used in the data.
+ The tag of records to return (if non-positive, then no tag is
+ expected and all records are returned).
+ The sequence of deserialized objects.
+
+
+
+ Reads a sequence of consecutive length-prefixed items from a stream, using
+ either base-128 or fixed-length prefixes. Base-128 prefixes with a tag
+ are directly comparable to serializing multiple items in succession
+ (use the tag to emulate the implicit behavior
+ when serializing a list/array). When a tag is
+ specified, any records with different tags are silently omitted. The
+ tag is ignored. The tag is ignores for fixed-length prefixes.
+
+ The type of object to deserialize.
+ The binary stream containing the serialized records.
+ The prefix style used in the data.
+ The tag of records to return (if non-positive, then no tag is
+ expected and all records are returned).
+ The sequence of deserialized objects.
+ Additional information about this serialization operation.
+
+
+
+ Writes a protocol-buffer representation of the given instance to the supplied stream,
+ with a length-prefix. This is useful for socket programming,
+ as DeserializeWithLengthPrefix can be used to read the single object back
+ from an ongoing stream.
+
+ The type being serialized.
+ The existing instance to be serialized (cannot be null).
+ How to encode the length prefix.
+ The destination stream to write to.
+ The tag used as a prefix to each record (only used with base-128 style prefixes).
+
+
+
+ Writes a protocol-buffer representation of the given instance to the supplied stream,
+ with a length-prefix. This is useful for socket programming,
+ as DeserializeWithLengthPrefix can be used to read the single object back
+ from an ongoing stream.
+
+ The type being serialized.
+ The existing instance to be serialized (cannot be null).
+ How to encode the length prefix.
+ The destination stream to write to.
+ The tag used as a prefix to each record (only used with base-128 style prefixes).
+ Additional information about this serialization operation.
+
+
+
+ Applies a protocol-buffer stream to an existing instance (which may be null).
+
+ The type (including inheritance) to consider.
+ The existing instance to be modified (can be null).
+ The binary stream to apply to the instance (cannot be null).
+ The updated instance; this may be different to the instance argument if
+ either the original instance was null, or the stream defines a known sub-type of the
+ original instance.
+
+
+
+ Applies a protocol-buffer stream to an existing instance (which may be null).
+
+ The type (including inheritance) to consider.
+ The existing instance to be modified (can be null).
+ The binary stream to apply to the instance (cannot be null).
+ The updated instance; this may be different to the instance argument if
+ either the original instance was null, or the stream defines a known sub-type of the
+ original instance.
+ Additional information about this serialization operation.
+
+
+
+ Applies a protocol-buffer stream to an existing instance (which may be null).
+
+ The type (including inheritance) to consider.
+ The existing instance to be modified (can be null).
+ The binary stream to apply to the instance (cannot be null).
+ The number of bytes to consume.
+ The updated instance; this may be different to the instance argument if
+ either the original instance was null, or the stream defines a known sub-type of the
+ original instance.
+
+
+
+ Applies a protocol-buffer stream to an existing instance (which may be null).
+
+ The type (including inheritance) to consider.
+ The existing instance to be modified (can be null).
+ The binary stream to apply to the instance (cannot be null).
+ The number of bytes to consume (or -1 to read to the end of the stream).
+ The updated instance; this may be different to the instance argument if
+ either the original instance was null, or the stream defines a known sub-type of the
+ original instance.
+ Additional information about this serialization operation.
+
+
+
+ Applies a protocol-buffer reader to an existing instance (which may be null).
+
+ The type (including inheritance) to consider.
+ The existing instance to be modified (can be null).
+ The reader to apply to the instance (cannot be null).
+ The updated instance; this may be different to the instance argument if
+ either the original instance was null, or the stream defines a known sub-type of the
+ original instance.
+
+
+
+ This is the more "complete" version of Deserialize, which handles single instances of mapped types.
+ The value is read as a complete field, including field-header and (for sub-objects) a
+ length-prefix..kmc
+
+ In addition to that, this provides support for:
+ - basic values; individual int / string / Guid / etc
+ - IList sets of any type handled by TryDeserializeAuxiliaryType
+
+
+
+
+ Creates a new runtime model, to which the caller
+ can add support for a range of types. A model
+ can be used "as is", or can be compiled for
+ optimal performance.
+
+
+
+
+ Applies common proxy scenarios, resolving the actual type to consider
+
+
+
+
+ Indicates whether the supplied type is explicitly modelled by the model
+
+
+
+
+ Provides the key that represents a given type in the current model.
+ The type is also normalized for proxies at the same time.
+
+
+
+
+ Provides the key that represents a given type in the current model.
+
+
+
+
+ Writes a protocol-buffer representation of the given instance to the supplied stream.
+
+ Represents the type (including inheritance) to consider.
+ The existing instance to be serialized (cannot be null).
+ The destination stream to write to.
+
+
+
+ Applies a protocol-buffer stream to an existing instance (which may be null).
+
+ Represents the type (including inheritance) to consider.
+ The existing instance to be modified (can be null).
+ The binary stream to apply to the instance (cannot be null).
+ The updated instance; this may be different to the instance argument if
+ either the original instance was null, or the stream defines a known sub-type of the
+ original instance.
+
+
+
+ Create a deep clone of the supplied instance; any sub-items are also cloned.
+
+
+
+
+ Indicates that while an inheritance tree exists, the exact type encountered was not
+ specified in that hierarchy and cannot be processed.
+
+
+
+
+ Indicates that the given type was not expected, and cannot be processed.
+
+
+
+
+ Indicates that the given type cannot be constructed; it may still be possible to
+ deserialize into existing instances.
+
+
+
+
+ Returns true if the type supplied is either a recognised contract type,
+ or a *list* of a recognised contract type.
+
+ Note that primitives always return false, even though the engine
+ will, if forced, try to serialize such
+ True if this type is recognised as a serializable entity, else false
+
+
+
+ Returns true if the type supplied is a basic type with inbuilt handling,
+ a recognised contract type, or a *list* of a basic / contract type.
+
+
+
+
+ Returns true if the type supplied is a basic type with inbuilt handling,
+ or a *list* of a basic type with inbuilt handling
+
+
+
+
+ Suggest a .proto definition for the given type
+
+ The type to generate a .proto definition for, or null to generate a .proto that represents the entire model
+ The .proto definition as a string
+
+
+
+ Used to provide custom services for writing and parsing type names when using dynamic types. Both parsing and formatting
+ are provided on a single API as it is essential that both are mapped identically at all times.
+
+
+
+
+ Indicates the type of callback to be used
+
+
+
+
+ Invoked before an object is serialized
+
+
+
+
+ Invoked after an object is serialized
+
+
+
+
+ Invoked before an object is deserialized (or when a new instance is created)
+
+
+
+
+ Invoked after an object is deserialized
+
+
+
+
+ Returns a sequence of the Type instances that can be
+ processed by this model.
+
+
+
+
+ Suggest a .proto definition for the given type
+
+ The type to generate a .proto definition for, or null to generate a .proto that represents the entire model
+ The .proto definition as a string
+
+
+
+ Adds support for an additional type in this model, optionally
+ appplying inbuilt patterns. If the type is already known to the
+ model, the existing type is returned **without** applying
+ any additional behaviour.
+
+ Inbuilt patterns include:
+ [ProtoContract]/[ProtoMember(n)]
+ [DataContract]/[DataMember(Order=n)]
+ [XmlType]/[XmlElement(Order=n)]
+ [On{Des|S}erializ{ing|ed}]
+ ShouldSerialize*/*Specified
+
+ The type to be supported
+ Whether to apply the inbuilt configuration patterns (via attributes etc), or
+ just add the type with no additional configuration (the type must then be manually configured).
+ The MetaType representing this type, allowing
+ further configuration.
+
+
+
+ Verifies that the model is still open to changes; if not, an exception is thrown
+
+
+
+
+ Prevents further changes to this model
+
+
+
+
+ Provides the key that represents a given type in the current model.
+
+
+
+
+ Writes a protocol-buffer representation of the given instance to the supplied stream.
+
+ Represents the type (including inheritance) to consider.
+ The existing instance to be serialized (cannot be null).
+ The destination stream to write to.
+
+
+
+ Applies a protocol-buffer stream to an existing instance (which may be null).
+
+ Represents the type (including inheritance) to consider.
+ The existing instance to be modified (can be null).
+ The binary stream to apply to the instance (cannot be null).
+ The updated instance; this may be different to the instance argument if
+ either the original instance was null, or the stream defines a known sub-type of the
+ original instance.
+
+
+
+ Compiles the serializers individually; this is *not* a full
+ standalone compile, but can significantly boost performance
+ while allowing additional types to be added.
+
+ An in-place compile can access non-public types / members
+
+
+
+ Designate a factory-method to use to create instances of any type; note that this only affect types seen by the serializer *after* setting the factory.
+
+
+
+
+ Global default that
+ enables/disables automatic tag generation based on the existing name / order
+ of the defined members. See
+ for usage and important warning / explanation.
+ You must set the global default before attempting to serialize/deserialize any
+ impacted type.
+
+
+
+
+ Global default that determines whether types are considered serializable
+ if they have [DataContract] / [XmlType]. With this enabled, ONLY
+ types marked as [ProtoContract] are added automatically.
+
+
+
+
+ Global switch that enables or disables the implicit
+ handling of "zero defaults"; meanning: if no other default is specified,
+ it assumes bools always default to false, integers to zero, etc.
+
+ If this is disabled, no such assumptions are made and only *explicit*
+ default values are processed. This is enabled by default to
+ preserve similar logic to v1.
+
+
+
+
+ Global switch that determines whether types with a .ToString() and a Parse(string)
+ should be serialized as strings.
+
+
+
+
+ The default model, used to support ProtoBuf.Serializer
+
+
+
+
+ Obtains the MetaType associated with a given Type for the current model,
+ allowing additional configuration.
+
+
+
+
+ Should serializers be compiled on demand? It may be useful
+ to disable this for debugging purposes.
+
+
+
+
+ Should support for unexpected types be added automatically?
+ If false, an exception is thrown when unexpected types
+ are encountered.
+
+
+
+
+ The amount of time to wait if there are concurrent metadata access operations
+
+
+
+
+ If a lock-contention is detected, this event signals the *owner* of the lock responsible for the blockage, indicating
+ what caused the problem; this is only raised if the lock-owning code successfully completes.
+
+
+
+
+ Contains the stack-trace of the owning code when a lock-contention scenario is detected
+
+
+
+
+ The stack-trace of the code that owned the lock when a lock-contention scenario occurred
+
+
+
+
+ Event-type that is raised when a lock-contention scenario is detected
+
+
+
+
+ Represents an inherited type in a type hierarchy.
+
+
+
+
+ Creates a new SubType instance.
+
+ The field-number that is used to encapsulate the data (as a nested
+ message) for the derived dype.
+ The sub-type to be considered.
+ Specific encoding style to use; in particular, Grouped can be used to avoid buffering, but is not the default.
+
+
+
+ The field-number that is used to encapsulate the data (as a nested
+ message) for the derived dype.
+
+
+
+
+ The sub-type to be considered.
+
+
+
+
+ Event arguments needed to perform type-formatting functions; this could be resolving a Type to a string suitable for serialization, or could
+ be requesting a Type from a string. If no changes are made, a default implementation will be used (from the assembly-qualified names).
+
+
+
+
+ The type involved in this map; if this is initially null, a Type is expected to be provided for the string in FormattedName.
+
+
+
+
+ The formatted-name involved in this map; if this is initially null, a formatted-name is expected from the type in Type.
+
+
+
+
+ Delegate type used to perform type-formatting functions; the sender originates as the type-model.
+
+
+
+
+ Represents a member (property/field) that is mapped to a protobuf field
+
+
+
+
+ Creates a new ValueMember instance
+
+
+
+
+ Creates a new ValueMember instance
+
+
+
+
+ Specifies methods for working with optional data members.
+
+ Provides a method (null for none) to query whether this member should
+ be serialized; it must be of the form "bool {Method}()". The member is only serialized if the
+ method returns true.
+ Provides a method (null for none) to indicate that a member was
+ deserialized; it must be of the form "void {Method}(bool)", and will be called with "true"
+ when data is found.
+
+
+
+ The number that identifies this member in a protobuf stream
+
+
+
+
+ Gets the member (field/property) which this member relates to.
+
+
+
+
+ Within a list / array / etc, the type of object for each item in the list (especially useful with ArrayList)
+
+
+
+
+ The underlying type of the member
+
+
+
+
+ For abstract types (IList etc), the type of concrete object to create (if required)
+
+
+
+
+ The type the defines the member
+
+
+
+
+ The default value of the item (members with this value will not be serialized)
+
+
+
+
+ Specifies the rules used to process the field; this is used to determine the most appropriate
+ wite-type, but also to describe subtypes within that wire-type (such as SignedVariant)
+
+
+
+
+ Indicates whether this field should follow strict encoding rules; this means (for example) that if a "fixed32"
+ is encountered when "variant" is defined, then it will fail (throw an exception) when parsing. Note that
+ when serializing the defined type is always used.
+
+
+
+
+ Indicates whether this field should use packed encoding (which can save lots of space for repeated primitive values).
+ This option only applies to list/array data of primitive types (int, double, etc).
+
+
+
+
+ Indicates whether this field should *repace* existing values (the default is false, meaning *append*).
+ This option only applies to list/array data.
+
+
+
+
+ Indicates whether this field is mandatory.
+
+
+
+
+ Enables full object-tracking/full-graph support.
+
+
+
+
+ Embeds the type information into the stream, allowing usage with types not known in advance.
+
+
+
+
+ Gets the logical name for this member in the schema (this is not critical for binary serialization, but may be used
+ when inferring a schema).
+
+
+
+
+ Should lists have extended support for null values? Note this makes the serialization less efficient.
+
+
+
+
+ Specifies the type of prefix that should be applied to messages.
+
+
+
+
+ No length prefix is applied to the data; the data is terminated only be the end of the stream.
+
+
+
+
+ A base-128 length prefix is applied to the data (efficient for short messages).
+
+
+
+
+ A fixed-length (little-endian) length prefix is applied to the data (useful for compatibility).
+
+
+
+
+ A fixed-length (big-endian) length prefix is applied to the data (useful for compatibility).
+
+
+
+
+ Indicates that a type is defined for protocol-buffer serialization.
+
+
+
+
+ Gets or sets the defined name of the type.
+
+
+
+
+ Gets or sets the fist offset to use with implicit field tags;
+ only uesd if ImplicitFields is set.
+
+
+
+
+ If specified, alternative contract markers (such as markers for XmlSerailizer or DataContractSerializer) are ignored.
+
+
+
+
+ If specified, do NOT treat this type as a list, even if it looks like one.
+
+
+
+
+ Gets or sets the mechanism used to automatically infer field tags
+ for members. This option should be used in advanced scenarios only.
+ Please review the important notes against the ImplicitFields enumeration.
+
+
+
+
+ Enables/disables automatic tag generation based on the existing name / order
+ of the defined members. This option is not used for members marked
+ with ProtoMemberAttribute, as intended to provide compatibility with
+ WCF serialization. WARNING: when adding new fields you must take
+ care to increase the Order for new elements, otherwise data corruption
+ may occur.
+
+ If not explicitly specified, the default is assumed from Serializer.GlobalOptions.InferTagFromName.
+
+
+
+ Has a InferTagFromName value been explicitly set? if not, the default from the type-model is assumed.
+
+
+
+
+ Specifies an offset to apply to [DataMember(Order=...)] markers;
+ this is useful when working with mex-generated classes that have
+ a different origin (usually 1 vs 0) than the original data-contract.
+
+ This value is added to the Order of each member.
+
+
+
+
+ If true, the constructor for the type is bypassed during deserialization, meaning any field initializers
+ or other initialization code is skipped.
+
+
+
+
+ Should this type be treated as a reference by default? Please also see the implications of this,
+ as recorded on ProtoMemberAttribute.AsReference
+
+
+
+
+ Applies only to enums (not to DTO classes themselves); gets or sets a value indicating that an enum should be treated directly as an int/short/etc, rather
+ than enforcing .proto enum rules. This is useful *in particul* for [Flags] enums.
+
+
+
+
+ Has a EnumPassthru value been explicitly set?
+
+
+
+
+ Used to define protocol-buffer specific behavior for
+ enumerated values.
+
+
+
+
+ Indicates whether this instance has a customised value mapping
+
+ true if a specific value is set
+
+
+
+ Gets or sets the specific value to use for this enum during serialization.
+
+
+
+
+ Gets or sets the defined name of the enum, as used in .proto
+ (this name is not used during serialization).
+
+
+
+
+ Indicates an error during serialization/deserialization of a proto stream.
+
+
+
+ Creates a new ProtoException instance.
+
+
+ Creates a new ProtoException instance.
+
+
+ Creates a new ProtoException instance.
+
+
+
+ Indicates that a member should be excluded from serialization; this
+ is only normally used when using implict fields.
+
+
+
+
+ Indicates that a member should be excluded from serialization; this
+ is only normally used when using implict fields. This allows
+ ProtoIgnoreAttribute usage
+ even for partial classes where the individual members are not
+ under direct control.
+
+
+
+
+ Creates a new ProtoPartialIgnoreAttribute instance.
+
+ Specifies the member to be ignored.
+
+
+
+ The name of the member to be ignored.
+
+
+
+
+ Indicates the known-types to support for an individual
+ message. This serializes each level in the hierarchy as
+ a nested message to retain wire-compatibility with
+ other protocol-buffer implementations.
+
+
+
+
+ Creates a new instance of the ProtoIncludeAttribute.
+
+ The unique index (within the type) that will identify this data.
+ The additional type to serialize/deserialize.
+
+
+
+ Creates a new instance of the ProtoIncludeAttribute.
+
+ The unique index (within the type) that will identify this data.
+ The additional type to serialize/deserialize.
+
+
+
+ Gets the unique index (within the type) that will identify this data.
+
+
+
+
+ Gets the additional type to serialize/deserialize.
+
+
+
+
+ Gets the additional type to serialize/deserialize.
+
+
+
+
+ Specifies whether the inherited sype's sub-message should be
+ written with a length-prefix (default), or with group markers.
+
+
+
+
+ Declares a member to be used in protocol-buffer serialization, using
+ the given Tag. A DataFormat may be used to optimise the serialization
+ format (for instance, using zigzag encoding for negative numbers, or
+ fixed-length encoding for large values.
+
+
+
+
+ Compare with another ProtoMemberAttribute for sorting purposes
+
+
+
+
+ Compare with another ProtoMemberAttribute for sorting purposes
+
+
+
+
+ Creates a new ProtoMemberAttribute instance.
+
+ Specifies the unique tag used to identify this member within the type.
+
+
+
+ Gets or sets the original name defined in the .proto; not used
+ during serialization.
+
+
+
+
+ Gets or sets the data-format to be used when encoding this value.
+
+
+
+
+ Gets the unique tag used to identify this member within the type.
+
+
+
+
+ Gets or sets a value indicating whether this member is mandatory.
+
+
+
+
+ Gets a value indicating whether this member is packed.
+ This option only applies to list/array data of primitive types (int, double, etc).
+
+
+
+
+ Indicates whether this field should *repace* existing values (the default is false, meaning *append*).
+ This option only applies to list/array data.
+
+
+
+
+ Enables full object-tracking/full-graph support.
+
+
+
+
+ Embeds the type information into the stream, allowing usage with types not known in advance.
+
+
+
+
+ Gets or sets a value indicating whether this member is packed (lists/arrays).
+
+
+
+
+ Additional (optional) settings that control serialization of members
+
+
+
+
+ Default; no additional options
+
+
+
+
+ Indicates that repeated elements should use packed (length-prefixed) encoding
+
+
+
+
+ Indicates that the given item is required
+
+
+
+
+ Enables full object-tracking/full-graph support
+
+
+
+
+ Embeds the type information into the stream, allowing usage with types not known in advance
+
+
+
+
+ Indicates whether this field should *repace* existing values (the default is false, meaning *append*).
+ This option only applies to list/array data.
+
+
+
+
+ Determines whether the types AsReferenceDefault value is used, or whether this member's AsReference should be used
+
+
+
+
+ Declares a member to be used in protocol-buffer serialization, using
+ the given Tag and MemberName. This allows ProtoMemberAttribute usage
+ even for partial classes where the individual members are not
+ under direct control.
+ A DataFormat may be used to optimise the serialization
+ format (for instance, using zigzag encoding for negative numbers, or
+ fixed-length encoding for large values.
+
+
+
+
+ Creates a new ProtoMemberAttribute instance.
+
+ Specifies the unique tag used to identify this member within the type.
+ Specifies the member to be serialized.
+
+
+
+ The name of the member to be serialized.
+
+
+
+
+ A stateful reader, used to read a protobuf stream. Typical usage would be (sequentially) to call
+ ReadFieldHeader and (after matching the field) an appropriate Read* method.
+
+
+
+
+ Creates a new reader against a stream
+
+ The source stream
+ The model to use for serialization; this can be null, but this will impair the ability to deserialize sub-objects
+ Additional context about this serialization operation
+
+
+
+ Creates a new reader against a stream
+
+ The source stream
+ The model to use for serialization; this can be null, but this will impair the ability to deserialize sub-objects
+ Additional context about this serialization operation
+ The number of bytes to read, or -1 to read until the end of the stream
+
+
+
+ Releases resources used by the reader, but importantly does not Dispose the
+ underlying stream; in many typical use-cases the stream is used for different
+ processes, so it is assumed that the consumer will Dispose their stream separately.
+
+
+
+
+ Reads an unsigned 32-bit integer from the stream; supported wire-types: Variant, Fixed32, Fixed64
+
+
+
+
+ Reads a signed 16-bit integer from the stream: Variant, Fixed32, Fixed64, SignedVariant
+
+
+
+
+ Reads an unsigned 16-bit integer from the stream; supported wire-types: Variant, Fixed32, Fixed64
+
+
+
+
+ Reads an unsigned 8-bit integer from the stream; supported wire-types: Variant, Fixed32, Fixed64
+
+
+
+
+ Reads a signed 8-bit integer from the stream; supported wire-types: Variant, Fixed32, Fixed64, SignedVariant
+
+
+
+
+ Reads a signed 32-bit integer from the stream; supported wire-types: Variant, Fixed32, Fixed64, SignedVariant
+
+
+
+
+ Reads a signed 64-bit integer from the stream; supported wire-types: Variant, Fixed32, Fixed64, SignedVariant
+
+
+
+
+ Reads a string from the stream (using UTF8); supported wire-types: String
+
+
+
+
+ Throws an exception indication that the given value cannot be mapped to an enum.
+
+
+
+
+ Reads a double-precision number from the stream; supported wire-types: Fixed32, Fixed64
+
+
+
+
+ Reads (merges) a sub-message from the stream, internally calling StartSubItem and EndSubItem, and (in between)
+ parsing the message in accordance with the model associated with the reader
+
+
+
+
+ Makes the end of consuming a nested message in the stream; the stream must be either at the correct EndGroup
+ marker, or all fields of the sub-message must have been consumed (in either case, this means ReadFieldHeader
+ should return zero)
+
+
+
+
+ Begins consuming a nested message in the stream; supported wire-types: StartGroup, String
+
+ The token returned must be help and used when callining EndSubItem
+
+
+
+ Reads a field header from the stream, setting the wire-type and retuning the field number. If no
+ more fields are available, then 0 is returned. This methods respects sub-messages.
+
+
+
+
+ Looks ahead to see whether the next field in the stream is what we expect
+ (typically; what we've just finished reading - for example ot read successive list items)
+
+
+
+
+ Compares the streams current wire-type to the hinted wire-type, updating the reader if necessary; for example,
+ a Variant may be updated to SignedVariant. If the hinted wire-type is unrelated then no change is made.
+
+
+
+
+ Verifies that the stream's current wire-type is as expected, or a specialized sub-type (for example,
+ SignedVariant) - in which case the current wire-type is updated. Otherwise an exception is thrown.
+
+
+
+
+ Discards the data for the current field.
+
+
+
+
+ Reads an unsigned 64-bit integer from the stream; supported wire-types: Variant, Fixed32, Fixed64
+
+
+
+
+ Reads a single-precision number from the stream; supported wire-types: Fixed32, Fixed64
+
+
+
+
+ Reads a boolean value from the stream; supported wire-types: Variant, Fixed32, Fixed64
+
+
+
+
+
+ Reads a byte-sequence from the stream, appending them to an existing byte-sequence (which can be null); supported wire-types: String
+
+
+
+
+ Reads the length-prefix of a message from a stream without buffering additional data, allowing a fixed-length
+ reader to be created.
+
+
+
+
+ Reads a little-endian encoded integer. An exception is thrown if the data is not all available.
+
+
+
+
+ Reads a big-endian encoded integer. An exception is thrown if the data is not all available.
+
+
+
+
+ Reads a varint encoded integer. An exception is thrown if the data is not all available.
+
+
+
+
+ Reads a string (of a given lenth, in bytes) directly from the source into a pre-existing buffer. An exception is thrown if the data is not all available.
+
+
+
+
+ Reads a given number of bytes directly from the source. An exception is thrown if the data is not all available.
+
+
+
+
+ Reads a string (of a given lenth, in bytes) directly from the source. An exception is thrown if the data is not all available.
+
+
+
+
+ Reads the length-prefix of a message from a stream without buffering additional data, allowing a fixed-length
+ reader to be created.
+
+
+
+ The number of bytes consumed; 0 if no data available
+
+
+
+ Copies the current field into the instance as extension data
+
+
+
+
+ Indicates whether the reader still has data remaining in the current sub-item,
+ additionally setting the wire-type for the next field if there is more data.
+ This is used when decoding packed data.
+
+
+
+
+ Utility method, not intended for public use; this helps maintain the root object is complex scenarios
+
+
+
+
+ Reads a Type from the stream, using the model's DynamicTypeFormatting if appropriate; supported wire-types: String
+
+
+
+
+ Merge two objects using the details from the current reader; this is used to change the type
+ of objects when an inheritance relationship is discovered later than usual during deserilazation.
+
+
+
+
+ Gets the number of the field being processed.
+
+
+
+
+ Indicates the underlying proto serialization format on the wire.
+
+
+
+
+ Gets / sets a flag indicating whether strings should be checked for repetition; if
+ true, any repeated UTF-8 byte sequence will result in the same String instance, rather
+ than a second instance of the same string. Enabled by default. Note that this uses
+ a custom interner - the system-wide string interner is not used.
+
+
+
+
+ Addition information about this deserialization operation.
+
+
+
+
+ Returns the position of the current reader (note that this is not necessarily the same as the position
+ in the underlying stream, if multiple readers are used on the same stream)
+
+
+
+
+ Get the TypeModel associated with this reader
+
+
+
+
+ Represents an output stream for writing protobuf data.
+
+ Why is the API backwards (static methods with writer arguments)?
+ See: http://marcgravell.blogspot.com/2010/03/last-will-be-first-and-first-will-be.html
+
+
+
+
+ Write an encapsulated sub-object, using the supplied unique key (reprasenting a type).
+
+ The object to write.
+ The key that uniquely identifies the type within the model.
+ The destination.
+
+
+
+ Write an encapsulated sub-object, using the supplied unique key (reprasenting a type) - but the
+ caller is asserting that this relationship is non-recursive; no recursion check will be
+ performed.
+
+ The object to write.
+ The key that uniquely identifies the type within the model.
+ The destination.
+
+
+
+ Writes a field-header, indicating the format of the next data we plan to write.
+
+
+
+
+ Writes a byte-array to the stream; supported wire-types: String
+
+
+
+
+ Writes a byte-array to the stream; supported wire-types: String
+
+
+
+
+ Indicates the start of a nested record.
+
+ The instance to write.
+ The destination.
+ A token representing the state of the stream; this token is given to EndSubItem.
+
+
+
+ Indicates the end of a nested record.
+
+ The token obtained from StartubItem.
+ The destination.
+
+
+
+ Creates a new writer against a stream
+
+ The destination stream
+ The model to use for serialization; this can be null, but this will impair the ability to serialize sub-objects
+ Additional context about this serialization operation
+
+
+
+ Flushes data to the underlying stream, and releases any resources. The underlying stream is *not* disposed
+ by this operation.
+
+
+
+
+ Writes any buffered data (if possible) to the underlying stream.
+
+ The writer to flush
+ It is not always possible to fully flush, since some sequences
+ may require values to be back-filled into the byte-stream.
+
+
+
+ Writes an unsigned 32-bit integer to the stream; supported wire-types: Variant, Fixed32, Fixed64
+
+
+
+
+ Writes a string to the stream; supported wire-types: String
+
+
+
+
+ Writes an unsigned 64-bit integer to the stream; supported wire-types: Variant, Fixed32, Fixed64
+
+
+
+
+ Writes a signed 64-bit integer to the stream; supported wire-types: Variant, Fixed32, Fixed64, SignedVariant
+
+
+
+
+ Writes an unsigned 16-bit integer to the stream; supported wire-types: Variant, Fixed32, Fixed64
+
+
+
+
+ Writes a signed 16-bit integer to the stream; supported wire-types: Variant, Fixed32, Fixed64, SignedVariant
+
+
+
+
+ Writes an unsigned 16-bit integer to the stream; supported wire-types: Variant, Fixed32, Fixed64
+
+
+
+
+ Writes an unsigned 8-bit integer to the stream; supported wire-types: Variant, Fixed32, Fixed64
+
+
+
+
+ Writes a signed 8-bit integer to the stream; supported wire-types: Variant, Fixed32, Fixed64, SignedVariant
+
+
+
+
+ Writes a signed 32-bit integer to the stream; supported wire-types: Variant, Fixed32, Fixed64, SignedVariant
+
+
+
+
+ Writes a double-precision number to the stream; supported wire-types: Fixed32, Fixed64
+
+
+
+
+ Writes a single-precision number to the stream; supported wire-types: Fixed32, Fixed64
+
+
+
+
+ Throws an exception indicating that the given enum cannot be mapped to a serialized value.
+
+
+
+
+ Writes a boolean to the stream; supported wire-types: Variant, Fixed32, Fixed64
+
+
+
+
+ Copies any extension data stored for the instance to the underlying stream
+
+
+
+
+ Used for packed encoding; indicates that the next field should be skipped rather than
+ a field header written. Note that the field number must match, else an exception is thrown
+ when the attempt is made to write the (incorrect) field. The wire-type is taken from the
+ subsequent call to WriteFieldHeader. Only primitive types can be packed.
+
+
+
+
+ Specifies a known root object to use during reference-tracked serialization
+
+
+
+
+ Writes a Type to the stream, using the model's DynamicTypeFormatting if appropriate; supported wire-types: String
+
+
+
+
+ Addition information about this serialization operation.
+
+
+
+
+ Get the TypeModel associated with this writer
+
+
+
+
+ Additional information about a serialization operation
+
+
+
+
+ Convert a SerializationContext to a StreamingContext
+
+
+
+
+ Convert a StreamingContext to a SerializationContext
+
+
+
+
+ Gets or sets a user-defined object containing additional information about this serialization/deserialization operation.
+
+
+
+
+ A default SerializationContext, with minimal information.
+
+
+
+
+ Provides protocol-buffer serialization capability for concrete, attributed types. This
+ is a *default* model, but custom serializer models are also supported.
+
+
+ Protocol-buffer serialization is a compact binary format, designed to take
+ advantage of sparse data and knowledge of specific data types; it is also
+ extensible, allowing a type to be deserialized / merged even if some data is
+ not recognised.
+
+
+
+
+ The field number that is used as a default when serializing/deserializing a list of objects.
+ The data is treated as repeated message with field number 1.
+
+
+
+
+ Suggest a .proto definition for the given type
+
+ The type to generate a .proto definition for
+ The .proto definition as a string
+
+
+
+ Create a deep clone of the supplied instance; any sub-items are also cloned.
+
+
+
+
+ Applies a protocol-buffer stream to an existing instance.
+
+ The type being merged.
+ The existing instance to be modified (can be null).
+ The binary stream to apply to the instance (cannot be null).
+ The updated instance; this may be different to the instance argument if
+ either the original instance was null, or the stream defines a known sub-type of the
+ original instance.
+
+
+
+ Creates a new instance from a protocol-buffer stream
+
+ The type to be created.
+ The binary stream to apply to the new instance (cannot be null).
+ A new, initialized instance.
+
+
+
+ Writes a protocol-buffer representation of the given instance to the supplied stream.
+
+ The existing instance to be serialized (cannot be null).
+ The destination stream to write to.
+
+
+
+ Serializes a given instance and deserializes it as a different type;
+ this can be used to translate between wire-compatible objects (where
+ two .NET types represent the same data), or to promote/demote a type
+ through an inheritance hierarchy.
+
+ No assumption of compatibility is made between the types.
+ The type of the object being copied.
+ The type of the new object to be created.
+ The existing instance to use as a template.
+ A new instane of type TNewType, with the data from TOldType.
+
+
+
+ Precompiles the serializer for a given type.
+
+
+
+
+ Reads a sequence of consecutive length-prefixed items from a stream, using
+ either base-128 or fixed-length prefixes. Base-128 prefixes with a tag
+ are directly comparable to serializing multiple items in succession
+ (use the tag to emulate the implicit behavior
+ when serializing a list/array). When a tag is
+ specified, any records with different tags are silently omitted. The
+ tag is ignored. The tag is ignores for fixed-length prefixes.
+
+ The type of object to deserialize.
+ The binary stream containing the serialized records.
+ The prefix style used in the data.
+ The tag of records to return (if non-positive, then no tag is
+ expected and all records are returned).
+ The sequence of deserialized objects.
+
+
+
+ Creates a new instance from a protocol-buffer stream that has a length-prefix
+ on data (to assist with network IO).
+
+ The type to be created.
+ The binary stream to apply to the new instance (cannot be null).
+ How to encode the length prefix.
+ A new, initialized instance.
+
+
+
+ Creates a new instance from a protocol-buffer stream that has a length-prefix
+ on data (to assist with network IO).
+
+ The type to be created.
+ The binary stream to apply to the new instance (cannot be null).
+ How to encode the length prefix.
+ The expected tag of the item (only used with base-128 prefix style).
+ A new, initialized instance.
+
+
+
+ Applies a protocol-buffer stream to an existing instance, using length-prefixed
+ data - useful with network IO.
+
+ The type being merged.
+ The existing instance to be modified (can be null).
+ The binary stream to apply to the instance (cannot be null).
+ How to encode the length prefix.
+ The updated instance; this may be different to the instance argument if
+ either the original instance was null, or the stream defines a known sub-type of the
+ original instance.
+
+
+
+ Writes a protocol-buffer representation of the given instance to the supplied stream,
+ with a length-prefix. This is useful for socket programming,
+ as DeserializeWithLengthPrefix/MergeWithLengthPrefix can be used to read the single object back
+ from an ongoing stream.
+
+ The type being serialized.
+ The existing instance to be serialized (cannot be null).
+ How to encode the length prefix.
+ The destination stream to write to.
+
+
+
+ Writes a protocol-buffer representation of the given instance to the supplied stream,
+ with a length-prefix. This is useful for socket programming,
+ as DeserializeWithLengthPrefix/MergeWithLengthPrefix can be used to read the single object back
+ from an ongoing stream.
+
+ The type being serialized.
+ The existing instance to be serialized (cannot be null).
+ How to encode the length prefix.
+ The destination stream to write to.
+ The tag used as a prefix to each record (only used with base-128 style prefixes).
+
+
+ Indicates the number of bytes expected for the next message.
+ The stream containing the data to investigate for a length.
+ The algorithm used to encode the length.
+ The length of the message, if it could be identified.
+ True if a length could be obtained, false otherwise.
+
+
+ Indicates the number of bytes expected for the next message.
+ The buffer containing the data to investigate for a length.
+ The offset of the first byte to read from the buffer.
+ The number of bytes to read from the buffer.
+ The algorithm used to encode the length.
+ The length of the message, if it could be identified.
+ True if a length could be obtained, false otherwise.
+
+
+
+ Releases any internal buffers that have been reserved for efficiency; this does not affect any serialization
+ operations; simply: it can be used (optionally) to release the buffers for garbage collection (at the expense
+ of having to re-allocate a new buffer for the next operation, rather than re-use prior buffers).
+
+
+
+
+ Provides non-generic access to the default serializer.
+
+
+
+
+ Create a deep clone of the supplied instance; any sub-items are also cloned.
+
+
+
+
+ Writes a protocol-buffer representation of the given instance to the supplied stream.
+
+ The existing instance to be serialized (cannot be null).
+ The destination stream to write to.
+
+
+
+ Creates a new instance from a protocol-buffer stream
+
+ The type to be created.
+ The binary stream to apply to the new instance (cannot be null).
+ A new, initialized instance.
+
+
+ Applies a protocol-buffer stream to an existing instance.
+ The existing instance to be modified (cannot be null).
+ The binary stream to apply to the instance (cannot be null).
+ The updated instance
+
+
+
+ Writes a protocol-buffer representation of the given instance to the supplied stream,
+ with a length-prefix. This is useful for socket programming,
+ as DeserializeWithLengthPrefix/MergeWithLengthPrefix can be used to read the single object back
+ from an ongoing stream.
+
+ The existing instance to be serialized (cannot be null).
+ How to encode the length prefix.
+ The destination stream to write to.
+ The tag used as a prefix to each record (only used with base-128 style prefixes).
+
+
+
+ Applies a protocol-buffer stream to an existing instance (or null), using length-prefixed
+ data - useful with network IO.
+
+ The existing instance to be modified (can be null).
+ The binary stream to apply to the instance (cannot be null).
+ How to encode the length prefix.
+ Used to resolve types on a per-field basis.
+ The updated instance; this may be different to the instance argument if
+ either the original instance was null, or the stream defines a known sub-type of the
+ original instance.
+
+
+
+ Indicates whether the supplied type is explicitly modelled by the model
+
+
+
+
+ Global switches that change the behavior of protobuf-net
+
+
+
+
+
+
+
+
+
+ Maps a field-number to a type
+
+
+
+
+ Perform the steps necessary to serialize this data.
+
+ The value to be serialized.
+ The writer entity that is accumulating the output data.
+
+
+
+ Perform the steps necessary to deserialize this data.
+
+ The current value, if appropriate.
+ The reader providing the input data.
+ The updated / replacement value.
+
+
+ Emit the IL necessary to perform the given actions
+ to serialize this data.
+
+ Details and utilities for the method being generated.
+ The source of the data to work against;
+ If the value is only needed once, then LoadValue is sufficient. If
+ the value is needed multiple times, then note that a "null"
+ means "the top of the stack", in which case you should create your
+ own copy - GetLocalWithValue.
+
+
+
+ Emit the IL necessary to perform the given actions to deserialize this data.
+
+ Details and utilities for the method being generated.
+ For nested values, the instance holding the values; note
+ that this is not always provided - a null means not supplied. Since this is always
+ a variable or argument, it is not necessary to consume this value.
+
+
+
+ The type that this serializer is intended to work for.
+
+
+
+
+ Indicates whether a Read operation replaces the existing value, or
+ extends the value. If false, the "value" parameter to Read is
+ discarded, and should be passed in as null.
+
+
+
+
+ Now all Read operations return a value (although most do); if false no
+ value should be expected.
+
+
+
+
+ An xml object serializer that can embed protobuf data in a base-64 hunk (looking like a byte[])
+
+
+
+
+ Attempt to create a new serializer for the given model and type
+
+ A new serializer instance if the type is recognised by the model; null otherwise
+
+
+
+ Creates a new serializer for the given model and type
+
+
+
+
+ Ends an object in the output
+
+
+
+
+ Begins an object in the output
+
+
+
+
+ Writes the body of an object in the output
+
+
+
+
+ Indicates whether this is the start of an object we are prepared to handle
+
+
+
+
+ Reads the body of an object
+
+
+
+
+ Used to hold particulars relating to nested objects. This is opaque to the caller - simply
+ give back the token you are given at the end of an object.
+
+
+
+
+ Indicates the encoding used to represent an individual value in a protobuf stream
+
+
+
+
+ Represents an error condition
+
+
+
+
+ Base-128 variant-length encoding
+
+
+
+
+ Fixed-length 8-byte encoding
+
+
+
+
+ Length-variant-prefixed encoding
+
+
+
+
+ Indicates the start of a group
+
+
+
+
+ Indicates the end of a group
+
+
+
+
+ Fixed-length 4-byte encoding
+ 10
+
+
+
+ This is not a formal wire-type in the "protocol buffers" spec, but
+ denotes a variant integer that should be interpreted using
+ zig-zag semantics (so -ve numbers aren't a significant overhead)
+
+
+
+
diff --git a/packages/protobuf-net.2.0.0.668/protobuf-net.2.0.0.668.nupkg b/packages/protobuf-net.2.0.0.668/protobuf-net.2.0.0.668.nupkg
new file mode 100644
index 000000000..7a6be56da
Binary files /dev/null and b/packages/protobuf-net.2.0.0.668/protobuf-net.2.0.0.668.nupkg differ