コード例 #1
0
        public BaseSocketConnectionHost(HostType hostType, CallbackThreadType callbackThreadtype, ISocketService socketService, DelimiterType delimiterType, byte[] delimiter, int socketBufferSize, int messageBufferSize, int idleCheckInterval, int idleTimeOutValue)
        {
            context = new SocketProviderContext
            {
                Active = false,
                SyncActive = new object(),
                SocketCreators = new List<BaseSocketConnectionCreator>(),
                SocketConnections = new Dictionary<long, BaseSocketConnection>(),
                BufferManager = BufferManager.CreateBufferManager(0, messageBufferSize),
                SocketService = socketService,
                IdleCheckInterval = idleCheckInterval,
                IdleTimeOutValue = idleTimeOutValue,
                CallbackThreadType = callbackThreadtype,
                DelimiterType = delimiterType,
                Delimiter = delimiter,
                DelimiterEncrypt = new byte[] { 0xFE, 0xDC, 0xBA, 0x98, 0xBA, 0xDC, 0xFE },
                MessageBufferSize = messageBufferSize,
                SocketBufferSize = socketBufferSize,
                HostType = hostType
            };

            fSocketConnectionsSync = new ReaderWriterLockSlim();
            fWaitCreatorsDisposing = new ManualResetEvent(false);
            fWaitConnectionsDisposing = new ManualResetEvent(false);
            fWaitThreadsDisposing = new ManualResetEvent(false);
        }
コード例 #2
0
        /// <summary>
        /// Base creator for BaseSocketConnectionHost.
        /// </summary>
        /// <param name="hostType">
        /// Host type.
        /// </param>
        /// <param name="socketService">
        /// Socket service.
        /// </param>
        /// <param name="delimiterType">
        /// Delimiter type.
        /// </param>
        /// <param name="delimiter">
        /// Delimiter byte array.
        /// </param>
        /// <param name="socketBufferSize">
        /// Socket buffer size.
        /// </param>
        /// <param name="messageBufferSize">
        /// Max message buffer size.
        /// </param>
        /// <param name="idleCheckInterval">
        /// Idle check interval timeout.
        /// </param>
        /// <param name="idleTimeOutValue">
        /// Idle connection timeout.
        /// </param>
        public BaseSocketConnectionHost(HostType hostType, ISocketService socketService, DelimiterType delimiterType, byte[] delimiter, int socketBufferSize, int messageBufferSize, int idleCheckInterval, int idleTimeOutValue)
        {
            FHostType     = hostType;
            FConnectionId = 1000;

            FSocketConnectionsSync = new ReaderWriterLock();

            FSocketConnections = new Dictionary <long, BaseSocketConnection>();
            FSocketCreators    = new List <BaseSocketConnectionCreator>();
            FSocketService     = socketService;

            FWaitCreatorsDisposing    = new ManualResetEvent(false);
            FWaitConnectionsDisposing = new ManualResetEvent(false);
            FWaitThreadsDisposing     = new ManualResetEvent(false);

            FIdleCheckInterval = idleCheckInterval;
            FIdleTimeOutValue  = idleTimeOutValue;

            if ((FIdleCheckInterval > 0) && (FIdleTimeOutValue > 0))
            {
                FIdleTimer = new Timer(new TimerCallback(CheckSocketConnections));
            }

            FDelimiter     = delimiter;
            FDelimiterType = delimiterType;

            FMessageBufferSize = messageBufferSize;
            FSocketBufferSize  = socketBufferSize;

            FActive     = false;
            FSyncActive = new Object();
        }
        /// <summary>
        /// Determine the File Type and ensure that if the file is delimited the delimiter has been specified
        /// </summary>
        /// <returns>A boolean indicating whether the file was selected successfully</returns>
        private bool CheckFileType()
        {
            bool fileSelectionOK = true;

            FileInfo fileInfoDataFile = new FileInfo(DataFileTextBox.Text.Trim());

            string[] csvExtensions = { ".csv", ".txt" };

            if (fileInfoDataFile.Extension.ToLower() == ".dbf")
            {
                this.fileType = FileType.DBF;
            }
            else if (csvExtensions.Contains(fileInfoDataFile.Extension.ToLower()))
            {
                this.fileType = FileType.Delimited;

                this.delimiterType = this.GetDelimiterType();

                if (DelimiterCheckBox.SelectedIndex == -1)
                {
                    fileSelectionOK = false;
                    MessageBox.Show("Please select a Delimiter", "Delimiter Missing");
                }
            }
            else
            {
                fileSelectionOK = false;
                MessageBox.Show("Invalid file extension");
            }

            return(fileSelectionOK);
        }
