public DomainParticipantTransportSource(DomainParticipant participant, string senderTopic, string receiverTopic)
		{
			_participant = participant;

			var senderTopicQos = new TopicQos();
			participant.get_default_topic_qos(senderTopicQos);

			var receiverTopicQos = new TopicQos();
			participant.get_default_topic_qos(receiverTopicQos);

			_sender = participant.create_topic(senderTopic, BytesTypeSupport.TYPENAME, senderTopicQos, null, StatusMask.STATUS_MASK_NONE);
			_receiver = participant.create_topic(receiverTopic, BytesTypeSupport.TYPENAME, receiverTopicQos, null, StatusMask.STATUS_MASK_NONE);

			var writerQos = new DataWriterQos();
			//writerQos.publish_mode.kind = PublishModeQosPolicyKind.ASYNCHRONOUS_PUBLISH_MODE_QOS;
			writerQos.publish_mode.flow_controller_name = FlowController.FIXED_RATE_FLOW_CONTROLLER_NAME;

			participant.get_default_datawriter_qos(writerQos);
			
			var readerQos = new DataReaderQos();
			participant.get_default_datareader_qos(readerQos);

			_writer = participant.create_datawriter(_sender, writerQos, null, StatusMask.STATUS_MASK_NONE);
			_reader = participant.create_datareader(_receiver, readerQos, this, StatusMask.STATUS_MASK_ALL);
		}
        public static void IndexUimfFile(string uimfFileLocation)
        {
            bool indexed = false;
            using (var uimfReader = new DataReader(uimfFileLocation))
            {
                if (uimfReader.DoesContainBinCentricData())
                {
                    indexed = true;
                    Console.WriteLine("Bin centric data found in dataset {0}.", uimfFileLocation);
                }
                else
                {
                    Console.WriteLine("No bin centric data found for file {0}.", uimfFileLocation);
                }

                uimfReader.Dispose();
            }

            if (!indexed)
            {
                Console.WriteLine("Creating bin centric data for {0}.", uimfFileLocation);
                using (DataWriter dataWriter = new DataWriter(uimfFileLocation))
                {
                    dataWriter.CreateBinCentricTables();
                    dataWriter.Dispose();
                }
            }
        }
 protected override void SaveBody(IDataWriter writer, IMessage msg)
 {
     using (GZipStream compStream = new GZipStream((Stream)writer, CompressionMode.Compress))
     {
         DataWriter dw = new DataWriter(compStream, writer.LittleEndian);
         base.SaveBody(dw, msg);
     }
 }
Exemple #4
0
    // Write a datakey to a stream
    public void ToWriter(DataWriter writer, DataKey root, Logger logger)
    {
        logger.LogInfo("Writing to stream");

        // Write Data node back to stream
        // Will throw  MissingDataNodeException if it does not exist
        byte[] data = root["data"].ToArray().Reverse().ToArray();

        writer.Write(data);
    }
Exemple #5
0
 public virtual void Write(string name, long dataSizeInBytes, string userName, string groupName, int mode, DateTime lastModificationTime, WriteDataDelegate writeDelegate)
 {
     var writer = new DataWriter(OutStream,dataSizeInBytes);
     WriteHeader(name, lastModificationTime, dataSizeInBytes, userName, groupName, mode);
     while(writer.CanWrite)
     {
         writeDelegate(writer);
     }
     AlignTo512(dataSizeInBytes, false);
 }
Exemple #6
0
        public async void SendMotorCommand(Boolean on, int tilt, int forward, int turn, int up, float scale)
        {
            var characteristics = _service.GetCharacteristics(RollingSpiderCharacteristicUuids.Parrot_PowerMotors);
            var characteristic = characteristics[0];
            var writer = new DataWriter();
            try
            {
                writer.WriteByte(2);
                writer.WriteByte((byte)_motorCounter);
                writer.WriteByte(2);
                writer.WriteByte(0);
                writer.WriteByte(2);
                writer.WriteByte(0);
                if (on)
                {
                    writer.WriteByte(1);
                }
                else
                {
                    writer.WriteByte(0);
                }
                // is byte casting necessary???
                writer.WriteByte((byte)(tilt & 0xFF));
                writer.WriteByte((byte)(forward & 0xFF));
                writer.WriteByte((byte)(turn & 0xFF));
                writer.WriteByte((byte)(up & 0xFF));
                //writer.WriteDouble(scale); // well, but I need different endian :(

                await characteristic.WriteValueAsync(writer.DetachBuffer());
            }
            catch (IOException e)
            {
                Debug.WriteLine(e);
            }

            //var gattTransaction = new GattReliableWriteTransaction();
            //gattTransaction.WriteValue(characteristic, writer.DetachBuffer());
            //var status = await gattTransaction.CommitAsync();
            //switch (status)
            //{
            //    case GattCommunicationStatus.Success:
            //        AddLogAction("Writing to your device OK !");
            //        break;
            //    case GattCommunicationStatus.Unreachable:
            //        AddLogAction("Writing to your device Failed !");
            //        break;
            //}

        }
Exemple #7
0
        protected override void SaveBody(IDataWriter writer, IMessage msg)
        {

            using (TripleDESCryptoServiceProvider tdsAlg = new TripleDESCryptoServiceProvider())
            {
                tdsAlg.Key = mKey;
                tdsAlg.IV = mIV;
                ICryptoTransform encryptor = tdsAlg.CreateEncryptor(tdsAlg.Key, tdsAlg.IV);
                using (CryptoStream csEncrypt = new CryptoStream((Stream)writer, encryptor, CryptoStreamMode.Write))
                {
                    DataWriter dw = new DataWriter(csEncrypt, writer.LittleEndian);
                    base.SaveBody(dw, msg);
                    csEncrypt.FlushFinalBlock();

                }

            }
        }
        public SaturationDetector(string uimfFileLocation)
        {
            _uimfReader = new DataReader(uimfFileLocation);
            _smoother = new SavitzkyGolaySmoother(9, 2);
            _peakDetector = new ChromPeakDetector(0.0001, 0.0001);
            _theoreticalFeatureGenerator = new JoshTheorFeatureGenerator();

            if (!_uimfReader.DoesContainBinCentricData())
            {
                DataWriter dataWriter = new DataWriter(uimfFileLocation);
                dataWriter.CreateBinCentricTables();
            }

            IterativeTFFParameters msFeatureFinderParameters = new IterativeTFFParameters
            {
                MinimumRelIntensityForForPeakInclusion = 0.0000000001,
                PeakDetectorMinimumPeakBR = 0,
                PeakDetectorPeakBR = 5.00000000000002,
                PeakBRStep = 0.25,
                PeakDetectorSigNoiseRatioThreshold = 0.00000000001,
                ToleranceInPPM = 50
            };
            _msFeatureFinder = new IterativeTFF(msFeatureFinderParameters);
        }
Exemple #9
0
        private void WriteHeaders(DataWriter writer)
        {
            string writeHeader = OnWriteHeader();

            // null indicates that a response has no headers
            if (writeHeader != null)
            {
                WriteLine(writer, writeHeader);

                foreach (KeyDataPair<string> pair in Headers)
                {
                    if (!FilterHeader(pair.Name, pair.Value))
                    {
                        WriteLine(writer, String.Format("{0}: {1}", pair.Name, pair.Value));
                    }
                }

                // If this is the one and only chunk with content-length then send new length header
                if (!ChunkedEncoding && FinalChunk && CanSendBody())
                {
                    WriteLine(writer, String.Format("Content-Length: {0}", GetBody().Length));
                }

                WriteLine(writer, String.Empty);
            }
        }
Exemple #10
0
        public async Task ReadFromServer(DataReader reader, DataWriter writer)
        {
            // set the DataReader to only wait for available data
            reader.InputStreamOptions = InputStreamOptions.Partial;
            if (!IsAuthed)
            {
                AttemptAuth();
            }
            else
            {
                try
                {
                    await reader.LoadAsync(socketReceiveBufferSize);

                    while (reader.UnconsumedBufferLength > 0)
                    {
                        bool breakLoop = false;
                        byte readChar;
                        do
                        {
                            if (reader.UnconsumedBufferLength > 0)
                            {
                                readChar = reader.ReadByte();
                            }
                            else
                            {
                                breakLoop = true;
                                break;
                            }
                        } while (!dataStreamLineReader.Add(readChar));

                        if (breakLoop)
                        {
                            return;
                        }

                        // Read next line from data stream.
                        var line = dataStreamLineReader.SafeFlushLine();

                        if (line == null)
                        {
                            break;
                        }
                        if (line.Length == 0)
                        {
                            continue;
                        }

                        await HandleLine(line);
                    }
                }
                catch (Exception e)
                {
                    AddError("Error with connection: " + e.Message);
                    AddError(e.StackTrace);
                    ReadOrWriteFailed = true;
                    IsConnected       = false;

                    if (server != null)
                    {
                        DisconnectAsync(attemptReconnect: Config.GetBoolean(Config.AutoReconnect));
                    }

                    return;
                }
            }
        }
