anet-devel Mailing List for ANet
Status: Abandoned
Brought to you by:
benad
You can subscribe to this list here.
| 2000 |
Jan
|
Feb
|
Mar
|
Apr
|
May
|
Jun
|
Jul
|
Aug
|
Sep
|
Oct
|
Nov
(2) |
Dec
(29) |
|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 2001 |
Jan
(13) |
Feb
(7) |
Mar
(10) |
Apr
(7) |
May
(3) |
Jun
(6) |
Jul
(4) |
Aug
(2) |
Sep
(1) |
Oct
(3) |
Nov
(3) |
Dec
(12) |
| 2002 |
Jan
(6) |
Feb
|
Mar
|
Apr
|
May
(2) |
Jun
|
Jul
|
Aug
|
Sep
|
Oct
|
Nov
|
Dec
|
| 2003 |
Jan
(1) |
Feb
|
Mar
|
Apr
|
May
|
Jun
|
Jul
|
Aug
|
Sep
|
Oct
|
Nov
|
Dec
|
|
From: Benoit N. <be...@ma...> - 2003-01-11 20:49:15
|
More information here: http://slashdot.org/~benad/journal/21100 - Benad |
|
From: Benoit N. <be...@ma...> - 2002-05-14 00:50:21
|
OK. We start on Freenet's web site (http://freenetproject.org/): > Amr Kronfol has written a thesis on FASD, a Fault-tolerant, Adaptive, > Scalable, Distributed Search Engine. It is essentially a generalization > of Freenet's heuristic searching algorithm, but rather than looking for > specific keys, it allows you to do a Google-style keyword search > through documents. FASD can form a layer along-side Freenet which will > bring us much closer to matching the functionality of the WWW. Amr has > performed extensive simulations to demonstrate that FASD shares > Freenet's scalability and fault tolerance. So, you go to FASD's web site: http://www.cs.princeton.edu/~akronfol/fasd/ After boring yourself with the thesis (page 20 has the worse pseudo-code that I've seen in years...), you should say to yourself "D'uh!": 1. Not being able to search metadata in Freenet is and will remain Freenet's limitation. 2. FASD is just an optimized Gnutella, which had been in discussion for almost 2 years (on Gnutella development mailing lists), but now with fancy words. 3. So why can't we use the *same* network under the *same* framework? What's the point of having *another* "layer along-side Freenet"? This paper cries for a common framework! I have a stange feeling that they'll figure out exactly what I've been saying for over a year, but in about 2 or 3 years. But then, they'll have a fancy thesis... (Yes, I'm using Mail.app for Mac OS X... SourceForge's servers don't like my sendmail setup and think it is spam, so I can't use mutt...) - Benad |
|
From: Benoit N. <be...@ma...> - 2002-05-10 00:17:51
|
OK. First, I wasn't not able to work much, if not at all, on ANet in the past 4 months, for school, personal and medical reasons. But now, at last, I have a little spare time. As you can see in the anet-checkins mailing list, I changed the Makefile. It doesn't require Perl anymore, and I made it *VERY* clean. Impossible to understand without Make's manual, but still great. Look at here to see it online (paste as a single line in your browser): http://cvs.sourceforge.net/cgi- bin/viewcvs.cgi/anet/ANet/ANet_Daemon/Linux/Makefile?rev=1.7&content-type= text/vnd.viewcvs-markup Also, I made a fully functional XML wrapper for libxml2 as part of a university project. I will change it (with ACTUAL opaque pointers this time), and then put it in CVS within a week or two. http://cvs.sourceforge.net/cgi- bin/viewcvs.cgi/whitedwarf/WhiteDwarf/wdxml/Source/wdxml.c?rev=1.14&content-type= text/vnd.viewcvs-markup http://cvs.sourceforge.net/cgi- bin/viewcvs.cgi/whitedwarf/WhiteDwarf/wdxml/Headers/wdxml.h?rev=1.12&content-type= text/vnd.viewcvs-markup After that, I'll start working on Module Management, especially dynamic loading in Linux and Darwin (Mac OS X). If anyone wants to help me with that, tell me. - Benad |
|
From: Benoit N. <be...@ma...> - 2002-01-24 15:12:58
|
At 8:46 -0500 24/01/02, Chirag Kantharia wrote: >On Sat, Jan 19, 2002 at 07:42:30PM -0500, Benoit Nadeau wrote: >| I'm sure that this document alone can awnser 95% of your questions about >| ANet. Not only that, but I also need your feedback. I _really_ need your >| feedback on this one. Just tell me your comments about it in this mailing >| list. > >Good work! It couldn't be possibly made simpler! > >Some minor nitpicks: > >1. Towards the end, the document becomes a bit blurred. The stuff on >Clusters and Transparent ANet, I didn't get the point, being discussed. > > * Clusters: As per the document, a cluster is a distributed network > which share the same (set of) "rules". Does it mean, that a bunch of > web servers, say, www.geocities.com, and www.yahoo.com, both of > which talk HTTP, form a cluster? I *know* what is a cluster, but I > guess, the same meaning doesn't apply here (at least, that's what > the document suggests). Ahem. I think I understand what you mean. geocities and yahoo are not in a cluster because they're not part of the same distributed network. They can "talk" to each other, but it would be in the form of "client-server" (from whoever initiates the "connection"). So, yes, my definition of "cluster" is very specific to distributed networks and ANet. I still tried to simplify that concept with examples, but it will remain difficult to grasp until end-users can "play" with a working ANet daemon. > * Transparent ANet: Quoted from the page - "ANet is used to implement > a Distributed Network. But you don't have to be in the network to > use it." Could you elaborate on this? A big example: the Internet. You use the Internet. You're not part of it, because you're not an Internet router. Your ISP is likely to be part of the Internet, since they have routers that do data routing on the Internet. When you use the Internet, you don't "know" that there are routers behind, and you don't know how they work. Well, until they stop working. ANet networks are made as a mean of data transportation/distribution, so it will often happen that you use a client that connects to a node that is part of a distributed network just to "use" it, not to be part of it. >2. This might be entirely out of place, but by the name userIntro, I >expected, what interface the user might get and what (s)he would be able >to do using ANet. Is there any interface visualized for the end user? Any client can configure the ANet daemon (I wrote that somewhere in the low-level design). So, basically, the daemon is, well, a daemon, like Apache, but we can make a "user-friendly" client made only to monitor and configure the daemon. And you can always change the XML config file. Some clients might be smarter and "auto-configure" the daemon the first time it is launched, allowing some developers to make "plug-and-play" services. So... the user interface and the screenshots might be the last thing we can do in the Anet project, a couple of years (!) from now... - Benad |
|
From: Chirag K. <ch...@ya...> - 2002-01-24 13:47:41
|
On Sat, Jan 19, 2002 at 07:42:30PM -0500, Benoit Nadeau wrote:
| I'm sure that this document alone can awnser 95% of your questions about
| ANet. Not only that, but I also need your feedback. I _really_ need your
| feedback on this one. Just tell me your comments about it in this mailing
| list.
Good work! It couldn't be possibly made simpler!
Some minor nitpicks:
1. Towards the end, the document becomes a bit blurred. The stuff on
Clusters and Transparent ANet, I didn't get the point, being discussed.
* Clusters: As per the document, a cluster is a distributed network
which share the same (set of) "rules". Does it mean, that a bunch of
web servers, say, www.geocities.com, and www.yahoo.com, both of
which talk HTTP, form a cluster? I *know* what is a cluster, but I
guess, the same meaning doesn't apply here (at least, that's what
the document suggests).
* Transparent ANet: Quoted from the page - "ANet is used to implement
a Distributed Network. But you don't have to be in the network to
use it." Could you elaborate on this?
2. This might be entirely out of place, but by the name userIntro, I
expected, what interface the user might get and what (s)he would be able
to do using ANet. Is there any interface visualized for the end user?
chyrag.
--
Chirag Kantharia, symonds.net/~chyrag/
|
|
From: Benoit N. <be...@ma...> - 2002-01-20 00:42:35
|
I added "Introduction to ANet", aimed specifically for users, here: http://anet.sourceforge.net/docs/user/userIntro.html YOU ***MUST*** READ THIS DOCUMENT! I'm sure that this document alone can awnser 95% of your questions about ANet. Not only that, but I also need your feedback. I _really_ need your feedback on this one. Just tell me your comments about it in this mailing list. - Benad |
|
From: Benoit N. <be...@ma...> - 2002-01-09 13:07:11
|
>Hi Benad, > >I've a doubt: On a machine with multiple users, does each user have to >run his/her own daemon or there's a common daemon process per machine >(for all users)? This is similar to most daemons in Linux: it always runs in the background, whatever is the current user(s) using the computer. Apache is usually installed like that. Obviously, you're not *forced* to install ANet like Apache. A single can run ANet only when he wants to (when he's logged in the system). So, you have the choice. >I'm currently, very busy. I've updated the ReadFile function, but I >guess, it will be a pain to send stuff in bits and pieces, to you, to >patch up the stuff. Maybe, I'll update the CVS directly. I always prefer that you upload directly to CVS. Just don't use "cvs import"... ;-) - Benad |
|
From: Chirag K. <ch...@ya...> - 2002-01-09 05:01:15
|
On Tue, Jan 08, 2002 at 01:34:30PM -0800, Benoit Nadeau wrote: | Update of /cvsroot/anet/Documentation/user/text | Modified Files: | userIntro.txt <snip> | + ***How ANet works | + | + - Client VS. Daemon | + | + To become part of a Distributed Network, you first need to install the ANet 'daemon'. It is a program that will run in the background, without taking any space on your screen. | + | + The settings of the ANet Daemon can be changed by changing an XML file. But, since you might want to use the Distributed Network yourself, you can use an ANet Client to change the settings in the Daemon. | + | + An ANet Client is an application that communicates with the Daemon to configure and monitor the Daemon, or most of the time, to receive and send data to the Distributed Network. Hi Benad, I've a doubt: On a machine with multiple users, does each user have to run his/her own daemon or there's a common daemon process per machine (for all users)? I'm currently, very busy. I've updated the ReadFile function, but I guess, it will be a pain to send stuff in bits and pieces, to you, to patch up the stuff. Maybe, I'll update the CVS directly. chyrag. -- Chirag Kantharia, symonds.net/~chyrag/ |
|
From: Benoit N. <be...@ma...> - 2002-01-03 22:02:46
|
For the code, I'm starting to work on the XML parser. So, this means that you'll need libxml2 to compile. You can compile libxml2 from: http://www.xmlsoft.org/ Or you can install the RPM packages: http://rpmfind.net/linux/rpm2html/search.php?query=libxml2 http://rpmfind.net/linux/rpm2html/search.php?query=libxml2-devel Chris is converting the documentation in latex, and it's looking great. You can check out what he's doing with "cvs co Documentation". Otherwise... (silence) Contact me if you start having some spare time. - Benad |
|
From: Benoit N. <be...@ma...> - 2001-12-24 14:30:34
|
If you look at: http://anet.sourceforge.net/docs/devel/lowdesign/html/ you'll see that I continue to document everything. BTW, register for the ANet-checkins mailing list: https://lists.sourceforge.net/lists/listinfo/anet-checkins I'll will give you information about what was checked in, so you can all see what's going on with the code. Happy Holidays! - Benad |
|
From: Benoit N. <be...@ma...> - 2001-12-19 15:10:11
|
>I am not sure how ANetMemoryTag works. I don't think it's possible to
>GetMemoryBlockSize() on a pointer and find out, how much memory was
>allocated to it. If ANetMemoryTag was a struct of type:
>{ void *ptr; int size; }, then it would work; ie. storing the size of
>the memory block along with the location where it is stored.
>
>I might be wrong. Let me know what you have thought.
ANetMemoryTag is an "opaque" type. It's not _always_ a pointer.
To use it, don't use the "*" operator. Use ResolveMemoryTag.
If you look at Memory.c, you'll see the "trick" that I did
to store the size, and why you MUST use ResolveMemoryTag.
Look at Linux/main.c for an example.
>Fine. I had another suggestion: instead of return 1, 2 or 60, it would
>be great if we have an error.h with either #define ERROR_FILE_BUSY 60 or
>a typedef enum { ERROR_FILE_BUSY = 60 } ErrorCode; for the errors.
Go ahead and change Common/Files.h. I'll update the docs. But I prefer that
you use "kANetFileBusy" in the enums to avoid conflics in some operating
systems. And I prefer enums, but don't use typedefs, as I _think_ that this
is not allowed in C.
"ANET_FILE_BUSY": Macro
"kAnetFileBusy" : Constant
Remember: even if I have the "final word" on the code, don't be affraid to
"make up" stuff. The worst thing is that I'll do some clean up, but hey,
that's one of my tasks in ANet anyways.
>| So, this means that instead of using ANSI stuff (FILE *), you can use Linux
>| stuff ("fd": file descriptors, if I'm correct).
>
>'fd' are the usual variable names. The data type is 'int'.
That's what I though. All code I've seen used "fd" for the variable
name, but I had no idea of the type.
An "int"? Simple...
>| what I did. BTW, we should always use "-Wall" with gcc; I saw
>| some weird errors.
>
>Oh! I'll take care.
A good idea is to work from what is in CVS, making the checking easier. You
can checkout anonymously all the stuff from CVS if ssh doesn't work for
you. Just follow the instructions from SourceForge (but don't forget to add
the "-P" flag).
Or, if the only thing you have is HTTP access, you can download the full
CVS archive here:
http://cvs.sourceforge.net/cvstarballs/anet-cvsroot.tar.gz
Dump it somewhere, and change your "CVSROOT" to the dumped directory:
cd ~
# download the .tar.gz in your home directory
tar -zxf anet-cvsroot.tar.gz
#not sure about the following line... do "man cvs"...
setenv CVSROOT ~/anet
mkdir ANet_CVS
cd ANet_CVS
cvs co ANet
>| About symonds.net: Am I dreaming? Wow!
>
>Thanx! :)
Uh... I was talking about the site http://symonds.net/ , not your
homepage... "Wow! That's the _coolest_ home page in the WORLD!"... That
doesn't sound like me... ;-)
I mean, free, banner-free, no strings attached web space?
It's been a while since I've seen that!
- Benad
|
|
From: Chirag K. <ch...@ya...> - 2001-12-19 06:09:41
|
On Tue, Dec 18, 2001 at 01:31:19PM -0500, Benoit Nadeau wrote:
| >Here do I assume that the path will be pre-malloc'ed or do I malloc the
| >memory required for storing the path?
| An ANetMemoryTag implies that:
| - The memory was already allocated
| - You can get the size of the allocated memory with GetMemoryBlockSize
I am not sure how ANetMemoryTag works. I don't think it's possible to
GetMemoryBlockSize() on a pointer and find out, how much memory was
allocated to it. If ANetMemoryTag was a struct of type:
{ void *ptr; int size; }, then it would work; ie. storing the size of
the memory block along with the location where it is stored.
I might be wrong. Let me know what you have thought.
| You should actually open the file only in ANetOpenFile and in
| ANetRead/WriteFile if the file was not already open. You create the file on
| the Write operation if it does not already exist.
| Look at:
| http://anet.sourceforge.net/docs/devel/lowdesign/html/group__files.html#a0
Fine. I had another suggestion: instead of return 1, 2 or 60, it would
be great if we have an error.h with either #define ERROR_FILE_BUSY 60 or
a typedef enum { ERROR_FILE_BUSY = 60 } ErrorCode; for the errors.
| There's no acutal "seek position" to remember for reads. Look at the
| description of ANetReadFile, which is the only function you can use to read
| from a file. The "startPos" has to be given explitely each time.
Fine. I didn't see that then.
| Your code has to work on Linux *only*. This means that you're not forced to
| use ANSI C functions. You can use any "Linux-native" function you want.
Cool!
| So, this means that instead of using ANSI stuff (FILE *), you can use Linux
| stuff ("fd": file descriptors, if I'm correct).
'fd' are the usual variable names. The data type is 'int'.
| file. So, what you can do is this:
| - ANetOpenFile() correctly opens the file in the proper async state.
| - ANetGetSetFileAsync(), with the set flag, checks to see if the file is
| already open and if the async flag should change. If this is the case,
| close the file and re-open it in the new async mode.
| - ANetRead/WriteFile assume the actual async state of the file is already
| the same as the flag in the ANetFile structure.
All ok.
| what I did. BTW, we should always use "-Wall" with gcc; I saw
| some weird errors.
Oh! I'll take care.
| About symonds.net: Am I dreaming? Wow!
Thanx! :)
chyrag.
--
Chirag Kantharia, symonds.net/~chyrag/
|
|
From: Benoit N. <be...@ma...> - 2001-12-18 18:41:06
|
Look at: http://anet.sourceforge.net/docs/devel/lowdesign/ ..... NOW! Great examples: - Click on "File List" then on "main.c", - Click on "Data Structures" then on "ANetTagListItem", - Click on "Globals" (everything is there!), - Click on "Modules", then browse around. This is some great docs. Very low-level, yet almost everything is explained in technical terms, not "philosophical" terms of my high-level design. You can actually understand some stuff! Note that doxygen also generates PDF documents. I'll upload them later. I'll complete the documentation for the current functions (memory, XML, module loader) within a week or two. So? What do you think about it? - Benad |
|
From: Benoit N. <be...@ma...> - 2001-12-18 18:31:28
|
>1. ANetGetSetFilePath(ANetFile * f, ANetMemoryTag path, UInt8 set) > >If the 'set' variable is set ie. it's non zero, then I understand that I >have to set the path of the file 'f' ie. f->path to the string pointed >to by variable path. One can malloc the memory required for storing the >string pointed to by path and copy the path. So far, so good. Now, if >the set variable is not set, ie, the function is used to get the file's >path in the memory location pointed to by path variable. > >Here do I assume that the path will be pre-malloc'ed or do I malloc the >memory required for storing the path? An ANetMemoryTag implies that: - The memory was already allocated - You can get the size of the allocated memory with GetMemoryBlockSize I'll do the docs for memory management this week. >When do I actually create the file? I can't do that in ANetInitFile(), >since that time, the path of the file is not decided upon. I can do that >in ANetGetSetFilePath(). This I'm doing currently. If there are any other >thoughts on this, please let me know. There's another option of >``creating'' the file in ANetOpenFile(). To be on the safer side, I'm >opening the files in O_RDWR | O_APPEND mode (ie. read, write and append >mode). (I think that opening in O_APPEND mode, will cause the file pointer >to be at the end of the file, which would need to be reset to the >beginning so that it can read stuff correctly). You should actually open the file only in ANetOpenFile and in ANetRead/WriteFile if the file was not already open. You create the file on the Write operation if it does not already exist. Look at: http://anet.sourceforge.net/docs/devel/lowdesign/html/group__files.html#a0 There's no acutal "seek position" to remember for reads. Look at the description of ANetReadFile, which is the only function you can use to read from a file. The "startPos" has to be given explitely each time. >2. ANetGetSetFileAsync(ANetFile *f, UInt8 *async, UInt8 set) > >I don't think ANSI C has any function call which will have this >functionality. By default, the native open() on Linux, opens the file >for asynchronous writing. For setting it to synchronous writing, ie. >subsequent writes will block the calling piece of code, until the data >is written to the disk, the file will have to be closed and reopened >with different mode. Let me know if this is ok. Your code has to work on Linux *only*. This means that you're not forced to use ANSI C functions. You can use any "Linux-native" function you want. So, this means that instead of using ANSI stuff (FILE *), you can use Linux stuff ("fd": file descriptors, if I'm correct). On most OS, including Linux, anync I/O is determined when you open the file. So, what you can do is this: - ANetOpenFile() correctly opens the file in the proper async state. - ANetGetSetFileAsync(), with the set flag, checks to see if the file is already open and if the async flag should change. If this is the case, close the file and re-open it in the new async mode. - ANetRead/WriteFile assume the actual async state of the file is already the same as the flag in the ANetFile structure. I cleaned up your code, formated the comments and checked it in. I made some small changes to your code to "merge" it correctly; check out "Linux/Files.c" and "Linux/FilesSpecific.h" to see what I did. BTW, we should always use "-Wall" with gcc; I saw some weird errors. About symonds.net: Am I dreaming? Wow! - Benad |
|
From: Chirag K. <ch...@ya...> - 2001-12-17 14:25:08
|
On Thu, Dec 13, 2001 at 12:26:01PM +0530, Chirag Kantharia wrote:
| In process of writing code for the fileI/O stuff, I've got lot of doubts
| but I'm saving it all up. I'll send in a huge mail soon, after I finish
| most of it or the mail gets very big.
Hi Benad,
I've taken liberty of defining few things which, hopefully, will not
clash with anything else.
typedef char boolean;
typedef unsigned int UInt32;
typedef unsigned char UInt8;
typedef char * ANetMemoryTag;
#define FALSE 0
#define TRUE 1
typedef struct {
/* busy flag */
boolean busy;
/* open flag */
boolean open;
/* async flag */
boolean async;
/* path to the file */
unsigned char * path;
/* file descriptor */
int fd;
} ANetFile; /* this is for time being; as I proceed with coding, I would
be adding more members */
I've got a few doubts:
1. ANetGetSetFilePath(ANetFile * f, ANetMemoryTag path, UInt8 set)
If the 'set' variable is set ie. it's non zero, then I understand that I
have to set the path of the file 'f' ie. f->path to the string pointed
to by variable path. One can malloc the memory required for storing the
string pointed to by path and copy the path. So far, so good. Now, if
the set variable is not set, ie, the function is used to get the file's
path in the memory location pointed to by path variable.
Here do I assume that the path will be pre-malloc'ed or do I malloc the
memory required for storing the path?
I need to return 3, if `path is invalid or not big enough'. This
indicates that the path is pre-allocated. There is no way to find out
size of a malloc'ed pointer in ANSI C, AFAIK. Under the circumstances, I
am not sure, how would I be able to return error, if the path is not big
enough. I suggest, that we malloc the memory required for path variable
in the function itself.
When do I actually create the file? I can't do that in ANetInitFile(),
since that time, the path of the file is not decided upon. I can do that
in ANetGetSetFilePath(). This I'm doing currently. If there are any
other thoughts on this, please let me know. There's another option of
``creating'' the file in ANetOpenFile(). To be on the safer side, I'm
opening the files in O_RDWR | O_APPEND mode (ie. read, write and append
mode). (I think that opening in O_APPEND mode, will cause the file
pointer to be at the end of the file, which would need to be reset to
the beginning so that it can read stuff correctly).
2. ANetGetSetFileAsync(ANetFile *f, UInt8 *async, UInt8 set)
I don't think ANSI C has any function call which will have this
functionality. By default, the native open() on Linux, opens the file
for asynchronous writing. For setting it to synchronous writing, ie.
subsequent writes will block the calling piece of code, until the data
is written to the disk, the file will have to be closed and reopened
with different mode. Let me know if this is ok.
Actually, I thought this might turn out to be a long mail. But the
succeeding functions (all are not done), I didn't find much problem.
The attached is file.h and file.c (and Makefile). The code isn't
documented doxygen style - I'm sorry for that. Felt very lazy to rewrite
the comments.
I haven't implemented all the functions as yet. Just thought of sending
whatever I've done so far, to keep -devel list busy.
PS: benad, can you change my homepage in CONTRIB to symonds.net/~chyrag/?
chyrag.
--
Chirag Kantharia, symonds.net/~chyrag/
|
|
From: Chirag K. <ch...@ya...> - 2001-12-13 13:13:47
|
On Wed, Dec 12, 2001 at 10:29:32AM -0500, Benoit Nadeau wrote: | //! A normal member taking two arguments and returning an integer value. | /*! | \param a An integer argument. | \param s A constant character pointer. | \return The test results | \see Test(), ~Test(), testMeToo() and publicVar() | */ | int testMe(int a,const char *s); <snip> | Anyways, I "toyed" a bit with the code, and here's the result: | http://anet.sourceforge.net/doc.tar.gz | HTML starts in html/index.html | PDF is in latex/refman.pdf This is just great. If not the graphs and extensive documentation, I think, everybody can at least do the above: \param, \return and \see, if applicable, to their code. It shouldn't be much. In process of writing code for the fileI/O stuff, I've got lot of doubts but I'm saving it all up. I'll send in a huge mail soon, after I finish most of it or the mail gets very big. chyrag. -- Chirag Kantharia, chyrag.dhs.org/ |
|
From: Benoit N. <be...@ma...> - 2001-12-12 15:29:41
|
>On Tue, Dec 04, 2001 at 11:34:36AM +0530, Chirag Kantharia wrote: >| On Mon, Dec 03, 2001 at 07:56:32PM -0500, Benoit Nadeau wrote: >| | Chirag: You can start working now on the File Management Wrappers. Place >| | the "Files.c" in ANet_Daemon/Linux. The two headers you need are >| | Common/Files.h and Linux/FilesSpecific.h. There are still some >functions to >| | add (especially for directory stuff), but at least you can know exactly >| | what to do for now. >| Got it. Please ignore my previous mail. > >Hi! > >I'm still working on the above. Meanwhile, I'd a suggestion: the >comments in the code could be suitably formatted so that the >documentation for the code can be automatically generated. For example, >javadoc, can be used to generate documentation for java class files. > >There's something called doxygen which is javadoc equivalent for C/C++, >but I haven't used it personally. Has anybody on the list used it? Any >other suggestions for generating the documentation is welcome. OK. So I looked a bit at doxygen, and it seems to be good. Look at http://www.stack.nl/~dimitri/doxygen/index.html Here's an example: //! A normal member taking two arguments and returning an integer value. /*! \param a An integer argument. \param s A constant character pointer. \return The test results \see Test(), ~Test(), testMeToo() and publicVar() */ int testMe(int a,const char *s); So, it's still readable. Anyways, I "toyed" a bit with the code, and here's the result: http://anet.sourceforge.net/doc.tar.gz HTML starts in html/index.html PDF is in latex/refman.pdf Just for fun, look at the graph for the "main.c File Reference". Wow. At any rate, it's good enough for me. javadoc used to get on my nerve, but doxygen's format is good enough for me. You can still make "plain" comments: I'll be in charge of re-formatting them to doxygen. Translation: I'll be using doxygen from now on, but you don't have to learn it. - Benad |
|
From: Chirag K. <ch...@ya...> - 2001-12-11 08:39:54
|
On Tue, Dec 04, 2001 at 11:34:36AM +0530, Chirag Kantharia wrote: | On Mon, Dec 03, 2001 at 07:56:32PM -0500, Benoit Nadeau wrote: | | Chirag: You can start working now on the File Management Wrappers. Place | | the "Files.c" in ANet_Daemon/Linux. The two headers you need are | | Common/Files.h and Linux/FilesSpecific.h. There are still some functions to | | add (especially for directory stuff), but at least you can know exactly | | what to do for now. | Got it. Please ignore my previous mail. Hi! I'm still working on the above. Meanwhile, I'd a suggestion: the comments in the code could be suitably formatted so that the documentation for the code can be automatically generated. For example, javadoc, can be used to generate documentation for java class files. There's something called doxygen which is javadoc equivalent for C/C++, but I haven't used it personally. Has anybody on the list used it? Any other suggestions for generating the documentation is welcome. chyrag. -- Chirag Kantharia, chyrag.dhs.org/ |
|
From: Benoit N. <be...@ma...> - 2001-12-05 00:02:12
|
When I saw this today, I had a weird feeling of "d=E9j=E0 vu"... >N IP_Sample/.dont_delete >N IP_Sample/FilesSpecific.h >N IP_Sample/Makefile >N IP_Sample/Makefile.in >N IP_Sample/build_exclusion.txt >N IP_Sample/build_locations.txt >N IP_Sample/build_makefile.pl >N IP_Sample/main.c >N IP_Sample/IP_Sample/udpclient.c >N IP_Sample/IP_Sample/tcpclient.c >N IP_Sample/IP_Sample/syncserver.c Prasanna did EXACTLY the same error I did a while ago (Prasanna, don't take this personally, I did the same dumb error myself): cd ANet/ANet_Daemon/Linux cvs import IP_Sample Oops! Look at http://cvs.sourceforge.net/cgi-bin/viewcvs.cgi/anet/ So, my conclusions: 1. "cvs import" is the most counter-intuitive command I've ever seen. 2. RTFM! Read the "man" page! 3. EVERYONE MUST STOP USING CVS IMPORT! I'll change the docs tomorrow to stress that. Remember everyone: no one can delete files in CVS since we don't have shell access to the CVS server. So think twice before doing anything. - Benad |
|
From: Benoit N. <be...@ma...> - 2001-12-04 00:56:41
|
Look at: http://anet.sourceforge.net/docs/devel/lowdesign/ So, what do you think of it? I will do that for *all* functions in the daemon right before they are finalized. So this should help everyone when merging some "sample code" to the daemon itself. Chirag: You can start working now on the File Management Wrappers. Place the "Files.c" in ANet_Daemon/Linux. The two headers you need are Common/Files.h and Linux/FilesSpecific.h. There are still some functions to add (especially for directory stuff), but at least you can know exactly what to do for now. - Benad |
|
From: Benoit N. <be...@ma...> - 2001-12-01 02:01:03
|
I added Args.c based on Chirag's code. To build the new file, make sure you do a "make clean" before doing "make". (Chirag, I had to make a lot of changes to the code: try to revise my changes if you have time. Also, can you use the .emacs file described in http://anet.sourceforge.net/devel.html ? Thanks.) In the next few days (1-3), I'll make some low-level design for the File Management. - Benad |
|
From: Benoit N. <be...@ma...> - 2001-11-17 20:26:50
|
There is now three new develpers for ANet: David Zemke (in...@dr...) Prasanna Gopinath (Pra...@ho...) Warren Price (war...@ho...) Here is the current task status: XML: Quentin, Chyrag (later next week) Files: David Run-Time Wrapper: Warren IP I/O: Prasanna I will revise the code for the XML and Run-Time Wrapper tasks, while Chris will revise the code for Files and IP I/O tasks. Other subject: the new Makefile. To build the project, do "make" in ANet_Daemon/Linux. You will need any version of Perl. The actual Makefile will be generated automatically, but to do so, the script needs three things: Makefile.in contains the beginning of the Makefile. The generated output of the script will be added to this. build_locations.txt contains a list of directories where the script will search for the *.c and *.h files. The search is NOT recursive. build_exclusion.txt contains a list of file names that has to be excluded from the build. Can be *.h or *.c files. So, each time you add a file, make sure the same file name is not already used somewhere else in the project, and do "make rebuild". Finally, you can use "make clean" to clean up everything. Ask me if you have any question. - Benad |
|
From: Benoit N. <be...@ma...> - 2001-11-11 14:47:59
|
Well, you guessed it, there's no meeting today. I'll contact team members on an individual basis. By the way, I'll be VERY busy for the rest of the month. But I'll try to do as much as possible today, and I'll still do things from time to time, but not as much as before. I should have much more time in December. - Benad |
|
From: Benoit N. <be...@ma...> - 2001-11-06 00:14:06
|
So, what's going on everyone? For me, I have not yet started the Memory Management stubs, but I did a lot of ground work for the Module Loader and I made a pretty neat Makefile. I'll start (and hopefully finish) the MM stubs this week. You should look at the Makefile in ANet_Daemon/Linux/: it's pretty good (and the "header dependency" stuff cannot be found in most IDEs, like VC++ or CodeWarrior...). I will, next weekend, arrange another meeting with Hotline on my machine. I'll send the details over the week. BTW, for those that did not reply to me yet, the meeting will be your last chance to meet me before you get removed from the project. - Benad |
|
From: Benoit N. <be...@ma...> - 2001-10-23 23:22:43
|
Here's the current status for task assignment: XML: Chyrag and Quentin MM Stubs: Me File I/O: Chris Rest: Me Even if the current task list does not seem interesting for you, you still have to contact within the next two weeks. - Benad |