public string ArgString(string prefix = null) { string ret = ""; if (null == prefix) { for (int i = 0; i < Args.Count; i++) { var arg = Args[i]; ret += TypeDef.ConvertProtoType2CSType(arg.Type) + " " + arg.Name.ToLower(); if (i != Args.Count - 1) { ret += ","; } } } else { for (int i = 0; i < Args.Count; i++) { var arg = Args[i]; var temp = ("" == prefix) ? arg.Name.ToLower() : (prefix + "." + arg.Name.Pascalize()); ret += temp; if (i != Args.Count - 1) { ret += ","; } } } return(ret); }
public static void ClientConnectionImpl(TextWriter writer, string ClassName, string prefix, List <Function> Functions) { writer.WriteLine("// Generated by the rpc compiler. DO NOT EDIT!"); writer.WriteLine("using System;"); writer.WriteLine("using System.Collections;"); writer.WriteLine("using System.Threading.Tasks;"); writer.WriteLine("using System.Collections.Generic;"); writer.WriteLine("using Orleans;"); writer.WriteLine("using Network;"); writer.WriteLine("using DataContract;"); writer.WriteLine(); writer.WriteLine("namespace " + "GrainInterface"); writer.WriteLine("{"); writer.WriteLine(""); writer.WriteLine(" public partial class " + ClassName + ": IClientConnection"); writer.WriteLine(" {"); foreach (Function current in Functions) { writer.Write(Utility.CreateCSharpComment(" ", current.Comment)); var retString = "public Task "; var funcLine = string.Concat(new string[] { " ", retString, current.FunctionName, "(" }); for (int i = 0; i < current.Args.Count; i++) //foreach (var argument in current.Args) { var argument = current.Args[i]; funcLine = string.Concat(funcLine, TypeDef.ConvertProtoType2CSType(argument.Type), " ", argument.Name); if (i != current.Args.Count - 1) { funcLine += ", "; } } funcLine += ")"; writer.WriteLine(funcLine); writer.WriteLine(" \t{"); writer.WriteLine(" \t\t_subsManager.Notify(s => s." + current.FunctionName + "(" + current.ArgString("") + "));"); writer.WriteLine(" \t\treturn Task.CompletedTask;"); writer.WriteLine(" \t}"); writer.WriteLine(); } writer.WriteLine(" }"); writer.WriteLine("}"); }
public static void GrainInterface(TextWriter writer, string ClassName, string prefix, List <Function> Functions, bool needrv = true) { writer.WriteLine("// Generated by the rpc compiler. DO NOT EDIT!"); writer.WriteLine("using System;"); writer.WriteLine("using System.Collections;"); writer.WriteLine("using System.Threading.Tasks;"); writer.WriteLine("using System.Collections.Generic;"); writer.WriteLine("using Orleans;"); writer.WriteLine("using Network;"); writer.WriteLine("using DataContract;"); writer.WriteLine(); writer.WriteLine("namespace " + "GrainInterface"); writer.WriteLine("{"); writer.WriteLine(""); writer.WriteLine(" public partial interface " + ClassName + ": IGrainWithIntegerKey"); writer.WriteLine(" {"); foreach (Function current in Functions) { writer.Write(Utility.CreateCSharpComment(" ", current.Comment)); var retType = needrv ? ("Task<ReturnValues<" + TypeDef.ConvertProtoType2CSType(current.RetType) + ">>") : ("Task<" + TypeDef.ConvertProtoType2CSType(current.RetType) + ">"); var retString = (0 == current.RetType.CompareTo("void")) ? "Task " : retType; var funcLine = string.Concat(new string[] { " ", retString, current.FunctionName, "(" }); for (int i = 0; i < current.Args.Count; i++) //foreach (var argument in current.Args) { var argument = current.Args[i]; funcLine = string.Concat(funcLine, TypeDef.ConvertProtoType2CSType(argument.Type), " ", argument.Name); if (i != current.Args.Count - 1) { funcLine += ", "; } } funcLine += ");"; writer.WriteLine(funcLine); writer.WriteLine(); } writer.WriteLine(" }"); writer.WriteLine("}"); }
public static void ClientFunctions(TextWriter writer, string ClassName, string prefix, List <Function> Functions) { writer.WriteLine("// Generated by the rpc compiler. DO NOT EDIT!"); writer.WriteLine("using System;"); writer.WriteLine("using System.Collections;"); writer.WriteLine("using System.Threading.Tasks;"); writer.WriteLine("using System.Collections.Generic;"); writer.WriteLine("using Network;"); writer.WriteLine("using ProtoBuf;"); writer.WriteLine("using DataContract;"); writer.WriteLine(); writer.WriteLine("namespace " + "GameServer"); writer.WriteLine("{"); writer.WriteLine(""); writer.WriteLine("\tpublic static partial class " + ClassName); writer.WriteLine("\t{"); foreach (Function current in Functions) { writer.Write(Utility.CreateCSharpComment(" ", current.Comment)); var args = "(IConnection conn"; foreach (var argument in current.Args) { args += ", " + TypeDef.ConvertProtoType2CSType(argument.Type) + " " + argument.Name; } args += ")"; writer.WriteLine("\t\tpublic static void " + current.FunctionName + args); writer.WriteLine("\t\t{"); writer.WriteLine("\t\t\t" + "var d = new " + Utility.GetArgType(prefix, current) + "();" ); foreach (var argument in current.Args) { writer.WriteLine("\t\t\td." + argument.Name.Pascalize() + " = " + argument.Name + ";"); } writer.WriteLine(""); writer.WriteLine("\t\t\tvar desc = new ServiceDesc();"); writer.WriteLine("\t\t\tdesc.Type = 1;"); writer.WriteLine("\t\t\tdesc.FuncId = " + current.Id + ";"); writer.WriteLine("\t\t\tconn.Send(desc, d);"); writer.WriteLine("\t\t}"); writer.WriteLine(""); } writer.WriteLine("\t}"); writer.WriteLine("}"); }
public static void ServerInterface(TextWriter writer, string ClassName, string prefix, List <Function> Functions) { writer.WriteLine("// Generated by the rpc compiler. DO NOT EDIT!"); writer.WriteLine("using System;"); writer.WriteLine("using System.Collections;"); writer.WriteLine("using System.Threading.Tasks;"); writer.WriteLine("using System.Collections.Generic;"); writer.WriteLine("using Network;"); writer.WriteLine("using ProtoBuf;"); writer.WriteLine("using DataContract;"); writer.WriteLine(); writer.WriteLine("namespace " + "GameServer"); writer.WriteLine("{"); writer.WriteLine(""); writer.WriteLine(" interface " + ClassName); writer.WriteLine(" {"); foreach (Function current in Functions) { if (CallDirection.Client2GameServer != current.Direction) { continue; } writer.Write(Utility.CreateCSharpComment(" ", current.Comment)); var retString = (0 == current.RetType.CompareTo("void")) ? "void " : "Task<ReturnValues<" + TypeDef.ConvertProtoType2CSType(current.RetType) + ">> "; var funcLine = string.Concat(new string[] { " ", retString, current.FunctionName, " (IConnection conn" }); foreach (var argument in current.Args) { funcLine = string.Concat(funcLine, ", ", TypeDef.ConvertProtoType2CSType(argument.Type), " ", argument.Name); } funcLine += ");"; writer.WriteLine(funcLine); writer.WriteLine(); } writer.WriteLine(" }"); writer.WriteLine("}"); }
public static string GetAsCSArgument(Function func) { string text = ""; for (int i = 0; i < func.Args.Count - 1; i++) { string text2 = text; text = string.Concat(new string[] { text2, TypeDef.ConvertProtoType2CSType(func.Args[i].Type), " ", func.Args[i].Name, ", " }); } return(text + TypeDef.ConvertProtoType2CSType(func.Args[func.Args.Count - 1].Type) + " " + func.Args[func.Args.Count - 1].Name); }
public static void ClientInterface(TextWriter writer, string ClassName, string prefix, List <Function> Functions) { writer.WriteLine("// Generated by the rpc compiler. DO NOT EDIT!"); writer.WriteLine("using System;"); writer.WriteLine("using System.Collections;"); writer.WriteLine("using System.Collections.Generic;"); writer.WriteLine("using Network;"); writer.WriteLine("using ProtoBuf;"); writer.WriteLine("using DataContract;"); writer.WriteLine(); writer.WriteLine(""); writer.WriteLine("public partial interface " + ClassName); writer.WriteLine("{"); foreach (Function current in Functions) { writer.Write(Utility.CreateCSharpComment("\t", current.Comment)); var funcLine = string.Concat(new string[] { "\t", "void ", current.FunctionName, "(IConnection conn" }); foreach (var argument in current.Args) { funcLine = string.Concat(funcLine, ", ", TypeDef.ConvertProtoType2CSType(argument.Type), " ", argument.Name.Pascalize()); } funcLine += ");"; writer.WriteLine(funcLine); writer.WriteLine(); } writer.WriteLine("}"); }
public static void ServerFunctions2(TextWriter writer, string ClassName, string prefix, List <Function> Functions) { writer.WriteLine("// Generated by the rpc compiler. DO NOT EDIT!"); writer.WriteLine("using System;"); writer.WriteLine("using System.Collections;"); writer.WriteLine("using System.Collections.Generic;"); writer.WriteLine("using Network;"); writer.WriteLine("using ProtoBuf;"); writer.WriteLine("using DataContract;"); writer.WriteLine(); //writer.WriteLine("namespace " + "Watcher"); //writer.WriteLine("{"); writer.WriteLine(""); writer.WriteLine("public static partial class " + ClassName); writer.WriteLine("{"); foreach (Function current in Functions) { writer.Write(Utility.CreateCSharpComment("\t", current.Comment)); bool hasReturnValue = (0 != current.RetType.CompareTo("void")); var retVal = hasReturnValue ? "NetworkPacketCoroutine<" + Utility.GetRetType(prefix, current) + "> " : "void "; var fun = "\tpublic static " + retVal + current.FunctionName; var args = "(IConnection conn"; foreach (var argument in current.Args) { args += ", " + TypeDef.ConvertProtoType2CSType(argument.Type) + " " + argument.Name; } args += ")"; writer.WriteLine(fun + args); writer.WriteLine("\t{"); if (hasReturnValue) { writer.WriteLine("\t\tvar packageId = PackageDispatcher.GetNextPackageId();"); writer.WriteLine("\t\tvar cor = new " + retVal + "(() =>{ PackageDispatcher.UnregisterPackage(packageId); });"); writer.WriteLine("\t\tPackageDispatcher.RegisterPackage(packageId, (c, d, s) =>"); writer.WriteLine("\t\t{"); writer.WriteLine("\t\t\tvar reply = Serializer.Deserialize<" + Utility.GetRetType(prefix, current) + ">(s);"); writer.WriteLine("\t\t\tcor.SetResponse(d.Error,reply);"); writer.WriteLine("\t\t\tPackageDispatcher.UnregisterPackage(packageId);"); writer.WriteLine("\t\t});"); writer.WriteLine(); } writer.WriteLine("\t\tServiceDesc desc = new ServiceDesc();"); writer.WriteLine("\t\tdesc.FuncId = " + current.Id + ";"); if (hasReturnValue) { writer.WriteLine("\t\tdesc.PacketId = packageId;"); } writer.WriteLine("\t\tvar arg = new " + Utility.GetArgType(prefix, current) + "();"); foreach (var argument in current.Args) { writer.WriteLine("\t\targ." + argument.Name.Pascalize() + " = " + argument.Name + ";"); } writer.WriteLine("\t\tconn.Send(desc, arg);"); writer.WriteLine(); if (hasReturnValue) { writer.WriteLine("\t\treturn cor;"); } writer.WriteLine("\t}"); writer.WriteLine(); } writer.WriteLine("}"); }