Exemplo n.º 1
0
        public async Task OnTick(DateTime now)
        {
            var server = new ServerContract
            {
                Id   = _stage.ID,
                Host = _stage.Info.Host,
                Port = _stage.Info.Port
            };
            var metadata = new Dictionary <string, string>();

            _stage.Info.AddMetadata(metadata);

            server.Metadata.Add("Type", Enum.GetName(_stage.Type));
            server.Metadata.Add(metadata);

            if (_isInitialized && !_isDisconnected)
            {
                if ((await _stage.ServerRegistry
                     .Update(new UpdateServerRequest {
                    Server = server
                }))
                    .Result != ServerRegistryResult.Ok)
                {
                    _isDisconnected = true;
                }
                else
                {
                    return;
                }
            }

            var response = await _stage.ServerRegistry.Register(new RegisterServerRequest { Server = server });

            if (response.Result == ServerRegistryResult.Ok)
            {
                _isInitialized  = true;
                _isDisconnected = false;

                _stage.Logger.LogInformation($"Successfully registered server {_stage.ID} to the server registry");
            }
            else
            {
                _stage.Logger.LogInformation($"Failed to register server {_stage.ID} to the server registry due to {response.Result}");
            }
        }
Exemplo n.º 2
0
        public void Start(ChatSettings serverSettings)
        {
            Settings = serverSettings;
            NetTcpBinding myBinding = new NetTcpBinding()
            {
                MaxReceivedMessageSize = 1048576,
                MaxBufferPoolSize      = 1048576,
                MaxBufferSize          = 1048576,
                Security = new NetTcpSecurity {
                    Mode = SecurityMode.None
                }
            };

            host = new ServiceHost(typeof(UserContract));
            host.AddServiceEndpoint(typeof(IServerContract), myBinding, $"net.tcp://{Settings.Connection.Ip}:{Settings.Connection.Port}/AngelsChat/");
            host.Open();
            server = new ServerContract();
        }
    void Publish()
    {
        // Create the Instance of the Service Class.
        serverContract = new ServerContract();
        // Create the Service Host using the INSTANCE I just created.
        WCF.Server.ServerHost <WCF.Contracts.ServerContract> WCFServerHost = new WCF.Server.ServerHost <WCF.Contracts.ServerContract>(serverContract, baseAddress); // I am using NetTcpBinding in case someone would like to know.

        // Get the Singleton Instance [InstanceMode.Singleton Pattern]
        PublishService = (ServerContract)WCF_Server.SingletonInstance;

        List <products> productList = new List <products>(new Product(), new Product());

        System.ServiceModel.Channels.CommunicationObject comm = WCF_Server;
        if (comm.State == CommunicationState.Opened)
        {
            PublishService.PushProductsToClients(productList);
        }
    }
Exemplo n.º 4
0
        public async Task <bool> MigrateTo(ServerContract server)
        {
            if (server == null)
            {
                return(false);
            }

            var request = await Stage.MigrationRegistry.Register(new RegisterMigrationRequest
            {
                Migration = new MigrationContract
                {
                    Character  = Character.ID,
                    ClientKey  = Key,
                    ServerFrom = Stage.ID,
                    ServerTo   = server.Id
                }
            });

            if (request.Result != MigrationRegistryResult.Ok)
            {
                return(false);
            }

            IsMigrating = true;

            var session = new SessionContract
            {
                Account   = Account.ID,
                Character = Character.ID,
                Server    = Stage.ID,
                State     = SessionState.Migrating
            };

            await Stage.SessionRegistry.Update(new UpdateSessionRequest { Session = session });

            var endpoint = new IPEndPoint(IPAddress.Parse(server.Host), server.Port);
            var address  = endpoint.Address.MapToIPv4().GetAddressBytes();
            var port     = endpoint.Port;

            await Update();
            await Dispatch(GetMigratePacket(address, (short)port));

            return(true);
        }
Exemplo n.º 5
0
        public async Task <HttpResponseMessage> GetTicketAsync(string ticketId, string expectedFacadeResult)
        {
            HttpResponseMessage response;

            try
            {
                ServerContract.RequireNotNullOrWhitespace(nameof(ticketId), ticketId);
                ServerContract.RequireNotNullOrWhitespace(nameof(expectedFacadeResult), expectedFacadeResult);

                try
                {
                    var ticket =
                        ToContract(await TicketLogic.GetTicketAsync(ticketId,
                                                                    ExpectedResultFromContract(expectedFacadeResult)));
                    var json = JObject.FromObject(ticket);
                    response = new HttpResponseMessage(HttpStatusCode.OK)
                    {
                        Content = new StringContent(json.ToString(Formatting.Indented), Encoding.UTF8,
                                                    "application/json")
                    };
                }
                catch (Exception e)
                {
                    var fulcrumException = e as FulcrumException;
                    if (fulcrumException != null)
                    {
                        e = Converter.FromBllToServer(fulcrumException);
                    }
                    response = Converter.ToHttpResponseMessage(e, true);
                }
            }
            catch (Exception e)
            {
                response = Converter.ToHttpResponseMessage(e, true);
            }

            return(response);
        }
 public override bool CanHandleServerMessage(ServerContract serverContract)
 {
     return serverContract.Type == GamifyServerMessageType.GameInviteReceived ||
         serverContract.Type == GamifyServerMessageType.GameCreated ||
         serverContract.Type == GamifyServerMessageType.GameRejected;
 }
Exemplo n.º 7
0
 /// <summary>
 /// Window Load
 /// </summary>
 /// <param name="sender"></param>
 /// <param name="e"></param>
 private void Main_Load(object sender, EventArgs e)
 {
     contractMgmt = new ServerContract(this);
     AsyncStartListen();
 }