コード例 #4
0
        public Delimiter(Ops delimiterOps, int delimiterOpsIndex, char delimiterType, int number, char?preceding, char?following, Delimiter previous)
        {
            DelimiterOps      = delimiterOps;
            DelimiterOpsIndex = delimiterOpsIndex;
            DelimiterChar     = delimiterType == '_' ? DelimiterType.Underscore : DelimiterType.Asterisk;
            Number            = number;
            Previous          = previous;
            Next = null;

            precedingWhitespace  = preceding is null ? true : whitespaceRegex.IsMatch(((string)preceding.ToString()));
            followingWhitespace  = following is null ? true : whitespaceRegex.IsMatch(((string)following.ToString()));
            precedingPunctuation = preceding is null ? false : punctuationRegex.IsMatch(((string)preceding.ToString()));
            followingPunctuation = following is null ? false : punctuationRegex.IsMatch(((string)following.ToString()));

            leftFlanking  = false;
            rightFlanking = false;

            if (!followingWhitespace && (
                    !followingPunctuation || (followingPunctuation && (precedingPunctuation || precedingWhitespace))
                    ))
            {
                leftFlanking = true;
            }

            if (!precedingWhitespace && (
                    !precedingPunctuation || (precedingPunctuation && (followingPunctuation || followingWhitespace))
                    ))
            {
                rightFlanking = true;
            }

            SetOpenerOrCloser();
        }
コード例 #5
0
 public FieldParser(FileType fileType, DelimiterType delimiterType, TextQualifierType textQualifierType, string otherDelimiter, string fixedFieldLengths)
 {
     this.fileType          = fileType;
     this.delimiterType     = delimiterType;
     this.textQualifierType = textQualifierType;
     this.otherDelimiter    = otherDelimiter;
     this.fixedFieldLengths = fixedFieldLengths;
 }
コード例 #6
0
 /// <summary>
 /// Writes a delimited file using a default format.
 /// </summary>
 /// <param name="reporter"></param>
 /// <param name="data"></param>
 /// <param name="writer"></param>
 /// <param name="delimiter_type"></param>
 public static void WriteDelimitedFile(
     IProgressReporter reporter,
     string[][] data,
     TextWriter writer,
     DelimiterType delimiter_type)
 {
     WriteDelimitedFile(reporter, data, writer, delimiter_type, new DefaultDelimitedFormat());
 }
コード例 #7
0
ファイル: Delimiter.cs プロジェクト: surenthJeyaraj/LabBillCO
 public Delimiter(char segementSeperator, char elementSeperator, char compositeSeperator, char repetitionSeperator, DelimiterType delimiterType)
 {
     _segementSeperator   = segementSeperator;
     _elementSeperator    = elementSeperator;
     _compositeSeperator  = compositeSeperator;
     _repetitionSeperator = repetitionSeperator;
     _delimiter           = delimiterType;
 }
コード例 #8
0
        public static void ValuesOf <TEnum>(DelimiterType delimiterType = DelimiterType.NewLine)
            where TEnum : struct, Enum
        {
            var values = Enum.GetValues <TEnum>().Select(e
                                                         => $"{e.ToString()} - {Convert.ToInt32(e)}");

            Values(values);
        }
コード例 #9
0
        /// <summary>
        /// Gets the string value of the enum
        /// </summary>
        /// <param name="type">enum reference</param>
        /// <returns>Returns the value string</returns>
        public static string ValueOf(this DelimiterType type)
        {
            var fi = type.GetType().GetField(type.ToString());

            var attributes = (DescriptionAttribute[])fi.GetCustomAttributes(typeof(DescriptionAttribute), false);

            return(attributes.Length > 0 ? attributes[0].Description : type.ToString());
        }
コード例 #10
0
        public bool IsSpecialSymbol(char character, DelimiterType position = DelimiterType.Start)
        {
            if (position == DelimiterType.Start)
            {
                return(startDelimiters.Contains(character));
            }

            return(endDelimiters.Contains(character));
        }
コード例 #11
0
        private void ReadDelimitedFile(string fileName, DelimiterType type)
        {
            ImportDelimitedFile importer = new ImportDelimitedFile(type);

            importer.ProcessLine += new EventHandler <ImportDelimitedEventArgs>(importer_ProcessLine);

            textBox1.Text += string.Format("- Start {0} ------------------------------\r\n", type.ToString());
            importer.Import(fileName);
            textBox1.Text += string.Format("- End {0} --------------------------------\r\n\r\n", type.ToString());
        }
コード例 #12
0
 public FlatFileDataManager(
     BuiltInType builtInType,
     CollectionType collectionType,
     DelimiterType delimiterType,
     string source)
 {
     BuiltInType    = builtInType;
     CollectionType = collectionType;
     DelimiterType  = delimiterType;
     Source         = source;
     Initialize();
 }
コード例 #13
0
        /// <summary>
        /// Writes a delimited file using a default format.
        /// </summary>
        /// <param name="reporter"></param>
        /// <param name="data"></param>
        /// <param name="file"></param>
        /// <param name="delimiter_type"></param>
        public static void WriteDelimitedFile(
            IProgressReporter reporter,
            string[][] data,
            FileInfo file,
            DelimiterType delimiter_type)
        {
            StreamWriter writer = new StreamWriter(file.OpenWrite());

            WriteDelimitedFile(reporter, data, writer, delimiter_type, new DefaultDelimitedFormat());
            writer.Flush();
            writer.Close();
        }
