Exemplo n.º 1
0
        /// <summary>
        /// Gets the service object of the specified type.
        /// </summary>
        /// <param name="serviceType">An object that specifies the type of service object to get.</param>
        /// <returns>
        /// A service object of type serviceType.-or- null if there is no service object of type serviceType.
        /// </returns>
        public virtual object GetService(Type serviceType)
        {
            if (serviceType == null)
            {
                throw new ArgumentNullException("serviceType");
            }

            if (serviceType.IsAssignableFrom(GetType()))
            {
                return(this);
            }

            IServiceProvider sp = BaseStream as IServiceProvider;

            if (sp != null)
            {
                return(sp.GetService(serviceType));
            }
            else if (serviceType.IsAssignableFrom(BaseStream.GetType()))
            {
                return(BaseStream);
            }
            else
            {
                return(null);
            }
        }
Exemplo n.º 2
0
        /// <inheritdoc cref="SerialPort.Open"/>
        public new void Open()
        {
            base.Open();

            if (IsWindows)
            {
                return;
            }

            FieldInfo fieldInfo = BaseStream.GetType().GetField("fd", BindingFlags.Instance | BindingFlags.NonPublic);

            if (fieldInfo != null)
            {
                _fdStreamField     = (int)fieldInfo.GetValue(BaseStream);
                _disposedFieldInfo = BaseStream.GetType()
                                     .GetField("disposed", BindingFlags.Instance | BindingFlags.NonPublic);
                fieldInfo = typeof(SerialPort).GetField("data_received", BindingFlags.Instance | BindingFlags.NonPublic);

                if (fieldInfo != null)
                {
                    _dataReceived = fieldInfo.GetValue(this);
                }
            }

            new Thread(EventThreadFunction).Start();
        }
Exemplo n.º 3
0
        public new void Open()
        {
            base.Open();

            if (!IsWindows)
            {
                FieldInfo fieldInfo = BaseStream.GetType().GetField("fd", BindingFlags.Instance | BindingFlags.NonPublic);
                if (fieldInfo == null)
                {
                    throw new NotSupportedException("Unable to initialize SerialPort - 'fd'-field is missing.");
                }
                _fd = (int)fieldInfo.GetValue(BaseStream);

                _disposedFieldInfo = BaseStream.GetType().GetField("disposed", BindingFlags.Instance | BindingFlags.NonPublic);
                if (_disposedFieldInfo == null)
                {
                    throw new NotSupportedException("Unable to initialize SerialPort - 'disposed'-field is missing.");
                }

                fieldInfo = typeof(SerialPort).GetField("data_received", BindingFlags.Instance | BindingFlags.NonPublic);
                if (fieldInfo == null)
                {
                    throw new NotSupportedException("Unable to initialize SerialPort - 'data_received'-field is missing.");
                }
                _dataReceived = fieldInfo.GetValue(this);

                _thread = new Thread(EventThreadFunction);
                _thread.Start();
            }
        }
Exemplo n.º 4
0
        public new void Open()
        {
            base.Open();

            if (IsWindows == false)
            {
                FieldInfo fieldInfo = BaseStream.GetType().GetField("fd", BindingFlags.Instance | BindingFlags.NonPublic);
                fd = (int)fieldInfo.GetValue(BaseStream);
                disposedFieldInfo = BaseStream.GetType().GetField("disposed", BindingFlags.Instance | BindingFlags.NonPublic);
                fieldInfo         = typeof(SerialPort).GetField("data_received", BindingFlags.Instance | BindingFlags.NonPublic);
                data_received     = fieldInfo.GetValue(this);

                new System.Threading.Thread(new System.Threading.ThreadStart(this.EventThreadFunction)).Start();
            }
        }
Exemplo n.º 5
0
        public new void Open()
        {
            base.Open();

            Console.WriteLine("Opened");

            if (Environment.OSVersion.Platform == PlatformID.Unix)
            {
                FieldInfo fieldInfo = BaseStream.GetType().GetField("fd", BindingFlags.Instance | BindingFlags.NonPublic);
                fd = (int)fieldInfo.GetValue(BaseStream);
                disposedFieldInfo = BaseStream.GetType().GetField("disposed", BindingFlags.Instance | BindingFlags.NonPublic);
                fieldInfo         = typeof(SerialPort).GetField("data_received", BindingFlags.Instance | BindingFlags.NonPublic);
                data_received     = fieldInfo.GetValue(this);

                new System.Threading.Thread(new System.Threading.ThreadStart(this.EventThreadFunction)).Start();
            }
        }
Exemplo n.º 6
0
        internal RecordReader Clone()
        {
            var memoryStream = BaseStream as ReadOnlyMemoryStream;

            if (memoryStream != null)
            {
                // Create new memory stream based on this memory stream
                return(context.CreateReader(new ReadOnlyMemoryStream(memoryStream.OrigialBuffer)));
            }
            else
            {
                var fileStream = BaseStream as FileStream;
                if (fileStream != null)
                {
                    return(context.CreateReader(new ReadOnlyFileStream(fileStream.Name, FileMode.Open, FileAccess.Read)));
                }
                else
                {
                    throw new InvalidOperationException("Stream was not recognised and cannot be cloned: " + BaseStream.GetType().FullName);
                }
            }
        }