コード例 #1
0
        public void CallServiceReturningSession2Times_sessionAreEqual()
        {
            var address = @"net.pipe://127.0.0.1/1/test.test/test" + MethodBase.GetCurrentMethod().Name;
            var binding = new NetNamedPipeBinding();

            var data = new CallbackData { Data = "1" };
            var srv = new CallbackService(data);
            var callback = new CallbackServiceCallback();

            using (var host = new ServiceHost(srv, new Uri(address)))
            {
                host.AddServiceEndpoint(typeof(ICallbackService), binding, address);
                host.Open();

                using (var factory = new DuplexChannelFactory<ICallbackService>(new InstanceContext(callback), binding))
                {
                    var client = factory.CreateChannel(new EndpointAddress(address));
                    client.Call();
                }

                callback.Wait.WaitOne();

                Assert.AreEqual(data.Data, callback.Called.Data);
            }
        }
コード例 #2
0
		public static void RegisterMethodCallback (object proxy, string method, CallingMethodCallback calling, CalledMethodCallback called, int timeout)
		{
			string uri = RemotingServices.GetObjectUri ((MarshalByRefObject)proxy);
			CallbackData data = new CallbackData ();
			data.Target = proxy;
			data.Calling = calling;
			data.Called = called;
			data.Timeout = timeout;
			data.Method = method;
			callbacks [uri + " " + method] = data;
		}
コード例 #3
0
ファイル: frmMain.cs プロジェクト: RyuaNerin/QIT
        internal static void Callback(CallbackData data)
        {
            if (data.Callback)
                frmMain.Instance.EndInvoke(data.IAsyncResult);

            var frm = new frmUpload(data.Collection);
            frm.AutoStart           = data.AutoStart;
            frm.TweetString         = data.DefaultText;
            frm.InReplyToStatusId   = data.InReplyToStatusId;

            frm.FormClosed += (s, e) => frm.Dispose();

            if (frmMain.Instance != null)
                frm.Show(frmMain.Instance);
            else
                Application.Run(frm);
        }
コード例 #4
0
 private static void OnTrackingComplete(IAsyncResult result)
 {
     if (!result.CompletedSynchronously)
     {
         CallbackData asyncState = (CallbackData)result.AsyncState;
         try
         {
             asyncState.Executor.EndTrackPendingRecords(result);
         }
         catch (Exception exception)
         {
             if (Fx.IsFatal(exception))
             {
                 throw;
             }
             asyncState.WorkItem.workflowAbortException = exception;
         }
         asyncState.Executor.FinishWorkItemAfterTracking(asyncState.WorkItem);
     }
 }
コード例 #5
0
    public void AddListener <T>(object obj, GenericDelegate <T> func) where T : EventMessage
    {
        if (obj == null)
        {
            throw new ArgumentNullException("obj");
        }
        if (func == null)
        {
            throw new ArgumentNullException("func");
        }
        CallbackData item = new CallbackData
        {
            obj      = obj,
            type     = typeof(T),
            callback = new Callback <T>(func)
        };

        this.pendingListens.Add(item);
        this.ProcessPendingListens();
    }
コード例 #6
0
        public void Should_parse_callback_data_with_args()
        {
            var callbackData = new CallbackData <TestState>(TestState.Pending, "arg1", "arg2");

            Assert.NotNull(callbackData);
            Assert.Equal(TestState.Pending, callbackData.NextState);
            Assert.NotEmpty(callbackData.Args);

            var callbackDataStr = callbackData.ToString();

            Assert.Equal("1>arg1|arg2", callbackDataStr);

            var parsed = CallbackData <TestState> .Parse(callbackDataStr);

            Assert.NotNull(parsed);
            Assert.Equal(TestState.Pending, parsed.NextState);
            Assert.NotEmpty(callbackData.Args);
            Assert.Contains("arg1", parsed.Args);
            Assert.Contains("arg2", parsed.Args);
        }
コード例 #7
0
ファイル: GreetingsAction.cs プロジェクト: MnemoNuS/ViberBot
        public static async Task Execute(CallbackData data)
        {
            //достать данные из таблицы
            Handlers.GoogleSheetsHandler.AddUser(data.User);

            //отправить подтверждение
            var receiver = data.User.Id;

            //добавить пользователя

            var message = new KeyboardMessage
            {
                Receiver     = receiver,
                Sender       = client.BotUserData,
                Text         = $"Добрый день я бот который помогает учитывать данные счетчика электроэнерги. Пожалуйста зарегистрируйте квартиру и контактные данные.",
                TrackingData = ViberBotTrackingData.Empty(),
                Keyboard     = KeyboardHandler.Start
            };
            await client.SendMessage(receiver, message);
        }
コード例 #8
0
 private static void OnAssociateComplete(IAsyncResult result)
 {
     if (!result.CompletedSynchronously)
     {
         CallbackData asyncState = (CallbackData)result.AsyncState;
         try
         {
             asyncState.Executor.EndAssociateKeys(result);
         }
         catch (Exception exception)
         {
             if (Fx.IsFatal(exception))
             {
                 throw;
             }
             asyncState.WorkItem.workflowAbortException = exception;
         }
         asyncState.Executor.FinishWorkItem(asyncState.WorkItem);
     }
 }
