/// <summary> /// 変換を行います。 /// </summary> /// <param name="parameter">変換パラメーター。</param> public ConvertResultType Convert(IConvertParameter parameter) { var cea = new CancelEventArgs(); cea.Cancel = false; Prepare?.Invoke(parameter, cea); if (cea.Cancel) { var r = new ConvertResultType(); r = ConvertResultType.Cancelled; var ccea = new ConvertCompleteEventArgs(); ccea.Result = ConvertResultType.Cancelled; ConvertCompleted?.Invoke(parameter, ccea); return(r); } try { return(onConvert(parameter)); } catch (Exception e) { var result = new ConvertCompleteEventArgs(); result.Result = ConvertResultType.Failed; result.Error = e; ConvertCompleted?.Invoke(parameter, result); return(result.Result); } }
/// <summary> /// 変換の呼び出しを実施する。 /// </summary> /// <param name="parameter"></param> /// <returns></returns> private ConvertResultType onConvert(IConvertParameter parameter) { var result = new ConvertCompleteEventArgs(); // 変換処理 DoConvert(parameter); result.Result = ConvertResultType.Succeed; result.Error = null; ConvertCompleted?.Invoke(parameter, result); return(result.Result); }
/// <summary> /// 変換を行います。 /// </summary> /// <param name="parameter">変換パラメーター。</param> /// <returns>ConvertResult のタスク。</returns> public async Task <ConvertResultType> ConvertAsync(IConvertParameter parameter) { var e = new CancelEventArgs(); e.Cancel = false; Prepare?.Invoke(parameter, e); if (e.Cancel) { var r = new ConvertResultType(); r = ConvertResultType.Cancelled; var cea = new ConvertCompleteEventArgs(); cea.Result = ConvertResultType.Cancelled; ConvertCompleted?.Invoke(parameter, cea); return(r); } var result = await onConvertTask(parameter); return(result); }
/// <summary> /// 非同期で変換を行うためのタスクメソッド。 /// </summary> /// <param name="parameter">変換パラメーター。</param> /// <returns>ConvertResult のタスク。</returns> private Task <ConvertResultType> onConvertTask(IConvertParameter parameter) { var task = new Task <ConvertResultType>(() => { try { return(onConvert(parameter)); } catch (Exception e) { var result = new ConvertCompleteEventArgs(); result.Result = ConvertResultType.Failed; result.Error = e; ConvertCompleted?.Invoke(parameter, result); return(result.Result); } }); task.Start(); return(task); }
private static void WriteTsrg(Stream mojangMapSource, FileStream outputStream) { StreamReader txt = new StreamReader(mojangMapSource, Encoding.UTF8); StreamWriter buf = new StreamWriter(outputStream); bool loop = true; while (loop) { string s = txt.ReadLine(); if (s is object && s.Length > 0) { if (s.StartsWith("#", StringComparison.Ordinal)) { continue; } if (s.StartsWith(" ", StringComparison.Ordinal)) { // This is a field or a method. s = s.Substring(4); string[] parts = s.Split(new string[] { " " }, StringSplitOptions.RemoveEmptyEntries); Debug.Assert(parts.Length == 4); if (parts[1].EndsWith(")", StringComparison.Ordinal)) { // This is a method. string returnType = parts[0].Contains(":") ? parts[0].Split(":", true)[2] : parts[0]; // Split line numbers. string obfName = parts[3]; // Separate params from name. string methodName = parts[1].Substring(0, parts[1].IndexOf('(')); string @params = parts[1].Substring(parts[1].IndexOf('(') + 1, parts[1].IndexOf(')') - parts[1].IndexOf('(') - 1); returnType = TypeToDescriptor(returnType); @params = string.Join("", @params.Split(",", true).Select(TypeToDescriptor)); //if (!methodName.Equals("<init>") && !methodName.Equals("<clinit>")) buf.Write("\t" + obfName + " (" + @params + ")" + returnType + " " + methodName + "\n"); } else { // This is a field. string fieldName = parts[1]; string obfName = parts[3]; buf.Write("\t" + obfName + " " + fieldName + "\n"); } } else { // Classes have no dependencies. string[] parts = s.Split(" ", true); //Debug.Assert(parts.Length == 3); string className = parts[0].Replace("/", "."); string obfName = parts[2].Substring(0, parts[2].Length - 1); if (obfName.Contains(".")) { obfName = obfName.Replace(".", "/"); } buf.Write(obfName + " " + className.Replace('.', '/') + "\n"); // Write class entry. } } else { loop = false; } } buf.Close(); txt.Close(); /// ConvertCompleted.Invoke(null, new EventArgs()); }