Exemple #11
0
 /// <summary>Saves the content to the specified writer.</summary>
 /// <param name="writer">The writer.</param>
 protected override void SaveContentTo(DataWriter writer)
 {
     writer.Write(Horizontal);
     writer.Write(Vertical);
 }
Exemple #12
0
        // 导出课程表具体实现
        private async void exportCourseTable(string xnd, string xq)
        {
            try {
                string     json       = @"{
                    body:{
                        dataStores:{},
                        parameters:{
                            args: [""" + xq + @""",""" + xnd + @"""],
                            responseParam = ""rs""
                        }
                    }
                }";
                HttpClient httpClient = new HttpClient();
                httpClient.DefaultRequestHeaders.Add("Referer", "http://uems.sysu.edu.cn/jwxt/forward.action?path=/sysu/xk/xskbcx/xskb");
                httpClient.DefaultRequestHeaders.Add("render", "export");
                var stringContent = new StringContent(json, Encoding.UTF8, "application/json");
                HttpResponseMessage httpResponse = await httpClient.PostAsync("http://uems.sysu.edu.cn/jwxt/KcbcxAction/KcbcxAction.action?method=getList", stringContent);

                httpResponse.EnsureSuccessStatusCode();

                var downloadUrl = "http://uems.sysu.edu.cn/jwxt/ExportToExcel.do?method=exportExcel&xq=" + xq + "&xnd=" + xnd;
                httpClient.DefaultRequestHeaders.Referrer = new Uri("http://uems.sysu.edu.cn/jwxt/forward.action?path=/sysu/xk/xskbcx/xskb");
                httpClient.DefaultRequestHeaders.Add("Accept", "image/gif, image/jpeg, image/pjpeg, application/x-ms-application, application/xaml+xml, application/x-ms-xbap, */*");
                httpResponse = await httpClient.GetAsync(downloadUrl);

                httpResponse.EnsureSuccessStatusCode();
                InMemoryRandomAccessStream randomAccess = new InMemoryRandomAccessStream();
                DataWriter writer = new DataWriter(randomAccess.GetOutputStreamAt(0));
                // Write and save the data into the stream
                writer.WriteBytes(await httpResponse.Content.ReadAsByteArrayAsync());
                await writer.StoreAsync();

                var savePicker = new FileSavePicker();
                savePicker.SuggestedStartLocation = PickerLocationId.Desktop;
                savePicker.FileTypeChoices.Add("网页", new List <string>()
                {
                    ".html"
                });
                savePicker.SuggestedFileName = xnd + "-" + xq + ".html";
                StorageFile file = await savePicker.PickSaveFileAsync();

                if (file != null)
                {
                    CachedFileManager.DeferUpdates(file);
                    await FileIO.WriteTextAsync(file, table);

                    //store InMemoryRandomAccessStream into a file
                    //using (var fileStream = await file.OpenAsync(FileAccessMode.ReadWrite)) {
                    //  await RandomAccessStream.CopyAndCloseAsync(randomAccess.GetInputStreamAt(0), fileStream.GetOutputStreamAt(0));
                    //}
                    //httpClient.Dispose();
                    FileUpdateStatus status = await CachedFileManager.CompleteUpdatesAsync(file);

                    if (status == FileUpdateStatus.Complete)
                    {
                        await new MessageDialog("课表导出成功!").ShowAsync();
                    }
                    else
                    {
                        await new MessageDialog("课表导出失败!").ShowAsync();
                    }
                }
                else
                {
                    return;
                }
            } catch (Exception ex) {
                Debug.WriteLine(ex.Message);
                if (ex.Message.Equals("An error occurred while sending the request."))
                {
                    await new MessageDialog("应用无法联网,请检查您的网络设置").ShowAsync();
                }
            }
        }
Exemple #13
0
 public virtual void Write(DataWriter writer)
 {
   writer.Write(Id);
 }
Exemple #14
0
        public async void SendCommandTo1StChar(IReadOnlyList<GattCharacteristic> characteristics, byte[] commandToWrite)
        {
            var characteristic = characteristics[0];

            Debug.WriteLine("Try to write to " + CharacteristicUuidsResolver.GetNameFromUuid(characteristic.Uuid));

            try
            {
                var writer = new DataWriter();
                writer.WriteBytes(commandToWrite);
                await characteristic.WriteValueAsync(writer.DetachBuffer());
            }
            catch
            {
            }

        }
        /// <summary>
        /// Initializes a new instance of the <see cref="LibraryMatchWorkflow"/> class.
        /// </summary>
        /// <param name="uimfFileLocation">
        /// The UIMF file location.
        /// </param>
        /// <param name="outputDirectory">
        /// The output directory.
        /// </param>
        /// <param name="resultFileName">
        /// The result file name.
        /// </param>
        /// <param name="parameters">
        /// The parameters.
        /// </param>
        public LibraryMatchWorkflow(string uimfFileLocation, string outputDirectory, string resultFileName, LibraryMatchParameters parameters)
        {
            this.uimfReader = new DataReader(uimfFileLocation);

            // Append bin-centric table to the uimf if not present.
            if (!this.uimfReader.DoesContainBinCentricData())
            {
                DataWriter dataWriter = new DataWriter(uimfFileLocation);
                dataWriter.CreateBinCentricTables();
            }

            this.Parameters = parameters;
            this.smoother = new SavitzkyGolaySmoother(parameters.NumPointForSmoothing, 2);

            this.NumberOfFrames = this.uimfReader.GetGlobalParams().NumFrames;
            this.NumberOfScans = this.uimfReader.GetFrameParams(1).Scans;

            this.DatasetName = Path.GetFileNameWithoutExtension(uimfFileLocation);

            this.Parameters = parameters;

            this.ResultFileName = resultFileName;

            if (outputDirectory == string.Empty)
            {
                outputDirectory = Directory.GetCurrentDirectory();
            }

            if (!outputDirectory.EndsWith("\\"))
            {
                outputDirectory += "\\";
            }

            if (!Directory.Exists(outputDirectory))
            {
                try
                {
                    Directory.CreateDirectory(outputDirectory);
                }
                catch (Exception)
                {
                    Console.WriteLine("Failed to create directory.");
                    throw;
                }
            }

            this.OutputPath = outputDirectory;

            Trace.Listeners.Clear();
            ConsoleTraceListener consoleTraceListener = new ConsoleTraceListener(false);
            consoleTraceListener.TraceOutputOptions = TraceOptions.DateTime;
            string result = this.OutputPath + this.ResultFileName;
            this.resultFileWriter = File.AppendText(result);
            TextWriterTraceListener resultFileTraceListener = new TextWriterTraceListener(this.resultFileWriter)
            {
                Name = "this.DatasetName" + "_Result",
                TraceOutputOptions = TraceOptions.ThreadId | TraceOptions.DateTime
            };

            Trace.Listeners.Add(consoleTraceListener);
            Trace.Listeners.Add(resultFileTraceListener);
            Trace.AutoFlush = true;
        }
