Received: from ATHENA-AS-WELL.MIT.EDU by po7.MIT.EDU (5.61/4.7) id AA14953; Thu, 21 Jan 93 13:41:52 EST
Received: from NOBUNAGA.MIT.EDU by Athena.MIT.EDU with SMTP
	id AA19881; Thu, 21 Jan 93 13:41:49 EST
Message-Id: <9301211841.AA19881@Athena.MIT.EDU>
Received: by ceci.mit.edu id AA00817g; Thu, 21 Jan 93 13:41:50 EST
Date: Thu, 21 Jan 93 13:41:50 EST
From: Tomi Tominaga <htomi@ceci.mit.edu>
To: aybee@Athena.MIT.EDU
Cc: jud@Athena.MIT.EDU, htomi@ceci.mit.edu
In-Reply-To: aybee@Athena.MIT.EDU's message of Wed, 20 Jan 93 19:44:30 EST <9301210044.AA04513@ceci005.MIT.EDU>
Subject: Networking Chapter


Hi, Adam.  Thank you for your quick response !

I reply to your questions whose answers seem to be in my mind now.

   >>i think that some examples of each of the interactions might help.  for instance, one application
   >>might provide a line-oriented version of unix "talk" to demonstrate the "lifecycle" of a network
   >>application, as well as to demonstrate a stream-oriented communication.  perhaps another, application,
   >>such as a renderer might be used to demonstrate how more structured data could be sent with a
   >>packet-model. in each example, you could make it clear which services would be used.  if done with
   >>examples, the chapter might start out presenting the applications from the users perspective then show
   >>what is required of the network interface, then show how the network DIX will meet those needs.
I need to think about this suggestion. You mention the needs of examples using concrete applications and
I should give something which can be used as a guideline for usage of each NW service ?

   >>i think that you might want to rename the methods to have longer, more descriptive names. i think that
   >>would be consistent with the naming guidelines and ppwould make the interface easier to use.  for
   >>instance, RegPktSender() would become RegisterPacketSender().  in fact, since these functions will be
   >>C++ methods, you gould just call it Register() without fear of namespace collisions.  additionally you
   >>might want to change the Create and Destroy methods to be the standard C++ constructors and
   >>destructors.
I must present constructors instead of creation/destruction function. 

   >>im a little confused by your phrase "without connection" which appears in the descriptions of
   >>Register functions as well as some SendMessage functions among others.
I have to be careful when using this word "connection".  I mixed up the concept of the connection
at TCPs(low level) and at applications(high level). I need to put this word otherwise.

   >>your diagrams in the last few pages are very cool, but may need a bit of text to explain them; the examples
   >>might help with explaining them.
OK.

   >>an explanation of what you mean by the word "object" might be helpful too --- C++ objects? or
   >>interpretted objects? or???
I might be still ambiguous myself. I am thinking the objects are of two kinds. I mean one is user-defined 
objects(interpreted objects) and the other is C++ objects(Control.Media,UI,etc.,).  In this current design 
document, I haven~t referred very much to inter-object messaging yet. Actually its descriptions are mainly 
on application messaging. In this sense, current meaning of object is very close to a process in the document.
I have to reinforce this part.

   >>now, for questions that i thought of as an eventual user of libNW:
   >>can i register for callbacks or must i poll my network objects?  (callbacks would be more friendly :) )
I think we need callback. In Unix with RPC, I think I can devise to use it. But in other platforms such as PC,
Macintosh, I am not sure how to do so far because this part is dependent on platform-specific system 
communication software.  But I also feel that in addition to callback, we need polling mothods.

   >>what happens if my calls fail? can i get a notification so i can decide how to handle them? or do you
   >>	     kill me?
I will decide.

   >>can i change my NWobjects from blocking to non-blocking after they have been created? can i change
   >>	     their timeouts?
   >>don't the PingRequest functions need timeouts?
I forgot to refer to these items. I feel it would be better to be able to change that mode.

   >>what if i have 2 applications with the same name running on the same machine? who straightens it out?
   >>	     (i imagine that the name service does, but you haven't discussed it anywhere)
Basically,I think, this is no two application with the same name. So I want to make an error when this 
occurred. But in fact there might be the case when an application will fork and not exec.  In this sutuation, 
I guess a location manager can discriminate these applications by SAP(service access point such as port number 
in Unix). But if you want to discriminate the two applications from a remote site, how do you tell your 
destination ?  This case must be solved somehow by making each application unique in a host domain in a 
platform-specific way.
And I think the most part of naming service is platform-dependent. So I won`t refer to these details so far
except necessary items. Anyway system name binding services are defferent between platforms. So it needs further
investigation.

   >>if i run my application which uses NWobjects and there are no name servers running, what happens?
I think I need to provide a way if there is no location server.  This will be solved by setting through such 
as environment variables in Unix or communication box tool? in Macs.

   >>what base types do you support? integers, reals, strings, etc?
I have to decide.

   >>what provisions might there be for extending this set?  can i register translators with NWobjects
   >>	     which will be called when a certain type of data arrives?  for instance, can i define a
   >>	     MyFavorite packet type and register it with you, then give you a function to call when it
   >>	     arrives?   (the function might convert the packet to a new format, suitable for executing the
   >>	     normal callback on)....i guess, im saying there are two types of callbacks i might want to have
   >>	     called when data arrives --- one to translate the type to a more friendly format (to extend the
   >>	     set of base types) and one per type to handle the incoming message (after translation)
nmmmm,I think...

Thank you.

Tomi
