public WavesSSLChannelToUADSSLChannelAdapter(WavesSSLChannel wavesSSLChannel)
		{
			this.wavesSSLChannel = wavesSSLChannel;
		}
Exemple #2
0
 public WavesSSLChannelToUADSSLChannelAdapter(WavesSSLChannel wavesSSLChannel)
 {
     this.wavesSSLChannel = wavesSSLChannel;
 }
        /// <inheritdoc />
        public void SetParameterAutomated(int index, float value)
        {
            RaisePluginCalled("SetParameterAutomated(" + index + ", " + value + ")");

            // This chunk of code handles investigation of a preset format in order to be able to
            // reverse engineer where the different changes to the parameters are stored within the preset file.
            string name = PluginContext.PluginCommandStub.GetParameterName(index);
            string label = PluginContext.PluginCommandStub.GetParameterLabel(index);
            string display = PluginContext.PluginCommandStub.GetParameterDisplay(index);
            if ("".Equals(display)) display = "" + value;
            System.Diagnostics.Debug.WriteLine("SetParameterAutomated. Name: {0}, Label: {1}, Value: {2}", name, label, display);

            if (DoInvestigatePluginPresetFileFormat) {
                // read in the preset chunk and
                // do a binary comparison between what changed before and after this method was called
                byte[] chunkData = PluginContext.PluginCommandStub.GetChunk(true);

                // if we are tracking a specific number of bytes from the chunk, store those
                if (DoTrackPluginPresetFileFormat) {
                    if (TrackPluginPresetFilePosition > -1 && TrackPluginPresetFileNumberOfBytes > 0) {
                        byte[] trackedChunkData = new byte[TrackPluginPresetFileNumberOfBytes];
                        Array.Copy(chunkData, TrackPluginPresetFilePosition, trackedChunkData, 0, TrackPluginPresetFileNumberOfBytes);
                        TrackPluginPresetFileBytes = trackedChunkData;
                    }
                }

                // if the chunk is not empty, try to detect what has changed
                if (chunkData != null && chunkData.Length > 0) {
                    int chunkLength = chunkData.Length;

                    // TODO: DELETE THIS
                    string wavesPluginName = WavesPreset.GetPluginName(chunkData);
                    if (wavesPluginName != null) {
                        switch (wavesPluginName) {
                            case "SSLChannel":
                                WavesSSLChannel sslChannel = new WavesSSLChannel();
                                sslChannel.ReadChunkData(chunkData);
                                sslChannel.Write("sslchannel-output.txt");
                                break;
                            case "SSLComp":
                                WavesSSLComp sslComp = new WavesSSLComp();
                                sslComp.ReadChunkData(chunkData);
                                sslComp.Write("sslcomp-output.txt");
                                break;
                            case "PuigChild":
                                break;
                        }
                    }

                    // binary comparison to find out where the chunk has changed
                    if (previousChunkData != null && previousChunkData.Length > 0) {

                        if (debugChunkFiles) {
                            BinaryFile.ByteArrayToFile("Preset Chunk Data - previousChunkData.dat", previousChunkData);
                            BinaryFile.ByteArrayToFile("Preset Chunk Data - chunkData.dat", chunkData);
                        }

                        if (InvestigatePluginPresetFileFormatDiffType == DiffType.Binary) {
                            SimpleBinaryDiff.Diff diff = SimpleBinaryDiff.GetDiff(previousChunkData, chunkData);
                            if (diff != null) {
                                System.Diagnostics.Debug.WriteLine("BinDiff: {0}", diff);

                                // store each of the chunk differences in a list
                                foreach (SimpleBinaryDiff.DiffPoint point in diff.Points) {
                                    this.InvestigatedPluginPresetFileFormatList.Add(
                                        new InvestigatedPluginPresetFileFormat(point.Index, point.NewValue, name, label, display));
                                }
                            }
                        } else if (InvestigatePluginPresetFileFormatDiffType == DiffType.Text) {
                            // assume we are dealing with text and not binary data
                            var d = new Differ();
                            string OldText = BinaryFile.ByteArrayToString(previousChunkData);
                            string NewText = BinaryFile.ByteArrayToString(chunkData);

                            DiffResult res = d.CreateWordDiffs(OldText, NewText, true, true, new[] {' ', '\r', '\n'});
                            //DiffResult res = d.CreateCharacterDiffs(OldText, NewText, true, true);

                            List<UnidiffEntry> diffList = UnidiffSeqFormater.GenerateWithLineNumbers(res);
                            var queryTextDiffs = from dl in diffList
                                where dl.Type == UnidiffType.Insert
                                select dl;

                            foreach (var e in queryTextDiffs) {
                                string text = e.Text;
                                text = text.Replace("\n", "");
                                if (text != "") {
                                    System.Diagnostics.Debug.WriteLine(String.Format("TextDiff: {0} {1}", e.Index, text));

                                    this.InvestigatedPluginPresetFileFormatList.Add(
                                        new InvestigatedPluginPresetFileFormat(e.Index, 0, name, label, display, text));
                                }
                            }
                        }
                    }
                    previousChunkData = chunkData;
                }
            }
        }