Exemple #16
0
        /// <summary>
        /// Initializes the singleton application object.  This is the first line of authored code
        /// executed, and as such is the logical equivalent of main() or WinMain().
        /// </summary>
        public Scenario1_Watcher()
        {
            this.InitializeComponent();

            // Create and initialize a new watcher instance.
            watcher = new BluetoothLEAdvertisementWatcher();

            // Begin of watcher configuration. Configure the advertisement filter to look for the data advertised by the publisher
            // in Scenario 2 or 4. You need to run Scenario 2 on another Windows platform within proximity of this one for Scenario 1 to
            // take effect. The APIs shown in this Scenario are designed to operate only if the App is in the foreground. For background
            // watcher operation, please refer to Scenario 3.

            // Please comment out this following section (watcher configuration) if you want to remove all filters. By not specifying
            // any filters, all advertisements received will be notified to the App through the event handler. You should comment out the following
            // section if you do not have another Windows platform to run Scenario 2 alongside Scenario 1 or if you want to scan for
            // all LE advertisements around you.

            // For determining the filter restrictions programatically across APIs, use the following properties:
            //      MinSamplingInterval, MaxSamplingInterval, MinOutOfRangeTimeout, MaxOutOfRangeTimeout

            // Part 1A: Configuring the advertisement filter to watch for a particular advertisement payload

            // First, let create a manufacturer data section we wanted to match for. These are the same as the one
            // created in Scenario 2 and 4.
            var manufacturerData = new BluetoothLEManufacturerData();

            // Then, set the company ID for the manufacturer data. Here we picked an unused value: 0xFFFE
            manufacturerData.CompanyId = 0xFFFE;

            // Finally set the data payload within the manufacturer-specific section
            // Here, use a 16-bit UUID: 0x1234 -> {0x34, 0x12} (little-endian)
            var writer = new DataWriter();

            writer.WriteUInt16(0x1234);

            // Make sure that the buffer length can fit within an advertisement payload. Otherwise you will get an exception.
            manufacturerData.Data = writer.DetachBuffer();

            // Add the manufacturer data to the advertisement filter on the watcher:
            watcher.AdvertisementFilter.Advertisement.ManufacturerData.Add(manufacturerData);


            // Part 1B: Configuring the signal strength filter for proximity scenarios

            // Configure the signal strength filter to only propagate events when in-range
            // Please adjust these values if you cannot receive any advertisement
            // Set the in-range threshold to -70dBm. This means advertisements with RSSI >= -70dBm
            // will start to be considered "in-range".
            watcher.SignalStrengthFilter.InRangeThresholdInDBm = -70;

            // Set the out-of-range threshold to -75dBm (give some buffer). Used in conjunction with OutOfRangeTimeout
            // to determine when an advertisement is no longer considered "in-range"
            watcher.SignalStrengthFilter.OutOfRangeThresholdInDBm = -75;

            // Set the out-of-range timeout to be 2 seconds. Used in conjunction with OutOfRangeThresholdInDBm
            // to determine when an advertisement is no longer considered "in-range"
            watcher.SignalStrengthFilter.OutOfRangeTimeout = TimeSpan.FromMilliseconds(2000);

            // By default, the sampling interval is set to zero, which means there is no sampling and all
            // the advertisement received is returned in the Received event

            // End of watcher configuration. There is no need to comment out any code beyond this point.
        }
        private async Task SendMessagesAsync()
        {
            try
            {
                MessageWebSocket webSocket = new MessageWebSocket();

                webSocket.MessageReceived += WebSocket_MessageReceived;
                webSocket.Closed          += WebSocket_Closed;

                DataWriter messageWriter = new DataWriter(webSocket.OutputStream);

                await webSocket.ConnectAsync(new Uri(URL));

                _connectionState = ConnectionState.CONNECTED;

                while (_connectionState == ConnectionState.CONNECTED)
                {
                    _sendEvent.WaitOne(50);

                    Message msg = null;
                    lock (_sendQueue)
                    {
                        if (_sendQueue.Count > 0)
                        {
                            msg = _sendQueue.Dequeue();
                        }
                    }

                    while (msg != null)
                    {
                        if (msg is TextMessage)
                        {
                            webSocket.Control.MessageType = SocketMessageType.Utf8;
                            messageWriter.WriteString(((TextMessage)msg).Text);
                            await messageWriter.StoreAsync();
                        }
                        else if (msg is BinaryMessage)
                        {
                            webSocket.Control.MessageType = SocketMessageType.Binary;
                            messageWriter.WriteBytes(((BinaryMessage)msg).Data);
                            await messageWriter.StoreAsync();
                        }

                        msg = null;
                        lock (_sendQueue)
                        {
                            if (_sendQueue.Count > 0)
                            {
                                msg = _sendQueue.Dequeue();
                            }
                        }
                    }
                }

                webSocket.Close(1000, "Complete");
            }
            catch (System.Exception e)
            {
                _connectionState = ConnectionState.DISCONNECTED;
                Log.Error("WSConnector.SendMessagesAsync()", "Caught WebSocket exception: {0}", e.ToString());
            }
        }
Exemple #18
0
        private void btnConvertBCIToPalmtree_Click(object sender, EventArgs e)
        {
            // clear the output
            txtOutput.Text = "";

            // try to read the file
            Data_BCI2000 info = new Data_BCI2000();

            double[][] samples = null;
            bool       result  = readBCI2000dat(txtInputFile.Text, out info, out samples);

            // open file dialog to save dat file
            SaveFileDialog dlgSaveDatFile = new SaveFileDialog();

            dlgSaveDatFile.Filter           = "Data files (*.dat)|*.dat|Data files (*.src)|*.src|All files (*.*)|*.*";
            dlgSaveDatFile.RestoreDirectory = true;            // restores current directory to the previously selected directory, potentially beneficial if other code relies on the currently set directory

            // check if ok has been clicked on the dialog
            if (dlgSaveDatFile.ShowDialog() != DialogResult.OK)
            {
                return;
            }

            FileStream dataStream = null;

            try {
                // create filestream: create file if it does not exists, allow to write, do not share with other processes and use buffer of 8192 bytes (roughly 1000 samples)
                dataStream = new FileStream(dlgSaveDatFile.FileName, FileMode.Create, FileAccess.Write, FileShare.None, 8192);
            } catch (Exception exc) {
                MessageBox.Show("Unable to create data file at " + dlgSaveDatFile.FileName + " (" + exc.ToString() + ")");
                return;
            }

            // generate stream names for the header (bci2000 does not have these)
            string[] streamNames = new string[info.sourceCh];
            for (int i = 0; i < streamNames.Length; i++)
            {
                streamNames[i] = "Ch" + (i + 1);
            }

            // create header
            DataHeader header = new DataHeader();

            header.version            = 1;
            header.code               = "dat";
            header.columnNames        = streamNames;
            header.numPlaybackStreams = streamNames.Length;
            header.sampleRate         = info.samplingRate;

            // write header
            if (dataStream != null)
            {
                DataWriter.writeBinaryHeader(dataStream, header);
            }

            // write data
            uint dataSampleCounter = 0;

            byte[] dataElapsedTimeBinary = BitConverter.GetBytes((1000.0 / header.sampleRate));
            for (int i = 0; i < info.numSamples; i++)
            {
                // transform variables that will be stored in .dat to binary arrays (except for dataStreamValues array which is copied directly)
                byte[] dataSampleCounterBinary = BitConverter.GetBytes(dataSampleCounter);

                // transfer the values for output
                double[] dataStreamValues = new double[info.sourceCh];
                for (int j = 0; j < info.sourceCh; j++)
                {
                    dataStreamValues[j] = samples[i][j];
                }

                // create new array to hold all bytes
                int    l1        = dataSampleCounterBinary.Length;
                int    l2        = dataElapsedTimeBinary.Length;
                int    l3        = dataStreamValues.Length * sizeof(double);
                byte[] streamOut = new byte[l1 + l2 + l3];

                // blockcopy all bytes to this array
                Buffer.BlockCopy(dataSampleCounterBinary, 0, streamOut, 0, l1);
                Buffer.BlockCopy(dataElapsedTimeBinary, 0, streamOut, l1, l2);
                Buffer.BlockCopy(dataStreamValues, 0, streamOut, l1 + l2, l3);

                // write data to file
                if (dataStream != null)
                {
                    dataStream.Write(streamOut, 0, streamOut.Length);
                }

                // increase sample counter
                dataSampleCounter++;
            }

            // set output text
            txtOutput.Text = "Done";

            // clear
            dataStream.Close();
            dataStream = null;
        }
Exemple #19
0
        public async Task <string> Send(string msg, int retryCount = 0)
        {
            try
            {
                if (_socket == null)
                {
                    bool bOK = await Connect();

                    if (!bOK)
                    {
                        string recoMsg = "Failed to reconnect.  Cannot retry the Send() of " + msg;
                        FireCommError(recoMsg);
                        return("Failed.");
                    }
                }
                string resultMsg = string.Empty;

                if (retryCount > 4)
                {
                    string errMsg = $"Failed to re-open the socket after {retryCount} attempts.";
                    FireCommError(errMsg);
                    return(errMsg);
                }

                try
                {
                    if (LoopTaskIsDead())
                    {
                        //make another receive loop
                        ReceiveLoop();
                    }
                }
                catch (Exception exLoopTask)
                {
                    FireCommError("Error making ReceiveLoop task: " + exLoopTask.Message);
                }

                try
                {
                    // Launch an async task to complete the write operation
                    var writer = new DataWriter(_socket.OutputStream);
                    //writer.WriteUInt32((uint)msg.Length + 2);
                    writer.WriteString(msg + "\r\n");
                    var store = await writer.StoreAsync();

                    //var store = writer.StoreAsync().AsTask();

                    //dummy response for now
                    writer.DetachStream();
                    string response = "";
                    return(response);
                }
                catch (Exception ex)
                {
                    if (ex.Message == "A method was called at an unexpected time. (Exception from HRESULT: 0x8000000E)")
                    {
                        resultMsg = "Bluetooth on the RaspberryPi might need a reboot (" + ex.Message + ")";
                    }
                    else if (ex.Message == "The object has been closed. (Exception from HRESULT: 0x80000013)")
                    {
                        //call connect and myself again
                        bool bOK = await Connect();

                        if (bOK)
                        {
                            retryCount++;
                            Send(msg, retryCount);
                        }
                        else
                        {
                            resultMsg = "Failed to reconnect.  Cannot retry the Send() of " + msg;
                        }
                    }
                    else
                    {
                        resultMsg = ex.Message;
                    }
                    FireCommError(resultMsg);

                    return("");
                }
            }
            catch (AggregateException aggEx)
            {
                string errMsg = $"Aggregate exception occurred in Send(). " + aggEx.Message;
                FireCommError(errMsg);
                return(errMsg);
            }
            catch (Exception anyEx)
            {
                string errMsg = $"Wide exception occurred in Send(). " + anyEx.Message;
                FireCommError(errMsg);
                return(errMsg);
            }
        }
