public delegate void PipeCloseFunction(); // pipe closed 함수포인터 public PipeServer(string pipeName, PipeFunction pipeFunction, PipeCloseFunction pipeCloseFunction = null) { this.serverList = new List <PipeBaseForServer>(); this.pipeName = pipeName; this.pipeFunction = pipeFunction; this.pipeCloseFunction = pipeCloseFunction; CreateServer(); }
internal static PipeFunction ResolveFunction(string name, GetNextPipeFunctionResolverDelegate next) { if (name[0] == '%') { return(PipeFunction.Create(obj => { return FormatPrintf(obj, name); })); } return(next()(name, next)); }
public PipeMessage(PipeCommand cmd, PipeFunction fun, int sockid, byte[] data, int extra = 0) { Header = new PipeMessageHeader { Command = cmd, Function = fun, SocketId = sockid, DataSize = data?.Length ?? 0, Extra = extra, }; Data = data; }
static EvaluationContext() { foreach (MethodInfo method in typeof(BuiltInPipeFunction).GetMethods(BindingFlags.Static | BindingFlags.Public)) { BuiltInPipeFunctionAliasAttribute attribute = method.GetCustomAttribute <BuiltInPipeFunctionAliasAttribute>(); if (attribute == null || !attribute.UseAliasOnly) { RegisterFunction(method.Name.ToLowerInvariant(), PipeFunction.Create(method)); } if (attribute != null) { RegisterFunction(attribute.Alias, PipeFunction.Create(method)); } } RegisterFunctionResolver(BuiltInPipeFunction.ResolveFunction); }
public static void RegisterFunction(string name, PipeFunction fn) { CommonHelper.ConfirmNotNull(name, "name"); CommonHelper.ConfirmNotNull(fn, "fn"); functions.TryAdd(name, fn); }
public PipeMessage(PipeCommand cmd, PipeFunction fun = 0, byte[] data = null) : this(cmd, fun, 0, data, 0) { }