Exemple #1
0
 public int WriteTo(System.IO.StreamWriter sw, ODataPersistenceEngineAsync engine)
 {
     long position = sw.BaseStream.Position;
     if (!isRoot)
     {
         foreach (KeyValuePair<string, string> header in headers)
             sw.WriteLine(header.Key + ": " + header.Value);
     }
     //MemoryStream ms;
     //StreamWriter msw;
     //ms = new MemoryStream();
     //msw = new StreamWriter(ms);
     //msw.NewLine = sw.NewLine;
     //int length = 0;
     //foreach (Change change in Changes)
     //{
     //    length += ("--changeset_" + Id + "\n").Length;
     //    length += ("Content-Type: application/http" + "\n").Length;
     //    if (change.Expression.Name != null && change.Expression.Name[0] == '$')
     //        length += (change.Method + " " + engine.GetUri(change.Expression).AbsolutePath.Substring(((ODataPersistenceProvider)engine.FactoryAsync).ConnectionString.AbsolutePath.Length) + " HTTP/1.1").Length + sw.NewLine.Length;
     //    else
     //        length += (change.Method + " " + engine.GetUri(change.Expression) + " HTTP/1.1").Length + sw.NewLine.Length;
     //    length += ("Host: " + ((ODataPersistenceProvider)engine.FactoryAsync).ConnectionString.Host + (((ODataPersistenceProvider)engine.FactoryAsync).ConnectionString.Port == 80 ? "" : ":" + ((ODataPersistenceProvider)engine.FactoryAsync).ConnectionString.Port) + "\n").Length;
     //    length += change.WriteTo(msw, engine);
     //}
     //length += ("--changeset_" + Id + "--\n").Length;
     //length += 2;
     //sw.WriteLine("Content-Length: " + length);
     sw.WriteLine();
     sw.Flush();
     //msw.Close();
     foreach (Change change in Changes)
     {
         sw.WriteLine("--changeset_" + Id);
         sw.WriteLine("Content-Type: application/http");
         sw.WriteLine("Content-Transfer-Encoding: binary");
         sw.WriteLine();
         if (change.Expression.Name != null && change.Expression.Name[0] == '$')
             sw.WriteLine(change.Method + " " + engine.GetUri(change.Expression).AbsolutePath.Substring(((ODataPersistenceProvider)engine.FactoryAsync).ConnectionString.AbsolutePath.Length ) + " HTTP/1.1");
         else
             sw.WriteLine(change.Method + " " + engine.GetUri(change.Expression) + " HTTP/1.1");
         sw.WriteLine("Host: " + ((ODataPersistenceProvider)engine.FactoryAsync).ConnectionString.Host + (((ODataPersistenceProvider)engine.FactoryAsync).ConnectionString.Port == 80 ? "" : ":" + ((ODataPersistenceProvider)engine.FactoryAsync).ConnectionString.Port));
         sw.Flush();
         change.WriteTo(sw, engine);
         //sw.WriteLine();
         sw.WriteLine();
     }
     sw.WriteLine("--changeset_" + Id + "--");
     sw.WriteLine();
     sw.Flush();
     return (int)(sw.BaseStream.Length - position);
 }
Exemple #2
0
 internal void Write(System.Xml.XmlWriter writer, ODataPersistenceEngineAsync engine)
 {
     writer.WriteStartElement("url", "http://schemas.microsoft.com/ado/2007/08/dataservices/metadata");
     if (Value.Name[0] == '$')
         writer.WriteString(Value.Name);
     else
         writer.WriteString(engine.GetUri(Value).ToString());
     writer.WriteEndElement();
 }