Exemple #20
0
        public async void Disconnect(string disconnectReason)
        {
            string msg = string.Empty;

            try
            {
                if (_listener != null)
                {
                    _listener.Dispose();
                }
            }
            catch (Exception ex)
            {
                msg += "Disposing _listener: " + ex.Message;
            }
            try
            {
                if (_socketWriter != null)
                {
                    try
                    {
                        _socketWriter.DetachStream();
                    }
                    catch (Exception exDetachWriter)
                    {
                        msg += "Detaching _socketWriter: " + exDetachWriter.Message;
                    }
                    try
                    {
                        _socketWriter.Dispose();
                    }
                    catch (Exception exDisposeWriter)
                    {
                        msg += "Disposing _socketWriter: " + exDisposeWriter.Message;
                    }
                    _socketWriter = null;
                }
            }
            catch (Exception ex)
            {
                msg += "General error Disposing _socketWriter: " + ex.Message;
            }
            try
            {
                if (_socketReader != null)
                {
                    try
                    {
                        _socketReader.DetachStream();
                    }
                    catch (Exception exDetachReader)
                    {
                        msg += "Detaching _socketReader: " + exDetachReader.Message;
                    }
                    try
                    {
                        _socketReader.Dispose();
                    }
                    catch (Exception exDisposeReader)
                    {
                        msg += "Disposing _socketReader: " + exDisposeReader.Message;
                    }
                    _socketReader = null;
                }
            }
            catch (Exception ex)
            {
                msg += "General error Disposing _socketReader: " + ex.Message;
            }

            try
            {
                if (_socket != null)
                {
                    try
                    {
                        await _socket.CancelIOAsync();
                    }
                    catch (Exception exCancelIO)
                    {
                        msg += "Cancelling _socket IO: " + exCancelIO.Message;
                    }

                    _socket.Dispose();
                    _socket = null;
                }
            }
            catch (Exception ex)
            {
                msg += "Disposing _socket: " + ex.Message;
            }

            try
            {
                if (_service != null)
                {
                    _service.Dispose();
                    _service = null;
                }
            }
            catch (Exception ex)
            {
                msg += "Disposing _service: " + ex.Message;
            }
            FireCommInfoMessage("Disconnected. " + disconnectReason + " " + msg);
        }
 public void Write(DataWriter writer)
 {
     writer.Write(this.Value);
 }
            public override DataFrame Read()
            {
                try
                {
                    if (_request == null)
                    {
                        _request = HttpParser.ReadRequestHeader(new DataReader(_stm), false, _logger);
                    }

                    if (_chunks == null)
                    {
                        _chunks = _request.ReadChunks(_config).GetEnumerator();

                        // If we can't move to the first chunk (headers) there is a serious issue
                        if (!_chunks.MoveNext())
                        {
                            throw new EndOfStreamException();
                        }
                    }

                    HttpRequestDataChunk chunk = _chunks.Current;

                    if (!_chunks.MoveNext())
                    {
                        _request = null;
                        _chunks = null;
                    }

                    MemoryStream stm = new MemoryStream();
                    DataWriter writer = new DataWriter(stm);

                    chunk.WriteChunk(writer);

                    return new DataFrame(stm.ToArray());
                }
                catch (EndOfStreamException)
                {
                    return null;
                }
            }
        public void ToWriter(DataWriter writer, DataKey root, Logger logger)
        {
            HTTPDataResponse resp = HTTPDataResponse.FromDataKey(root);

            resp.ToWriter(writer, logger);
        }
Exemple #24
0
 private void WritePropertyValues(DataWriter writer, bool useAllValueSources)
 {
 }
Exemple #25
0
        private object DoLen(object target, object[] args)
        {
            if (args.Length == 0)
            {
                return 0;
            }

            Array a = args[0] as Array;
            string s = args[0] as string;
            DataReader reader = args[0] as DataReader;
            IStreamTypeParser parser = args[0] as IStreamTypeParser;

            if (s != null)
            {
                return s.Length;
            }
            else if (a != null)
            {
                return a.Length;
            }
            else if (reader != null)
            {
                return reader.DataLeft;
            }
            else if (parser != null)
            {
                DataWriter writer = new DataWriter();

                parser.ToStream(writer, CreateState(target), _logger);

                return writer.BytesWritten;
            }

            return 0;
        }
 public WebMessageSocket()
 {
     _socket     = GetMessageWebSocket();
     _dataWriter = GetDataWriter();
 }
Exemple #27
0
        public override async void Connect()
        {
            if (server == null)
            {
                return;
            }

            IsAuthed          = false;
            ReadOrWriteFailed = false;

            if (!ConnCheck.HasInternetAccess)
            {
                var autoReconnect = Config.GetBoolean(Config.AutoReconnect);
                var msg           = autoReconnect
                    ? "We'll try to connect once a connection is available."
                    : "Please try again once your connection is restored";

                var error = Irc.CreateBasicToast("No connection detected.", msg);
                error.ExpirationTime = DateTime.Now.AddDays(2);
                ToastNotificationManager.CreateToastNotifier().Show(error);

                if (!autoReconnect)
                {
                    DisconnectAsync(attemptReconnect: autoReconnect);
                }

                return;
            }

            streamSocket = new StreamSocket();
            streamSocket.Control.KeepAlive = true;

            if (Config.GetBoolean(Config.IgnoreSSL))
            {
                streamSocket.Control.IgnorableServerCertificateErrors.Add(ChainValidationResult.Untrusted);
                streamSocket.Control.IgnorableServerCertificateErrors.Add(ChainValidationResult.Expired);
            }

            dataStreamLineReader = new SafeLineReader();

            try
            {
                var protectionLevel = server.ssl ? SocketProtectionLevel.Tls12 : SocketProtectionLevel.PlainSocket;
                Debug.WriteLine("Attempting to connect...");
                await streamSocket.ConnectAsync(new Windows.Networking.HostName(server.hostname), server.port.ToString(), protectionLevel);

                Debug.WriteLine("Connected!");

                reader = new DataReader(streamSocket.InputStream);
                writer = new DataWriter(streamSocket.OutputStream);

                IsConnected    = true;
                IsReconnecting = false;

                ConnectionHandler();
            }
            catch (Exception e)
            {
                var autoReconnect = Config.GetBoolean(Config.AutoReconnect, true);
                var msg           = autoReconnect
                    ? "Attempting to reconnect..."
                    : "Please try again later.";

                AddError("Error whilst connecting: " + e.Message + "\n" + msg);
                AddError(e.StackTrace);
                AddError("If this error keeps occuring, ensure your connection settings are correct.");

                DisconnectAsync(attemptReconnect: autoReconnect);

                Debug.WriteLine(e.Message);
                Debug.WriteLine(e.StackTrace);
            }
        }
Exemple #28
0
 /// <summary>
 /// 
 /// </summary>
 /// <param name="stm"></param>
 public override void ToWriter(DataWriter stm)
 {
     stm.Write(ToArray());
 }
 private static int WriteLiterals(DataWriter writer, List <byte> literals)
 {
     writer.Write((byte)literals.Count);
     writer.Write(literals.ToArray());
     return(literals.Count + 1);
 }
Exemple #30
0
 public bool AddRegisteredCourses(IEnumerable <RegisteredCourse> courses)
 {
     DataWriter.WriterData(courses, nameof(RegisteredCourse));
     return(true);
 }
Exemple #31
0
 public override void WritePropertiesData(DataWriter writer, bool writeFlowElements = true)
 {
     base.WritePropertiesData(writer, writeFlowElements);
 }
        // Ported from: https://github.com/iltrof/ykcmp
        private static byte[] Compress(byte[] inputData)
        {
            using MemoryStream outputMemoryStream = new MemoryStream();

            DataStream outputDataStream = new DataStream(outputMemoryStream);
            DataWriter writer           = new DataWriter(outputDataStream)
            {
                DefaultEncoding = Encoding.ASCII,
                Endianness      = EndiannessMode.LittleEndian,
            };

            writer.Write("YKCMP_V1", false);
            writer.Write(0x04);             // unknown
            writer.Write(0x00);             // compressedSize
            writer.Write(inputData.Length); // uncompressedSize

            int         pos            = 0;
            List <byte> literals       = new List <byte>();
            int         compressedSize = 0x14;

            while (pos < inputData.Length)
            {
                MatchInfo match = FindMatch(inputData, pos);

                if (match.Size == 0)
                {
                    if (literals.Count == 0x7F)
                    {
                        int writeCount = WriteLiterals(writer, literals);
                        compressedSize += writeCount;
                        literals.Clear();
                    }
                    literals.Add(inputData[pos]);
                    pos++;
                    continue;
                }

                if (literals.Count > 0)
                {
                    int writeCount = WriteLiterals(writer, literals);
                    compressedSize += writeCount;
                    literals.Clear();
                }

                if (match.Size <= 0x04 && match.Offset <= 0x10)
                {
                    int byte1 = (match.Size << 4) + 0x70 + (match.Offset - 1);
                    writer.Write((byte)byte1);
                    compressedSize += 1;
                }
                else if (match.Size <= 0x21 && match.Offset <= 0x100)
                {
                    int byte1 = match.Size + 0xC0 - 2;
                    int byte2 = match.Offset - 1;
                    writer.Write((byte)byte1);
                    writer.Write((byte)byte2);
                    compressedSize += 2;
                }
                else
                {
                    int tmp   = match.Size + 0x0E00 - 3;
                    int byte1 = tmp >> 4;
                    int byte2 = ((tmp & 0x0F) << 4) + ((match.Offset - 1) >> 8);
                    int byte3 = match.Offset - 1;
                    writer.Write((byte)byte1);
                    writer.Write((byte)byte2);
                    writer.Write((byte)byte3);
                    compressedSize += 3;
                }

                pos += match.Size;
            }

            if (literals.Count > 0)
            {
                int writeCount = WriteLiterals(writer, literals);
                compressedSize += writeCount;
                literals.Clear();
            }

            writer.Stream.Position = 0x0C;
            writer.Write(compressedSize);
            return(outputMemoryStream.ToArray());
        }
