Esempio n. 1
0
                    public void AddLiteralHeader(bool pSecret, bool pBinary, int pLength, bool pSynchronising)
                    {
                        cByteList lLengthBytes = cTools.IntToBytesReverse(pLength);

                        lLengthBytes.Reverse();

                        if (mTracing)
                        {
                            if (pBinary)
                            {
                                mCurrentTraceBuffer.Add(cASCII.TILDA);
                            }

                            mCurrentTraceBuffer.Add(cASCII.LBRACE);

                            if (pSecret)
                            {
                                mCurrentTraceBuffer.Add(cASCII.NUL);
                            }
                            else
                            {
                                mCurrentTraceBuffer.AddRange(lLengthBytes);
                            }

                            if (!pSynchronising)
                            {
                                mCurrentTraceBuffer.Add(cASCII.PLUS);
                            }

                            mCurrentTraceBuffer.Add(cASCII.RBRACE);
                            mCurrentTraceBuffer.Add(cASCII.CR);
                            mCurrentTraceBuffer.Add(cASCII.LF);

                            if (pSecret)
                            {
                                mContainsSecrets = true;
                            }
                            mLastByteWasSecret = false;
                        }

                        if (pBinary)
                        {
                            mSendBuffer.Add(cASCII.TILDA);
                        }
                        mSendBuffer.Add(cASCII.LBRACE);
                        mSendBuffer.AddRange(lLengthBytes);
                        if (!pSynchronising)
                        {
                            mSendBuffer.Add(cASCII.PLUS);
                        }
                        mSendBuffer.Add(cASCII.RBRACE);
                        mSendBuffer.Add(cASCII.CR);
                        mSendBuffer.Add(cASCII.LF);
                    }
Esempio n. 2
0
        private static cByteList ZIntToBytes(int pNumber, int pMinLength)
        {
            if (pNumber < 0)
            {
                throw new ArgumentOutOfRangeException(nameof(pNumber));
            }
            cByteList lBytes = cTools.IntToBytesReverse(pNumber);

            for (int i = lBytes.Count; i < pMinLength; i++)
            {
                lBytes.Add(cASCII.ZERO);
            }
            lBytes.Reverse();
            return(lBytes);
        }
Esempio n. 3
0
        public cTextCommandPart(cSequenceSet pSequenceSet) : base(false, false)
        {
            cByteList lBytes = new cByteList();
            cByteList lTemp  = new cByteList();

            bool lFirst = true;

            foreach (var lItem in pSequenceSet)
            {
                if (lFirst)
                {
                    lFirst = false;
                }
                else
                {
                    lBytes.Add(cASCII.COMMA);
                }

                if (lItem == cSequenceSetItem.Asterisk)
                {
                    lBytes.Add(cASCII.ASTERISK);
                    continue;
                }

                if (lItem is cSequenceSetNumber lNumber)
                {
                    lTemp = cTools.UIntToBytesReverse(lNumber.Number);
                    lTemp.Reverse();
                    lBytes.AddRange(lTemp);
                    continue;
                }

                if (!(lItem is cSequenceSetRange lRange))
                {
                    throw new ArgumentException("invalid form 1", nameof(pSequenceSet));
                }

                if (lRange.From == cSequenceSetItem.Asterisk)
                {
                    lBytes.Add(cASCII.ASTERISK);
                    continue;
                }

                if (!(lRange.From is cSequenceSetNumber lFrom))
                {
                    throw new ArgumentException("invalid form 2", nameof(pSequenceSet));
                }

                lTemp = cTools.UIntToBytesReverse(lFrom.Number);
                lTemp.Reverse();
                lBytes.AddRange(lTemp);

                lBytes.Add(cASCII.COLON);

                if (lRange.To == cSequenceSetItem.Asterisk)
                {
                    lBytes.Add(cASCII.ASTERISK);
                    continue;
                }

                if (!(lRange.To is cSequenceSetNumber lTo))
                {
                    throw new ArgumentException("invalid form 3", nameof(pSequenceSet));
                }

                lTemp = cTools.UIntToBytesReverse(lTo.Number);
                lTemp.Reverse();
                lBytes.AddRange(lTemp);
            }

            Bytes = new cBytes(lBytes);
        }