Inheritance: MonoBehaviour
Example #1
0
        private async Task SendText(IRomePackageManager packageManager, string deviceName, string text)
        {
            ViewModel.ProgressPercentIndicatorVisibility = Visibility.Collapsed;
            TextSender ts = new TextSender(packageManager, deviceName);

            ts.TextSendProgress += (ee) =>
            {
                ViewModel.ProgressIsIndeterminate = false;
                ViewModel.ProgressMaximum         = ee.TotalParts;
                ViewModel.ProgressValue           = ee.SentParts;
            };

            ViewModel.SendStatus = "Sending...";

            bool sendResult = await ts.Send(text, ContentType.ClipboardContent);

            if (sendResult)
            {
                await SendFinishService(packageManager);

                ViewModel.SendStatus = "Done.";
            }
            else
            {
                ViewModel.SendStatus = "Failed :(";
            }

            ViewModel.ProgressIsIndeterminate = false;
            ViewModel.ProgressValue           = ViewModel.ProgressMaximum;
        }
Example #2
0
        protected BaseClient([NotNull] ICommsNetworkState network)
        {
            if (network == null)
            {
                throw new ArgumentNullException("network");
            }

            Log = Logs.Create(LogCategory.Network, GetType().Name);

            const int poolSize        = 32;
            const int byteBufferSize  = 1024;
            const int channelListSize = 8;
            var       byteArrayPool   = new ReadonlyLockedValue <Pool <byte[]> >(new Pool <byte[]>(poolSize, () => new byte[byteBufferSize]));
            var       channelListPool = new ConcurrentPool <List <RemoteChannel> >(poolSize, () => new List <RemoteChannel>(channelListSize));

            _sendQueue        = new SendQueue <TPeer>(this, byteArrayPool);
            _serverNegotiator = new ConnectionNegotiator <TPeer>(_sendQueue, network.PlayerName, network.CodecSettings);
            _lossSimulator    = new PacketDelaySimulator();

            _events = new EventQueue(byteArrayPool, channelListPool);
            _peers  = new SlaveClientCollection <TPeer>(_sendQueue, _serverNegotiator, _events, network.Rooms, network.PlayerName, network.CodecSettings);
            _peers.OnClientJoined        += OnAddedClient;
            _peers.OnClientIntroducedP2P += OnMetClient;

            _voiceReceiver = new VoiceReceiver <TPeer>(_serverNegotiator, _peers, _events, network.Rooms, channelListPool);
            _voiceSender   = new VoiceSender <TPeer>(_sendQueue, _serverNegotiator, _peers, _events, network.PlayerChannels, network.RoomChannels);

            _textReceiver = new TextReceiver <TPeer>(_events, network.Rooms, _peers);
            _textSender   = new TextSender <TPeer>(_sendQueue, _serverNegotiator, _peers);
        }
Example #3
0
        private async Task SendText(string text)
        {
            sendStatus.Text = "Connecting...";

            if (!(await Common.PackageManager.QuickClipboard(text, Common.GetCurrentRemoteSystem(), CrossDeviceInfo.Current.Model, "roamit://clipboard")))
            {
                var result = await Common.PackageManager.Connect(Common.GetCurrentRemoteSystem(), false);

                if (result != QuickShare.Common.Rome.RomeAppServiceConnectionStatus.Success)
                {
                    sendStatus.Text = $"Connect failed. ({result.ToString()})";
                    Analytics.TrackEvent("SendToWindows", "text", "Failed");
                    return;
                }

                //Fix Rome Android bug (receiver app service closes after 5 seconds in first connection)
                Common.PackageManager.CloseAppService();
                result = await Common.PackageManager.Connect(Common.GetCurrentRemoteSystem(), false);

                if (result != QuickShare.Common.Rome.RomeAppServiceConnectionStatus.Success)
                {
                    sendStatus.Text = $"Connect failed. ({result.ToString()})";
                    Analytics.TrackEvent("SendToWindows", "text", "Failed");
                    return;
                }

                TextSender textSender = new TextSender(Common.PackageManager, CrossDeviceInfo.Current.Model);

                textSender.TextSendProgress += (ee) =>
                {
                    SetProgressBarValue(ee.SentParts, ee.TotalParts);
                };

                sendStatus.Text = "Sending...";

                bool sendResult = await textSender.Send(text, ContentType.ClipboardContent);

                SetProgressBarValueToMax();

                if (!sendResult)
                {
                    sendStatus.Text       = "Send failed.";
                    sendProgress.Progress = sendProgress.Max;
                    Analytics.TrackEvent("SendToWindows", "text", "Failed");
                    return;
                }

                Common.PackageManager.CloseAppService();
            }

            sendStatus.Text = "Finished.";
            SetProgressBarValueToMax();
            Analytics.TrackEvent("SendToWindows", "text", "Success");
        }
Example #4
0
        public static void Main()
        {
            IMessageSender text = new TextSender();
            IMessageSender web  = new WebServiceSender();

            Message message = new SystemMessage();

            message.Subject = "A Message";
            message.Body    = "Hi there, Please accept this message.";

            message.MessageSender = text;
            message.Send();

            message.MessageSender = web;
            message.Send();
        }
