コード例 #1
0
ファイル: MessageTest.cs プロジェクト: uwinkelvos/htsp-sharp
        public void TestCase()
        {
            Message msg1 = new Message("blah");
            msg1.SetBinField("t_bin", new byte[]{1,2,3,4});
            msg1.SetIntField("t_int", 0xAB);
            msg1.SetStringField("t_string", "hallo");
            Message msg3 = new Message("blub");
            msg3.SetStringField("a", "bbbbbbbbbbbbbbbbbbbbbb");
            msg3.SetIntField("blahahah", 1);
            msg1.SetMessageField("t_message", msg3);
            var list = new HtspListType<IHtspBaseType>();
            list.Add(new HtspType<long>(0x99));
            list.Add(new HtspType<long>(0x77));
            msg1.SetListField("t_list", list);
            string sMsg1 = msg1.ToString(true);
            Message msg2 = new Message(msg1.ToBin());
            string sMsg2 = msg2.ToString(true);

            Console.WriteLine(sMsg1);
            Console.WriteLine(BitConverter.ToString(msg1.ToBin()));
            Console.WriteLine(sMsg2);
            Console.WriteLine(BitConverter.ToString(msg2.ToBin()));

            StringAssert.AreEqualIgnoringCase(sMsg1, sMsg2);
        }
コード例 #2
0
ファイル: Main.cs プロジェクト: uwinkelvos/htsp-sharp
        public static void Main(string[] args)
        {
            var client = new HtspClient("holzi", 9982);
            int seq = 1;

            Message request;
            Message reply;

            request = new Message("hello");
            request.SetStringField("clientname", "htsp-sharp");
            request.SetIntField("htspversion", 5);
            request.SetIntField("seq", seq++);

            client.Send(request);
            Console.WriteLine("Send:\n" + request.ToString());
            reply = client.Receive();
            Console.WriteLine("Received:\n" + reply.ToString());

            request = new Message("enableAsyncMetadata");
            request.SetIntField("seq", seq++);

            client.Send(request);
            Console.WriteLine("Send:\n" + request.ToString());

            reply = client.Receive();
            Console.WriteLine("Received:\n" + reply.ToString());

            int counter = 0;
            while (counter++ < 2000)
            {
                reply = client.Receive();
                if (reply.GetStringField("method").Contains("channel")) Console.WriteLine("Received:\n" + reply.ToString());
                if (reply.GetStringField("method") == "initialSyncCompleted") break;
            }

            //getEvents 0x973
            /*
            request = new Message("getEvents");
            request.SetIntField("eventId", 0x1adf);
            request.SetIntField("numFollowing", 3);

            request.SetIntField("seq", seq++);

            client.Send(request);
            Console.WriteLine("Send:\n" + request.ToString(true));

            reply = client.Receive();
            Console.WriteLine("Received:\n" + reply.ToString(true));
            */
            /*
            request = new Message("subscribe");
            request.SetIntField("channelId", 0x15);
            request.SetIntField("subscriptionId", 0xabcdef);
            request.SetIntField("seq", seq++);

            client.Send(request);
            Console.WriteLine("Send:\n" + request.ToString());

            reply = client.Receive();
            Console.WriteLine("Received:\n" + reply.ToString());

            counter = 0;
            while (counter++ < 2000)
            {
                Message msg = client.Receive();
                if ((msg.Method == "subscriptionStart"))
                {
                    Console.WriteLine("Received:\n" + msg.ToString(true));
                    //Console.WriteLine("Received: {0}", BitConverter.ToString(msg.ToBin()));

                    break;
                }
            }

            request = new Message("unsubscribe");
            request.SetIntField("subscriptionId", 0xabcdef);
            request.SetIntField("seq", seq++);

            client.Send(request);
            Console.WriteLine("Send:\n" + request.ToString());

            reply = client.Receive();
            Console.WriteLine("Received:\n" + reply.ToString());

            */

            #region stuff
            /*
            byte[] bin = request.ToBin();
            FileStream hello = File.Create("hello.bin");
            hello.Write(BitConverter.GetBytes(IPAddress.HostToNetworkOrder(bin.Length)),0,4);
            hello.Write(bin,0,bin.Length);
            */
            /*
            long vduration = 0;
            long aduration = 0;
            FileStream audio = File.Create("test.mp2");
            FileStream video = File.Create("test.mpeg");
                        long stream = msg.GetIntField("stream");
                        byte[] payload = msg.GetBinField("payload");
                        if (stream == 0x1) {
                            video.Write(payload, 0, payload.Length);
                            vduration += msg.GetIntField("duration");
                        }
                        else if (stream == 0x2) {
                            audio.Write(payload, 0, payload.Length);
                            aduration += msg.GetIntField("duration");
                        }
            audio.Close();
            video.Close();

            Console.WriteLine("aduration: {0} msecs", aduration/1000);
            Console.WriteLine("vduration: {0} msecs", vduration/1000);
            */
            /*
            request = new Message();
            request.SetStringField("method", "getSysTime");
            request.SetIntField("seq", seq++);

            client.Send(request);
            Console.WriteLine("Send:\n" + request.ToString());

            reply = client.Receive();
            Console.WriteLine("Received:\n" + reply.ToString());

            long unixdate = reply.GetIntField("time") - 60 * reply.GetIntField("timezone");
            Console.WriteLine(new DateTime(1970, 1, 1, 0, 0, 0, 0).AddSeconds(unixdate));
             */

            /*
            request = new Message();
            request.SetStringField("method", "epgQuery");
            request.SetStringField("query", "sport");
            request.SetIntField("seq", seq++);

            client.Send(request);
            Console.WriteLine("Send:\n" + request.ToString());

            reply = client.Receive();
            Console.WriteLine("Received:\n" + reply.ToString(true));

            var field = reply.GetListField("eventIds");
            var val = (HtspType<long>)field[0];

            request = new Message();
            request.SetStringField("method", "getEvents");
            request.SetIntField("eventId", val.Value);
            request.SetIntField("numFollowing", 1);
            request.SetIntField("seq", seq++);

            client.Send(request);
            Console.WriteLine("Send:\n" + request.ToString());

            reply = client.Receive();
            Console.WriteLine("Received:\n" + reply.ToString(true));

            foreach(IHtspType item in reply.GetListField("events")) {
                //Console.WriteLine("+++ SubMessage\n{0}--- SubMessage\n",((HtspType<Message>)item).Value.ToString());
            }
            */
            #endregion

            // Close everything.
            client.Dispose();
        }