private unsafe void parseEnum <valueType>(ref valueType value) { BufferIndex *indexs = queryIndex + 1; if (indexs->Length == 0) { value = default(valueType); } else { current = bufferStart + indexs->StartIndex; *(current + indexs->Length) = *(current - 1) = (byte)'"'; Json.Parser parser = Interlocked.Exchange(ref enumJsonParser, null); if (parser == null) { parser = Json.Parser.YieldPool.Default.Pop() ?? new Json.Parser(); parser.SetEnum(); } if (!parser.ParseEnum(header.UnescapeUtf8(bufferStart, indexs->StartIndex - 1, indexs->Length + 2), ref value)) { state = HeaderQueryParseState.Unknown; } if ((parser = Interlocked.Exchange(ref enumJsonParser, parser)) != null) { parser.Free(); } } }
/// <summary> /// 清除缓存数据 /// </summary> /// <param name="count">保留缓存数据数量</param> private static void clearCache(int count) { if (count == 0) { enumJsonParser = null; } }
internal bool DeSerialize <valueType>(ref SubArray <byte> data, ref valueType value, bool isSimpleSerialize) where valueType : struct { if ((CommandIndex & (uint)CommandFlags.JsonSerialize) == 0) { if (isSimpleSerialize) { fixed(byte *dataFixed = data.Array) { byte *start = dataFixed + data.Start, end = start + data.Length; return(SimpleSerialize.TypeDeSerializer <valueType> .DeSerialize(start, ref value, end) == end); } } if (ReceiveDeSerializer == null) { ReceiveDeSerializer = BinarySerialize.DeSerializer.YieldPool.Default.Pop() ?? new BinarySerialize.DeSerializer(); ReceiveDeSerializer.SetTcpServer(binaryDeSerializeConfig, this); } return(ReceiveDeSerializer.DeSerializeTcpServer(ref data, ref value)); //if (ReceiveDeSerializer.DeSerializeTcpServer(ref data, ref value)) return true; //if (data.Length > 1 << 20) System.IO.File.WriteAllBytes((++testIdentity).ToString() + "." + data.Length.ToString(), data.ToArray()); //return false; } if (ReceiveJsonParser == null) { ReceiveJsonParser = Json.Parser.YieldPool.Default.Pop() ?? new Json.Parser(); ReceiveJsonParser.SetTcpServer(); } return(ReceiveJsonParser.ParseTcpServer(ref data, ref value)); }
public Defination GetDefination(Guid id) { var json = DefinationStorage.GetText(id.ToString() + ".json"); if (json == null) return null; var data = new Json.Parser().Parse(json) as JObject; if (data == null) return null; return GetDefination(data); }
public Defination GetActivity(Guid runtimeId, Guid processId) { var dir = this.RuntimeStorage.GetDirectory(processId.ToString() + "/activities", false) as IStorageDirectory; if (dir == null) return null; var json = dir.GetText(runtimeId.ToString() + ".json"); if (json == null) return null; var data = new Json.Parser().Parse(json) as JObject; return this.GetDefination(data) ; }
protected bool parseJson <parameterType>(ref parameterType parameter, string json) where parameterType : struct { Json.Parser parser = Interlocked.Exchange(ref JsonParser, null) ?? Json.Parser.YieldPool.Default.Pop() ?? new Json.Parser(); bool isParse = parser.ParseWebViewNotEmpty(ref parameter, json, jsonParserConfig); if ((parser = Interlocked.Exchange(ref JsonParser, parser)) != null) { parser.Free(); } return(isParse); }
internal void FreeReceiveDeSerializer() { if (ReceiveDeSerializer != null) { ReceiveDeSerializer.Free(); ReceiveDeSerializer = null; } if (ReceiveJsonParser != null) { ReceiveJsonParser.Free(); ReceiveJsonParser = null; } }
internal void FreeReceiveDeSerializer() { BinarySerialize.DeSerializer deSerializer = Interlocked.Exchange(ref ReceiveDeSerializer, null); if (deSerializer != null) { deSerializer.Free(); } Json.Parser parser = Interlocked.Exchange(ref ReceiveJsonParser, null); if (parser != null) { parser.Free(); } }
/// <summary> /// 数据反序列化 /// </summary> /// <typeparam name="outputParameterType"></typeparam> /// <param name="commandInfo"></param> /// <param name="outputParameter"></param> /// <param name="clientBuffer"></param> private unsafe void deSerialize <outputParameterType>(TcpServer.CommandInfoBase commandInfo, ref outputParameterType outputParameter, ref ClientBuffer clientBuffer) where outputParameterType : struct { if ((commandInfo.CommandFlags & TcpServer.CommandFlags.JsonSerialize) == 0) { if (commandInfo.SimpleSerializeOutputParamter == 0) { if (receiveDeSerializer == null) { receiveDeSerializer = BinarySerialize.DeSerializer.YieldPool.Default.Pop() ?? new BinarySerialize.DeSerializer(); receiveDeSerializer.SetTcpServer(AutoCSer.BinarySerialize.DeSerializer.DefaultConfig, null); } if (receiveDeSerializer.DeSerializeTcpServer(ref clientBuffer.Data, ref outputParameter)) { clientBuffer.ReturnType = TcpServer.ReturnType.Success; return; } } else { fixed(byte *dataFixed = clientBuffer.Data.Array) { byte *start = dataFixed + clientBuffer.Data.Start, end = start + clientBuffer.Data.Length; if (SimpleSerialize.TypeDeSerializer <outputParameterType> .DeSerialize(start, ref outputParameter, end) == end) { clientBuffer.ReturnType = TcpServer.ReturnType.Success; return; } } } } else { if (receiveJsonParser == null) { receiveJsonParser = Json.Parser.YieldPool.Default.Pop() ?? new Json.Parser(); receiveJsonParser.SetTcpServer(); } if (receiveJsonParser.ParseTcpServer(ref clientBuffer.Data, ref outputParameter)) { clientBuffer.ReturnType = TcpServer.ReturnType.Success; return; } } clientBuffer.ReturnType = TcpServer.ReturnType.ClientDeSerializeError; }
internal bool ParseJson <valueType>(ref SubArray <byte> data, ref valueType value) where valueType : struct { Json.Parser parser = Interlocked.Exchange(ref ReceiveJsonParser, null); if (parser == null) { parser = Json.Parser.YieldPool.Default.Pop() ?? new Json.Parser(); parser.SetTcpServer(); } bool isValue = parser.ParseTcpServer(ref data, ref value); if (Interlocked.CompareExchange(ref ReceiveJsonParser, parser, null) != null) { parser.Free(); } return(isValue); }
internal void FreeSerializer() { OutputStream = null; if (ReceiveDeSerializer != null) { ReceiveDeSerializer.Free(); ReceiveDeSerializer = null; } if (ReceiveJsonParser != null) { ReceiveJsonParser.Free(); ReceiveJsonParser = null; } if (OutputSerializer != null) { OutputSerializer.Free(); OutputSerializer = null; } if (OutputJsonSerializer != null) { OutputJsonSerializer.Free(); OutputJsonSerializer = null; } }
public void ParseToJToken() { var obj = new JObject(); obj["Id"] = Guid.Empty; obj["Username"] = "******"; var profile = new JObject(); profile["Birthday"] = new DateTime(2015, 1, 1); profile["Age"] = 12; var favors = new JArray(); favors.Push(12); favors.Push("Sweet Milk"); obj["Profile"] = profile; profile["Favors"] = favors; obj["Actived"] = true; var jsonString = obj.ToJson(); var convert = new Json.Parser(); var json = convert.Parse(jsonString) as JObject; System.Text.RegularExpressions.Regex JsonDateRegex = new System.Text.RegularExpressions.Regex("^(\\d{4})\\-(10|11|12|0?\\d)\\-([012]\\d|30|31)T([01]\\d|2[0-3]):([0-5]?\\d):([0-5]?\\d)$", System.Text.RegularExpressions.RegexOptions.Compiled); var datestr = "2015-01-01T10:3:3"; var match = JsonDateRegex.Match(datestr); Assert.Equal(Guid.Empty.ToString(), json["Id"].ToString()); Assert.Equal("yiy", (string)json["Username"]); Assert.Equal(true, (bool)json["Actived"]); profile = json["Profile"] as JObject; Assert.Equal(new DateTime(2015, 1, 1), (DateTime)profile["Birthday"]); Assert.Equal(12, (int)profile["Age"]); favors = profile["Favors"] as JArray; Assert.Equal(12, (int)favors[0]); Assert.Equal("Sweet Milk", (string)favors[1]); }
public ProccessDefination GetProccessDefination(string alias) { var jsonText = this.Storage.GetText(alias + ".proccess.json"); if (jsonText == null) throw new ArgumentException("Proccess["+alias+"] is not existed or damaged."); var data = new Json.Parser().Parse(jsonText) as JObject; if (data == null) throw new ArgumentException("Proccess["+alias+"] is damaged."); return new ProccessDefination(data); }
public IList<ProccessDefination> ListProccessDefnations(string packageAlias) { var packDir = this.Storage.GetDirectory(packageAlias); if (packDir == null) return null; var items = packDir.ListItems(false, StorageTypes.File); List<ProccessDefination> result = new List<ProccessDefination>(); foreach (var item in items) { if (!item.Name.EndsWith(".proccess.json")) continue; var jsonText = packDir.GetText( item.Name); if (jsonText == null) continue; var data = new Json.Parser().Parse(jsonText) as JObject; if (data == null) continue; var def = new ProccessDefination(data); result.Add(def); } return result; }
public ActivityDefination GetActivityDefination(string alias) { if (string.IsNullOrWhiteSpace(alias)) throw new ArgumentException("alias is required."); var shortAlias = GetShortAlias(alias); var jsonText = this.Storage.GetText(alias + ".activity.json"); if (jsonText == null) throw new ArgumentException("Activity["+alias+"] is not existed or damaged."); var data = new Json.Parser().Parse(jsonText) as JObject; if (data == null) throw new ArgumentException("Activity["+alias+"] is damaged."); return new ActivityDefination(data); }
public void ParseToTokenWithFunction() { var jsonstring = @"{no:1,onstart : "; var func = @"function(evt,bk){ var s = 'hello'; var err={bk:s}; for(var n in err){ s += " + "\"\\\"\" + n + \"\\\"\" ':' + err[n];" + @"} var fn = function(s){alert(s);} fn(s); }"; jsonstring += func + "}"; var convert = new Json.Parser(); var obj = convert.Parse(jsonstring) as JObject; Assert.Equal(1, (int)obj["no"]); Assert.InstanceOf(obj["onstart"], typeof(JFunction)); Assert.Equal(func, obj["onstart"].ToString().Trim()); }
public IList<PackageDefination> ListPackages() { var items = this.Storage.ListItems(false, StorageTypes.File); List<PackageDefination> result = new List<PackageDefination>(); foreach (var item in items) { if (!item.Name.EndsWith(".package.json")) continue; try { var jsonText = this.Storage.GetText(item.Name); if (jsonText == null) throw new ArgumentException("Package[" + item.Name + "] is not existed or damaged."); var data = new Json.Parser().Parse(jsonText) as JObject; if (data == null) throw new ArgumentException("Package[" + item.Name + "] is damaged."); var pack= new PackageDefination(data); result.Add(pack); } catch (ArgumentException) { } } return result; }
public TransactionDefination GetTransactionDefination(string alias) { if (string.IsNullOrWhiteSpace(alias)) throw new ArgumentException("alias is required."); var jsonText = this.Storage.GetText(alias + ".transaction.json"); if (jsonText == null) throw new ArgumentException("Transaction["+alias+"] is not existed or damaged."); var data = new Json.Parser().Parse(jsonText) as JObject; if (data == null) throw new ArgumentException("Transaction["+alias+"] is damaged."); return new TransactionDefination(data); }
public IList<ExecutionDefination> ListExecutionDefinations(string containerAlias) { var dir = this.Storage.GetDirectory(containerAlias); if (dir == null) return null; var items = dir.ListItems(true, StorageTypes.File); List<ExecutionDefination> result = new List<ExecutionDefination>(); foreach (var item in items) { var file = item as IStorageFile; if (file == null) continue; string jsonText = null; JObject data = null; if (file.Name.EndsWith(".activity.json")) { jsonText = file.GetText(); if (jsonText == null) continue; data = new Json.Parser().Parse(jsonText) as JObject; if (data == null) continue; var def = new ActivityDefination(data); result.Add(def); } else if (file.Name.EndsWith(".transaction.json")) { jsonText = file.GetText(); if (jsonText == null) continue; data = new Json.Parser().Parse(jsonText) as JObject; if (data == null) continue; var def = new TransactionDefination(data); result.Add(def); } } return result; }
public PackageDefination GetPackageDefination(string alias) { if (string.IsNullOrWhiteSpace(alias)) throw new ArgumentException("alias is required."); if (alias.Contains("/")) throw new ArgumentException("Invalid package alias. package alias cannot contain /"); var jsonText = this.Storage.GetText(alias + ".package.json"); if(jsonText==null) throw new ArgumentException("Package["+alias+"] is not existed or damaged."); var data = new Json.Parser().Parse(jsonText) as JObject; if(data==null) throw new ArgumentException("Package["+alias+"] is damaged."); return new PackageDefination(data); }