Exemple #33
0
        public void ToWriter(DataWriter stm, Logger logger)
        {
            if ((Headers != null) && (Body != null))
            {
                stm.Write(OnWriteHeader(logger));

                foreach (KeyDataPair<string> header in Headers)
                {
                    if (!header.Name.Equals("content-length", StringComparison.OrdinalIgnoreCase)
                        && !header.Name.Equals("transfer-encoding", StringComparison.OrdinalIgnoreCase))
                    {
                        stm.Write(String.Format("{0}: {1}\r\n", header.Name, header.Value));
                    }
                }

                if (!IsRequest || (Body.Length > 0) || !IsGetRequest())
                {
                    stm.Write(String.Format("Content-Length: {0}\r\n", Body.Length));
                }

                stm.Write("\r\n");

                if (Body.Length > 0)
                {
                    stm.Write(Body);
                }
            }
        }
Exemple #34
0
 public ObexClient(IInputStream inputStream, IOutputStream outputStream)
 {
     _reader = new DataReader(inputStream);
     _writer = new DataWriter(outputStream);
 }
        /// <summary>
        /// Initializes a new instance of the <see cref="CrossSectionWorkfow"/> class.
        /// </summary>
        /// <param name="uimfFileLocation">
        /// The uimf file location.
        /// </param>
        /// <param name="outputDirectory">
        /// The output directory.
        /// </param>
        /// <param name="logFileName">
        /// The log file name.
        /// </param>
        /// <param name="parameters">
        /// The parameters.
        /// </param>
        public CrossSectionWorkfow(string uimfFileLocation, string outputDirectory, CrossSectionSearchParameters parameters)
        {
            this.uimfReader = new DataReader(uimfFileLocation);

            // Append bin-centric table to the uimf if not present.
            if (!this.uimfReader.DoesContainBinCentricData())
            {
                DataWriter dataWriter = new DataWriter(uimfFileLocation);
                dataWriter.CreateBinCentricTables();
            }

            this.Parameters = parameters;

            this.smoother = new SavitzkyGolaySmoother(parameters.NumPointForSmoothing, 5);

            this.theoreticalFeatureGenerator = new JoshTheorFeatureGenerator();
            this.peakDetector = new ChromPeakDetector(0.0001, 0.0001);

            this.NumberOfFrames = this.uimfReader.GetGlobalParams().NumFrames;
            this.NumberOfScans = this.uimfReader.GetFrameParams(1).Scans;
            this.SampleCollectionDate = this.uimfReader.GetGlobalParams().GetValue(GlobalParamKeyType.DateStarted);

            this.DatasetName = Path.GetFileNameWithoutExtension(uimfFileLocation);
            this.OutputPath = outputDirectory;
            this.DatasetPath = uimfFileLocation;

            this.Parameters = parameters;

            if (outputDirectory == string.Empty)
            {
                outputDirectory = Directory.GetCurrentDirectory();
            }

            if (!outputDirectory.EndsWith("\\"))
            {
                outputDirectory += "\\";
            }

            if (!Directory.Exists(outputDirectory))
            {
                try
                {
                    Directory.CreateDirectory(outputDirectory);
                }
                catch (Exception)
                {
                    Console.WriteLine("Failed to create directory.");
                    throw;
                }
            }

            this.OutputPath = outputDirectory;
        }
Exemple #36
0
 private static void WriteLine(DataWriter writer, string line)
 {
     writer.WriteLine(line, TextLineEnding.CarriageReturnLineFeed);
 }
        private async void getUserDetail()
        {
            //This helps get user detail while data is filled out.
            try
            {
                if (!string.IsNullOrEmpty(txtPhoneNumber.Text.Trim()))
                {
                    if (GuestList != null)
                    {
                        foreach (var item in GuestList)
                        {
                            if (item.GuestPhoneNumber == txtPhoneNumber.Text.Trim())
                            {
                                //When we find user
                                txbVisitorName.Text       = item.GuestName;
                                txbVisitorName.Visibility = Visibility.Visible;
                                string photoString = "";

                                if (item.GuestPhotoString == null)
                                {
                                    #region MyRegion
                                    photoString = "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";
                                    #endregion
                                }
                                else
                                {
                                    photoString = item.GuestPhotoString;
                                }

                                byte[] Bytes = Convert.FromBase64String(photoString);

                                var stream = new InMemoryRandomAccessStream();
                                //var bytes = Convert.FromBase64String(source);
                                var dataWriter = new DataWriter(stream);
                                dataWriter.WriteBytes(Bytes);
                                await dataWriter.StoreAsync();

                                stream.Seek(0);
                                var img = new BitmapImage();
                                img.SetSource(stream);
                                PhotoCopy.Source = img;
                                //txtCheckInCode.Text = item.CheckInCode;
                                if (item.ExtraGuest != null)
                                {
                                    GuestColleague = item.ExtraGuest;
                                    ConvertJSonToGuestColleague();
                                    stackMainGuest.Visibility     = Visibility.Visible;
                                    txbCheckOutDisplay.Visibility = Visibility.Visible;
                                    txbVisitorStatus.Visibility   = Visibility.Visible;
                                }
                                //Send Admin Detail to DB here----
                                return;
                            }
                        }
                    }
                    else
                    {
                        MessageDialog msg = new MessageDialog("User not Registered. See Guest List", "Alert!");
                        msg.ShowAsync();
                        txbVisitorName.Visibility   = Visibility.Collapsed;
                        txbVisitorStatus.Visibility = Visibility.Collapsed;
                        return;
                    }
                }
                else
                {
                    MessageDialog msg = new MessageDialog("Enter Guest Phone Number");
                    txbVisitorName.Visibility   = Visibility.Collapsed;
                    txbVisitorStatus.Visibility = Visibility.Collapsed;
                    msg.ShowAsync();
                }
            }
            catch (Exception ex)
            {
                checkInternet();
                MessageDialog msg = new MessageDialog(ex.Message + " Void - getUserDetail()");
                //msg.ShowAsync();
            }
        }
        /// <summary>
        /// Genericized function to send commands to a Particle device in listening mode
        /// </summary>
        /// <param name="setupCommand">The SetupCommand to use</param>
        /// <param name="data">Any extra data to send with the command</param>
        /// <returns></returns>
        private static async Task <string> SendSoftAPCommandAsync(SetupCommand setupCommand, string data = null)
        {
            HostName hostname = new HostName("192.168.0.1");

            string command;

            switch (setupCommand)
            {
            case SetupCommand.Version:
                command = "version";
                break;

            case SetupCommand.DeviceId:
                command = "device-id";
                break;

            case SetupCommand.ScanAP:
                command = "scan-ap";
                break;

            case SetupCommand.PublicKey:
                command = "public-key";
                break;

            case SetupCommand.ConfigureAP:
                command = "configure-ap";
                break;

            case SetupCommand.ConnectAP:
                command = "connect-ap";
                break;

            case SetupCommand.Set:
                command = "set";
                break;

            default:
                return(null);
            }

            int dataLength = 0;

            if (data != null)
            {
                dataLength = data.Length;
            }

            using (StreamSocket socket = new StreamSocket())
                using (DataWriter writer = new DataWriter(socket.OutputStream))
                    using (DataReader reader = new DataReader(socket.InputStream))
                    {
                        reader.InputStreamOptions = InputStreamOptions.Partial;

                        try
                        {
                            var socketOperation = socket.ConnectAsync(hostname, "5609");

                            var cancellationTokenSource = new CancellationTokenSource();
                            cancellationTokenSource.CancelAfter(5000);

                            Task  socketTask = socketOperation.AsTask(cancellationTokenSource.Token);
                            await socketTask;

                            writer.WriteString($"{command}\n{dataLength}\n\n");
                            if (data != null)
                            {
                                writer.WriteString(data);
                            }

                            string receivedData = "";
                            await writer.StoreAsync();

                            uint count = await reader.LoadAsync(2048);

                            if (count > 0)
                            {
                                receivedData = reader.ReadString(count);
                            }

                            if (string.IsNullOrWhiteSpace(receivedData))
                            {
                                return(null);
                            }

                            return(receivedData);
                        }
                        catch (TaskCanceledException)
                        {
                        }
                        catch (Exception exception)
                        {
                            switch (SocketError.GetStatus(exception.HResult))
                            {
                            case SocketErrorStatus.HostNotFound:
                                break;

                            default:
                                break;
                            }
                        }

                        return(null);
                    }
        }
