Ros_CSharp.TcpTransport.write C# (CSharp) 메소드

write() 공개 메소드

public write ( byte buffer, int pos, int size ) : int
buffer byte
pos int
size int
리턴 int
        public int write(byte[] buffer, int pos, int size)
        {
            ScopedTimer.Ping();
            lock (close_mutex)
            {
                if (closed)
                    return -1;
            }
            SocketError err;
            //EDB.WriteLine(ByteDumpCondensed(buffer));
            int num_bytes = sock.Send(buffer, pos, size, SocketFlags.None, out err);
            if (num_bytes <= 0)
            {
                if (err == SocketError.TryAgain || err == SocketError.WouldBlock)
                    num_bytes = 0;
                else if (err != SocketError.InProgress && err != SocketError.IsConnected && err != SocketError.Success)
                {
                    close();
                    return -1;
                }
                else
                    return 0;
            }
            return num_bytes;
        }

Usage Example

예제 #1
0
파일: Service.cs 프로젝트: nivir/UnityROS
        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);
        }
All Usage Examples Of Ros_CSharp.TcpTransport::write