コード例 #14
0
        /// <summary>
        /// Retrieves a delimiter string from the locale data.
        /// </summary>
        /// <param name="type">
        /// The type of delimiter string desired.  Currently,
        /// the valid choices are <see cref="DelimiterType.QuotationStart"/>, <see cref="DelimiterType.QuotationEnd"/>,
        /// <see cref="DelimiterType.AlternateQuotationStart"/>, or <see cref="DelimiterType.AlternateQuotationEnd"/>.
        /// </param>
        /// <returns>The desired delimiter string.</returns>
        /// <stable>ICU 3.4</stable>
        public string GetDelimiter(DelimiterType type)
        {
            ICUResourceBundle delimitersBundle = (ICUResourceBundle)bundle.Get("delimiters");
            // Only some of the quotation marks may be here. So we make sure that we do a multilevel fallback.
            ICUResourceBundle stringBundle = delimitersBundle.GetWithFallback(DELIMITER_TYPES[(int)type]);

            if (noSubstitute && !bundle.IsRoot && stringBundle.IsRoot)
            {
                return(null);
            }
            return(stringBundle.GetString());
        }
コード例 #15
0
        public static void Values(IEnumerable <string> values, DelimiterType delimiterType = DelimiterType.NewLine)
        {
            var delimiter = delimiterType switch
            {
                DelimiterType.Comma => ", ",
                DelimiterType.NewLine => Environment.NewLine,
                _ => throw new ArgumentException(nameof(delimiterType))
            };

            Console.WriteLine(string.Join(delimiter, values));
        }
    }
コード例 #16
0
ファイル: ExtensionMethods.cs プロジェクト: Decipha/XViewer
        /// <summary>
        /// is the delimiter type for a literal?
        /// </summary>
        /// <param name="dt"></param>
        /// <returns></returns>
        public static bool IsForLiteral(this DelimiterType dt)
        {
            switch (dt)
            {
            case DelimiterType.Date:
            case DelimiterType.Text:
            case DelimiterType.FieldOrColumn:
                return(true);

            default:
                return(false);
            }
        }
コード例 #17
0
 public bool IsDelimiter(char c, out DelimiterType type)
 {
     type = DelimiterType.No;
     if (c == '\\' && !_isEscaping)
     {
         _previousIsDollar = false;
         _isEscaping       = true;
         return(false);
     }
     if (c == '\'' && !_isInDoubleQuote && !_isEscaping)
     {
         _isInSingleQuote = !_isInSingleQuote;
     }
     else if (c == '"' && !_isInSingleQuote && !_isEscaping)
     {
         _isInDoubleQuote = !_isInDoubleQuote;
     }
     else if (c == '$' && !_isInSingleQuote && !_isEscaping)
     {
         _previousIsDollar = true;
         type = DelimiterType.Start;
         return(true);
     }
     else if (c == '%' && !_isEscaping)
     {
         if (_ancestorIsPercent)
         {
             _ancestorIsPercent = false;
             type = DelimiterType.End;
         }
         else
         {
             _ancestorIsPercent = true;
             type = DelimiterType.Start;
         }
     }
     else if (c == '{' && _previousIsDollar)
     {
         _ancestorIsCurlyBracket = true;
         type = DelimiterType.StartContinue;
     }
     else if (c == '}' && _ancestorIsCurlyBracket && !_isEscaping)
     {
         type = DelimiterType.End;
     }
     _isEscaping       = false;
     _previousIsDollar = false;
     return(type != DelimiterType.No);
 }
コード例 #18
0
        public static char GetDelimiter(DelimiterType delimiter)
        {
            switch (delimiter)
            {
            default:
            case DelimiterType.Semicolon:
                return(';');

            case DelimiterType.Comma:
                return(',');

            case DelimiterType.Tab:
                return('\t');
            }
        }
コード例 #19
0
ファイル: ExtensionMethods.cs プロジェクト: Decipha/XViewer
        /// <summary>
        /// is the character one that is used to delimit literal values?
        /// </summary>
        /// <param name="c"></param>
        /// <param name="dt"></param>
        /// <returns></returns>
        public static bool IsLiteralDelimiter(this char c, out DelimiterType dt)
        {
            if (IsDelimiter(c, out dt))
            {
                switch (dt)
                {
                case DelimiterType.Text:
                case DelimiterType.Date:
                case DelimiterType.FieldOrColumn:
                case DelimiterType.Block:
                    return(true);
                }
            }

            return(false);
        }
