Exemple #1
0
        /// <summary>
        /// Obains a new Message for <code>TMessage</code> this can be a new Message a unused
        /// Message from the internal pool
        /// </summary>
        /// <typeparam name="TMessage">Type of data the message should wrap</typeparam>
        /// <returns>a (new) Message that can be used</returns>
        public static Message <TMessage> GetMessage <TMessage>()
        {
            Message <TMessage> message = MessagePool.GetMessage <TMessage>();

            if (message == null)
            {
                message        = new Message <TMessage>();
                message._inUse = true;
                MessagePool.AddMessage <TMessage>(message);
            }

            return(message);
        }
Exemple #2
0
        public static Message <TMessage> GetMessage <TMessage>(TMessage content)
        {
            Message <TMessage> message = MessagePool.GetMessage <TMessage>();

            if (message == null)
            {
                message        = new Message <TMessage>();
                message._inUse = true;
                MessagePool.AddMessage <TMessage>(message);
            }

            message.Content = content;

            return(message);
        }
Exemple #3
0
    // Start is called before the first frame update
    void Start()
    {
        Debug.Log($"Start: {SynchronizationContext.Current}");

        var bind = new BindManager(new ThreadPoolExecutor());

        for (int i = 0; i < 3; i++)
        {
            var msgOne = MessagePool.GetMessage();
            msgOne.Init(new Address(), new Address(), 15);
        }

        for (int i = 0; i < 10; i++)
        {
            TaskCompletionSource <float> result = new TaskCompletionSource <float>();
            var rqOne = MessagePool.GetMessage();
            rqOne.Init(new Address(), new Address(), (float)i, Message.DeliveryType.ToOne, new ResultContainer <float>(result));
        }

        Debug.Log($"Finish: {SynchronizationContext.Current}");
    }