All of the source is there... but in general it is a bit more complex under the 
covers than most - as it uses select/poll to know when a socket is ready for IO 
then schedules the routine in the Read() to perform the IO. So Go has a bit of 
its own kernel code than you would see in typical synchronous C socket code. 
Ultimately Read() becomes a standard read() on the socket descriptor. 

> On Dec 31, 2019, at 10:03 AM, Ron Wahler <ron.wah...@gmail.com> wrote:
> 
> 
> \\One other note, if you have a request / response type protocol with fairly 
> defined lengths, you don’t need a buffer larger than the largest message if 
> you don’t allow concurrent requests from the same client. 
> 
> Yes, understood, that was not the constraint, I have to process an unknown 
> amount of bytes, so I have been just trying to make sure I had the best 
> solution.  
> 
> I would still like to read the underlying GoLang code on Read() to see what 
> assumptions it makes to the system calls.
> 
> thanks,
> Ron
> 
>> On Friday, December 27, 2019 at 5:11:42 PM UTC-7, Ron Wahler wrote:
>> I am looking for a net.conn standard read that would return a data buffer 
>> the exact size of the read. I am trying to read an unknown amount of byte 
>> data from the connection. With the read i am using I am required to 
>> pre-allocate a buffer and pass that buffer to the read. I am looking for a 
>> read that works more like  the ReadString , but is for a byte slice.
>> 
>> // I want something similar to this read that returns the read string into 
>> the message string.
>>  message, err := bufio.NewReader(ServerConn).ReadString('\n')
>> 
>>                 if ( err != nil ){
>> 
>>                         fmt.Println("RELAY: ERROR:  Reg Message read err:", 
>> err)
>> 
>>                         return 
>> 
>>                 }
>> 
>> 
>> 
>> 
>> 
>> // had to preallocate a buffer, but I want a read to return me a buffer so I 
>> don't have to guess how big to make it.
>> 
>>  buf := make([]byte, 1024*32)
>> 
>>  // READ FROM CLIENT
>> 
>>  nBytes, err := Csrc.Read(buf)
>> 
>> 
>> 
>> 
>> 
>> Is this not possible, I have not seen any examples that would indicate that 
>> there is a standard library that would do something like what I am looking 
>> for.
>> 
>> 
>> 
>> thanks,
>> 
>> Ron
>> 
> 
> -- 
> You received this message because you are subscribed to the Google Groups 
> "golang-nuts" group.
> To unsubscribe from this group and stop receiving emails from it, send an 
> email to golang-nuts+unsubscr...@googlegroups.com.
> To view this discussion on the web visit 
> https://groups.google.com/d/msgid/golang-nuts/24a6f6bd-8948-434c-bb83-c663d75bb23d%40googlegroups.com.

-- 
You received this message because you are subscribed to the Google Groups 
"golang-nuts" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to golang-nuts+unsubscr...@googlegroups.com.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/golang-nuts/CFE462A5-C276-4B13-BE6B-6057A1B8DC3F%40ix.netcom.com.

Reply via email to