예제 #1
0
 static void ReportFailure(int result)
 {
     if (!GGPO.SUCCEEDED(result))
     {
         OnLog?.Invoke(GGPO.GetErrorCodeMessage(result));
     }
 }
예제 #2
0
        string[] ReadCode(String strName)
        {
            try
            {
                List <String> lstSource = new List <String>();

                if (OnLog != null)
                {
                    OnLog.Invoke(String.Format("Reading {0}...", strName));
                }
                foreach (String strFile in Directory.GetFiles(String.Format(@"Source\{0}", strName), "*.cs", SearchOption.AllDirectories))
                {
                    if (OnLog != null)
                    {
                        OnLog.Invoke(String.Format("Reading: {0}", strFile));
                    }
                    String strContent = File.ReadAllText(strFile);

                    if (!String.IsNullOrEmpty(strContent))
                    {
                        lstSource.Add(strContent);
                    }
                }
                if (OnLog != null)
                {
                    OnLog.Invoke(String.Format("{0} reading finished.", strName));
                }
                return(lstSource.ToArray());
            }
            catch { }
            return(null);
        }
예제 #3
0
 private void Node_OnStop(Guid g)
 {
     if (Peers.TryRemove(g, out T peer))
     {
         OnLog?.Invoke($"Peer disconnected: {peer.RemoteEndpoint}");
     }
 }
예제 #4
0
        public int Login()
        {
            MakeLoginPacket(salt, out buffer, out int len);
            SendPacket(buffer, len);
            int recv_len = ReceivePacket();

            if (recv_len == -5)
            {
                return(-5);
            }
            if (recv_len <= 0)
            {
                OnLog.Invoke("login", "Login timeout.", false);
                return(-1);
            }

            if (buffer[0] != 0x04)
            {
                if (buffer[0] == 0x05)
                {
                    OnLog.Invoke("login", "Login fail, wrong password or username!", false);
                }
                else
                {
                    OnLog.Invoke("login", string.Format("Login fail, unrecognized responese: {0:x}", buffer[0]), false);
                }
                CloseSocket();
                return(-1);
            }

            Buffer.BlockCopy(buffer, 0x17, tail, 0, 16);
            OnLog.Invoke("login", "Login success!", false);
            return(0);
        }
예제 #5
0
        void Log(LogLevel level, Action <TraceRecord> traceAction, [CallerMemberName] string member = "", [CallerLineNumber] int line = 0)
        {
            // Check if this log level is enabled and client is subscribed to the OnLog event
            if (OnLog == null || this.LogLevel >= level)
            {
                return;
            }

            TraceRecord tr = new TraceRecord()
            {
                Level = level
            };

            traceAction(tr);
            string message = $"{member}() line {line}: {tr.Message}";

            if (UseSynchronizationContextForEvents && syncContext != null && syncContext != SynchronizationContext.Current)
            {
                syncContext?.Post(o => OnLog?.Invoke(this, new LogEventArgs()
                {
                    LogLevel = level, Message = message, Exception = tr.Exception
                }), null);
            }
            else
            {
                OnLog?.Invoke(this, new LogEventArgs()
                {
                    LogLevel = level, Message = message, Exception = tr.Exception
                });
            }
        }
예제 #6
0
        public void Log(LogVerbosity verbosity, string sender, string message, object payload = null)
        {
            var log = new Log()
            {
                Sender = sender, Message = message, Payload = payload
            };

            OnLog?.Invoke(this, log);
            _logs.Add(log);

            if (_logs.Count > 250)
            {
                _logs.RemoveAt(0);
            }
            //if (Debugger.IsAttached) return;
            try
            {
                using (var eventLog = new EventLog("Application")
                {
                    Source = _name
                })
                {
                    eventLog.WriteEntry($"{sender} {message}", ToEventLog(verbosity), 0);
                }
            }
            catch { }
        }