コード例 #20
0
ファイル: ExtensionMethods.cs プロジェクト: Decipha/XViewer
        /// <summary>
        /// determines if a specified character <paramref name="c"/> is considered a delimiter, and what type of delimiter it is.
        /// dates are delimited by "#", text is delimited with " or ', fields/properties are delimited by [], blocks delimited by {}
        /// </summary>
        /// <param name="c">
        /// the character to test
        /// </param>
        /// <param name="dt">
        /// outputs the delimiter type, <see cref="DelimiterType"/>
        /// </param>
        /// <returns></returns>
        public static bool IsDelimiter(this char c, out DelimiterType dt)
        {
            if (c.IsBlockDelimiter())
            {
                dt = DelimiterType.Block;
                return(true);
            }
            if (c.IsColumnDelimiter())
            {
                dt = DelimiterType.FieldOrColumn;
                return(true);
            }
            if (c.IsDateDelimiter())
            {
                dt = DelimiterType.Date;
                return(true);
            }
            if (c.IsParamDelimiter())
            {
                dt = DelimiterType.Parameter;
                return(true);
            }
            if (c.IsRowDelimiter())
            {
                dt = DelimiterType.Row;
                return(true);
            }
            if (c.IsTextDelimiter())
            {
                dt = DelimiterType.Text;
                return(true);
            }
            if (Char.IsWhiteSpace(c))
            {
                dt = DelimiterType.Whitespace;
                return(true);
            }

            dt = DelimiterType.None;
            return(false);
        }
コード例 #21
0
        /// <summary>
        /// Changes the type of this line.
        /// Has only an effect if ContainsActiveInclude is true.
        /// </summary>
        public void SetDelimiterType(DelimiterType newDelimiterType)
        {
            if (LineDelimiterType != newDelimiterType && ContainsActiveInclude)
            {
                DelimiterSanityCheck();

                if (newDelimiterType == DelimiterType.AngleBrackets)
                {
                    StringBuilder sb = new StringBuilder(lineText);
                    sb[delimiter0] = '<';
                    sb[delimiter1] = '>';
                    lineText       = sb.ToString();
                }
                else if (newDelimiterType == DelimiterType.Quotes)
                {
                    StringBuilder sb = new StringBuilder(lineText);
                    sb[delimiter0] = '"';
                    sb[delimiter1] = '"';
                    lineText       = sb.ToString();
                }
            }
        }
コード例 #22
0
        /// <summary>
        /// Initializes a new instance of the <see cref="XMLGeneration"/> class
        /// </summary>
        /// <param name="mainWindowObject">The Object of the Application's Main Window</param>
        /// <param name="xsdFileFullName">The Full Name of the embedded XSD File</param>
        /// <param name="elementMappingFileFullName">The Full Name of the embedded Element Mapping File</param>
        /// <param name="outputXMLFileName">The Name of the Output XML File</param>
        /// <param name="outputXMLEncoding">The Encoding (UTF-8 or Unicode UTF-16) of the Output XML File</param>
        /// <param name="fileType">The File Type</param>
        /// <param name="delimiterType">The Delimiter Type</param>
        /// <param name="dataFilePath">The Selected Data File Path</param>
        public XMLGeneration(
            MainWindow mainWindowObject,
            string xsdFileFullName,
            string elementMappingFileFullName,
            string outputXMLFileName,
            System.Text.Encoding outputXMLEncoding,
            FileType fileType,
            DelimiterType delimiterType,
            string dataFilePath)
        {
            try
            {
                this.mainWindowObject           = mainWindowObject;
                this.outputXMLFileName          = outputXMLFileName;
                this.xsdFileFullName            = xsdFileFullName;
                this.elementMappingFileFullName = elementMappingFileFullName;
                this.dataFilePath  = dataFilePath;
                this.delimiterType = delimiterType;

                // Get the Data Rows
                List <DataRow> rows;
                switch (fileType)
                {
                case FileType.DBF:
                    rows = this.GetDBFDataRows();
                    this.SerializeRows(rows, outputXMLEncoding);
                    break;

                case FileType.Delimited:
                    rows = this.GetDelimitedFileDataRows();
                    this.SerializeRows(rows, outputXMLEncoding);
                    break;
                }
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message);
            }
        }
コード例 #23
0
        /// <summary>
        /// Returns the delimiter char for a delimiter type.
        /// </summary>
        /// <param name="type"></param>
        /// <returns></returns>
        private static char GetDelimiterChar(DelimiterType type)
        {
            char delimiter;

            switch (type)
            {
            case DelimiterType.CommaSeperated:
                delimiter = ',';
                break;

            case DelimiterType.DotCommaSeperated:
                delimiter = ';';
                break;

            case DelimiterType.TabSeperated:
                delimiter = (char)9;
                break;

            default:
                throw new NotImplementedException();
            }
            return(delimiter);
        }
コード例 #24
0
        public static IEnumerable <string> CleanValues(
            string values,
            DelimiterType delimiterType)
        {
            var delimiter = delimiterType.GetDescription();

            var cleanValues = values
                              .TrimStart().Trim().TrimEnd()
                              .Split(new[] { delimiter }, StringSplitOptions.RemoveEmptyEntries)
                              .ToList();

            for (var i = 0; i < cleanValues.Count; i++)
            {
                cleanValues[i] = cleanValues[i]
                                 .Replace(delimiter.ToString(CultureInfo.InvariantCulture), string.Empty)
                                 .Replace("\r\n", string.Empty)
                                 .Replace("\n", string.Empty)
                                 .Replace("\r", string.Empty)
                                 .Trim();
            }

            return(cleanValues);
        }
