예제 #1
0
        private async Task IfCAllbackQuery(CallbackQuery callbackQuery)
        {
            var callbackNotNullAndIsNotFromBot = callbackQuery != null && !callbackQuery.From.IsBot;

            if (!(callbackNotNullAndIsNotFromBot && callbackQuery.Message != null))
            {
                _logger.LogWarning($"Time: {DateTime.UtcNow}. Some problems with CallbackQuery obj: " + callbackQuery);
                return;
            }

            var answerCallback = new AnswerCallback(callbackQuery, _unitOfWorkFactory, _client);

            switch (callbackQuery.Data.Split("/")[0])
            {
            case "Search":
                await answerCallback.Search();

                break;

            case "Cancel":
                await answerCallback.Cancel();

                break;

            case "CancelAll":
                await answerCallback.Cancel();

                break;
            }
        }
예제 #2
0
        public int DancingLinks(bool justOne, AnswerCallback cb)
        {
            ansCallback = cb;
            IntPtr callback = Marshal.GetFunctionPointerForDelegate(new SudokuLib.AnswerCallback(DancingCallback));

            return(SudokuLib.DancingLinks(matrix, (byte)(justOne ? 1 : 0), callback, IntPtr.Zero));
        }
예제 #3
0
        public void Send <TRequest, TReply>(TRequest request, AnswerCallback <TRequest, TReply> callback, LetterOptions options = LetterOptions.None)
        {
            Guid    conversationId = Guid.NewGuid();
            ILetter letter         = CreateLetter(request, options, conversationId);
            var     outstanding    = new DelegateOutstanding <TRequest, TReply>(this, request, callback);

            _outstandings.Add(conversationId, outstanding);

            _socket.Send(letter);
        }
예제 #4
0
/* PUBLIC METHODS: */
        public Session( Configuration config_, AnswerCallback answerCallback_)
        {
            m_config = config_;
            m_serializer = new Serializer(m_config.schemadir, m_config.schemaext);
            m_connection = new Connection( m_config);

            m_lasterror = null;
            m_state = State.Init;
            m_stateLock = new object();

            m_requestqueue = new WorkQueue<Request>('R');
            m_pendingqueue = new WorkQueue<PendingRequest>('A');

            m_answerCallback = answerCallback_;
            m_request_thread = null;
            m_answer_thread = null;
        }
예제 #5
0
        /* PUBLIC METHODS: */
        public Session( Configuration config_, AnswerCallback answerCallback_)
        {
            m_config = config_;
            m_serializer = new Serializer(m_config.schemadir, m_config.schemaext);
            m_connection = new Connection( m_config);

            m_lasterror = null;
            m_state = State.Init;
            m_stateLock = new object();

            m_requestqueue = new WorkQueue<Request>('R');
            m_pendingqueue = new WorkQueue<PendingRequest>('A');

            m_answerCallback = answerCallback_;
            m_request_thread = null;
            m_answer_thread = null;
        }
예제 #6
0
        internal void Answer <TRequest, TReply>(TRequest value, AbstractAnswerable answerable, LetterOptions options, AnswerCallback <TRequest, TReply> callback)
        {
            ILetter letter      = CreateLetter(value, options | LetterOptions.Ack, answerable.ConversationId);
            var     outstanding = new DelegateOutstanding <TRequest, TReply>(this, value, callback);

            _outstandings.Add(answerable.ConversationId, outstanding);

            _socket.SendTo(letter, answerable.RemoteNodeId);
        }