コード例 #9
0
        public void Data_CallbacksAreCalled()
        {
            Events.SubscribeToEvent(callbacks.AData, EventType.A);
            Events.SubscribeToEvent(callbacks.BData, EventType.B);
            Events.SubscribeToEvent(callbacks.CData, EventType.C);

            Events.FireEvent(EventType.A, CallbackData.String("a"));
            Events.FireEvent(EventType.B, CallbackData.String("b"));
            Events.FireEvent(EventType.C, CallbackData.String("c"));

            Assert.AreEqual(1, callbacks.a, "Event callback was not called");
            Assert.AreEqual(1, callbacks.b, "Event callback was not called");
            Assert.AreEqual(1, callbacks.c, "Event callback was not called");

            Assert.AreEqual(1, a, "Event callback was not called");
            Assert.AreEqual(1, b, "Event callback was not called");
            Assert.AreEqual(1, c, "Event callback was not called");

            Assert.AreEqual("c", dataString, "Data was not transmitted succesfully");
        }
コード例 #10
0
        private void SendRequestMessage(GrainReference target, Message message, TaskCompletionSource <object> context, InvokeMethodOptions options, string genericArguments)
        {
            var targetGrainId = target.GrainId;
            var oneWay        = (options & InvokeMethodOptions.OneWay) != 0;

            message.SendingGrain      = CurrentActivationAddress.Grain;
            message.SendingActivation = CurrentActivationAddress.Activation;
            message.TargetGrain       = targetGrainId;
            if (!String.IsNullOrEmpty(genericArguments))
            {
                message.GenericGrainType = genericArguments;
            }

            if (targetGrainId.IsSystemTarget())
            {
                // If the silo isn't be supplied, it will be filled in by the sender to be the gateway silo
                message.TargetSilo = target.SystemTargetSilo;
                if (target.SystemTargetSilo != null)
                {
                    message.TargetActivation = ActivationId.GetDeterministic(targetGrainId);
                }
            }

            if (message.IsExpirableMessage(this.clientMessagingOptions.DropExpiredMessages))
            {
                // don't set expiration for system target messages.
                message.TimeToLive = this.clientMessagingOptions.ResponseTimeout;
            }

            if (!oneWay)
            {
                var callbackData = new CallbackData(this.sharedCallbackData, context, message);
                callbacks.TryAdd(message.Id, callbackData);
            }

            if (logger.IsEnabled(LogLevel.Trace))
            {
                logger.Trace("Send {0}", message);
            }
            MessageCenter.SendMessage(message);
        }
コード例 #11
0
    private void AddSyringe(CallbackData data)
    {
        GameObject  g    = data.DataObject as GameObject;
        GeneralItem item = g.GetComponent <GeneralItem>();
        Syringe     s    = item.GetComponent <Syringe>();

        if (s.Container.Capacity == 20000)
        {
            return;
        }

        if (!usedSyringes.ContainsKey(s))
        {
            usedSyringes.Add(s, 0);
        }

        if (!attachedSyringes.ContainsKey(s.GetInstanceID()) && !s.hasBeenInBottle)
        {
            attachedSyringes.Add(s.GetInstanceID(), s.Container.Amount);
        }
    }
コード例 #12
0
        public HandleCallbackQueryCommand Handle(CallbackData data, Service service, CallbackQueryHandler handler)
        {
            if (!(data is SettingsCallbackData))
            {
                return(null);
            }

            if (!data.Command.EqualsAny(StringComparison.CurrentCultureIgnoreCase,
                                        CallbackCommand.LABELS_BACK_COMMAND,
                                        CallbackCommand.PERMISSIONS_BACK_COMMAND,
                                        CallbackCommand.IGNORE_BACK_COMMAND,
                                        CallbackCommand.ADDITIONAL_BACK_COMMAND
                                        ))
            {
                return(null);
            }

            HandleCallbackQueryCommand del = async sender => await handler.HandleCallbackQBackToMainMenu(sender);

            return(del);
        }
コード例 #13
0
        internal static EventArgsExtKlavye FromRawDataApp(CallbackData data)
        {
            var wParam = data.WParam;
            var lParam = data.LParam;

            const uint maskKeydown = 0x40000000; // bit 30
            const uint maskKeyup   = 0x80000000; // bit 31 xd

            var timestamp = Environment.TickCount;

            var flags         = (uint)lParam.ToInt64();
            var wasKeyDown    = (flags & maskKeydown) > 0;
            var isKeyReleased = (flags & maskKeyup) > 0;

            var keyData = AppendModifierStates((Keys)wParam);

            var isKeyDown = !wasKeyDown && !isKeyReleased;
            var isKeyUp   = wasKeyDown && isKeyReleased;

            return(new EventArgsExtKlavye(keyData, timestamp, isKeyDown, isKeyUp));
        }