コード例 #25
0
        /// <summary>
        /// Reads a delimited file into an array of an array of strings.
        /// </summary>
        /// <param name="stream"></param>
        /// <param name="delimiter"></param>
        /// <param name="ignoreHeader"></param>
        /// <returns></returns>
        public static string[][] ReadDelimitedFileFromStream(
            Stream stream,
            DelimiterType delimiter,
            bool ignoreHeader)
        {
            // converts the stream into a text reader.
            TextReader tr = new StreamReader(stream);

            // get the lines.
            StringReader  strReader = new StringReader(tr.ReadToEnd());
            List <string> lines     = new List <string>();
            bool          isheader  = ignoreHeader;

            while ((strReader.Peek() > -1))
            {
                if (isheader)
                {
                    isheader = false;
                    strReader.ReadLine();
                }
                else
                {
                    lines.Add(strReader.ReadLine());
                }
            }

            // get the columns.
            string[][] values = new string[lines.Count][];
            char       split  = DelimitedFileHandler.GetDelimiterChar(delimiter);

            for (int idx = 0; idx < lines.Count; idx++)
            {
                values[idx] = lines[idx].Split(split);
            }
            return(values);
        }
コード例 #26
0
        public SocketClientSync(IPEndPoint host)
        {
            FReceivedEvent   = new AutoResetEvent(false);
            FExceptionEvent  = new AutoResetEvent(false);
            FSentEvent       = new AutoResetEvent(false);
            FConnectEvent    = new AutoResetEvent(false);
            FDisconnectEvent = new ManualResetEvent(false);

            FReceivedQueue = new Queue <string>();

            FConnectTimeout = 10000;
            FSentTimeout    = 10000;

            FConnectedSync = new object();
            FConnected     = false;

            FSocketClientEvents = new SocketClientSyncSocketService(this);
            FCryptClientEvents  = new SocketClientSyncCryptService(this);

            FLocalEndPoint  = null;
            FRemoteEndPoint = host;

            //----- Message Types!
            FEncryptType     = EncryptType.etNone;
            FCompressionType = CompressionType.ctNone;
            FDelimiterType   = DelimiterType.dtNone;

            //----- Proxy!
            FProxyInfo = null;

            //----- System.Net.Sockets.Socket delimiter and buffer size!
            FDelimiter = null;

            FMessageBufferSize = 4096;
            FSocketBufferSize  = 2048;
        }
コード例 #27
0
ファイル: FileUtil.cs プロジェクト: BTSQL/ermc
        public static string[] ParseDataLineByDelimiter(string dataLine, DelimiterType selectedDelimiter, string userDelimiter)
        {
            string delimiter = "";

            switch (selectedDelimiter)
            {
            case DelimiterType.Comma:
                delimiter = ",";
                break;

            case DelimiterType.Tab:
                delimiter = "\t";
                break;

            case DelimiterType.User:
                delimiter = userDelimiter;
                break;

            default:
                break;
            }
            string[] dataColumns = Regex.Split(dataLine, delimiter);
            return(dataColumns);
        }
コード例 #28
0
        public SocketClientSync(IPEndPoint host)
        {
            FReceivedEvent = new AutoResetEvent(false);
            FExceptionEvent = new AutoResetEvent(false);
            FSentEvent = new AutoResetEvent(false);
            FConnectEvent = new AutoResetEvent(false);
            FDisconnectEvent = new ManualResetEvent(false);

            FReceivedQueue = new Queue<string>();

            FConnectTimeout = 10000;
            FSentTimeout = 10000;

            FConnectedSync = new object();
            FConnected = false;

            FSocketClientEvents = new SocketClientSyncSocketService(this);
            FCryptClientEvents = new SocketClientSyncCryptService(this);

            FLocalEndPoint = null;
            FRemoteEndPoint = host;

            //----- Message Types!
            FEncryptType = EncryptType.etNone;
            FCompressionType = CompressionType.ctNone;
            FDelimiterType = DelimiterType.dtNone;

            //----- Proxy!
            FProxyInfo = null;

            //----- Socket delimiter and buffer size!
            FDelimiter = null;

            FMessageBufferSize = 4096;
            FSocketBufferSize = 2048;
        }
コード例 #29
0
ファイル: Token.cs プロジェクト: ceie246/MIPS246_Software
 public Delimiter(DelimiterType form)
 {
     this.form = form;
 }
コード例 #30
0
ファイル: ValueDelimiter.cs プロジェクト: loki3/loki-pl1
 /// <summary>
 /// Delimited contents will be passed off to function to be evaluated
 /// </summary>
 /// <param name="function">function must take a next parameter of specified type</param>
 internal ValueDelimiter(string end, DelimiterType type, ValueFunction function)
 {
     Init(end, type, function);
 }
コード例 #31
0
 public DelimiterStateMachine(DelimiterType targetDelimiterType) : base(OtherText)
 {
     TargetDelimiterType = targetDelimiterType;
 }
コード例 #32
0
ファイル: SocketClient.cs プロジェクト: spzenk/sfdocsamples
 public SocketClient(ISocketService socketService, DelimiterType delimiterType, byte[] delimiter)
     : base(HostType.htClient, socketService, delimiterType, delimiter, 2048, 8192, 0, 0)
 {
     //-----
 }