예제 #7
0
        public SerializingProducer(Producer producer, ISerializer <TKey> keySerializer, ISerializer <TValue> valueSerializer)
        {
            this.producer   = producer;
            KeySerializer   = keySerializer;
            ValueSerializer = valueSerializer;

            // TODO: allow serializers to be set in the producer config IEnumerable<KeyValuePair<string, object>>.

            if (KeySerializer == null)
            {
                if (typeof(TKey) != typeof(Null))
                {
                    throw new ArgumentNullException("Key serializer must be specified.");
                }
            }

            if (ValueSerializer == null)
            {
                if (typeof(TValue) != typeof(Null))
                {
                    throw new ArgumentNullException("Value serializer must be specified.");
                }
            }

            producer.OnLog        += (sender, e) => OnLog?.Invoke(sender, e);
            producer.OnError      += (sender, e) => OnError?.Invoke(sender, e);
            producer.OnStatistics += (sender, e) => OnStatistics?.Invoke(sender, e);
        }
예제 #8
0
        private async Task print(IPAddress ip, BmpInfo bmpInfo)
        {
            TcpClientInfo client = IPClientBmpMap[ip].TcpClientInfo;

            try {
                OnLog?.Invoke(ip, bmpInfo.bmp, $"正在尝试打印", LogLevel.Info);

                NetworkStream stream = client.Client.GetStream();

                // 写入打印数据流
                await stream.WriteAsync(bmpInfo.printingBytes, 0, bmpInfo.printingBytes.Length);

                lock (IPClientBmpMap) {
                    client.IdleTime = 0;
                    IPClientBmpMap[ip].Queue.Dequeue();
                }

                OnLog?.Invoke(ip, bmpInfo?.bmp, "打印成功", LogLevel.Success);

                await prePrint(ip);
            }
            catch (Exception e) {
                OnLog?.Invoke(ip, null, $"写入数据发生错误 {e.Message}", LogLevel.Error);

                lock (IPClientBmpMap) {
                    closeIP(ip);
                }

                OnLog?.Invoke(ip, null, "重新尝试连接", LogLevel.Info);
                await Connect(ip);
            }
        }
예제 #9
0
        public async Task Connect(IPAddress ip)
        {
            ClientBmpInfo clientBmpInfo;

            lock (IPClientBmpMap) {
                addIP(ip);

                clientBmpInfo = IPClientBmpMap[ip];

                OnLog?.Invoke(ip, null, null, LogLevel.Info);

                if (clientBmpInfo.TcpClientInfo != null)
                {
                    OnLog?.Invoke(ip, null, "已连接", LogLevel.Success);
                    return;
                }
                if (clientBmpInfo.IsConnecting)
                {
                    OnLog?.Invoke(ip, null, "正在连接中", LogLevel.Info);
                    return;
                }
                clientBmpInfo.IsConnecting = true;
            }

            await connect(ip, clientBmpInfo);
        }
예제 #10
0
        private static void ParsePicture(Stream fs, ref FlacInfo info)
        {
            var pictureType       = fs.BEInt32();
            var mimeStringLength  = (int)fs.BEInt32();
            var mimeType          = Encoding.ASCII.GetString(fs.ReadBytes(mimeStringLength), 0, mimeStringLength);
            var descriptionLength = (int)fs.BEInt32();
            var description       = Encoding.UTF8.GetString(fs.ReadBytes(descriptionLength), 0, descriptionLength);
            var pictureWidth      = fs.BEInt32();
            var pictureHeight     = fs.BEInt32();
            var colorDepth        = fs.BEInt32();
            var indexedColorCount = fs.BEInt32();
            var pictureDataLength = fs.BEInt32();

            fs.Seek(pictureDataLength, SeekOrigin.Current);
            info.TrueLength -= pictureDataLength;
            info.HasCover    = true;
            if (pictureType > 20)
            {
                pictureType = 21;
            }
            OnLog?.Invoke($" | picture type: {PictureTypeName[pictureType]}");
            OnLog?.Invoke($" | picture format type: {mimeType}");
            if (descriptionLength > 0)
            {
                OnLog?.Invoke($" | description: {description}");
            }
            OnLog?.Invoke($" | attribute: {pictureWidth}px*{pictureHeight}px@{colorDepth}-bit");
            if (indexedColorCount != 0)
            {
                OnLog?.Invoke($" | indexed-color color: {indexedColorCount}");
            }
        }