コード例 #14
0
        private void ProcessCallback(CallbackData data)
        {
            switch (data.Event)
            {
            case "message":
                OnMessage(data);
                break;

            case "conversation_started":
                OnConversationStarted(data);
                break;

            //case MessageType.Picture:
            //	type = typeof(PictureMessage);
            //	break;
            //case MessageType.Video:
            //	type = typeof(VideoMessage);
            //	break;
            //case MessageType.File:
            //	type = typeof(FileMessage);
            //	break;
            //case MessageType.Location:
            //	type = typeof(LocationMessage);
            //	break;
            //case MessageType.Contact:
            //	type = typeof(ContactMessage);
            //	break;
            //case MessageType.Sticker:
            //	type = typeof(StickerMessage);
            //	break;
            //case MessageType.CarouselContent:
            //	throw new NotImplementedException();
            //case MessageType.Url:
            //	type = typeof(UrlMessage);
            //	break;
            default:
                //throw new ArgumentOutOfRangeException();
                break;
            }
        }
コード例 #15
0
        private void SendRequestMessage(GrainReference target, Message message, IResponseCompletionSource context, InvokeMethodOptions options)
        {
            message.InterfaceType    = target.InterfaceType;
            message.InterfaceVersion = target.InterfaceVersion;
            var targetGrainId = target.GrainId;
            var oneWay        = (options & InvokeMethodOptions.OneWay) != 0;

            message.SendingGrain      = CurrentActivationAddress.Grain;
            message.SendingActivation = CurrentActivationAddress.Activation;
            message.TargetGrain       = targetGrainId;

            if (SystemTargetGrainId.TryParse(targetGrainId, out var systemTargetGrainId))
            {
                // If the silo isn't be supplied, it will be filled in by the sender to be the gateway silo
                message.TargetSilo       = systemTargetGrainId.GetSiloAddress();
                message.TargetActivation = ActivationId.GetDeterministic(targetGrainId);
            }

            if (message.IsExpirableMessage(this.clientMessagingOptions.DropExpiredMessages))
            {
                // don't set expiration for system target messages.
                message.TimeToLive = this.clientMessagingOptions.ResponseTimeout;
            }

            if (!oneWay)
            {
                var callbackData = new CallbackData(this.sharedCallbackData, context, message);
                callbacks.TryAdd(message.Id, callbackData);
            }
            else
            {
                context?.Complete();
            }

            if (logger.IsEnabled(LogLevel.Trace))
            {
                logger.Trace("Send {0}", message);
            }
            MessageCenter.SendMessage(message);
        }
コード例 #16
0
        public static void ParseCallbackQueryTest()
        {
            const string Query = "DateTime=2016-12-31+23%3a59%3a59&TransactionID=1234567890&OrderId=0987654321qwe" +
                                 "&Amount=123.45&Currency=EUR&SecurityKey=036c0215b7197e33308c2a2cf219fbbf" +
                                 "&RebillAnchor=4587fh8fhYTF5ftfytf%3d&PaymentAmount=123.45" +
                                 "&PaymentCurrency=EUR&CardHolder=TEST+CARDHOLDER&CardNumber=411111******1111" +
                                 "&Country=US&City=New-York&ECI=7&Code=5205&ErrorCode=3&Zip=12700&Address=Test" +
                                 "&Phone=555-444-11-44&[email protected]&BankName=Chase&ThreedsEnrollment=0" +
                                 "&IpCountry=RU&BinCountry=US&AuthCode=666555&GatewayTransactionId=BankTrId1" +
                                 "&IpAddress=127.0.0.1&SpecialConditions=Validation+Required";
            var callbackData = new CallbackData(HttpUtility.ParseQueryString(Query), new MerchantSettings(12345, "3844908d-4c2a-42e1-9be0-91bb5d068d22"));

            Assert.AreEqual(new DateTime(2016, 12, 31, 23, 59, 59), callbackData.TransactionDate);
            Assert.AreEqual(1234567890, callbackData.TransactionId);
            Assert.AreEqual("0987654321qwe", callbackData.OrderInfo.OrderId);
            Assert.AreEqual(123.45m, callbackData.OrderInfo.Amount);
            Assert.AreEqual("EUR", callbackData.OrderInfo.Currency);
            Assert.AreEqual("4587fh8fhYTF5ftfytf=", callbackData.RebillAnchor);
            Assert.AreEqual(123.45, callbackData.PaymentAmount);
            Assert.AreEqual("EUR", callbackData.PaymentCurrency);
            Assert.AreEqual("TEST CARDHOLDER", callbackData.CardholderName);
            Assert.AreEqual("411111******1111", callbackData.MaskedCardNumber);
            Assert.AreEqual("US", callbackData.CountryCode);
            Assert.AreEqual("New-York", callbackData.City);
            Assert.AreEqual(EcommerceIndicator.MerchantResponsibility, callbackData.EcommerceIndicator);
            Assert.AreEqual(5205, callbackData.DeclineCode);
            Assert.AreEqual(3, callbackData.ErrorCode);
            Assert.AreEqual("12700", callbackData.ZipCode);
            Assert.AreEqual("Test", callbackData.StreetAddress);
            Assert.AreEqual("555-444-11-44", callbackData.Phone);
            Assert.AreEqual("*****@*****.**", callbackData.Email);
            Assert.AreEqual("Chase", callbackData.Issuer);
            Assert.AreEqual(CardEnrollmentStatus.No, callbackData.CardEnrollmentStatus);
            Assert.AreEqual("RU", callbackData.IPCountryCode);
            Assert.AreEqual("US", callbackData.BinCountryCode);
            Assert.AreEqual("666555", callbackData.AuthorizationCode);
            Assert.AreEqual("BankTrId1", callbackData.BankTransactionId);
            Assert.AreEqual(IPAddress.Parse("127.0.0.1"), callbackData.IPAddress);
            Assert.AreEqual("Validation Required", callbackData.SpecialConditions);
        }