コード例 #33
0
ファイル: SocketServer.cs プロジェクト: fengzijun/EchoSocket
 public SocketServer(CallbackThreadType callbackThreadType, ISocketService socketService, DelimiterType delimiterType, byte[] delimiter, int socketBufferSize, int messageBufferSize, int idleCheckInterval, int idleTimeOutValue)
     : base(HostType.htServer, callbackThreadType, socketService, delimiterType, delimiter, socketBufferSize, messageBufferSize, idleCheckInterval, idleTimeOutValue)
 {
     //-----
 }
コード例 #34
0
 public BaseSocketConnectionHost(HostType hostType, ISocketService socketService, DelimiterType delimiterType, byte[] delimiter)
     : this(hostType, CallbackThreadType.ctWorkerThread, socketService, delimiterType, delimiter, 1024, 1024, 1000, 1000)
 {
 }
コード例 #35
0
        /// <summary>
        /// Writes a delimited file using the given format.
        /// </summary>
        /// <param name="reporter"></param>
        /// <param name="data"></param>
        /// <param name="writer"></param>
        /// <param name="delimiter_type"></param>
        /// <param name="format"></param>
        public static void WriteDelimitedFile(
            IProgressReporter reporter,
            string[][] data,
            TextWriter writer,
            DelimiterType delimiter_type,
            IDelimitedFormat format)
        {
            // get the delimiter character
            char delimiter = GetDelimiterChar(delimiter_type);

            // initialize the progress status.
            ProgressStatus status = new ProgressStatus();
            if (reporter != null)
            {
                status.TotalNumber = data.Length;
                status.Status = ProgressStatus.ProgressStatusEnum.Busy;
                status.CurrentNumber = 0;
                status.Message = "Creating File...";

                // report the status.
                reporter.Report(status);
            }

            // export data
            if (reporter != null)
            {
                status.Message = "Exporting... {progress}!";
            }
            for (int idx = 0; idx < data.Length; idx++)
            {
                string[] line = data[idx];
                if (line != null &&
                    line.Length > 0)
                {
                    for (int col_idx = 0; col_idx < line.Length; col_idx++)
                    {
                        if (format.DoExport(idx))
                        {
                            object field_data = line[col_idx];
                            string field_data_string = format.ConvertValue(col_idx, field_data);
                            writer.Write(field_data_string);
                            // only delimiter at the end
                            if (col_idx < line.Length - 1)
                            {
                                writer.Write(delimiter);
                            }
                        }
                    }
                }
                if (reporter != null)
                {
                    status.CurrentNumber = idx + 1;
                    reporter.Report(status);
                }
                writer.WriteLine();
            }

            // report done
            if (reporter != null)
            {
                status.Message = "Exporting Done!";
                status.Status = ProgressStatus.ProgressStatusEnum.Succeeded;
                reporter.Report(status);
            }
        }
コード例 #36
0
ファイル: SocketClient.cs プロジェクト: fengzijun/EchoSocket
 public SocketClient(CallbackThreadType callbackThreadType, ISocketService socketService, DelimiterType delimiterType, byte[] delimiter)
     : base(HostType.htClient, callbackThreadType, socketService, delimiterType, delimiter, 2048, 2048, 0, 0)
 {
     //-----
 }
コード例 #37
0
        /// <summary>
        /// Reads a delimited file into an array of an array of strings.
        /// </summary>
        /// <param name="stream"></param>
        /// <param name="delimiter"></param>
        /// <param name="ignoreHeader"></param>
        /// <returns></returns>
        public static string[][] ReadDelimitedFileFromStream(
            Stream stream,
            DelimiterType delimiter,
            bool ignoreHeader)
        {
            // converts the stream into a text reader.
            TextReader tr = new StreamReader(stream);

            // get the lines.
            StringReader strReader = new StringReader(tr.ReadToEnd());
            List<string> lines = new List<string>();
            bool isheader = ignoreHeader;
            while ((strReader.Peek() > -1))
            {
                if (isheader)
                {
                    isheader = false;
                    strReader.ReadLine();
                }
                else
                {
                    lines.Add(strReader.ReadLine());
                }
            }

            // get the columns.
            string[][] values = new string[lines.Count][];
            char split = DelimitedFileHandler.GetDelimiterChar(delimiter);
            for (int idx = 0; idx < lines.Count; idx++)
            {
                values[idx] = lines[idx].Split(split);
            }
            return values;
        }
コード例 #38
0
 /// <summary>
 /// Reads a delimited file into an array of an array of strings.
 /// </summary>
 /// <param name="stream"></param>
 /// <param name="delimiter"></param>
 /// <returns></returns>
 public static string[][] ReadDelimitedFileFromStream(
     Stream stream,
     DelimiterType delimiter)
 {
     return DelimitedFileHandler.ReadDelimitedFileFromStream(stream, delimiter, true);
 }
コード例 #39
0
ファイル: SocketServer.cs プロジェクト: spzenk/sfdocsamples
 public SocketServer(ISocketService socketService, DelimiterType delimiterType, byte[] delimiter)
     : base(HostType.htServer, socketService, delimiterType, delimiter, 4096, 8192, 0, 0)
 {
     //-----
 }