Example #5
0
        private static void Startup()
        {
            // setup RabbitMQ
            var    configSection = Config.GetSection("RabbitMQ");
            string host          = configSection["Host"];
            string userName      = configSection["UserName"];
            string password      = configSection["Password"];
            string exchange      = configSection["Exchange"];
            string connName      = configSection["ConnectionName"];

            var    mailConfigSection = Config.GetSection("EmailSettings");
            string mailHost          = mailConfigSection["MailServer"];
            int    mailPort          = Convert.ToInt32(mailConfigSection["MailPort"]);
            string mailUserName      = mailConfigSection["Sender"];
            string mailSenderName    = mailConfigSection["SenderName"];
            string mailPassword      = mailConfigSection["Password"];
            //ISMTPMailSender smtpMailServer = new SMTPMailSender(mailHost, mailPort, mailUserName, mailPassword, mailSenderName); // original

            var    smsConfiguration = Config.GetSection("SmsSettings");
            string accountSid       = smsConfiguration["AccountSID"];
            string authCode         = smsConfiguration["AuthToken"];


            EmailSettings settings       = new EmailSettings(mailHost, mailPort, mailSenderName, mailUserName, mailPassword);
            IEmailSender  smtpMailServer = new EmailSender(settings);

            SmsSettings smsSettings = new SmsSettings(accountSid, authCode);
            ISmsSender  smsSender   = new TextSender(smsSettings);
            //ITwilioRestClient smsSender = new SmsSender();

            //var emailSender = new EmailSender();
            //var emailSettings = new EmailSettings();

            // setup messagehandler
            RabbitMQMessageHandler messageHandler = new RabbitMQMessageHandler(host, userName, password, exchange, connName, "notification", "notification.#");

            // ABOVE: subscribe/listen to queue - queue name to be updated

            //IEmailSender emailSender = null;
            EventHandlers.EventHandler eventHandler = new EventHandlers.EventHandler(messageHandler, smtpMailServer, smsSender); //, dbContext);
            //EventHandler eventHandler = new EventHandler(messageHandler, smtpMailServer);

            //EmailNotificationEventHandler eventHandler = new EmailNotificationEventHandler(messageHandler, smtpMailServer); // original
            eventHandler.Start();
        }
        static void Main(string[] args)
        {
            //bridge implementors
            IMessageSender textSender = new TextSender();
            IMessageSender webSender  = new WebServiceSender();

            //abstraction implementor
            Message systemMessage = new SystemMessage();

            systemMessage.Subject = "A message";
            systemMessage.Body    = "Hello, please accept the message";

            //decoupling abstraction from implementation
            systemMessage.MessageSender = textSender;
            systemMessage.Send();

            systemMessage.MessageSender = webSender;
            systemMessage.Send();
            Console.ReadKey();
        }
Example #7
0
        static void Main(string[] args)
        {
            #region Decorator - Using Composition to limit inheritance and simplify object relationships easier to maintain and manage.
            //Inside ConcreteDecorator any number of features can be added to the car and price for the car can be updated.
            Decorator.Component.Car sampleCar = new CompactCar();
            sampleCar = new LeatherSeats(sampleCar);
            Console.WriteLine(sampleCar.GetDescription());
            Console.WriteLine($"{sampleCar.GetCarPrice():C2}");
            #endregion

            #region Observer - Change in one object causes a change or action in another.
            var trump     = new Trump("I love my wife");
            var firstFan  = new Fan("Rohit");
            var secondFan = new Fan("Ram");
            trump.AddFollower(firstFan);
            trump.AddFollower(secondFan);
            trump.Tweet = "I hate media";
            #endregion

            #region Builder Pattern- Separate and reuse a specific process to build an object /use when constructing a complex object
            //Director- construct ()
            //Builder - Build part
            //CarBuilder to construct two types of cars
            //override the method of building a car in separate classes which derive from an abstract carbuilder
            //create a list of carbuilder objects to specify the current known types of cars that can be built
            //create a factory
            var superBuilder       = new SuperCarBuilder();
            var notSoSsuperBuilder = new NotSoSuperCarBuilder();

            var factory  = new CarFactory();
            var builders = new List <CarBuilder> {
                superBuilder, notSoSsuperBuilder
            };

            foreach (var b in builders)
            {
                var c = factory.Build(b);
                Console.WriteLine($"The car requested by " + $"{b.GetType().Name}:" + Environment.NewLine
                                  + $"Horse Power: {c.HorsePower}" + Environment.NewLine
                                  + $"Impressive feature: {c.MostImpressiveFeature}" + Environment.NewLine
                                  + $"Top speed: {c.TopSpeedMPH} mph" + Environment.NewLine);
            }
            #endregion

            #region Bridge Pattern- Used to separate an abstraction from its implementation so both can be modified independently
            //Sending messages from sms or service without each affecting the other
            IMessageSender text = new TextSender();
            IMessageSender web  = new WebServiceSender();

            Message message = new SystemMessage(text);
            message.Subject       = "A message";
            message.Body          = "hi there, please know this";
            message.MessageSender = text;
            message.Send();

            message.MessageSender = web;
            message.Send();

            #endregion

            #region Chain of responsibility- Chain the receiving objects and pass the request along the chain until an object handles it.
            //Avoid coupling the sender of a request to its receiver by giving more than one object a chance to handle the request
            Approver Bobby  = new Director();
            Approver Sunny  = new VicePresident();
            Approver Dharam = new President();

            Bobby.SetSuccessor(Sunny);
            Sunny.SetSuccessor(Dharam);

            Purchase P = new Purchase()
            {
                Amount = 10000, Number = 1
            };
            Bobby.ProcessRequest(P);


            #endregion

            #region Command - Wrap request as an object to be implemented later or invoke at different points in time.
            //Encapsulate a request as an object, thereby letting you parameterize clients with different requests -queue or log  and support undoable operations
            //Use an object to store required information to perform an action at any point in time.
            var user = new User();
            user.Compute('+', 100);
            user.Compute('-', 50);
            user.Compute('*', 10);
            user.Compute('/', 2);

            //undo
            user.Undo(4);

            //Redo
            user.Redo(3);
            #endregion
            Console.ReadLine();
        }