コード例 #17
0
        private static async Task <bool> IsCallbackBlocked(CallbackQuery callback, string info)
        {
            var message = callback.Message;
            var found   = _callbackBlocked.Where(c => c.MessageId == message.MessageId && c.FromId == callback.From.Id)
                          .ToList().FirstOrDefault();

            if (found != null)
            {
                var countdown = (DateTime.Now - found.LastTime).Seconds;
                if (countdown < _callbackBlockedTimeout)
                {
                    await BotClient.AnswerCallbackQueryAsync(callback.Id,
                                                             $"Sabar ya kaka...\nTunggu {_callbackBlockedTimeout - countdown} dtk baru bisa tekan tombol ini lagi.",
                                                             true);

                    return(true);
                }

                return(false);
            }

            _log.Debug("Block Callback: {0}: {1} -- {2}", info, message.MessageId, callback.From.Id);

            var callbackData = new CallbackData
            {
                MessageId = message.MessageId,
                FromId    = callback.From.Id,
                Info      = info,
                LastTime  = DateTime.Now
            };

            _callbackBlocked.Add(callbackData);

            var timer = new Timer(_callbackBlockedTimeout * 1000);

            timer.Elapsed += (ts, te) => TimerElapsed(timer, callbackData);
            timer.Start();
            return(false);
        }
コード例 #18
0
        private static Int32 AddCallback(Event _event, EventNotify userMethod, Object userData)
        {
            Int32 callbackId;
            var   callbackData = new CallbackData(_event, userMethod, userData);
            var   gotMutex     = false;

            try {
                gotMutex = Event.CallbackMutex.WaitOne();
                do
                {
                    callbackId = Event.CallbackId++;
                } while (Event.CallbackDispatch.ContainsKey(callbackId));
                Event.CallbackDispatch.Add(callbackId, callbackData);
            }
            finally {
                if (gotMutex)
                {
                    Event.CallbackMutex.ReleaseMutex();
                }
            }
            return(callbackId);
        }
コード例 #19
0
ファイル: MouseListener.cs プロジェクト: StartZYP/XratVirus
        // Token: 0x06000288 RID: 648 RVA: 0x0000E238 File Offset: 0x0000C438
        protected override bool Callback(CallbackData data)
        {
            MouseEventExtArgs eventArgs = this.GetEventArgs(data);

            if (eventArgs.IsMouseKeyDown)
            {
                this.ProcessDown(ref eventArgs);
            }
            if (eventArgs.IsMouseKeyUp)
            {
                this.ProcessUp(ref eventArgs);
            }
            if (eventArgs.WheelScrolled)
            {
                this.ProcessWheel(ref eventArgs);
            }
            if (this.HasMoved(eventArgs.Point))
            {
                this.ProcessMove(ref eventArgs);
            }
            return(!eventArgs.Handled);
        }
コード例 #20
0
        public static async Task Execute(CallbackData data)
        {
            //отправить подтверждение
            var receiver = data.Sender.Id;

            var helpFile = client.Settings.HelpFile;

            var message = new KeyboardMessage
            {
                Receiver     = receiver,
                Sender       = client.BotUserData,
                Text         = $"Добрый день я бот который помогает учитывать данные счетчика электроэнерги. Инструкцию по использованию можно найти по адресу {helpFile.Url}.",
                TrackingData = ViberBotTrackingData.Empty(),
                Keyboard     = KeyboardHandler.MainMenu
            };
            await client.SendMessage(receiver, message);

            var helpLink = new LinkMessage
            {
                Receiver = receiver,
                Sender   = client.BotUserData,
                Media    = helpFile.Url,
            };

            await client.SendMessage(receiver, helpLink);

            var filemessage = new FileMessage
            {
                Receiver = receiver,
                Sender   = client.BotUserData,
                Media    = helpFile.Url,
                Size     = helpFile.Size,
                FileName = helpFile.FileName
            };

            await client.SendMessage(receiver, filemessage);

            await DefaultAction.Execute(data);
        }
