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); } }
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); } }
/* * 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); } } }
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); }