コード例 #40
0
ファイル: SocketClient.cs プロジェクト: spzenk/sfdocsamples
 public SocketClient(ISocketService socketService, DelimiterType delimiterType, byte[] delimiter, int socketBufferSize, int messageBufferSize, int idleCheckInterval, int idleTimeOutValue)
     : base(HostType.htClient, socketService, delimiterType, delimiter, socketBufferSize, messageBufferSize, idleCheckInterval, idleTimeOutValue)
 {
     //-----
 }
コード例 #41
0
ファイル: SocketClient.cs プロジェクト: spzenk/sfdocsamples
 public SocketClient(ISocketService socketService, DelimiterType delimiterType, byte[] delimiter, int socketBufferSize, int messageBufferSize)
     : base(HostType.htClient, socketService, delimiterType, delimiter, socketBufferSize, messageBufferSize, 0, 0)
 {
     //-----
 }
コード例 #42
0
ファイル: ValueDelimiter.cs プロジェクト: loki3/loki-pl1
 /// <summary>
 /// Specify the end string for a delimiter
 /// and whether contents should be tokenized or left as-is
 /// </summary>
 internal ValueDelimiter(string end, DelimiterType type)
 {
     Init(end, type, null);
 }
コード例 #43
0
 /// <summary>
 /// Writes a delimited file using a default format.
 /// </summary>
 /// <param name="reporter"></param>
 /// <param name="data"></param>
 /// <param name="writer"></param>
 /// <param name="delimiter_type"></param>
 public static void WriteDelimitedFile(
     IProgressReporter reporter,
     string[][] data,
     TextWriter writer,
     DelimiterType delimiter_type)
 {
     WriteDelimitedFile(reporter, data, writer, delimiter_type, new DefaultDelimitedFormat());
 }
コード例 #44
0
ファイル: ValueDelimiter.cs プロジェクト: loki3/loki-pl1
 private void Init(string end, DelimiterType type, ValueFunction function)
 {
     Map meta = WritableMetadata;
     meta[keyDelimEnd] = new ValueString(end);
     meta[keyDelimType] = new ValueInt((int)type);
     if (function != null)
         meta[keyDelimFunction] = function;
 }
コード例 #45
0
 /// <summary>
 /// Writes a delimited file using a default format.
 /// </summary>
 /// <param name="reporter"></param>
 /// <param name="data"></param>
 /// <param name="file"></param>
 /// <param name="delimiter_type"></param>
 public static void WriteDelimitedFile(
     IProgressReporter reporter,
     string[][] data,
     FileInfo file,
     DelimiterType delimiter_type)
 {
     StreamWriter writer = new StreamWriter(file.OpenWrite());
     WriteDelimitedFile(reporter, data, writer, delimiter_type, new DefaultDelimitedFormat());
     writer.Flush();
     writer.Close();
 }
コード例 #46
0
 public void ValueOfTest(DelimiterType type, string expected)
 {
     type.ValueOf().Should().Be(expected);
 }
コード例 #47
0
 /// <summary>
 /// Returns the delimiter char for a delimiter type.
 /// </summary>
 /// <param name="type"></param>
 /// <returns></returns>
 private static char GetDelimiterChar(DelimiterType type)
 {
     char delimiter;
     switch (type)
     {
         case DelimiterType.CommaSeperated:
             delimiter = ',';
             break;
         case DelimiterType.DotCommaSeperated:
             delimiter = ';';
             break;
         case DelimiterType.TabSeperated:
             delimiter = (char)9;
             break;
         default:
             throw new NotImplementedException();
     }
     return delimiter;
 }
コード例 #48
0
 public BaseSocketConnectionHost(HostType hostType, ISocketService socketService, DelimiterType delimiterType, byte[] delimiter, int idleCheckInterval, int idleTimeOutValue)
     : this(hostType, CallbackThreadType.ctWorkerThread, socketService, delimiterType, delimiter, 1024, 1024, idleCheckInterval, idleTimeOutValue)
 {
 }