예제 #11
0
        public async Task Print(IPAddress ip, Bitmap bmp, int colorDepth)
        {
            await Task.Run(async() => {
                BmpInfo bmpInfo = null;
                // 获得需要打印的图片数据
                bmpInfo = new BmpInfo {
                    bmp           = bmp,
                    printingBytes = await getPrintingBytes(bmp, colorDepth)
                };

                lock (IPClientBmpMap) {
                    addIP(ip);

                    IPClientBmpMap[ip].Queue.Enqueue(bmpInfo);

                    OnLog?.Invoke(ip, bmpInfo?.bmp, "已进入打印队列", LogLevel.Success);

                    // 如果正在打印则不做任何操作, 队列中的数据会自动打印
                    if (IPClientBmpMap[ip].IsPrinting)
                    {
                        return;
                    }
                    IPClientBmpMap[ip].IsPrinting = true;
                }
                await prePrint(ip);
            });
        }
예제 #12
0
        public void Log(string s, Verbosity v = Verbosity.Info, string prefix = "")
        {
            if (v < Verbosity && v < FileWriteVerbosity)
            {
                return;
            }
            if (v >= Verbosity)
            {
                ix++;
                var item = new Item(v, ix, DateTime.Now, prefix, s);
                //lock (itemsLocker) {
                //    if (cnt < bufferSize) cnt++;
                //    else items.Dequeue();
                //    items.Enqueue(item);
                //}
                OnLog?.Invoke(this, item);
            }
#if WRITE_LOG_TO_FILE
            if (v >= FileWriteVerbosity)
            {
                var pfx = $"{Prefix}.{prefix}".Trim('.');
                writeLineToCurLogFile($"{DateTime.Now:T} [{VerbosityDescriptions[v]}] {pfx} : {s}");
            }
#endif
        }
예제 #13
0
        private void ListeningMq(RedisReliableQueue <string> redisReliableQueue)
        {
            while (true)
            {
                try
                {
                    var queue = redisReliableQueue;
                    var msg   = queue.TakeOne(1);
                    if (msg != null)
                    {
                        var message = JsonConvert.DeserializeObject <TransportMessage>(msg);

                        message.Headers.Add(Headers.Group, _queueName);

                        OnMessageReceived?.Invoke(message.GetId(), message);

                        // 确认消息
                        queue.Acknowledge(new[] { msg });
                    }
                    else
                    {
                        // 没事干,歇一会
                        System.Threading.Tasks.Task.Delay(1000);
                    }
                }
                catch (Exception ex)
                {
                    OnLog?.Invoke(this, new LogMessageEventArgs()
                    {
                        LogType = MqLogType.ExceptionReceived, Reason = $"{_queueName}-{redisReliableQueue.Key}-{ex.Message}"
                    });
                    //throw;
                }
            }
        }
예제 #14
0
 internal void Log(LogLevels level, string message)
 {
     if (LogLevel.HasFlag(level))
     {
         OnLog?.Invoke(this, new LogEventArgs(level, message));
     }
 }
예제 #15
0
        public void Log(string message, LoggerSeverity severity, object reference = null)
        {
            LoggerSeverity getMostSevere(int s)
            {
                int i = 0;

                while (s != 0)
                {
                    s /= 2;
                    i++;
                }

                return((LoggerSeverity)(1 << (i - 1)));
            }

            int sev = ((int)severity & (int)Take);

            if (sev == 0)
            {
                return;
            }

            Console.ForegroundColor = _colorTable[getMostSevere(sev)];
            Console.WriteLine($"[{severity.ToString()}][{message}]");
            Console.ResetColor();

            OnLog?.Invoke(message, severity, reference);
        }
 public void ShutDown()
 {
     IsRunning = false;
     SaveData();
     DeactivateModules();
     OnLog?.Invoke(this, new OnLogHandlerArgs("Service Shut down", LogReason.STATUSCHANGE));
 }