コード例 #21
0
    protected override void OnCollisionEnter(Collision other)
    {
        base.OnCollisionEnter(other);

        GameObject  foundObject = GetInteractableObject(other.transform);
        GeneralItem item        = foundObject?.GetComponent <GeneralItem>();

        if (item == null)
        {
            return;
        }
        if (item.ObjectType == ObjectType.Bottle && this.IsClean)
        {
            MedicineBottle bottle = item as MedicineBottle;
            if (!bottle.IsClean)
            {
                bottle.Contamination = ContaminateState.Clean;
                UISystem.Instance.CreatePopup("Lääkepullon korkki puhdistettu.", MsgType.Done);
                Events.FireEvent(EventType.BottleDisinfect, CallbackData.Object(bottle));
            }
        }
    }
コード例 #22
0
        private static int AddCallback(Event _event, EventNotify userMethod, object userData)
        {
            int callbackId;
            CallbackData callbackData = new CallbackData(_event,userMethod,userData);
            bool gotMutex = false;

            try
            {
                gotMutex = CallbackMutex.WaitOne();
                do
                {
                    callbackId = CallbackId++;
                } while (CallbackDispatch.ContainsKey(callbackId));
                CallbackDispatch.Add(callbackId, callbackData);
            }
            finally
            {
                if (gotMutex)
                    CallbackMutex.ReleaseMutex();
            }
            return callbackId;
        }
コード例 #23
0
        internal static IEnumerable <KeyPressEventArgsExt> FromRawDataApp(CallbackData data, IKeyEventArgs arg)
        {
            var wParam = data.WParam;
            var lParam = data.LParam;

            //http://msdn.microsoft.com/en-us/library/ms644984(v=VS.85).aspx

            const uint maskKeydown  = 0x40000000; // for bit 30
            const uint maskKeyup    = 0x80000000; // for bit 31
            const uint maskScanCode = 0xff0000;   // for bit 23-16

            var flags = (uint)lParam.ToInt64();

            //bit 30 Specifies the previous key state. The value is 1 if the key is down before the message is sent; it is 0 if the key is up.
            var wasKeyDown = (flags & maskKeydown) > 0;
            //bit 31 Specifies the transition state. The value is 0 if the key is being pressed and 1 if it is being released.
            var isKeyReleased = (flags & maskKeyup) > 0;

            if (!wasKeyDown && !isKeyReleased)
            {
                yield break;
            }

            var       virtualKeyCode = (int)wParam;
            var       scanCode       = checked ((int)(flags & maskScanCode));
            const int fuState        = 0;

            char[] chars;

            KeyboardNativeMethods.TryGetCharFromKeyboardState(virtualKeyCode, scanCode, fuState, out chars);
            if (chars == null)
            {
                yield break;
            }
            foreach (var ch in chars)
            {
                yield return(new KeyPressEventArgsExt(ch, arg));
            }
        }
コード例 #24
0
    public void Copy(CallbackData data)
    {
        if (copy == null)
        {
            return;
        }
        GeneralItem item = (GeneralItem)data.DataObject;

        BreakConnection(item);
        if (item.gameObject == currentObject || currentObject == null)
        {
            currentObject = Instantiate(copy, transform.position, transform.rotation);

            GeneralItem g = Interactable.GetInteractable(currentObject.transform) as GeneralItem;
            Logger.Warning("ITEM SPAWNER COPIES ITEM CONNECTION EVEN THOUGH IT ABSOLUTELY SHOULD NOT");
            // Below is a budget fix, it works now but might cause problems if the system is changed
            Destroy(g.GetComponent <ItemConnection>());
            g.Contamination = GeneralItem.ContaminateState.Clean;
            copy            = currentObject;
            //CopyChildStates(Interactable.GetInteractable(copy.transform) as GeneralItem, g);
        }
    }
コード例 #25
0
        protected override bool Callback(CallbackData data)
        {
            var eDownUp = GetDownUpEventArgs(data);

            InvokeKeyDown(eDownUp);

            if (KeyPress != null || KeyDownTxt != null)
            {
                var pressEventArgs = GetPressEventArgs(data).ToList();

                foreach (var pressEventArg in pressEventArgs)
                {
                    InvokeKeyPress(pressEventArg);
                }

                var downTxtEventArgs = GetDownTxtEventArgs(eDownUp, pressEventArgs);
                InvokeKeyDownTxt(downTxtEventArgs);
            }

            InvokeKeyUp(eDownUp);

            return(!eDownUp.Handled);
        }
コード例 #26
0
        protected override bool Callback(CallbackData data)
        {
            var eDownUp = GetDownUpEventArgs(data);

            _logger.LogInformation(new String('\t', _indentCounter++) + "→" + eDownUp.ToString());

            InvokeKeyDown(eDownUp);

            if (KeyPress != null)
            {
                var pressEventArgs = GetPressEventArgs(data);
                foreach (var pressEventArg in pressEventArgs)
                {
                    InvokeKeyPress(pressEventArg);
                }
            }

            InvokeKeyUp(eDownUp);
            _logger.LogInformation(new String('\t', --_indentCounter) + "←" + eDownUp.ToString());
            //Console.Write(Environment.NewLine);

            return(!eDownUp.Handled);
        }
