Ejemplo n.º 1
0
        /// <summary>
        /// Query cluster member for recording log information.
        /// </summary>
        /// <returns> result of query. </returns>
        public byte[] QueryForRecordingLog()
        {
            _lock.Lock();
            try
            {
                long         deadlineNs    = _nanoClock.NanoTime() + _ctx.MessageTimeoutNs();
                long         correlationId = SendAdminQuery(AdminQueryType.RECORDING_LOG, deadlineNs);
                EgressPoller poller        = new EgressPoller(_subscription, FRAGMENT_LIMIT);

                while (true)
                {
                    PollNextResponse(deadlineNs, correlationId, poller);

                    if (poller.CorrelationId() == correlationId)
                    {
                        if (poller.TemplateId() == AdminResponseDecoder.TEMPLATE_ID)
                        {
                            return(poller.AdminResponseData());
                        }
                        else if (poller.EventCode() == EventCode.ERROR)
                        {
                            throw new InvalidOperationException(poller.Detail());
                        }
                    }
                }
            }
            finally
            {
                _lock.Unlock();
            }
        }
Ejemplo n.º 2
0
        /// <summary>
        /// Query cluster member for endpoint information.
        /// <para>
        /// <code>
        /// id=num,memberStatus=member-facing:port,log=log:port,archive=archive:port
        /// </code>
        ///
        /// </para>
        /// </summary>
        /// <returns> result of query. </returns>
        public string QueryForEndpoints()
        {
            _lock.Lock();
            try
            {
                long         deadlineNs    = _nanoClock.NanoTime() + _ctx.MessageTimeoutNs();
                long         correlationId = SendAdminQuery(AdminQueryType.ENDPOINTS, deadlineNs);
                EgressPoller poller        = new EgressPoller(_subscription, FRAGMENT_LIMIT);

                while (true)
                {
                    PollNextResponse(deadlineNs, correlationId, poller);

                    if (poller.CorrelationId() == correlationId)
                    {
                        if (poller.TemplateId() == AdminResponseDecoder.TEMPLATE_ID)
                        {
                            return(Encoding.ASCII.GetString(poller.AdminResponseData())); // TODO check default charset for Java
                        }
                        else if (poller.EventCode() == EventCode.ERROR)
                        {
                            throw new InvalidOperationException(poller.Detail());
                        }
                    }
                }
            }
            finally
            {
                _lock.Unlock();
            }
        }