コード例 #49
0
        /// <summary>
        /// Reads a delimited file.
        /// </summary>
        /// <param name="reporter"></param>
        /// <param name="file"></param>
        /// <param name="delimiter"></param>
        /// <param name="firstRowHasHeaders"></param>
        /// <returns></returns>
        public static string[][] ReadDelimitedFile(
            IProgressReporter reporter, 
            FileInfo file, 
            DelimiterType delimiter, 
            bool firstRowHasHeaders)
        {
            if (reporter == null)
            {
                reporter = EmptyProgressReporter.Instance;
            }

            char delimiterChar = DelimitedFileHandler.GetDelimiterChar(delimiter);

            List<string[]> delimited_data_set;
            //int iCounter = 0;
            ProgressStatus status;
            if (!file.Exists)
            {
                throw new FileNotFoundException(string.Format("Input file {0} not found!", file.FullName));
            }
            else
            {
                // Build dataset
                delimited_data_set = new List<string[]>();
                //Add the table               'Read the delimited file

                System.Text.Encoding enc = null;
                enc = System.Text.Encoding.GetEncoding("iso-8859-1");
                FileStream fileStream = new FileStream(file.FullName,
                    FileMode.Open, FileAccess.Read, FileShare.Read);
                StringBuilder strBuild = new StringBuilder(Convert.ToInt32(fileStream.Length));

                // report the status.
                status = new ProgressStatus();
                status.Status = ProgressStatus.ProgressStatusEnum.Busy;
                status.CurrentNumber = 0;
                status.Message = "Opening file...";

                reporter.Report(status);

                for (int i = 0; i <= Convert.ToInt32(fileStream.Length) - 1; i++)
                {
                    byte[] bytes = new byte[] {Convert.ToByte(fileStream.ReadByte())};
                    strBuild.Append(enc.GetString(bytes, 0, bytes.Length));
                }

                fileStream.Close();
                string str = strBuild.ToString();
                StringReader strReader = new StringReader(str);
                List<string> lines = new List<string>();
                while ((strReader.Peek() > -1)) {
                    lines.Add(strReader.ReadLine());
                }

                // Now add in the Rows
                // report the status.
                status = new ProgressStatus();
                status.Status = ProgressStatus.ProgressStatusEnum.Busy;
                status.CurrentNumber = 0;
                status.Message = "Reading file...";
                reporter.Report(status);

                int startLine = 0;
                if (firstRowHasHeaders)
                {
                    startLine = 1;
                }

                //Loop while there are rows in the delimited file
                for (int l = startLine; l < lines.Count; l++) {
                    string line = lines[l];

                    //Add the items to the DataSet
                    delimited_data_set.Add(line.Split(delimiterChar));

                    // report the status.
                    status = new ProgressStatus();
                    status.Status = ProgressStatus.ProgressStatusEnum.Busy;
                    status.CurrentNumber = l;
                    status.TotalNumber = lines.Count - 1;
                    status.Message = "Reading file...";
                    reporter.Report(status);
                }
            }

            // report the status.
            status = new ProgressStatus();
            status.Status = ProgressStatus.ProgressStatusEnum.Succeeded;
            status.CurrentNumber = 0;
            status.Message = "Reading file...";
            reporter.Report(status);

            return delimited_data_set.ToArray<string[]>();
        }
コード例 #50
0
 public DelimiterStateMachine() : base(OtherText)
 {
     TargetDelimiterType = DelimiterType.Unknown;
 }
コード例 #51
0
        /// <summary>
        /// Base creator for BaseSocketConnectionHost.
        /// </summary>
        /// <param name="hostType">
        /// Host type.
        /// </param>
        /// <param name="socketService">
        /// Socket service.
        /// </param>
        /// <param name="delimiterType">
        /// Delimiter type.
        /// </param>
        /// <param name="delimiter">
        /// Delimiter byte array.
        /// </param>
        /// <param name="socketBufferSize">
        /// Socket buffer size.
        /// </param>
        /// <param name="messageBufferSize">
        /// Max message buffer size.
        /// </param>
        /// <param name="idleCheckInterval">
        /// Idle check interval timeout.
        /// </param>
        /// <param name="idleTimeOutValue">
        /// Idle connection timeout.
        /// </param>
        public BaseSocketConnectionHost(HostType hostType, ISocketService socketService, DelimiterType delimiterType, byte[] delimiter, int socketBufferSize, int messageBufferSize, int idleCheckInterval, int idleTimeOutValue)
        {

            FHostType = hostType;
            FConnectionId = 1000;

            FSocketConnectionsSync = new ReaderWriterLock();

            FSocketConnections = new Dictionary<long, BaseSocketConnection>();
            FSocketCreators = new List<BaseSocketConnectionCreator>();
            FSocketService = socketService;

            FWaitCreatorsDisposing = new ManualResetEvent(false);
            FWaitConnectionsDisposing = new ManualResetEvent(false);
            FWaitThreadsDisposing = new ManualResetEvent(false);

            FIdleCheckInterval = idleCheckInterval;
            FIdleTimeOutValue = idleTimeOutValue;

            if ( (FIdleCheckInterval > 0) && (FIdleTimeOutValue > 0) )
            {
                FIdleTimer = new Timer(new TimerCallback(CheckSocketConnections));
            }

            FDelimiter = delimiter;
            FDelimiterType = delimiterType;

            FMessageBufferSize = messageBufferSize;
            FSocketBufferSize = socketBufferSize;

            FActive = false;
            FSyncActive = new Object();

        }
コード例 #52
0
 public DelimiterStateMachine(State initial, DelimiterType targetDelimiterType) : base(initial)
 {
     TargetDelimiterType = targetDelimiterType;
 }
コード例 #53
0
ファイル: SocketServer.cs プロジェクト: fengzijun/EchoSocket
 public SocketServer(CallbackThreadType callbackThreadType, ISocketService socketService, DelimiterType delimiterType, byte[] delimiter, int socketBufferSize, int messageBufferSize)
     : base(HostType.htServer, callbackThreadType, socketService, delimiterType, delimiter, socketBufferSize, messageBufferSize, 0, 0)
 {
     //-----
 }