예제 #1
0
        public async Task <ServiceResult> Replicate()
        {
            var           mItemsResult = MemoryStorageService.GetFromMemory() as ServiceResult <List <GameResult> >;
            ServiceResult replResult   = null;

            if (mItemsResult.IsValid)
            {
                if (mItemsResult.Data.Count() == 0)
                {
                    return(new ServiceResult().Valid());
                }
                else
                {
                    replResult = ReplicationService.Replicate(mItemsResult.Data);
                }
            }

            if (replResult.IsValid)
            {
                MemoryStorageService.DeleteFromMemory(mItemsResult.Data);

                return(new ServiceResult().Valid());
            }
            else
            {
                return(new ServiceResult().Invalid());
            }
        }
예제 #2
0
        private static void RunSimpleVersion(ServerConfiguration serverConfig, bool file)
        {
            SimpleGrpcMessageLayer.SetContext(serverConfig);

            // Add self id so that server knows itself
            SimplePartitionsDB partitionsDB = new SimplePartitionsDB(
                serverConfig.ServerId,
                HttpURLs.FromHostAndPort(serverConfig.Host, serverConfig.Port));

            if (file)
            {
                if (!partitionsDB.ConfigurePartitions(serverConfig.Filename))
                {
                    Console.Error.WriteLine("Couldn't configure server from file.");
                    DisplaySimpleFileSyntax();
                }
            }

            ReplicationService service = new ReplicationService(partitionsDB, serverConfig);

            // Bind handlers for messages
            service.Bind();

            FailureDetectionLayer.Instance.Start();

            Console.WriteLine(
                "[{0}] Server {1} running at {2} with simple version",
                DateTime.Now.ToString("HH:mm:ss"),
                serverConfig.ServerId,
                serverConfig.Url);
            Console.WriteLine("Press any key to stop the server...");
            Console.ReadKey();

            FailureDetectionLayer.Instance.Shutdown();
        }
        private static void InitializeHosts(State state, out ReplicationServiceHost replicationServiceHost, out ReplicationClientHost <Message <Topic> > replicationClientHost)
        {
            var ipAddress = ConfigurationManager.AppSettings["ipAddress"];
            var port      = ConfigurationManager.AppSettings["port"];
            var endpoint  = ConfigurationManager.AppSettings["endpoint"];

            var replicationService = new ReplicationService <Message <Topic> >(state);

            replicationServiceHost = new ReplicationServiceHost();
            replicationServiceHost.Initialize(ipAddress, port, endpoint, replicationService);

            replicationClientHost = new ReplicationClientHost <Message <Topic> >();
            replicationClientHost.Initialize(ipAddress, port, endpoint, replicationService);
        }
        public void Initialize()
        {
            const string messageData = "Test data";

            testMessage = new Message <Topic>()
            {
                Topic = Topic.FirstT, Data = messageData.ToByteArray()
            };

            var clientMoq       = new ClientMoq <Message <Topic> >();
            var clientCbHandler = Substitute.For <ICallbackHandler <IReplicationClientCallback <Message <Topic> > > >();

            clientCbHandler.GetCallback().Returns(clientMoq);

            var partnerMoq       = new PartnerMoq <Message <Topic> >();
            var partnerCbHandler = Substitute.For <ICallbackHandler <IReplicationServiceCallback <Message <Topic> > > >();

            partnerCbHandler.GetCallback().Returns(partnerMoq);

            var proxyMoq = new ProxyMoq <Topic>();

            replicationService        = new ReplicationService <Message <Topic> >(clientCbHandler, partnerCbHandler, proxyMoq);
            invalidReplicationService = new ReplicationService <Message <Topic> >(null, null, null);
        }
 // Optionally, provide a extension method for calling the perform method directly using the specific request
 // and response objects from AspNetCore
 public static void Perform(this ReplicationService self, HttpRequest request, HttpResponse response)
 => self.Perform(
     new AspNetCoreReplicationRequest(request),
     new AspNetCoreReplicationResponse(response));
예제 #6
0
 public void Initialize()
 {
     ReplicatorService = new ReplicationService(replicators, "/api/replicate");
 }