예제 #17
0
        public MatroskaData()
        {
            var mkvToolnixPath = RegistryStorage.Load(@"Software\ChapterTool", "mkvToolnixPath");

            // saved path not found.
            if (string.IsNullOrEmpty(mkvToolnixPath))
            {
                try
                {
                    mkvToolnixPath = GetMkvToolnixPathViaRegistry();
                    RegistryStorage.Save(mkvToolnixPath, @"Software\ChapterTool", "mkvToolnixPath");
                }
                catch (Exception exception)
                {
                    // no valid path found in Registry
                    OnLog?.Invoke($"Warning: {exception.Message}");
                }

                // Installed path not found.
                if (string.IsNullOrEmpty(mkvToolnixPath))
                {
                    mkvToolnixPath = Path.GetDirectoryName(System.Reflection.Assembly.GetExecutingAssembly().Location);
                }
            }
            if (mkvToolnixPath != null)
            {
                _mkvextractPath = Path.Combine(mkvToolnixPath, "mkvextract.exe");
            }
            if (!File.Exists(_mkvextractPath))
            {
                OnLog?.Invoke($"Mkvextract Path: {_mkvextractPath}");
                throw new Exception("无可用 MkvExtract, 安装个呗~");
            }
        }
        private void SetUpHeartbeatModule()
        {
            var heartbeatModule = new HeartbeatModule(GetKnownChanges);

            this.heartbeatModule = heartbeatModule;

            heartbeatModule.OnHeartbeatAnswerReceived += (sender, args) =>
            {
                var receiverId = args.HeartbeatReq.SenderUID;
                OnLog?.Invoke(this, new OnLogHandlerArgs(
                                  "Heartbeat answer received from " + receiverId + " with " + args.HeartbeatReq.KnownChanges.Count + " known changes",
                                  LogReason.RABBITMQ_COMMUNICATION
                                  ));
                metaDataModule.SendMetaDataShareRequest(receiverId, CreateMetaDataRequest(receiverId));
            };

            heartbeatModule.OnOutdatedLocalChanges += (sender, args) =>
            {
                OnLog?.Invoke(this, new OnLogHandlerArgs(
                                  $"Found {args.OutdatedLocalChanges.Count} outdated local changes from: " +
                                  string.Join(", ", args.OutdatedLocalChanges),
                                  LogReason.RABBITMQ_COMMUNICATION));
                updaterModule.NotifyAboutOutdatedAlienChanges(args.OutdatedLocalChanges);
            };
        }
예제 #19
0
 public void Log(LogLevel logLevel, object message,
                 [CallerFilePath] string callingFilePath      = default,
                 [CallerMemberName] string callingMethod      = default,
                 [CallerLineNumber] int callingFileLineNumber = 0)
 {
     OnLog?.Invoke(this, logLevel, message, callingFilePath, callingMethod, callingFileLineNumber);
 }
        private void OnMetaDataExchangeReceived(IMetaDataShareModule sender, MetaDataAnswerReceivedArgs args)
        {
            OnLog?.Invoke(this, new OnLogHandlerArgs(
                              $"Received MetaDataExchange with {args.MetaDataAnswer?.DomesticChanges.Changes.Count} domestic changes" +
                              $" and changes from {args.MetaDataAnswer.AlienChanges.Count} other services",
                              LogReason.RABBITMQ_COMMUNICATION));

            var changes = new List <ChangeSet>();

            if (args.MetaDataAnswer.AlienChanges != null)
            {
                changes.AddRange(args.MetaDataAnswer.AlienChanges);
            }

            if (args.MetaDataAnswer.DomesticChanges != null)
            {
                changes.Add(args.MetaDataAnswer.DomesticChanges);
            }

            foreach (var changeSet in changes)
            {
                var changeData = changeSet.Changes.OrderBy(c => c.TimeStamp).ToList();

                lock (data)
                {
                    fileManagerModule.ApplyChanges(changeData);
                    data.AddSortedAlienChanges(changeSet.ServiceUID, changeData);
                    SaveData();
                }
            }
        }
