internal void PostRetrieveByteCodeRequest(RetrieveBytecodeRequest rbRequest)
        {
            lock (_outstandingBytecodeRequests)
            {
                _outstandingBytecodeRequests.Enqueue(rbRequest);
            }

            _workArrived();
        }
        /// <summary>
        /// Returns serialized compiled script instances given a set of script asset ids
        /// </summary>
        /// <param name="assetIds"></param>
        /// <returns></returns>
        public Dictionary <UUID, byte[]> GetBytecodeForAssets(IEnumerable <UUID> assetIds)
        {
            if (!_masterScheduler.IsRunning)
            {
                _log.Error("[Phlox]: Unable to retrieve bytecode data for scripts, master scheduler has died");
                return(new Dictionary <UUID, byte[]>());
            }


            const int DATA_WAIT_TIMEOUT = 3000;

            RetrieveBytecodeRequest rbRequest = new RetrieveBytecodeRequest {
                ScriptIds = assetIds
            };

            _scriptLoader.PostRetrieveByteCodeRequest(rbRequest);

            rbRequest.WaitForData(DATA_WAIT_TIMEOUT);

            return(rbRequest.Bytecodes);
        }
        /// <summary>
        /// Returns serialized compiled script instances given a set of script asset ids
        /// </summary>
        /// <param name="assetIds"></param>
        /// <returns></returns>
        public Dictionary<UUID, byte[]> GetBytecodeForAssets(IEnumerable<UUID> assetIds)
        {
            if (!_masterScheduler.IsRunning)
            {
                _log.Error("[Phlox]: Unable to retrieve bytecode data for scripts, master scheduler has died");
                return new Dictionary<UUID,byte[]>();
            }


            const int DATA_WAIT_TIMEOUT = 3000;

            RetrieveBytecodeRequest rbRequest = new RetrieveBytecodeRequest { ScriptIds = assetIds };
            _scriptLoader.PostRetrieveByteCodeRequest(rbRequest);

            rbRequest.WaitForData(DATA_WAIT_TIMEOUT);

            return rbRequest.Bytecodes;
        }
Exemple #4
0
        internal void PostRetrieveByteCodeRequest(RetrieveBytecodeRequest rbRequest)
        {
            lock (_outstandingBytecodeRequests)
            {
                _outstandingBytecodeRequests.Enqueue(rbRequest);
            }

            _workArrived();
        }