Exemple #39
0
        /// <summary>
        /// Write the check to a data writer
        /// </summary>
        /// <param name="writer">The writer to write to</param>        
        public void WriteChunk(DataWriter writer)
        {
            if (ChunkNumber == 0)
            {
                WriteHeaders(writer);
            }

            WriteBody(writer);
        }
Exemple #40
0
 protected override void WritePropertyValues(DataWriter writer)
 {
     base.WritePropertyValues(writer);
     WritePropertyValues(writer, true);
 }
Exemple #41
0
        private void WriteBody(DataWriter writer)
        {
            byte[] body = GetBody();

            if (ChunkedEncoding)
            {
                string chunkLen = String.Format("{0:X}", body.Length);

                if (!String.IsNullOrEmpty(ChunkExtension))
                {
                    chunkLen += ";" + ChunkExtension;
                }

                WriteLine(writer, chunkLen);

                writer.Write(body);

                WriteLine(writer, String.Empty);

                if (FinalChunk && body.Length > 0)
                {
                    WriteLine(writer, "0");
                    WriteLine(writer, String.Empty);
                }
            }
            else
            {
                writer.Write(Body);
            }
        }
Exemple #42
0
 public override void WritePropertiesData(DataWriter writer)
 {
     writer.WriteStartObject(Name);
     base.WritePropertiesData(writer);
     if (Status == Core.Process.ProcessStatus.Inactive)
     {
         writer.WriteFinishObject();
         return;
     }
     if (!HasMapping("Service"))
     {
         writer.WriteValue("Service", Service, Guid.Empty);
     }
     if (!HasMapping("ServiceMethod"))
     {
         writer.WriteValue("ServiceMethod", ServiceMethod, null);
     }
     if (!HasMapping("ServiceUrl"))
     {
         writer.WriteValue("ServiceUrl", ServiceUrl, Guid.Empty);
     }
     if (!HasMapping("ServiceMethodParameters"))
     {
         writer.WriteValue("ServiceMethodParameters", ServiceMethodParameters, null);
     }
     if (!HasMapping("RequestStatus"))
     {
         writer.WriteValue("RequestStatus", RequestStatus, 0);
     }
     if (Result != null && Result.Schema != null)
     {
         if (UseFlowEngineMode)
         {
             Result.Write(writer, "Result");
         }
         else
         {
             string serializedEntity = Entity.SerializeToJson(Result);
             writer.WriteValue("Result", serializedEntity, null);
         }
     }
     if (!HasMapping("IsLoggingRequestAndResponce"))
     {
         writer.WriteValue("IsLoggingRequestAndResponce", IsLoggingRequestAndResponce, false);
     }
     if (!HasMapping("Request"))
     {
         writer.WriteValue("Request", Request, null);
     }
     if (!HasMapping("Responce"))
     {
         writer.WriteValue("Responce", Responce, null);
     }
     if (!HasMapping("RequestBodyInternal"))
     {
         writer.WriteValue("RequestBodyInternal", RequestBodyInternal, null);
     }
     if (!HasMapping("RequestParameters"))
     {
         writer.WriteValue("RequestParameters", RequestParameters, null);
     }
     writer.WriteFinishObject();
 }
            public HttpProxyServerAdapter(DataAdapterToStream stm, HttpRequestHeader initialRequest, Logger logger)
            {
                _stm = stm;
                _writer = new DataWriter(_stm);
                _request = initialRequest;
                _config = new HttpParserConfig();
                _config.StreamBody = true;
                _logger = logger;

                Description = stm.Description;
            }
        public async Task ConnectAsync(Uri uri, CancellationToken cancellationToken, ClientWebSocketOptions options)
        {
            InterlockedCheckAndUpdateState(WebSocketState.Connecting, s_validConnectStates);
            CheckValidState(s_validConnectingStates);

            _messageWebSocket = new MessageWebSocket();
            foreach (var header in options.RequestHeaders)
            {
                _messageWebSocket.SetRequestHeader((string)header, options.RequestHeaders[(string)header]);
            }

            string cookies = options.Cookies == null ? null : options.Cookies.GetCookieHeader(uri);

            if (!string.IsNullOrEmpty(cookies))
            {
                _messageWebSocket.SetRequestHeader(HeaderNameCookie, cookies);
            }

            var websocketControl = _messageWebSocket.Control;

            foreach (var subProtocol in options.RequestedSubProtocols)
            {
                websocketControl.SupportedProtocols.Add(subProtocol);
            }

            if (options.ClientCertificates.Count > 0)
            {
                if (!MessageWebSocketClientCertificateSupported)
                {
                    throw new PlatformNotSupportedException(SR.Format(CultureInfo.InvariantCulture,
                                                                      SR.net_WebSockets_UWPClientCertSupportRequiresWindows10GreaterThan1703));
                }

                X509Certificate2 dotNetClientCert = CertificateHelper.GetEligibleClientCertificate(options.ClientCertificates);
                if (dotNetClientCert != null)
                {
                    RTCertificate winRtClientCert = await CertificateHelper.ConvertDotNetClientCertToWinRtClientCertAsync(dotNetClientCert).ConfigureAwait(false);

                    if (winRtClientCert == null)
                    {
                        throw new PlatformNotSupportedException(SR.Format(
                                                                    CultureInfo.InvariantCulture,
                                                                    SR.net_WebSockets_UWPClientCertSupportRequiresCertInPersonalCertificateStore));
                    }

                    websocketControl.ClientCertificate = winRtClientCert;
                }
            }

            // Try to opt into PartialMessage receive mode so that we can hand partial data back to the app as it arrives.
            // If the MessageWebSocketControl.ReceiveMode API surface is not available, the MessageWebSocket.MessageReceived
            // event will only get triggered when an entire WebSocket message has been received. This results in large memory
            // footprint and prevents "streaming" scenarios (e.g., WCF) from working properly.
            if (MessageWebSocketReceiveModeSupported)
            {
                // Always enable partial message receive mode if the WinRT API supports it.
                _messageWebSocket.Control.ReceiveMode = MessageWebSocketReceiveMode.PartialMessage;
            }

            try
            {
                _receiveAsyncBufferTcs             = new TaskCompletionSource <ArraySegment <byte> >();
                _closeWebSocketReceiveResultTcs    = new TaskCompletionSource <WebSocketReceiveResult>();
                _messageWebSocket.MessageReceived += OnMessageReceived;
                _messageWebSocket.Closed          += OnCloseReceived;
                await _messageWebSocket.ConnectAsync(uri).AsTask(cancellationToken).ConfigureAwait(false);

                _subProtocol   = _messageWebSocket.Information.Protocol;
                _messageWriter = new DataWriter(_messageWebSocket.OutputStream);
            }
            catch (Exception)
            {
                UpdateState(WebSocketState.Closed);
                throw;
            }

            UpdateState(WebSocketState.Open);
        }
Exemple #45
0
 public override void Write(DataWriter writer)
 {
   writer.Write(Id);
   Element.Write(writer);
 }
