public HFTArgChecker(HFTLog log, string prefix) { log_ = log; prefix_ = prefix + "-"; dashPrefix_ = "--" + prefix; noPrefix_ = "--no-" + prefix; }
public Informer(HFTLog log, SharedState sharedState, string url, string domain) { sharedState_ = sharedState; log_ = log; url_ = url; domain_ = domain; }
/** * Represents a group of games. * * Normally a group only has 1 game but * for situations where we need more than * 1 game ... * */ public HFTGameGroup(string gameId, HFTGameManager relayServer) { log_ = new HFTLog("HFTGameGroup[" + gameId + "]"); gameId_ = gameId; //this.runtimeInfo = gameDB.getGameById(gameId); relayServer_ = relayServer; }
public HFTGame(string id, HFTGameGroup group, HFTRuntimeOptions options) { id_ = id; gameGroup_ = group; options_ = options; SetGameId(); log_ = new HFTLog("HFTGame[" + gameId_ + "]"); log_.Info("created game"); }
public NetPlayer(GameServer server, string name) { m_server = server; m_connected = true; m_handlers = new Dictionary <string, CmdEventHandler>(); m_internalHandlers = new Dictionary <string, CmdEventHandler>(); m_deserializer = new Deserializer(); m_log = new HFTLog("NetPlayer[" + name + "]"); AddHandlers(); }
public delegate GameObject GetGameObject(int ndx); // un delegate est une variable a laquelle on assigne une fonction public HFTPlayerManager(GameServer server, GameObject gameObject, int maxPlayers, int timeoutForDisconnectedPlayerToReconnect, GetGameObject getGameObjectFn) { m_log = new HFTLog("PlayerManager"); m_maxPlayers = maxPlayers; m_gameObject = gameObject; m_getGameObject = getGameObjectFn; m_timeoutForDisconnectedPlayersToReconnect = timeoutForDisconnectedPlayerToReconnect; server.OnPlayerConnect += StartNewPlayer; ResetState(); }
public HFTWebServer(HFTRuntimeOptions options, string[] addresses) { m_log = new HFTLog("HFTWebServer"); m_options = options; m_gamePath = "/"; m_webServerUtils = new HFTWebServerUtils(m_gamePath); // Touch the HFTWebFileDB // We do this be because we want it to get the list // of files BEFORE run the server. The server will // run in a different thread and HFTWebFileDB will // not be able to populate its database from that thread. HFTWebFileDB.GetInstance(); // FIX: sysname and gamename string sysName = Environment.MachineName; if (sysName.EndsWith(".local")) { sysName = sysName.Substring(0, sysName.Length - 6); } string gameName = m_options.name; string ping = Serializer.Serialize(new HFTPing(sysName + ": " + gameName, "HappyFunTimes")); m_ping = System.Text.Encoding.UTF8.GetBytes(ping); m_log.Info("Ping: " + ping); m_liveSettingsStr = "define([], function() { return " + Serializer.Serialize(new LiveSettings()) + "; })\n"; m_liveSettings = System.Text.Encoding.UTF8.GetBytes(m_liveSettingsStr); if (options.captivePortal || options.installationMode) { m_captivePortalHandler = new HFTCaptivePortalHandler(m_webServerUtils); m_getRouter.Add(m_captivePortalHandler.HandleRequest); } m_getRouter.Add(HandleRoot); m_getRouter.Add(HandleLiveSettings); m_getRouter.Add(HandleFile); m_getRouter.Add(HandleMissingRoute); m_getRouter.Add(HandleNotFound); m_postCmdHandlers["happyFunTimesPingForGame"] = HandleCmdPingForGame; m_postCmdHandlers["happyFunTimesPing"] = HandleCmdPing; m_postCmdHandlers["happyFunTimesRedir"] = HandleCmdRedir; m_postCmdHandlers["time"] = HandleCmdTime; m_postCmdHandlers["quit"] = HandleCmdQuit; m_addresses = addresses; }
public void Init(Options options) { log_ = new HFTLog("HFTSite"); options_ = options; rendezvousUri_ = new System.Uri(options_.rendezvousUrl); string[] ipv4Addresses = GetIPAddresses(DNS.Protocol.RecordType.A); string[] ipv6Addresses = GetIPAddresses(DNS.Protocol.RecordType.AAAA); informers_[0] = new Informer(log_, sharedState_, ipv4Addresses.Length > 0 ? MakeDirectUrl(ipv4Addresses[0]) : null, rendezvousUri_.Host); informers_[1] = new Informer(log_, sharedState_, ipv6Addresses.Length > 0 ? MakeDirectUrl(ipv6Addresses[0]) : null, rendezvousUri_.Host); checkCoroutine_ = CheckAddresses(); StartCoroutine(checkCoroutine_); }
public HFTPlayer(HFTSocket client, HFTGameManager server, string id) { client_ = client; gameManager_ = server; id_ = id; log_ = new HFTLog("HFTPlayer[" + id + "]"); log_.Info("start player"); client.OnMessageEvent += HandleMessage; client.OnCloseEvent += HandleDisconnect; RegisterCmdHandler <AddPlayerToGameMessage>("join", AddPlayerToGame); RegisterCmdHandler <HFTRuntimeOptions>("server", AssignAsServerForGame); RegisterCmdHandler <object>("update", PassMessageFromPlayerToGame); }
public HFTArgsBase(string prefix) { HFTLog log = new HFTLog("HFTArgs"); HFTArgChecker checker = new HFTArgChecker(log, prefix); HFTArgParser p = HFTArgParser.GetInstance(); System.Reflection.FieldInfo[] fields = this.GetType().GetFields(); foreach (System.Reflection.FieldInfo info in fields) { object field = System.Activator.CreateInstance(info.FieldType); string dashName = checker.GetHFTDashName(info.Name); checker.AddArg(dashName); info.FieldType.GetMethod("Init").Invoke(field, new object[] { dashName, p }); info.SetValue(this, field); } checker.CheckArgs(); }
public static string[] GetIPAddresses(string domain, DNS.Protocol.RecordType type) { // This client is probably heavy? Maybe I should have just one // NOTE: This is hardcoded to Google's DNS servers. I'd prefer to use // the system DNS but ATM (a) I don't know how to find it and (b) // .NET/mono is broken DNS.Client.DnsClient client = new DNS.Client.DnsClient("8.8.8.8"); List <string> addresses = new List <string>(); try { IList <System.Net.IPAddress> ips = client.Lookup(domain, type); foreach (var ip in ips) { addresses.Add(ip.ToString()); } } catch (DNS.Client.ResponseException ex) { var log = new HFTLog("HFTDnsUtils"); log.Warn(String.Format("error getting DNS {0} record for {1}: {2}", type, domain, ex.ToString())); } return(addresses.ToArray()); }
public HFTEventProcessor() { m_log = new HFTLog("HFTEventProcessor"); }
public LocalNetPlayer(GameServer server, Options options = null) : base(server, options != null ? options.name : "LocalPlayer") { m_gameHandlers = new Dictionary <string, GameCmdEventHandler>(); m_sessionId = options != null ? options.sessionId : ""; m_log = new HFTLog("LocalNetPlayer"); // add name }
public HFTSocket() { base.IgnoreExtensions = true; log_ = new HFTLog("HFTSocket"); }
public UntypedCmdConverter(HFTLog log, UntypedCmdEventHandler handler) { m_log = log; m_handler = handler; }
public CmdConverter(HFTLog log, TypedCmdEventHandler <T> handler) { m_log = log; m_handler = handler; }
HFTGameManager() { log_ = new HFTLog("HFTGameManager"); }
public static bool Apply(string prefix, object obj) { HFTLog log = new HFTLog("HFTArgsDirect"); HFTArgChecker checker = new HFTArgChecker(log, prefix); HFTArgParser p = HFTArgParser.GetInstance(); System.Reflection.FieldInfo[] fields = obj.GetType().GetFields(); foreach (System.Reflection.FieldInfo info in fields) { //object field = System.Activator.CreateInstance(info.FieldType); object value = null; System.Type fieldType = info.FieldType; string dashName = checker.GetHFTDashName(info.Name); checker.AddArg(dashName); // Should do this with reflection but ... if (fieldType == typeof(string)) { string strValue = ""; if (p.TryGet <string>(dashName, ref strValue)) { value = strValue; } } else if (fieldType == typeof(int)) { int intValue = 0; if (p.TryGet <int>(dashName, ref intValue)) { value = intValue; } } else if (fieldType == typeof(bool)) { bool boolValue = false; if (p.TryGetBool(dashName, ref boolValue)) { value = boolValue; } } else if (fieldType == typeof(float)) { float floatValue = 0; if (p.TryGet <float>(dashName, ref floatValue)) { value = floatValue; } } else { throw new System.InvalidOperationException("no support for type: " + fieldType.Name); } if (value != null) { info.SetValue(obj, value); } } return(checker.CheckArgs()); }