Example #1
0
 protected override void Dispose(bool disposing)
 {
     if (FallbackFactory != null && Fallback != null)
     {
         FallbackFactory.ReleaseFallback(Fallback);
     }
     base.Dispose(disposing);
 }
Example #2
0
        protected override void DoWork()
        {
            if (Session == null)
            {
                return;
            }

            while (Session.IncomingMessageQueue.Count > 0)
            {
                Message msg;

                if (!Session.IncomingMessageQueue.TryDequeue(out msg))
                {
                    continue;
                }

                Message transformed;
                IMessageParseFactory factory;
                if (!MessageFactories.TryGetValue(msg.MessageOpCode, out factory) || !factory.TryParse(msg.MessageOpCode, msg, out transformed))
                {
                    if (!FallbackFactory.TryParse(msg.MessageOpCode, msg, out transformed))
                    {
                        long tmpVal;
                        if (long.TryParse(msg.MessageOpCodeEnum.ToString(), out tmpVal))
                        {
                            _msgLogger.Trace(BitConverter.ToString(msg.Data).Replace("-", ""));
                            _msgLogger.Trace("{0}", msg.OpcodeCount);
                            _msgLogger.Trace("{0}", msg.SourcePacketType);
                        }
                        continue;
                    }
                }

                Messages.Add(transformed);


                //Func<Message, Message> createFunc = null;
                //Message transformed = null;
                //if (RegisteredObjects.TryGetValue(msg.MessageOpCode, out createFunc) &&
                //    (transformed = createFunc(msg)) != null)
                //{
                //    Messages.Add(transformed);

                SceneCreateObject obj = transformed as SceneCreateObject;
                if (obj != null)
                {
                    string objToCreate = null;
                    if (_crcMap.TryGetValue((uint)obj.ObjectCRC, out objToCreate))
                    {
                        _creatObjlogger.Debug("create obj {0}", objToCreate);
                    }
                }

                if (msg.MessageOpCodeEnum == MessageOp.CmdStartScene)
                {
                    _logger.Info("Got scene start! Trn: {0}", ((SceneStart)transformed).TerrainMap);
                }
                //}
                //else
                //{
                //    _logger.Warn("Unable to find registered message factory for {0}({1:X})", msg.MessageOpCodeEnum, msg.MessageOpCode);
                //}
            }

            Thread.Sleep(300);
        }