Exemple #46
0
 public IntakeAirTemperature(DataReader reader, DataWriter writer) : base(reader, writer)
 {
 }
        /// <summary>
        /// Initializes a new instance of the <see cref="LcImsPeptideSearchWorkfow"/> class.
        /// </summary>
        /// <param name="uimfFileLocation">
        /// The uimf file location.
        /// </param>
        /// <param name="parameters">
        /// The parameters.
        /// </param>
        public LcImsPeptideSearchWorkfow(string uimfFileLocation, LcImsPeptideSearchParameters parameters)
        {
            this._buildWatershedStopWatch = new Stopwatch();
            this._smoothStopwatch = new Stopwatch();
            this._featureFindStopWatch = new Stopwatch();
            this._featureFindCount = 0;
            this._pointCount = 0;
            this._uimfFileLocation = uimfFileLocation;

            this._uimfReader = new DataReader(uimfFileLocation);

            // Append bin-centric table to the uimf if not present.
            if (!this._uimfReader.DoesContainBinCentricData())
            {
                DataWriter dataWriter = new DataWriter(uimfFileLocation);
                dataWriter.CreateBinCentricTables();
            }

            this._parameters = parameters;
            this._smoother = new SavitzkyGolaySmoother(parameters.NumPointForSmoothing, 2);
            this._theoreticalFeatureGenerator = new JoshTheorFeatureGenerator();
            this._leftOfMonoPeakLooker = new LeftOfMonoPeakLooker();
            this._peakDetector = new ChromPeakDetector(0.0001, 0.0001);
            this._isotopicPeakFitScoreCalculator = new PeakLeastSquaresFitter();

            IterativeTFFParameters msFeatureFinderParameters = new IterativeTFFParameters
            {
                MinimumRelIntensityForForPeakInclusion = 0.0001,
                PeakDetectorMinimumPeakBR = 0.0001,
                PeakDetectorPeakBR = 5.0002,
                PeakBRStep = 0.25,
                PeakDetectorSigNoiseRatioThreshold = 0.0001,
                ToleranceInPPM = parameters.MassToleranceInPpm
            };
            this._msFeatureFinder = new IterativeTFF(msFeatureFinderParameters);
            this.NumberOfFrames = this._uimfReader.GetGlobalParams().NumFrames;
            this.NumberOfScans = this._uimfReader.GetFrameParams(1).Scans;
        }
        /// <summary>
        /// Write the value to the server
        /// </summary>
        public async void WriteValue()
        {
            if (!String.IsNullOrEmpty(ValueToWrite))
            {
                IBuffer writeBuffer = null;

                if (WriteType == WriteTypes.Decimal)
                {
                    DataWriter writer = new DataWriter();
                    writer.ByteOrder = ByteOrder.LittleEndian;
                    writer.WriteInt32(Int32.Parse(ValueToWrite));
                    writeBuffer = writer.DetachBuffer();
                }
                else if (WriteType == WriteTypes.Hex)
                {
                    try
                    {
                        // pad the value if we've received odd number of bytes
                        if (ValueToWrite.Length % 2 == 1)
                        {
                            writeBuffer = GattConvert.ToIBufferFromHexString("0" + ValueToWrite);
                        }
                        else
                        {
                            writeBuffer = GattConvert.ToIBufferFromHexString(ValueToWrite);
                        }
                    }
                    catch (Exception ex)
                    {
                        MessageDialog dialog = new MessageDialog(ex.Message, "Error");
                        await dialog.ShowAsync();

                        return;
                    }
                }
                else if (WriteType == WriteTypes.UTF8)
                {
                    writeBuffer = CryptographicBuffer.ConvertStringToBinary(ValueToWrite,
                                                                            BinaryStringEncoding.Utf8);
                }

                try
                {
                    // BT_Code: Writes the value from the buffer to the characteristic.
                    GattCommunicationStatus result = await Characteristic.Characteristic.WriteValueAsync(writeBuffer);

                    if (result == GattCommunicationStatus.Unreachable)
                    {
                        NotifyUser.Insert(0, "Unable to write data - Device unreachable");
                    }
                    else if (result == GattCommunicationStatus.ProtocolError)
                    {
                        NotifyUser.Insert(0, "Unable to write data - Protocol error");
                    }
                }
                catch (Exception ex) when((uint)ex.HResult == 0x80650003 || (uint)ex.HResult == 0x80070005)
                {
                    // E_BLUETOOTH_ATT_WRITE_NOT_PERMITTED or E_ACCESSDENIED
                    // This usually happens when a device reports that it support writing, but it actually doesn't.
                    NotifyUser.Insert(0, "Error writing to characteristic. This usually happens when a device reports that it support writing, but it actually doesn't.");
                }
                catch (Exception ex)
                {
                    MessageDialog dialog = new MessageDialog(ex.Message, "Error");
                    await dialog.ShowAsync();
                }
            }
            else
            {
                NotifyUser.Insert(0, "No data to write to device");
            }
        }
Exemple #49
0
 public void Write(DataWriter writer)
 {
   writer.Write((short)Id);
   writer.Write(Name);
   DbType.Write(writer);
 }
Exemple #50
0
 public void Write(DataWriter writer)
 {
 }
Exemple #51
0
        private byte[] ToBytes(object target, object o, bool littleEndian, Encoding encoding)
        {
            if (o is byte)
            {
                return new byte[1] { (byte)o };
            }
            else if (o is sbyte)
            {
                return (byte[])(object)(new sbyte[1] { (sbyte)o });
            }
            else if(o.GetType().IsPrimitive)
            {
                MemoryStream stm = new MemoryStream();
                DataWriter writer = new DataWriter(stm);

                writer.WritePrimitive(o, o.GetType(), littleEndian);

                return stm.ToArray();
            }
            else if (o is byte[])
            {
                return (byte[])o;
            }
            else if (o is Array)
            {
                MemoryStream stm = new MemoryStream();
                foreach (object x in ((Array)o))
                {
                    byte[] ba = ToBytes(target, x, littleEndian, encoding);
                    stm.Write(ba, 0, ba.Length);
                }

                return stm.ToArray();
            }
            else if (o is IStreamTypeParser)
            {
                MemoryStream stm = new MemoryStream();
                DataWriter writer = new DataWriter(stm);
                IStreamTypeParser parser = (IStreamTypeParser)o;

                parser.ToStream(writer, CreateState(target), _logger);

                return stm.ToArray();
            }
            else if (o is string)
            {
                if(encoding != null)
                {
                    return encoding.GetBytes((string)o);
                }
                else
                {
                    return BinaryEncoding.Instance.GetBytes((string)o);
                }
            }

            return new byte[0];
        }
Exemple #52
0
        public void Run()
        {
            try
            {
                socket = new Windows.Networking.Sockets.StreamSocket();
                UpgradeRequest request = null;
                try
                {
                    // connect to the eftlServer
                    if (String.Compare("ws", uri.Scheme, StringComparison.CurrentCultureIgnoreCase) == 0)
                    {
                        socket.ConnectAsync(remoteHostName, getPort().ToString(), Windows.Networking.Sockets.SocketProtectionLevel.PlainSocket).AsTask().Wait(5000);
                    }
                    else if (String.Compare("wss", uri.Scheme, StringComparison.CurrentCultureIgnoreCase) == 0)
                    {
                        socket.ConnectAsync(remoteHostName, getPort().ToString(), Windows.Networking.Sockets.SocketProtectionLevel.Ssl).AsTask().Wait(5000);
                    }

                    Windows.Networking.Sockets.SocketProtectionLevel l = socket.Information.ProtectionLevel;
                    Console.WriteLine("ProtectionLevel = " + l);

                    // send HTTP upgrade request
                    request = new UpgradeRequest(uri, protocols);
                    DataWriter writer = new DataWriter(socket.OutputStream);

                    String s = request.toString();
                    writer.WriteString(s);

                    // Call StoreAsync method to store the data to a backing stream
                    try
                    {
                        writer.StoreAsync().AsTask().Wait();
                        writer.FlushAsync().AsTask().Wait();
                    }
                    catch (Exception e) {
                        Console.WriteLine(e.StackTrace);
                    }
                    writer.DetachStream();
                }
                catch (Exception e)
                {
                    Exception exp = new Exception("failed to connect" + ((e.InnerException != null) ? e.InnerException.Message : ""));
                    notifyError(exp);
                }

                byte[]       buffer      = new byte[32768];
                IInputStream inputStream = socket.InputStream;

                try {
                    inputStream.ReadAsync(buffer.AsBuffer(), (uint)buffer.Length, InputStreamOptions.Partial).AsTask().Wait();
                    System.IO.Stream stream = new System.IO.MemoryStream(buffer);

                    // read HTTP upgrade response
                    UpgradeResponse response = UpgradeResponse.read(stream);
                    response.validate(request);

                    // get the agreed upon protocol
                    protocol = response.getProtocol();
                }
                catch (Exception e)
                {
                    notifyError(e);
                }

                // notify listener
                notifyOpen();

                // dispatch frames
                dispatch();
            }
            catch (Exception e)
            {
                notifyError(e);
            }
            finally
            {
                socket.Dispose();
            }
        }
Exemple #53
0
        public async void SendCommandToAllChar(IReadOnlyList<GattCharacteristic> characteristics, byte[] commandToWrite)
        {
            foreach (var characteristic in characteristics)
            {
                Debug.WriteLine("Try to write to " + CharacteristicUuidsResolver.GetNameFromUuid(characteristic.Uuid));

                try
                {
                    var writer = new DataWriter();
                    writer.WriteBytes(commandToWrite);
                    await characteristic.WriteValueAsync(writer.DetachBuffer());
                    Debug.WriteLine("Write sucessfull");
                }
                catch
                {
                    Debug.WriteLine("Write error");
                }
            }


        }
        public BinaryFormat Convert(NodeContainerFormat source)
        {
            if (source == null)
            {
                throw new ArgumentNullException(nameof(source));
            }

            BinaryFormat binary = new BinaryFormat();
            DataWriter   writer = new DataWriter(binary.Stream);
            Encoding     utf16  = Encoding.GetEncoding("utf-16");

            // header
            writer.Write("darc", false, Encoding.ASCII);
            writer.Write((ushort)0xFEFF);
            writer.Write(0x1C);
            writer.Write((ushort)0x0100);
            writer.Write(0x00); // Placeholder for file size
            writer.Write(0x1C);
            writer.Write(0x00); // Placeholder for fat size
            writer.Write(0x00); // Placeholder for data offset

            // First iteration, get file id and write names
            DataStream names      = new DataStream();
            DataWriter nameWriter = new DataWriter(names);

            Stack <Node> stack = new Stack <Node>();

            stack.Push(source.Root);
            int currentId = 0;

            while (stack.Any())
            {
                var node = stack.Pop();

                var name    = node == source.Root ? string.Empty : node.Name;
                var nameBin = utf16.GetBytes(name + "\0");
                nameWriter.Write(nameBin);

                node.Tags["darc.name"] = nameBin.Length;
                currentId++;

                Node t = node;
                while (t.Parent != null)
                {
                    t.Parent.Tags["darc.lastId"] = currentId;
                    t = t.Parent;
                }

                foreach (var child in node.Children.Reverse())
                {
                    stack.Push(child);
                }
            }

            // Write empty FAT
            writer.WriteTimes(0x00, 0x0C * currentId);
            names.WriteTo(binary.Stream);
            names.Dispose();
            uint endFatPos = (uint)binary.Stream.Length;

            writer.WritePadding(0x00, 0x80);

            // Start writing FAT again
            binary.Stream.Position = 0x14;
            writer.Write(endFatPos - 0x1C);
            writer.Write((uint)binary.Stream.Length);

            stack.Clear();
            stack.Push(source.Root);
            ushort nameOffset = 0;

            while (stack.Any())
            {
                var        node       = stack.Pop();
                DataStream fileStream = node.Stream;

                writer.Write(nameOffset);
                nameOffset += (ushort)node.Tags["darc.name"];

                if (fileStream != null)
                {
                    writer.Write((ushort)0);
                    writer.Write((uint)binary.Stream.Length);
                    writer.Write((uint)fileStream.Length);

                    // Write file
                    binary.Stream.PushToPosition(0, SeekMode.End);
                    fileStream.WriteTo(binary.Stream);
                    if (stack.Any())
                    {
                        writer.WritePadding(0x00, 0x80);
                    }
                    binary.Stream.PopPosition();
                }
                else
                {
                    writer.Write((ushort)0x100);
                    writer.Write(0);
                    writer.Write(node.Tags["darc.lastId"]);
                }

                foreach (var child in node.Children.Reverse())
                {
                    stack.Push(child);
                }
            }

            // Update file size place holder
            binary.Stream.Position = 0x0C;
            writer.Write((uint)binary.Stream.Length);

            return(binary);
        }