예제 #21
0
        public int Alive()
        {
            randtimes = rand.Next(0, 32767) % 0xFFFF;
            for (int i = 0; i < 3; i++)
            {
                MakeKeepAlivePacket(out buffer, i, randtimes);
                SendPacket(buffer, i == 0 ? 38 : 40);
                int r = ReceivePacket();
                if (r == -5)
                {
                    return(-5);
                }
                if (r < 0)
                {
                    OnLog.Invoke("alive", "Alive(" + i + ") timeout.", false);
                    return(-1);
                }

                if (buffer[0] != 0x07)
                {
                    OnLog.Invoke("alive", string.Format("Alive fail, unrecognized responese: {0:x}", buffer[0]), false);
                    return(-1);
                }

                if (i > 0)
                {
                    Buffer.BlockCopy(buffer, 16, flux, 0, 4);
                }
            }
            return(0);
        }
예제 #22
0
파일: Log.cs 프로젝트: gartoks/GameEngineX
        public static void WriteLine(string text, LogType messageType = LogType.Message)
        {
            DateTime timestamp = DateTime.Now;

            text = $"[{timestamp.Hour.ToString().PadLeft(2, '0')}:{timestamp.Minute.ToString().PadLeft(2, '0')}:{timestamp.Second.ToString().PadLeft(2, '0')}]: {text}";
            OnLog?.Invoke(text, LogTypeToColor(messageType));
        }
예제 #23
0
        public virtual O Execute <T, I, O>(I args) where T : AbstractCallable, ICallable
        {
            StackTraceCollector stackTraceCollector = new StackTraceCollector(this);
            var op = Get <ICallable, T>();

            try
            {
                var result = op.Apply <O>(args);
                this.CallStack = null;
                return(result);
            }
            catch (Exception e) // Dumps q# call-stack in case of exception if CallStack tracking was enabled
            {
                this.CallStack = stackTraceCollector.CallStack;
                OnLog?.Invoke($"Unhandled exception. {e.GetType().FullName}: {e.Message}");
                bool first = true;
                foreach (StackFrame sf in this.CallStack)
                {
                    var msg = (first ? " ---> " : "   at ") + sf.ToStringWithBestSourceLocation();
                    OnLog?.Invoke(msg);
                    first = false;
                }
                OnLog?.Invoke("");

                throw;
            }
            finally
            {
                stackTraceCollector.Dispose();
            }
        }
예제 #24
0
        private void Log(string level, string who, string message)
        {
            var logLine = $"{DateTime.Now} [{level}] {who}: {message}";

            _logWriter.WriteLine(logLine);
            OnLog?.Invoke(logLine);
        }
예제 #25
0
        private void log(string message, bool includeDate = false, bool includeTime = false)
        {
            if (Logging)
            {
                string dateTimeStr = "";
                if (includeDate && includeTime)
                {
                    dateTimeStr = $"{DateTime.UtcNow}";
                }
                else if (includeDate)
                {
                    dateTimeStr = $"{DateTime.UtcNow.ToShortDateString()}";
                }
                else
                {
                    dateTimeStr = $"{DateTime.UtcNow.ToShortTimeString()}";
                }

                if (includeDate || includeTime)
                {
                    Console.WriteLine($"[TwitchLib, {Assembly.GetExecutingAssembly().GetName().Version.ToString()} - {dateTimeStr}] {message}");
                }
                else
                {
                    Console.WriteLine($"[TwitchLib, {Assembly.GetExecutingAssembly().GetName().Version.ToString()}] {message}");
                }

                OnLog?.Invoke(this, new OnLogArgs()
                {
                    BotUsername = ConnectionCredentials.TwitchUsername, Data = message, DateTime = DateTime.UtcNow
                });
            }
        }
예제 #26
0
        public virtual TResponse Run <TResponse>
        (
            ITasq <TResponse> tasq
        )
        {
            TResponse retVal;

            OnLog?.Invoke(this, TasqProcess.Start, new LogEventHandlerEventArgs(tasq));

            var resolvedHandler = GetHandlerDetail(tasq);

            OnLog?.Invoke(this, TasqProcess.Start, new LogEventHandlerEventArgs(resolvedHandler.Handler));

            if (resolvedHandler.Handler is TasqHandlerAsync)
            {
                retVal = RunAsync(tasq).Result;
            }
            else
            {
                TasqHandler tasqHandlerInstance = (TasqHandler)resolvedHandler.Handler;


                tasqHandlerInstance.Initialize(tasq);
                tasqHandlerInstance.BeforeRun(tasq);
                retVal = (TResponse)tasqHandlerInstance.XRun(null, tasq);
                tasqHandlerInstance.AfterRun(tasq);
            }

            return(retVal);
        }
