Exemplo n.º 1
0
        void OnSerializing(StreamingContext context)
        {
            IPersistNode persist = _convert as IPersistNode;

            if (persist != null)
            {
                _state = persist.GetState(GetLogger());
            }

            _container = DynamicScriptContainer.GetCachedContainer(_container);
        }
Exemplo n.º 2
0
        /// <summary>
        /// Get a cached version of the container
        /// </summary>
        /// <param name="key">The container</param>
        /// <returns>The identified script container</returns>
        public static DynamicScriptContainer GetCachedContainer(DynamicScriptContainer key)
        {
            lock (_cache)
            {
                if (!_cache.ContainsKey(key))
                {
                    _cache[key] = key;
                }

                return(_cache[key]);
            }
        }
Exemplo n.º 3
0
        /// <summary>
        /// Constructor
        /// </summary>
        /// <param name="name">The name of the key</param>
        /// <param name="container">The script container</param>
        /// <param name="logger">The logger</param>
        /// <param name="state">The object state</param>
        protected DynamicDataKey(string name, DynamicScriptContainer container, Logger logger, object state) : base(name)
        {
            _container = container;
            _logger    = logger;

            if (state != null)
            {
                if (!state.GetType().IsSerializable)
                {
                    throw new ArgumentException(CANAPE.Scripting.Properties.Resources.DynamicDataKey_StateNotSerializable, "state");
                }
                _state = state;
            }
        }
Exemplo n.º 4
0
        /// <summary>
        /// Equals method
        /// </summary>
        /// <param name="obj">The other object</param>
        /// <returns>True if other object is equal</returns>
        public override bool Equals(object obj)
        {
            bool ret = ReferenceEquals(this, obj);

            // If reference equals then it is automatically the same
            if (!ret)
            {
                DynamicScriptContainer other = obj as DynamicScriptContainer;

                if (other != null)
                {
                    ret = _container.Equals(other._container) && _classname == other._classname;
                }
                else
                {
                    ret = false;
                }
            }

            return(ret);
        }
Exemplo n.º 5
0
 private void OnDeserialized(StreamingContext context)
 {
     _container = DynamicScriptContainer.GetCachedContainer(_container);
 }
Exemplo n.º 6
0
        /// <summary>
        /// Get a cached version of the container
        /// </summary>
        /// <param name="key">The container</param>
        /// <returns>The identified script container</returns>
        public static DynamicScriptContainer GetCachedContainer(DynamicScriptContainer key)
        {
            lock (_cache)
            {
                if (!_cache.ContainsKey(key))
                {
                    _cache[key] = key;
                }

                return _cache[key];
            }
        }
Exemplo n.º 7
0
 /// <summary>
 /// Constructor
 /// </summary>
 /// <param name="name">Name of key</param>
 /// <param name="container">The script container</param>
 /// <param name="logger">The logger</param>
 /// <param name="state">The state of the key</param>
 public DynamicStringDataKey2(string name, DynamicScriptContainer container, Logger logger, object state)
     : base(name, container, logger, state)
 {
 }
Exemplo n.º 8
0
        private static IEnumerable<DataFrame> ReadFrames(IDataAdapter client, DynamicScriptContainer container, Logger logger, object config)
        {
            DataReader reader = new DataReader(new DataAdapterToStream(client));

            while (!reader.Eof)
            {
                DynamicStreamDataKey2 key = new DynamicStreamDataKey2("Root", container, logger, config);

                try
                {
                    key.FromReader(reader);
                }
                catch (ThreadAbortException)
                {
                    throw;
                }
                catch (EndOfStreamException)
                {
                    // End of stream, do nothing
                }
                catch (Exception e)
                {
                    logger.LogException(e);
                    yield break;
                }

                // Only fill in the frame if we read something, should this exit if it continues to read nothing?
                if (reader.ByteCount > 0)
                {
                    yield return new DataFrame(key);
                }
            }
        }
Exemplo n.º 9
0
 /// <summary>
 /// Constructor
 /// </summary>
 /// <param name="container">The script container for both directions</param>
 /// <param name="logger">Logger to log output</param>
 public ParserNetworkLayer(DynamicScriptContainer container, Logger logger)
     : this(container, container, logger)
 {
 }
Exemplo n.º 10
0
 /// <summary>
 /// Constructor
 /// </summary>
 /// <param name="clientContainer">The script container for the client sourced packets</param>
 /// <param name="serverContainer">The script container for the server sourced packets</param>
 /// <param name="logger">Logger to log output</param>
 public ParserNetworkLayer(DynamicScriptContainer clientContainer, DynamicScriptContainer serverContainer, Logger logger)
 {
     _clientContainer = clientContainer;
     _serverContainer = serverContainer;
     _logger = logger;
 }