public InvokeStatus invoke(XElement root, out XElement ret, IPIDLErrorCollector ec_)
        {
            var ec = new PIDL_SASErrorCollector(ec_);

            var in_stream = new MemoryStream();
            var in_writer = JsonReaderWriterFactory.CreateJsonWriter(in_stream);
            var in_doc    = new XDocument();

            in_doc.Add(root);
            in_doc.WriteTo(in_writer);
            in_writer.Close();

            SASBinData out_data;

            switch (conn.Invoke(new SASBinData(in_stream.GetBuffer()), out out_data, ec))
            {
            case ISASInvoker.Status.Error:
                ret = null;
                return(InvokeStatus.Error);

            case ISASInvoker.Status.FatalError:
                ret = null;
                return(InvokeStatus.FatalError);

            case ISASInvoker.Status.NotImplemented:
                ret = null;
                return(InvokeStatus.NotImplemented);

            case ISASInvoker.Status.OK:
                break;
            }

            var out_reader = JsonReaderWriterFactory.CreateJsonReader(out_data.AsByteArray, System.Xml.XmlDictionaryReaderQuotas.Max);

            ret = XElement.Load(out_reader);
            return(InvokeStatus.Ok);
        }
 public PIDL_SASErrorCollector(IPIDLErrorCollector ec_)
 {
     ec = ec_;
 }