public void baseCall(string methodname, params object[] arguments)
{
if(KBEngineApp.app.currserver == "loginapp")
{
Dbg.ERROR_MSG(className + "::baseCall(" + methodname + "), currserver=!" + KBEngineApp.app.currserver);
return;
}
Method method = null;
if(!EntityDef.moduledefs[className].base_methods.TryGetValue(methodname, out method))
{
Dbg.ERROR_MSG(className + "::baseCall(" + methodname + "), not found method!");
return;
}
UInt16 methodID = method.methodUtype;
if(arguments.Length != method.args.Count)
{
Dbg.ERROR_MSG(className + "::baseCall(" + methodname + "): args(" + (arguments.Length) + "!= " + method.args.Count + ") size is error!");
return;
}
baseMailbox.newMail();
baseMailbox.bundle.writeUint16(methodID);
try
{
for(var i=0; i<method.args.Count; i++)
{
if(method.args[i].isSameType(arguments[i]))
{
method.args[i].addToStream(baseMailbox.bundle, arguments[i]);
}
else
{
throw new Exception("arg" + i + ": " + method.args[i].ToString());
}
}
}
catch(Exception e)
{
Dbg.ERROR_MSG(className + "::baseCall(method=" + methodname + "): args is error(" + e.Message + ")!");
baseMailbox.bundle = null;
return;
}
baseMailbox.postMail(null);
}