write() public méthode

public write ( byte buffer, int pos, int size ) : int
buffer byte
pos int
size int
Résultat int
Exemple #1
0
        public static bool exists(string service_name, bool print_failure_reason)
        {
            string mapped_name = names.resolve(service_name);

            string host = "";
            int    port = 0;

            if (ServiceManager.Instance.lookUpService(mapped_name, ref host, ref port))
            {
                TcpTransport transport = new TcpTransport();

                IDictionary m = new Hashtable
                {
                    { "probe", "1" },
                    { "md5sum", "*" },
                    { "callerid", this_node.Name },
                    { "service", mapped_name }
                };

                byte[] headerbuf = null;
                int    size      = 0;
                Header h         = new Header();
                h.Write(m, ref headerbuf, ref size);

                if (transport.connect(host, port))
                {
                    byte[] sizebuf = BitConverter.GetBytes(size);

                    transport.write(sizebuf, 0, sizebuf.Length);
                    transport.write(headerbuf, 0, size);

                    return(true);
                }
                if (print_failure_reason)
                {
                    ROS.Info("waitForService: Service[{0}] could not connect to host [{1}:{2}], waiting...", mapped_name, host, port);
                }
            }
            else if (print_failure_reason)
            {
                ROS.Info("waitForService: Service[{0}] has not been advertised, waiting...", mapped_name);
            }
            return(false);
        }
Exemple #2
0
        public static bool exists(string service_name, bool print_failure_reason)
        {
            string mapped_name = names.resolve(service_name);

            string host = "";
            int port = 0;

            if (ServiceManager.Instance.lookUpService(mapped_name, ref host, ref port))
            {
                TcpTransport transport = new TcpTransport();

                IDictionary m = new Hashtable
                {
                    {"probe", "1"},
                    {"md5sum", "*"},
                    {"callerid", this_node.Name},
                    {"service", mapped_name}
                };

                byte[] headerbuf = null;
                int size = 0;
                Header h = new Header();
                h.Write(m, ref headerbuf, ref size);

                if (transport.connect(host, port))
                {
                    byte[] sizebuf = BitConverter.GetBytes(size);

                    transport.write(sizebuf, 0, sizebuf.Length);
                    transport.write(headerbuf, 0, size);

                    return true;
                }
                if (print_failure_reason)
                {
                    ROS.Info("waitForService: Service[{0}] could not connect to host [{1}:{2}], waiting...", mapped_name, host, port);
                }
            }
            else if (print_failure_reason)
            {
                ROS.Info("waitForService: Service[{0}] has not been advertised, waiting...", mapped_name);
            }
            return false;
        }
Exemple #3
0
 private void writeTransport()
 {
     if (dropped || writing)
     {
         return;
     }
     lock (write_mutex)
     {
         writing = true;
         bool can_write_more = true;
         while (write_callback != null && can_write_more && !dropped)
         {
             uint to_write   = write_size - write_sent;
             int  bytes_sent = transport.write(write_buffer, write_sent, to_write);
             if (bytes_sent <= 0)
             {
                 writing = false;
                 return;
             }
             write_sent += (uint)bytes_sent;
             if (bytes_sent < write_size - write_sent)
             {
                 can_write_more = false;
             }
             if (write_sent == write_size && !dropped)
             {
                 WriteFinishedFunc callback;
                 lock (write_callback_mutex)
                 {
                     callback       = write_callback;
                     write_callback = null;
                     write_buffer   = null;
                     write_sent     = 0;
                     write_size     = 0;
                 }
                 callback(this);
             }
         }
         writing = false;
     }
 }
Exemple #4
0
 private void writeTransport()
 {
     lock (writing)
     {
         if (dropped)
         {
             return;
         }
         ScopedTimer.Ping();
         bool can_write_more = true;
         while (write_callback != null && can_write_more && !dropped)
         {
             int to_write   = write_size - write_sent;
             int bytes_sent = transport.write(write_buffer, write_sent, to_write);
             if (bytes_sent <= 0)
             {
                 return;
             }
             write_sent += (int)bytes_sent;
             if (bytes_sent < write_size - write_sent)
             {
                 can_write_more = false;
             }
             if (write_sent == write_size && !dropped)
             {
                 lock (write_callback_mutex)
                 {
                     WriteFinishedFunc callback = write_callback;
                     write_callback = null;
                     write_buffer   = null;
                     write_sent     = 0;
                     write_size     = 0;
                     if (!callback(this))
                     {
                         Console.WriteLine("Failed to invoke " + callback.Method.Name);
                     }
                 }
             }
         }
     }
 }