/// <summary> /// Converts this frame to a basic one with a data set /// </summary> /// <param name="data">The basic data to convert to</param> /// <returns>The data value</returns> public DataValue ConvertToBasic(byte[] data) { DataValue ret = null; bool doConvert = true; // If already basic, don't convert the entire frame if (IsBasic) { ByteArrayDataValue dv = SelectSingleNode("/Data") as ByteArrayDataValue; if (dv != null) { dv.Value = data; ret = dv; doConvert = false; } } // Not basic or we failed if (doConvert) { DataKey root = new DataKey("Root"); root.Class = new Guid(DataNodeClasses.BINARY_NODE_CLASS); root.FormatString = "$Data"; root.SetLinks(this, null); ret = root.AddValue("Data", data); Root = root; } OnModified(); return(ret); }
// Populate a datakey with data from a stream public void FromReader(DataReader reader, DataKey root, Logger logger) { // Read up to five bytes and reverse them byte[] data = reader.ReadBytes(5, false).Reverse().ToArray(); logger.LogInfo("Read {0} bytes from stream", data.Length); // Add to key root.AddValue("data", data); }
private void AddCookie(string cookie, DataKey root, Logger logger) { string[] kv = cookie.Split(new [] {'='}, 2, StringSplitOptions.RemoveEmptyEntries); string k = kv[0].Trim(); string v = ""; if(kv.Length > 1) { v = kv[1].Trim(); } if(!String.IsNullOrEmpty(k)) { root.AddValue(k, v); } }
/// <summary> /// Convert the frame to a string value /// </summary> /// <param name="value">The string value</param> /// <param name="encoding">The encoding for the string</param> /// <returns>The data value</returns> public DataValue FromDataString(string value, Encoding encoding) { DataValue ret = null; bool doConvert = true; // If already basic, don't convert the entire frame if (IsDataString) { StringDataValue dv = SelectSingleNode("/Data") as StringDataValue; if (dv != null) { dv.Value = value; // Only set encoding if different if (encoding != null) { dv.StringEncoding = encoding; } ret = dv; doConvert = false; } } // Not basic or we failed if (doConvert) { DataKey root = new DataKey("Root"); root.Class = new Guid(DataNodeClasses.STRING_NODE_CLASS); root.FormatString = "$Data"; root.SetLinks(this, null); ret = root.AddValue("Data", value, encoding ?? BinaryEncoding.Instance); Root = root; } OnModified(); return(ret); }
// Called to parse the array into a data key public void FromArray(byte[] data, DataKey root, Logger logger) { logger.LogInfo("Received array of length {0}", data.Length); root.AddValue("data", data.Reverse().ToArray()); }
public override DataFrame Read() { try { if(_request == null) { _request = HttpParser.ReadRequestHeader(new DataReader(_stm), false, _logger); lock (_requestQueue) { _requestQueue.Enqueue(_request); } ProcessProxyRequestHeaders(_request); } if (_chunks == null) { _chunks = _request.ReadChunks(_config).GetEnumerator(); // If we can't move to the first chunk (headers) there is a serious issue if (!_chunks.MoveNext()) { throw new EndOfStreamException(); } } HttpRequestDataChunk chunk = _chunks.Current; if (!_chunks.MoveNext()) { _request = null; _chunks = null; } DataKey root = new DataKey("Root"); root.AddValue(new DynamicDataValue(DATA_NAME, chunk)); return new DataFrame(root); } catch (EndOfStreamException) { return null; } }
private DataFrame CreateFrame(HttpDataChunk response) { DataKey root = new DataKey("Root"); root.AddValue(new DynamicDataValue(DATA_NAME, response)); return new DataFrame(root); }