コード例 #27
0
        private static void InitLingo()
        {
            //create lingo environement
            pLingoEnv = Lingo.LScreateEnvLng();
            if (pLingoEnv == 0)
            {
                Console.WriteLine("Unable to create Lingo environment.\n");
                return;
            }

            //create and open lingo log
            int nError = Lingo.LSopenLogFileLng(pLingoEnv, "Lingo.log");

            CheckError(nError);

            dSatus       = -1.0;
            nPointersNow = -1;

            // Let Lingo know we have a callback function
            var cbd = new CallbackData();
            var cb  = new Lingo.typCallback(LngCallback.MyCallback);

            nError = Lingo.LSsetCallbackSolverLng(pLingoEnv, cb, cbd);
            CheckError(nError);

            //// Pointer to the solution dSatus code
            //nError = Lingo.LSsetPointerLng(pLingoEnv, ref dSatus, ref nPointersNow);
            //CheckError(nError);

            //// Point to dObjective, where Lingo will return the objective value
            //nError = Lingo.LSsetPointerLng(pLingoEnv, ref dObjective, ref nPointersNow);
            //CheckError(nError);


            //add license
            Lingo.LScreateEnvLicenseLng("lndlng12.lic", ref nError);
        }
コード例 #28
0
        public static async Task Execute(CallbackData data)
        {
            var text         = ((TextMessage)data.Message).Text;
            var receiver     = data.Sender.Id;
            var trackingData = ViberBotTrackingData.Get(data.Message.TrackingData);

            if (text == "no")
            {
                await StartSendDataAction.Execute(data);

                return;
            }
            else if (text == "yes")
            {
                var flatNumber = trackingData.Data[DataField.FlatNumber.ToString()];
                var flatValue  = trackingData.Data[DataField.FlatValue.ToString()];

                //сохранить в таблицу
                Handlers.GoogleSheetsHandler.UpdateFlatData(flatNumber, flatValue, data.Sender);

                await client.SendTextMessage(receiver, "Данные успешно сохранены.");
            }
            else
            {
                var message = new KeyboardMessage
                {
                    Receiver     = receiver,
                    Sender       = client.BotUserData,
                    Text         = $"Выберите действи из списка.",
                    TrackingData = ViberBotTrackingData.Build("SendDataAction", "SendDataAction", trackingData.Data),
                    Keyboard     = KeyboardHandler.YesNoCancel()
                };

                await client.SendMessage(receiver, message);
            }
        }
コード例 #29
0
        protected override bool Callback(CallbackData data)
        {
            var e = GetEventArgs(data);

            if (e.IsMouseButtonDown)
            {
                ProcessDown(ref e);
            }

            if (e.IsMouseButtonUp)
            {
                ProcessUp(ref e);
            }


            if (HasMoved(e.Point))
            {
                ProcessMove(ref e);
            }

            ProcessDrag(ref e);

            return(!e.Handled);
        }
コード例 #30
0
    private void OnTrueEnter(Interactable enteringInteractable)
    {
        Needle needle = enteringInteractable as Needle;

        if (needle == null || !needle.Connector.HasAttachedObject)
        {
            return;
        }

        Syringe syringe = needle.Connector.AttachedInteractable as Syringe;

        if (syringe == null)
        {
            return;
        }

        if (generalItem.ObjectType == ObjectType.Bottle)
        {
            syringe.State.On(InteractState.InBottle);
            syringe.hasBeenInBottle = true;

            if (!generalItem.IsClean)
            {
                needle.Contamination = GeneralItem.ContaminateState.Contaminated;
            }

            if ((G.Instance.Scene as MedicinePreparationScene).NeedleUsed)
            {
                TaskBase.CreateGeneralMistake("Lääkettä yritettiin ottaa uudestaan");
            }

            Events.FireEvent(EventType.SyringeWithNeedleEntersBottle, CallbackData.Object(syringe));
        }

        syringe.BottleContainer = this;
    }
コード例 #31
0
        public static async Task Execute(CallbackData data)
        {
            var receiver = data.Sender.Id;

            var userValue = ((TextMessage)data.Message).Text;

            //TODO возможно сделать проверку номера
            Regex r = new Regex(@"^\+?\d{0,2}\-?\d{4,5}\-?\d{5,6}");

            if (r.IsMatch(userValue))
            {
                //учесть данные в поле трекинга

                var trackingData = ViberBotTrackingData.Get(data.Message.TrackingData);

                var contactsData = trackingData.Data[DataField.Contacts.ToString()];

                trackingData.Add(DataField.Contacts.ToString(), userValue);

                //запросить  подтверждение
                var message = new KeyboardMessage
                {
                    Receiver     = receiver,
                    Sender       = client.BotUserData,
                    Text         = $"Старые контактные данные - {contactsData}. Вы указали - {userValue}. Данные верны?",
                    TrackingData = ViberBotTrackingData.Build("СonfirmSendContactsAction", "SendContactsAction", trackingData.Data),
                    Keyboard     = KeyboardHandler.YesNoCancel()
                };
                await client.SendMessage(receiver, message);
            }
            else
            {
                //неверное значение
                await client.SendTextMessage(receiver, BotError.BadValue);
            }
        }
