示例#1
0
        private IEnumerable <IResponse> GenerateResponse(string line)
        {
            if (!requestQueue.Any())
            {
                throw new InvalidOperationException();
            }

            var peekResponse = requestQueue.Peek();

            var messageList = line?.Split('|');

            if (peekResponse.AnswerType == null)
            {
                if (string.IsNullOrWhiteSpace(line))
                {
                    return(Enumerable.Empty <ResponseDictionary>());
                }
                return(messageList.Select(msg => new ResponseDictionary(ParseKeyValueLineDict(msg, false))));
            }
            else
            {
                if (string.IsNullOrWhiteSpace(line))
                {
                    return(Enumerable.Empty <IResponse>());
                }
                return(messageList.Select(msg =>
                {
                    var response = Generator.ActivateResponse(peekResponse.AnswerType);
                    FillQueryMessage(peekResponse.AnswerType, response, ParseKeyValueLine(msg, false));
                    return response;
                }));
            }
        }
示例#2
0
        private void OnBobConnect(object sender, ClientEnterView e)
        {
            if (!awaitingConnect)
            {
                return;
            }

            Log.Write(Log.Level.Debug, "BC user entered with GrId {0}", e.ServerGroups);
            if (e.ServerGroups.ToIntArray().Contains(bobControllerData.bobGroupId))
            {
                Log.Write(Log.Level.Debug, "BC user with correct UID found");
                bobClient = Generator.ActivateResponse <ClientData>();
                {
                    bobClient.ChannelId  = e.TargetChannelId;
                    bobClient.DatabaseId = e.DatabaseId;
                    bobClient.ClientId   = e.ClientId;
                    bobClient.NickName   = e.NickName;
                    bobClient.ClientType = e.ClientType;
                }
                isRunning       = true;
                awaitingConnect = false;
                Log.Write(Log.Level.Debug, "BC bob is now officially running");
                SendQueue();
            }
        }
        public ClientData GetSelf()
        {
            var cd   = Generator.ActivateResponse <ClientData>();
            var data = tsClient.WhoAmI();

            cd.ChannelId  = data.ChannelId;
            cd.DatabaseId = data.DatabaseId;
            cd.ClientId   = data.ClientId;
            cd.NickName   = data.NickName;
            cd.ClientType = ClientType.Query;
            return(cd);
        }
示例#4
0
        public void HistoryFileIntergrityTest()
        {
            string testFile = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "history.test");

            if (File.Exists(testFile))
            {
                File.Delete(testFile);
            }


            var inv1 = Generator.ActivateResponse <ClientData>();
            { inv1.ClientId = 10; inv1.DatabaseId = 101; inv1.NickName = "Invoker1"; }
            var inv2 = Generator.ActivateResponse <ClientData>();
            { inv2.ClientId = 20; inv2.DatabaseId = 102; inv2.NickName = "Invoker2"; }

            var ar1 = new SoundcloudResource("asdf", "sc_ar1", "https://soundcloud.de/sc_ar1");
            var ar2 = new MediaResource("./File.mp3", "me_ar2", "https://splamy.de/sc_ar2", RResultCode.Success);

            var data1 = new PlayData(null, inv1, "", false)
            {
                Resource = ar1,
            };
            var data2 = new PlayData(null, inv2, "", false)
            {
                Resource = ar2,
            };


            HistoryFile hf = new HistoryFile();

            hf.OpenFile(testFile);

            hf.Store(data1);

            var lastXEntries = hf.GetLastXEntrys(1);

            Assert.True(lastXEntries.Any());
            var lastEntry = lastXEntries.First();

            Assert.AreEqual(ar1, lastEntry);

            hf.CloseFile();

            hf.OpenFile(testFile);
            lastXEntries = hf.GetLastXEntrys(1);
            Assert.True(lastXEntries.Any());
            lastEntry = lastXEntries.First();
            Assert.AreEqual(ar1, lastEntry);

            hf.Store(data1);
            hf.Store(data2);

            lastXEntries = hf.GetLastXEntrys(1);
            Assert.True(lastXEntries.Any());
            lastEntry = lastXEntries.First();
            Assert.AreEqual(ar2, lastEntry);

            hf.CloseFile();

            // store and order check
            hf.OpenFile(testFile);
            var lastXEntriesArray = hf.GetLastXEntrys(2).ToArray();

            Assert.AreEqual(2, lastXEntriesArray.Length);
            Assert.AreEqual(ar1, lastXEntriesArray[0]);
            Assert.AreEqual(ar2, lastXEntriesArray[1]);

            var ale1 = hf.GetEntryById(hf.Contains(ar1).Value);

            hf.LogEntryRename(ale1, "sc_ar1X", false);
            hf.LogEntryPlay(ale1);


            hf.CloseFile();

            // check entry renaming
            hf.OpenFile(testFile);
            lastXEntriesArray = hf.GetLastXEntrys(2).ToArray();
            Assert.AreEqual(2, lastXEntriesArray.Length);
            Assert.AreEqual(ar2, lastXEntriesArray[0]);
            Assert.AreEqual(ar1, lastXEntriesArray[1]);

            var ale2 = hf.GetEntryById(hf.Contains(ar2).Value);

            hf.LogEntryRename(ale2, "me_ar2_loong1");
            hf.LogEntryPlay(ale2);

            ale1 = hf.GetEntryById(hf.Contains(ar1).Value);
            hf.LogEntryRename(ale1, "sc_ar1X_loong1");
            hf.LogEntryPlay(ale1);

            hf.LogEntryRename(ale2, "me_ar2_exxxxxtra_loong1");
            hf.LogEntryPlay(ale2);

            hf.CloseFile();

            // reckeck order
            hf.OpenFile(testFile);
            lastXEntriesArray = hf.GetLastXEntrys(2).ToArray();
            Assert.AreEqual(2, lastXEntriesArray.Length);
            Assert.AreEqual(ar1, lastXEntriesArray[0]);
            Assert.AreEqual(ar2, lastXEntriesArray[1]);
            hf.CloseFile();

            // delete entry 2
            hf.OpenFile(testFile);
            hf.LogEntryRemove(hf.GetEntryById(hf.Contains(ar2).Value));

            lastXEntriesArray = hf.GetLastXEntrys(2).ToArray();
            Assert.AreEqual(1, lastXEntriesArray.Length);
            Assert.AreEqual(ar1, lastXEntriesArray[0]);
            hf.CloseFile();

            // delete entry 1
            hf.OpenFile(testFile);
            hf.LogEntryRemove(hf.GetEntryById(hf.Contains(ar1).Value));

            lastXEntriesArray = hf.GetLastXEntrys(2).ToArray();
            Assert.AreEqual(0, lastXEntriesArray.Length);
            hf.CloseFile();

            File.Delete(testFile);
        }