예제 #27
0
 private void Log(string str)
 {
     if (OnLog != null)
     {
         OnLog.Invoke(str);
     }
 }
예제 #28
0
        void Log(LogLevel level, Action <TraceRecord> traceAction, [CallerMemberName] string member = "", [CallerLineNumber] int line = 0)
        {
            // Check if this log level is enabled and client is subscribed to the OnLog event
            if (OnLog == null || (int)LogLevel >= (int)level)
            {
                return;
            }

            TraceRecord tr = new TraceRecord()
            {
                Level = level
            };

            traceAction(tr);


            // StringBuild is faster than $"{member}() line {line}: {tr.Message}"
            var sb = new StringBuilder(member.Length + tr.Message.Length + 100);

            sb.Append(member);
            sb.Append("() line ");
            sb.Append(line);
            sb.Append(": ");
            sb.Append(tr.Message);

            OnLog?.Invoke(this, new LogEventArgs()
            {
                LogLevel = level, Message = sb.ToString(), Exception = tr.Exception
            });
        }
예제 #29
0
파일: Logger.cs 프로젝트: kwanboy/cspspemu
        private Logger Log(Level level, object format, params object[] Params)
        {
            if (Enabled || OnGlobalLog != null)
            {
                var        stackTrace  = new StackTrace();
                StackFrame stackFrame  = null;
                var        stackFrames = stackTrace.GetFrames();
                if (stackFrames != null)
                {
                    foreach (var frame in stackFrames)
                    {
                        if (frame.GetMethod().DeclaringType != typeof(Logger))
                        {
                            stackFrame = frame;
                            break;
                        }
                    }
                }

                if (Enabled)
                {
                    OnLog?.Invoke(level, Format(format.ToString(), Params), stackFrame);
                }

                OnGlobalLog?.Invoke(Name, level, Format(format.ToString(), Params), stackFrame);
            }

            return(this);
        }
예제 #30
0
        /*
         * vw_log_game_state --
         *
         * Log the gamestate.  Used by the synctest debugging tool.
         */

        static unsafe bool Vw_log_game_state(string filename, void *buffer, int length)
        {
            OnLog?.Invoke($"vw_log_game_state {filename}");

            var gamestate = new GameState();

            GameState.FromBytes(gamestate, Helper.ToArray(buffer, length));
            string fp = "";

            fp += "GameState object.\n";
            fp += string.Format("  bounds: {0},{1} x {2},{3}.\n", gamestate._bounds.xMin, gamestate._bounds.yMin,
                                gamestate._bounds.xMax, gamestate._bounds.yMax);
            fp += string.Format("  num_ships: {0}.\n", gamestate._ships.Length);
            for (int i = 0; i < gamestate._ships.Length; i++)
            {
                var ship = gamestate._ships[i];
                fp += string.Format("  ship {0} position:  %.4f, %.4f\n", i, ship.position.x, ship.position.y);
                fp += string.Format("  ship {0} velocity:  %.4f, %.4f\n", i, ship.velocity.x, ship.velocity.y);
                fp += string.Format("  ship {0} radius:    %d.\n", i, ship.radius);
                fp += string.Format("  ship {0} heading:   %d.\n", i, ship.heading);
                fp += string.Format("  ship {0} health:    %d.\n", i, ship.health);
                fp += string.Format("  ship {0} cooldown:  %d.\n", i, ship.cooldown);
                fp += string.Format("  ship {0} score:     {1}.\n", i, ship.score);
                for (int j = 0; j < ship.bullets.Length; j++)
                {
                    fp += string.Format("  ship {0} bullet {1}: {2} {3} -> {4} {5}.\n", i, j,
                                        ship.bullets[j].position.x, ship.bullets[j].position.y,
                                        ship.bullets[j].velocity.x, ship.bullets[j].velocity.y);
                }
            }
            File.WriteAllText(filename, fp);
            return(true);
        }