Exemple #1
0
        void HandleMessage(byte[] bytes)
        {
            try
            {
                Log.Trace("Received message of length " + bytes.Length);

                ushort    domainId = 0;
                ushort    typeId   = 0;
                ulong     senderId = 0;
                BitStream stream   = bytes.ToBitStream();
                stream.ResetRead();
                SerializeHeaders(ref stream, ref domainId, ref typeId, ref senderId);

                using (HandlersLock.AcquireExclusiveUsing())
                {
                    Dictionary <ushort, HashSet <MessageHandler> > handlersByType;
                    if (!Handlers.TryGetValue(domainId, out handlersByType))
                    {
                        throw new Exception($"Received message for unhandled domain {domainId}.");
                    }

                    HashSet <MessageHandler> handlersForType;
                    if (!handlersByType.TryGetValue(typeId, out handlersForType))
                    {
                        throw new Exception($"Received message for unhandled type {typeId} in domain {domainId}.");
                    }

                    handlersForType.RemoveWhere(handler => !TryInvokeHandler(handler, stream, senderId));
                }
            }
            catch (Exception e)
            {
                Log.Error("Error handling message: " + e);
            }
        }
Exemple #2
0
        public void Init(object gameInstance)
        {
            var assembly = Assembly.GetExecutingAssembly();
            var version  = assembly.GetName().Version;

            // Set up resources that persist outside of sessions
            ThreadTracker.SetGameThread();

            Log.Log("Loading Plugin for SEPC version " + version);

            try
            {
                // Register our compilation symbol state
                SymbolRegistrar.SetDebugIfDefined();
                SymbolRegistrar.SetProfileIfDefined();

                // Register our SEPC-managed SessionComponents
                ComponentRegistrar.AddComponents(assembly);
                ComponentRegistrar.LoadOnInit(0, assembly);
            }
            catch (Exception error)
            {
                Log.Error(error);
            }
        }
Exemple #3
0
        /*
         * public void SendToFaction(BitStream data, ushort domainId, ushort typeId, long factionId, bool reliable = true)
         * {
         *  IMyFaction faction = MyAPIGateway.Session.Factions.TryGetFactionById(factionId);
         *  if (faction == null)
         *      Log.Error("Failed to find faction " + factionId);
         *  else
         *      foreach (ulong steamId in faction.SteamIds())
         *          SendToPlayer(data, domainId, typeId, steamId, reliable);
         * }
         */

        static void Send(BitStream data, ushort domainId, ushort typeId, MessageDestination dest, ulong destId = 0, bool reliable = true)
        {
            Log.Trace($"Sending {data.ByteLength} bytes to {dest}/{destId}/{domainId}/{typeId}");
            ulong senderId = (MyAPIGateway.Session.Player != null) ? MyAPIGateway.Session.Player.SteamUserId : 0;

            byte[] bytes = FormatMessage(data, domainId, typeId, senderId);

            MainThread.TryOnMainThread(() =>
            {
                if (!SendMessageToDest(bytes, dest, destId, reliable))
                {
                    Log.Error(new MessageTooLongException(bytes.Length));
                }
            });
        }
        public void Parse(string[] options)
        {
            _logger.Info("Parsing Command Line Options");
            foreach (var option in options)
            {
                _logger.Warn("Option " + option);
                var items = option.Split('=');
                var param = MatchParameter(items[0]);
                param.IsMatched = (param.IsDefault != true);
                param.Value     = items.Last();

                if (param.IsDefault)
                {
                    _logger.Error("Error Option Found: " + param.Name + "=" + param.Value);
                    _errors.Add(param);
                }
            }
        }
Exemple #5
0
        public void Init(object gameInstance)
        {
            try
            {
                var assembly = Assembly.GetExecutingAssembly();
                var version  = assembly.GetName().Version;

                Log.Log("Loading Plugin for GC version " + version);

                // Register our compilation symbol state
                SymbolRegistrar.SetDebugIfDefined();
                SymbolRegistrar.SetProfileIfDefined();

                // Register our SEPC-managed SessionComponents
                ComponentRegistrar.AddComponents(Assembly.GetExecutingAssembly());
                ComponentRegistrar.LoadOnInit((int)Session.Groups.Init, Assembly.GetExecutingAssembly());
            }
            catch (Exception error)
            {
                Log.Error(error);
            }
        }
 private void LogResultFailure(PurgeResult result)
 {
     _view.Error("Error Result Code " + result.resultCode);
     _view.Error("Error Result Message " + result.resultMsg);
 }