Beispiel #1
0
        public StreamingAPIConnect(StreamingListener sl, string ip, int port, LoginResponse lr, bool secure)
        {
            this.sl = sl;
            this.streamingSessionId = lr.StreamingSessionId;
            apiSocket = new System.Net.Sockets.TcpClient(ip, port);
            if (secure)
            {
                SslStream ssl = new SslStream(apiSocket.GetStream());
                ssl.AuthenticateAsClient("xtb.com"); //hardcoded domain, because we use ip-version of the address
                apiWriteStream = new StreamWriter(ssl);
                apiBufferedReader = new StreamReader(ssl);
            }
            else
            {
                NetworkStream ns = apiSocket.GetStream();
                apiWriteStream = new StreamWriter(ns);
                apiBufferedReader = new StreamReader(ns);
            }

            Thread t = new Thread(delegate()
            {
                while (running)
                {
                    readStreamMessage();
                    Thread.Sleep(50);
                }
            });
            t.Start();
            //System.Threading.Timer t = new System.Threading.Timer(o => readStreamMessage(), null, 0, 10);
        }
Beispiel #2
0
        private StreamingAPIConnector(StreamingListener sl, string ip, int port, LoginResponse lr, bool secure)
        {
            running         = true;
            this.sl         = sl;
            streamSessionId = lr.StreamSessionId;
            apiSocket       = new TcpClient(ip, port);

            if (secure)
            {
                SslStream ssl = new SslStream(apiSocket.GetStream());
                ssl.AuthenticateAsClient(ip);
                apiWriteStream = new StreamWriter(ssl);
                apiReadStream  = new StreamReader(ssl);
            }
            else
            {
                NetworkStream ns = apiSocket.GetStream();
                apiWriteStream = new StreamWriter(ns);
                apiReadStream  = new StreamReader(ns);
            }

            Thread t = new Thread(delegate()
            {
                while (running)
                {
                    ReadStreamMessage();
                    System.Threading.Tasks.Task.Delay(50);
                }
            });

            t.Start();
        }
Beispiel #3
0
        /// <summary>
        /// Connect to the streaming using given streaming listener.
        /// </summary>
        /// <param name="streamingListener">Streaming listener</param>
        /// <param name="streamSessionId">Stream session id</param>
        public void Connect(StreamingListener streamingListener, string streamSessionId)
        {
            this.streamSessionId = streamSessionId;

            if (this.streamSessionId == null)
            {
                throw new APICommunicationException("please login first");
            }

            if (Connected())
            {
                throw new APICommunicationException("stream already connected");
            }

            sl = streamingListener;

            apiSocket    = new TcpClient(server.Address, server.StreamingPort);
            apiConnected = true;

            if (OnConnected != null)
            {
                OnConnected.Invoke(server);
            }

            if (server.Secure)
            {
                SslStream ssl = new SslStream(apiSocket.GetStream(), false, SSLHelper.TrustAllCertificatesCallback);
                ssl.AuthenticateAsClient(server.Address);
                apiWriteStream = new StreamWriter(ssl);
                apiReadStream  = new StreamReader(ssl);
            }
            else
            {
                NetworkStream ns = apiSocket.GetStream();
                apiWriteStream = new StreamWriter(ns);
                apiReadStream  = new StreamReader(ns);
            }

            Thread t = new Thread(delegate()
            {
                while (Connected())
                {
                    ReadStreamMessage();
                }
            });

            t.Start();
        }
Beispiel #4
0
        public void ConvertsMessageDataToDTO()
        {
            SampleDTO aDto = null;

            IStreamingClient connection = new MockStreamingConnection();
            StreamingListener <SampleDTO, CommaStringToSampleDtoConverter> listener = new StreamingListener <SampleDTO, CommaStringToSampleDtoConverter>("topic1", connection);

            listener.MessageReceived += (s, messageDto) =>
            {
                aDto = messageDto.Data;
            };

            ((MockStreamingConnection)connection).RaiseMessageReceived("topic1", "the title,2010-01-01 17:30:34");

            Assert.IsNotNull(aDto);
            Assert.AreEqual("the title", aDto.Title);
        }
Beispiel #5
0
        public void OnlyListensToMessagesOnSubscribedTopic()
        {
            var receivedMessages = 0;

            IStreamingClient connection = new MockStreamingConnection();
            var listener = new StreamingListener <SampleDTO, CommaStringToSampleDtoConverter>("topic1", connection);

            listener.MessageReceived += (s, messageDto) =>
            {
                receivedMessages++;
            };

            ((MockStreamingConnection)connection).RaiseMessageReceived("topic1", "the title1,2010-01-01 17:30:34");
            ((MockStreamingConnection)connection).RaiseMessageReceived("topic2", "the title2,2010-01-01 17:30:34");
            ((MockStreamingConnection)connection).RaiseMessageReceived("topic1", "the title3,2010-01-01 17:30:34");


            Assert.AreEqual(2, receivedMessages);
        }
Beispiel #6
0
 public StreamingAPIConnector(StreamingListener sl, Server dt, LoginResponse lr)
     : this(sl, dt.Address, dt.StreamingPort, lr, dt.Secure)
 {
 }
Beispiel #7
0
 private StreamingAPIConnector(StreamingListener sl, string ip, int port, LoginResponse lr)
     : this(sl, ip, port, lr, false)
 {
 }
Beispiel #8
0
 /// <summary>
 /// Connect to the streaming using given streaming listener.
 /// </summary>
 /// <param name="streamingListener">Streaming listener</param>
 public void Connect(StreamingListener streamingListener)
 {
     Connect(streamingListener, streamSessionId);
 }
Beispiel #9
0
 /// <summary>
 /// Creates new StreamingAPIConnector instance based on given server data, stream session id and streaming listener.
 /// </summary>
 /// <param name="server">Server data</param>
 public StreamingAPIConnector(Server server, string streamSessionId, StreamingListener streamingListner)
 {
     this.server          = server;
     this.streamSessionId = streamSessionId;
     Connect(streamingListner, streamSessionId);
 }
Beispiel #10
0
 public StreamingAPIConnect(StreamingListener sl, ServerData dt, LoginResponse lr)
     : this(sl, dt.address, dt.streamingPort, lr, dt.secure)
 {
 }
Beispiel #11
0
 public StreamingAPIConnect(StreamingListener sl, string ip, int port, LoginResponse lr)
     : this(sl, ip, port, lr, false)
 {
 }