Exemplo n.º 1
0
        public void TLSend(string msg, MessageTypes type, Socket s)
        {
            if (s.Connected)
            {
                byte[] data = Message.sendmessage(type, msg);
#if DEBUG
                v("srv sending message type: " + type + " contents: " + msg);
                v("srv sending raw data size: " + data.Length + " data: " + HexToString(data, data.Length));
#endif

                try
                {
                    s.Send(data);
                }
                catch (Exception ex)
                {
                    debug("error sending: " + type.ToString() + " " + msg);
                    debug("exception: " + ex.Message + ex.StackTrace);
                    if (DisconnectOnError)
                    {
                        debug("disconnecting from: " + s.RemoteEndPoint.ToString());
                        s.Shutdown(SocketShutdown.Both);
                        s.Disconnect(true);
                    }
                }
            }
        }
Exemplo n.º 2
0
        public long TLSend(MessageTypes type, string m)
        {
            // encode
            byte[] data = Message.sendmessage(type, m);
#if DEBUG
            v("client sending message type: " + type + " contents: " + m);
            v("client sending raw data size: " + data.Length + " data: " + HexToString(data, data.Length));
#endif
            int len = 0;
            try
            {
                if (server.Connected)
                {
                    // send request
                    len = server.Send(data);
                    return(0);
                }
                else
                {
                    retryconnect();
                    return(0);
                }
            }
            catch (SocketException ex)
            {
                debug("exception: " + ex.SocketErrorCode + ex.Message + ex.StackTrace);
                retryconnect();
            }
            catch (Exception ex)
            {
                debug("error sending: " + type + " " + m);
                debug(ex.Message + ex.StackTrace);
            }
            return((long)MessageTypes.UNKNOWN_ERROR);
        }
Exemplo n.º 3
0
 void sendtick(Tick k)
 {
     byte[] data = Message.sendmessage(MessageTypes.TICKNOTIFY, TickImpl.Serialize(k));
     for (int i = 0; i < client.Count; i++) // send tick to each client that has subscribed to tick's stock
     {
         if ((client[i] != null) && stocks[i].Contains(k.symbol))
         {
             TLSend(data, i);
         }
     }
 }
Exemplo n.º 4
0
 public Providers [] TLFound()
 {
     v("Searching provider list...");
     v("clearing existing list of available providers");
     servers.Clear();
     // build name request
     byte[] nrequest = Message.sendmessage(MessageTypes.BROKERNAME, string.Empty);
     // get name for every server provided by client
     foreach (IPEndPoint ep in serverip)
     {
         try
         {
             v("Attempting to connect to: " + ep.ToString());
             // attempt to connect
             Socket s = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
             s.Connect(ep);
             // request name
             s.Send(nrequest);
             // try to get result
             byte[] data  = new byte[s.ReceiveBufferSize];
             int    len   = s.Receive(data);
             int    pcode = (int)Providers.Unknown;
             try
             {
                 pcode = BitConverter.ToInt32(data, 0);
                 Providers p = (Providers)pcode;
                 if (p != Providers.Unknown)
                 {
                     debug("provider: " + p.ToString() + " at: " + ep.ToString());
                     servers.Add(p);
                 }
                 else
                 {
                     debug("skipping unknown provider at: " + ep.ToString());
                 }
             }
             catch (Exception ex)
             {
                 debug("error adding providing at: " + ep.ToString() + " pcode: " + pcode);
                 debug(ex.Message + ex.StackTrace);
             }
         }
         catch (Exception ex)
         {
             debug("exception connecting to server: " + ep.ToString());
             debug(ex.Message + ex.StackTrace);
         }
     }
     v("found " + servers.Count + " providers.");
     return(servers.ToArray());
 }