コード例 #32
0
        internal static IEnumerable <KeyPressEventArgsExt> FromRawDataGlobal(CallbackData data, IKeyEventArgs arg)
        {
            var wParam = data.WParam;
            var lParam = data.LParam;

            if ((int)wParam != Messages.WM_KEYDOWN && (int)wParam != Messages.WM_SYSKEYDOWN)
            {
                yield break;
            }

            var keyboardHookStruct =
                (KeyboardHookStruct)Marshal.PtrToStructure(lParam, typeof(KeyboardHookStruct));

            var virtualKeyCode = keyboardHookStruct.VirtualKeyCode;
            var scanCode       = keyboardHookStruct.ScanCode;
            var fuState        = keyboardHookStruct.Flags;

            if (virtualKeyCode == KeyboardNativeMethods.VK_PACKET)
            {
                var ch = (char)scanCode;
                yield return(new KeyPressEventArgsExt(ch, arg, keyboardHookStruct.Time));
            }
            else
            {
                char[] chars;
                KeyboardNativeMethods.TryGetCharFromKeyboardState(virtualKeyCode, scanCode, fuState, out chars);
                if (chars == null)
                {
                    yield break;
                }
                foreach (var current in chars)
                {
                    yield return(new KeyPressEventArgsExt(current, arg, keyboardHookStruct.Time));
                }
            }
        }
コード例 #33
0
        internal static IEnumerable <EventArgsTuşBasışı> FromRawDataApp(CallbackData data)
        {
            var wParam = data.WParam;
            var lParam = data.LParam;


            const uint maskKeydown  = 0x40000000; // bit 30 için
            const uint maskKeyup    = 0x80000000; // bit 31 için xd
            const uint maskScanCode = 0xff0000;   // bit 23-16 için

            var flags = (uint)lParam.ToInt64();

            var wasKeyDown    = (flags & maskKeydown) > 0;
            var isKeyReleased = (flags & maskKeyup) > 0;

            if (!wasKeyDown && !isKeyReleased)
            {
                yield break;
            }

            var       virtualKeyCode = (int)wParam;
            var       scanCode       = checked ((int)(flags & maskScanCode));
            const int fuState        = 0;

            char[] chars;

            KeyboardNativeMethods.TryGetCharFromKeyboardState(virtualKeyCode, scanCode, fuState, out chars);
            if (chars == null)
            {
                yield break;
            }
            foreach (var ch in chars)
            {
                yield return(new EventArgsTuşBasışı(ch));
            }
        }
コード例 #34
0
ファイル: Connector.cs プロジェクト: iwaim/growl-for-windows
 protected void OnCallback(CallbackData callbackData)
 {
     if (this.CallbackReceived != null)
     {
         this.CallbackReceived(callbackData);
     }
 }
コード例 #35
0
ファイル: Connector.cs プロジェクト: iwaim/growl-for-windows
 void growl_NotificationCallback(Growl.Connector.Response response, Growl.Connector.CallbackData callbackData)
 {
     CallbackData cd = new CallbackData(callbackData);
     OnCallback(cd);
 }
コード例 #36
0
ファイル: Event.cs プロジェクト: ctapang/GPUCyclops
        private static int AddCallback(Event _event, EventNotify userMethod, object userData)
        {
            int callbackId;
            CallbackData callbackData = new CallbackData(_event,userMethod,userData);
            bool gotMutex = false;

            try
            {
                gotMutex = CallbackMutex.WaitOne();
                do
                {
                    callbackId = CallbackId++;
                } while (CallbackDispatch.ContainsKey(callbackId));
                CallbackDispatch.Add(callbackId, callbackData);
            }
            finally
            {
                if (gotMutex)
                    CallbackMutex.ReleaseMutex();
            }
            return callbackId;
        }
コード例 #37
0
ファイル: WebClient_2_1.cs プロジェクト: afaerber/mono
		WebRequest SetupRequest (Uri uri, string method, CallbackData callbackData)
		{
			callback_data = callbackData;
			WebRequest request = GetWebRequest (uri);
			request.Method = DetermineMethod (uri, method);
			foreach (string header in Headers.AllKeys)
				request.Headers.SetHeader (header, Headers [header]);
			return request;
		}
コード例 #38
0
ファイル: XmppStream.cs プロジェクト: sq5gvm/JabberNet-2010
 /// <summary>
 /// Registers a callback, so that if a packet arrives that matches the given xpath expression,
 /// the callback fires.  Use <see cref="AddNamespace"/> to add namespace prefixes.
 /// </summary>
 /// <example>jc.AddCallback("self::iq[@type='result']/roster:query", new ProtocolHandler(GotRoster));</example>
 /// <param name="xpath">The xpath expression to search for</param>
 /// <param name="cb">The callback to call when the xpath matches</param>
 /// <returns>A guid that can be used to unregister the callback</returns>
 public Guid AddCallback(string xpath, ProtocolHandler cb)
 {
     CallbackData cbd = new CallbackData(xpath, cb);
     m_callbacks.Add(cbd);
     return cbd.Guid;
 }
