public async Task run()
        {
            var    domainId = 0;
            Vortex v        = new VortexImpl(domainId);

            await v.Connect(URL, Token);

            if (v.IsConnected)
            {
                var tn  = "TChatMessage";
                var tt  = "com.prismtech.cafe.demo.idl.ChatMessage";
                var trt = "com.prismtech.cafe.demo.idl.ChatMessage";
                var qos = new List <QosPolicy>();

                Console.WriteLine("Create Topic");
                var topic = await v.CreateTopic <ChatMessage> (tn, tt, trt, qos);

                Console.WriteLine("Create Topic: Complete");

                Console.WriteLine("Create Reader");
                var reader = await v.CreateDataReader <ChatMessage> (topic, qos);

                Console.WriteLine("Create Reader: Complete");
                reader.OnDataAvailable += (object sender, SampleData <ChatMessage> e) => {
                    Console.WriteLine("Received: " + e.Data);
                };

                Console.WriteLine("Create Writer");
                var writer = await v.CreateDataWriter <ChatMessage> (topic, qos);

                Console.WriteLine("Create Writer: Complete");

                var msg = new ChatMessage("csharp", "roks!");
                for (var i = 0; i < 10; i++)
                {
                    await writer.Write(msg);
                }

                // Sleep for 5 seconds.
                System.Threading.Thread.Sleep(5000);
                await v.Disconnect();

                await v.Close();
            }
        }
		public async Task run() {
			var domainId = 0;
			Vortex v = new VortexImpl (domainId);

			await v.Connect (URL, Token);

			if (v.IsConnected) {
				var tn = "TChatMessage";
				var tt = "com.prismtech.cafe.demo.idl.ChatMessage";
				var trt = "com.prismtech.cafe.demo.idl.ChatMessage";
				var qos = new List<QosPolicy>();

				Console.WriteLine ("Create Topic");
				var topic = await v.CreateTopic<ChatMessage> (tn, tt, trt, qos);
				Console.WriteLine ("Create Topic: Complete");

				Console.WriteLine ("Create Reader");
				var reader = await v.CreateDataReader<ChatMessage> (topic, qos);
				Console.WriteLine ("Create Reader: Complete");
				reader.OnDataAvailable += (object sender, SampleData<ChatMessage> e) => {
					Console.WriteLine("Received: " + e.Data);
				};

				Console.WriteLine ("Create Writer");
				var writer = await v.CreateDataWriter<ChatMessage> (topic, qos);
				Console.WriteLine ("Create Writer: Complete");

				var msg = new ChatMessage ("csharp", "roks!");
				for (var i = 0; i < 10; i++) {
					await writer.Write (msg);
				}

				// Sleep for 5 seconds.
				System.Threading.Thread.Sleep (5000);
				await v.Disconnect ();
				await v.Close ();
			}
		}