コード例 #1
0
        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();
        }
コード例 #2
0
 internal static PipeFunction ResolveFunction(string name, GetNextPipeFunctionResolverDelegate next)
 {
     if (name[0] == '%')
     {
         return(PipeFunction.Create(obj => {
             return FormatPrintf(obj, name);
         }));
     }
     return(next()(name, next));
 }
コード例 #3
0
        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;
        }
コード例 #4
0
 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);
 }
コード例 #5
0
 public static void RegisterFunction(string name, PipeFunction fn)
 {
     CommonHelper.ConfirmNotNull(name, "name");
     CommonHelper.ConfirmNotNull(fn, "fn");
     functions.TryAdd(name, fn);
 }
コード例 #6
0
 public PipeMessage(PipeCommand cmd, PipeFunction fun = 0, byte[] data = null) : this(cmd, fun, 0, data, 0)
 {
 }