Exemple #55
0
 public override void Write(DataWriter writer)
 {
   writer.Write(Id);
   Key.Write(writer);
   Value.Write(writer);
 }
Exemple #56
0
 public RPM(DataReader reader, DataWriter writer) : base(reader, writer)
 {
 }
Exemple #57
0
 public static void WritePoint(DataWriter writer, Point point)
 {
   writer.Write(point.X);
   writer.Write(point.Y);
 }
        protected override async void OnBackgroundActivated(BackgroundActivatedEventArgs args)
        {
            base.OnBackgroundActivated(args);
            IBackgroundTaskInstance taskInstance = args.TaskInstance;
            var deferral = taskInstance.GetDeferral();

            try
            {
                if ((taskInstance.TriggerDetails as SocketActivityTriggerDetails)?.Reason == SocketActivityTriggerReason.SocketActivity)
                {
                    var details           = taskInstance.TriggerDetails as SocketActivityTriggerDetails;
                    var socketInformation = details.SocketInformation;
                    switch (details.Reason)
                    {
                    case SocketActivityTriggerReason.SocketActivity:
                        var        socket = socketInformation.StreamSocket;
                        DataReader reader = new DataReader(socket.InputStream);

                        //// TODO: the value returned is likely to change (David Born from Spotify):
                        //// " the payload of the message is a bit different than what the earbuds send today
                        //// it needs to contain three separate fields in the future: a cliend-id specific for microsoft headphone integrations
                        //// a brand field(obviously "mircosoft") and a model("surface earbuds" or what the official model name is)
                        //// the whole thing is then tlv encoded "
                        await reader.LoadAsync(12);

                        ShowToast(socketInformation.Id);

                        socket.TransferOwnership(socketInformation.Id);
                        break;

                    case SocketActivityTriggerReason.KeepAliveTimerExpired:
                        // I dont think this should ever be called
                        socket = socketInformation.StreamSocket;
                        DataWriter writer = new DataWriter(socket.OutputStream);
                        writer.WriteBytes(Encoding.UTF8.GetBytes("Keep alive"));
                        await writer.StoreAsync();

                        writer.DetachStream();
                        writer.Dispose();
                        socket.TransferOwnership(socketInformation.Id);
                        break;

                    case SocketActivityTriggerReason.SocketClosed:
                        // nothing doing...
                        // buds have probably been disconnected. Remove them from the list.
                        break;

                    default:
                        break;
                    }
                }
            }
            catch (Exception exception)
            {
                ShowToast(exception.Message);
            }
            finally
            {
                deferral.Complete();
            }
        }
        public void HandleConnection()
        {
            NetworkStream cStream = this.client.GetStream();
            StreamReader reader = new StreamReader(cStream);
            writer = new DataWriter(cStream);

            // first we get what version of the protocol
            // we expect "TVServerXBMC:0-2"
            String versionInfo = reader.ReadLine();
            if (versionInfo == null) return;

            // version 2 is not backards compatible
            versionInfo = Uri.UnescapeDataString(versionInfo);
            if (versionInfo.ToLower().Contains("telnet"))
            {
                // human connection
                writer.setArgumentSeparator("|");
                writer.setListSeparator(Environment.NewLine);
                writer.setHumanEncoders();

                //reader side:
                cmd_sep = ":";
                arg_sep = "|";

                WriteLine("Protocol Accepted; TVServerXBMC version: " + System.Reflection.Assembly.GetExecutingAssembly().GetName().Version.ToString());
                Console.WriteLine("Correct protocol, telnet connection accepted!");
                Log.Debug("TVServerXBMC: telnet connection accepted!");

                username = "******";
                clientType = ClientType.telnet;
            }
            else if (Regex.IsMatch(versionInfo,"^TVServerXBMC:0-[0-3]$",RegexOptions.IgnoreCase))
            {
                WriteLine("Protocol-Accept;0-3");
                Console.WriteLine("Correct protocol, connection accepted!");
                Log.Debug("TVServerXBMC: connection accepted!");
                username = "******";
                clientType = ClientType.python;
            }
            else if (Regex.IsMatch(versionInfo, "^PVRclientXBMC:0-[1]$", RegexOptions.IgnoreCase))
            {
                writer.setArgumentSeparator("|");
                //reader side:
                cmd_sep = ":";
                arg_sep = "|";

                WriteLine("Protocol-Accept:0|" + System.Reflection.Assembly.GetExecutingAssembly().GetName().Version.ToString());
                Console.WriteLine("Correct protocol, connection accepted!");
                Log.Debug("TVServerXBMC: connection accepted from XBMC PVR addon");

                username = "******" + clientnr;
                clientType = ClientType.pvrclient;
            }
            else
            {
                WriteLine("Unexpected Protocol");
                client.Close();
                Console.WriteLine("Unexpected protocol:" + versionInfo);
                Log.Debug("TVServerXBMC: Unexpected protocol:" + versionInfo);

                clientType = ClientType.unknown;
                return;
            }

            me = TVServerConnection.RequestUser(username);

            ProcessConnection(reader);
            reader.Dispose();
            cStream.Dispose();
        }
Exemple #60
0
        //--------------------------------------------------------Misc Methods:---------------------------------------------------------------\\
        #region --Misc Methods (Public)--
        public async Task connectAsync()
        {
            switch (state)
            {
            case ConnectionState.DISCONNECTED:
            case ConnectionState.ERROR:
                setState(ConnectionState.CONNECTING);
                for (int i = 1; i <= MAX_CONNECTION_TRIES; i++)
                {
                    try
                    {
                        // Cancel connecting if for example disconnectAsync() got called:
                        if (state != ConnectionState.CONNECTING)
                        {
                            return;
                        }

                        // Setup socket:
                        socket = new StreamSocket();
                        socket.Control.KeepAlive        = true;
                        socket.Control.QualityOfService = SocketQualityOfService.LowLatency;
                        hostName = new HostName(account.serverAddress);

                        // Add all ignored certificate errors:
                        foreach (ChainValidationResult item in account.connectionConfiguration.IGNORED_CERTIFICATE_ERRORS)
                        {
                            socket.Control.IgnorableServerCertificateErrors.Add(item);
                        }

                        // Connect with timeout:
                        if (disableTcpTimeout)
                        {
                            connectingCTS = new CancellationTokenSource();
                        }
                        else
                        {
                            connectingCTS = new CancellationTokenSource(CONNECTION_TIMEOUT_MS);
                        }

                        await socket.ConnectAsync(hostName, account.port.ToString(), SocketProtectionLevel.PlainSocket).AsTask(connectingCTS.Token);

                        // Setup stream reader and writer:
                        dataWriter = new DataWriter(socket.OutputStream);
                        dataReader = new DataReader(socket.InputStream)
                        {
                            InputStreamOptions = InputStreamOptions.Partial
                        };

                        // Update account connection info:
                        ConnectionInformation connectionInfo = account.CONNECTION_INFO;
                        connectionInfo.socketInfo = socket?.Information;

                        // Connection successfully established:
                        if (state == ConnectionState.CONNECTING)
                        {
                            setState(ConnectionState.CONNECTED);
                        }
                        return;
                    }
                    catch (TaskCanceledException e)
                    {
                        Logger.Error("[TCPConnection2]: " + i + " try to connect to " + account.serverAddress + " failed:", e);
                        lastConnectionError = new ConnectionError(ConnectionErrorCode.CONNECT_TIMEOUT, e.Message);
                    }
                    catch (Exception e)
                    {
                        onConnectionError(e, i);
                    }
                }
                setState(ConnectionState.ERROR, lastConnectionError);
                break;

            default:
                break;
            }
        }