read() public method

public read ( int size, ReadFinishedFunc finished_func ) : void
size int
finished_func ReadFinishedFunc
return void
コード例 #1
0
        public bool initialize(Connection connection)
        {
#if DEBUG
            EDB.WriteLine("Init transport publisher link: " + parent.name);
#endif
            this.connection          = connection;
            connection.DroppedEvent += onConnectionDropped;
            if (connection.transport.getRequiresHeader())
            {
                connection.setHeaderReceivedCallback(onHeaderReceived);

                IDictionary header = new Hashtable();
                header["topic"]       = parent.name;
                header["md5sum"]      = parent.md5sum;
                header["callerid"]    = this_node.Name;
                header["type"]        = parent.datatype;
                header["tcp_nodelay"] = "1";
                connection.writeHeader(header, onHeaderWritten);
            }
            else
            {
                connection.read(4, onMessageLength);
            }
            return(true);
        }
コード例 #2
0
 private bool onHeaderReceived(Connection conn, Header header)
 {
     if (conn != connection)
     {
         return(false);
     }
     if (!setHeader(header))
     {
         drop();
         return(false);
     }
     if (retry_timer != null)
     {
         ROS.timer_manager.RemoveTimer(ref retry_timer);
     }
     connection.read(4, onMessageLength);
     return(true);
 }
コード例 #3
0
        public virtual void onRequestLength(Connection conn, ref byte[] buffer, uint size, bool success)
        {
            if (!success)
            {
                return;
            }

            if (conn != connection || size != 4)
            {
                throw new Exception("Invalid request length read");
            }

            uint len = BitConverter.ToUInt32(buffer, 0);

            if (len > 1000000000)
            {
                ROS.Error("A message over a gigabyte was predicted... stop... being... bad.");
                connection.drop(Connection.DropReason.Destructing);
                return;
            }
            connection.read(len, onRequest);
        }
コード例 #4
0
 private bool onRequestWritten(Connection conn)
 {
     connection.read(5, onResponseOkAndLength);
     return(true);
 }
コード例 #5
0
 private void onRequestWritten(Connection conn)
 {
     connection.read(5, onResponseOkAndLength);
 }