public HighPerformanceServerStrategy(int localPort) : base(localPort)
 {
     Role            = TcpRole.Client;
     MultipleClients = true;
     endPointFactory = new EndPointFactory(localPort);
     communicants.Add(ComputerInfo.Current.PerformanceIndex, endPointFactory.Create(IPAddress.Loopback));
 }
Exemple #2
0
 public void BindIfNecessary(IPAddress localIPAddress)
 {
     internalSemaphore.Wait();
     if (!closed && !bindedAddresses.TryGetValue(localIPAddress, out bool value))
     {
         client.Client.Bind(endPointFactory.Create(localIPAddress));
         bindedAddresses.Add(localIPAddress, true);
     }
     internalSemaphore.Release();
 }
 private void AddConnectableClient(string clientDescription, Action <string> onSuccessAction)
 {
     string[] tokens = clientDescription.Split('@');
     if (tokens.Length != 2 ||
         !IPAddress.TryParse(tokens[1], out IPAddress ipAddress))
     {
         throw new FormatException("Invalid format of connectable client.");
     }
     ConnectableClients = ConnectableClients.Add(tokens[0], remoteEndPointFactory.Create(ipAddress));
     onSuccessAction?.Invoke(tokens[0]);
 }
Exemple #4
0
        public override void Connect()
        {
            State = SubSystemState.Connected;

            string portraitId = EB.Dot.String("portraitId", Hub.Instance.DataStore.LoginDataStore.LoginData, "");

            if (portraitId != "")
            {
                SetPortrait(Hub.Instance.DataStore.LoginDataStore.LocalUserId.Value, portraitId, PortraitPriority.High);
            }

            EB.Sparx.Config config  = SparxHub.Instance.Config;
            EndPointOptions options = new EndPointOptions {
                Key = config.ApiKey.Value
            };
            Hashtable social = EB.Dot.Object("social", Hub.Instance.DataStore.LoginDataStore.LoginData, null);

            if (null == social)
            {
                return;
            }

            string endpointUrl = EB.Dot.String("endpoint", social, null);

            _imageBaseUrl   = EB.Dot.String("imageBase", social, null);;
            _socialEndPoint = EndPointFactory.Create(endpointUrl, options);

            _socialEndPoint.AddData("stoken", Hub.Instance.ApiEndPoint.GetData("stoken"));
            _api.SetSocialEndpoint(_socialEndPoint);

            _allowPullFriendsPortraitInfoUntil = new DateTimeRef(System.DateTime.Now);
            _allowPullAdHocPortraitInfoUntil   = new DateTimeRef(System.DateTime.Now);

            UpdateUniqueTimestamp();
            GetFriendsPortraitInfo(null);

            Hub.Instance.GetManager <PushManager>().OnDisconnected += OnPushDisconnected;
        }
Exemple #5
0
        void Initialize(Config config)
        {
            Config    = config;
            DataStore = new DataStore();

            BugReport.Init(config.ApiEndpoint + "/bugs");

            Assets.LoadAsync("profanity", typeof(TextAsset), o =>
            {
                TextAsset profanity = o as TextAsset;
                if (profanity != null)
                {
                    ProfanityFilter.Init(profanity.text);
                    Assets.Unload("profanity");
                }
            });

            var options = new EndPointOptions {
                Key = config.ApiKey.Value
            };

            if (config.ApiKeepAlive > 0)
            {
                options.KeepAlive         = true;
                options.KeepAliveUrl      = "/util/ping";
                options.KeepAliveInterval = config.ApiKeepAlive;
            }
            ApiEndPoint = EndPointFactory.Create(config.ApiEndpoint, options);

            EB.Memory.OnBreach += delegate()
            {
                FatalError("ID_SPARX_ERROR_UNKNOWN");
            };

            InitializeComponents();
        }
 public EndPoint CreateEndPoint()
 {
     return(EndPointFactory.Create(EndPoint, new EndPointOptions {
         Key = Encoding.GetBytes(Token), Protocol = "io.sparx.master-client", ActivityTimeout = 30 * 1000
     }));
 }