コード例 #39
0
 public CallbackService(CallbackData data)
 {
     _data = data;
 }
コード例 #40
0
ファイル: WebClient_2_1.cs プロジェクト: nlhepler/mono
		public void UploadStringAsync (Uri address, string method, string data, object userToken)
		{
			if (address == null)
				throw new ArgumentNullException ("address");
			if (data == null)
				throw new ArgumentNullException ("data");

			lock (locker) {
				SetBusy ();

				try {
					CallbackData cbd = new CallbackData (userToken, encoding.GetBytes (data));
					request = SetupRequest (address, method, cbd);
					request.BeginGetRequestStream (new AsyncCallback (UploadStringRequestAsyncCallback), cbd);
				}
				catch (Exception e) {
					WebException wex = new WebException ("Could not start operation.", e);
					OnUploadStringCompleted (
						new UploadStringCompletedEventArgs (null, wex, false, userToken));
				}
			}
		}
コード例 #41
0
ファイル: WebClient_2_1.cs プロジェクト: nlhepler/mono
		WebRequest SetupRequest (Uri uri, string method, CallbackData callbackData)
		{
			callback_data = callbackData;
			WebRequest request = GetWebRequest (uri);
			// do not send a relative URI to Determine method
			request.Method = DetermineMethod (request.RequestUri, method);
			// copy headers to the request - some needs special treatments
			foreach (string header in Headers) {
				switch (header.ToLowerInvariant ()) {
				case "content-length":
					long cl = 0;
					if (Int64.TryParse (Headers [header], out cl) && (cl >= 0))
						request.ContentLength = cl;
					break;
				case "accept":
				case "content-type":
					// this skip the normal/user validation on headers
					request.Headers.SetHeader (header, Headers [header]);
					break;
				default:
					request.Headers [header] = Headers [header];
					break;
				}
			}
			// original headers are removed after calls
			Headers.Clear ();
			return request;
		}
コード例 #42
0
ファイル: LingoAPI.cs プロジェクト: hxwang/Course-Projects
    public static int MyCallback(int pLingoEnv, int nReserved, IntPtr pMyData)
    {
        // Lingo callback function to display the current iteration count

        CallbackData cb = new CallbackData();
        Marshal.PtrToStructure(pMyData, cb);

        int nIterations = -1, nErr;

        //回调函数
        nErr = Lingo.LSgetCallbackInfoLng(pLingoEnv,
         Lingo.LS_IINFO_ITERATIONS_LNG, ref nIterations);// LS_IINFO_VARIABLES_NONLINEAR_LNG  LS_IINFO_ITERATIONS_LNG
        if (nErr == Lingo.LSERR_NO_ERROR_LNG && nIterations != cb.nIterations)
        {
            cb.nIterations = nIterations;
            if (nIterations % 100 == 0)
            {
                Console.WriteLine("Iteration count = {0}", nIterations);
            }
        }

        Marshal.StructureToPtr(cb, pMyData, true);

        return 0;
    }
コード例 #43
0
 public void OnCallback(CallbackData message)
 {
     Called = message;
 }
コード例 #44
0
ファイル: Program.cs プロジェクト: hxwang/Course-Projects
        private static void InitLingo()
        {
            //create lingo environement
            pLingoEnv = Lingo.LScreateEnvLng();
            if (pLingoEnv == 0)
            {
                Console.WriteLine("Unable to create Lingo environment.\n");
                return;
            }

            //create and open lingo log
            int nError = Lingo.LSopenLogFileLng(pLingoEnv, "Lingo.log");
            CheckError(nError);

            dSatus = -1.0;
            nPointersNow = -1;

            // Let Lingo know we have a callback function
            var cbd = new CallbackData();
            var cb = new Lingo.typCallback(LngCallback.MyCallback);

            nError = Lingo.LSsetCallbackSolverLng(pLingoEnv, cb, cbd);
            CheckError(nError);

            //// Pointer to the solution dSatus code
            //nError = Lingo.LSsetPointerLng(pLingoEnv, ref dSatus, ref nPointersNow);
            //CheckError(nError);

            //// Point to dObjective, where Lingo will return the objective value
            //nError = Lingo.LSsetPointerLng(pLingoEnv, ref dObjective, ref nPointersNow);
            //CheckError(nError);

            //add license
            Lingo.LScreateEnvLicenseLng("lndlng12.lic", ref nError);
        }
コード例 #45
0
	private IEnumerator IEHideLoading(CallbackData callbackData)
	{
		yield return new WaitForSeconds (callbackData.TimeOut);

		HideLoading ();

		if (callbackData.Callback != null)
		{
			callbackData.Callback ();
		}
	}