You can subscribe to this list here.
| 1999 |
Jan
|
Feb
|
Mar
|
Apr
|
May
|
Jun
|
Jul
|
Aug
|
Sep
|
Oct
|
Nov
|
Dec
(5) |
|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 2000 |
Jan
(5) |
Feb
(5) |
Mar
(4) |
Apr
(3) |
May
(13) |
Jun
(8) |
Jul
|
Aug
|
Sep
|
Oct
(4) |
Nov
(3) |
Dec
(5) |
| 2001 |
Jan
(10) |
Feb
(6) |
Mar
(38) |
Apr
(27) |
May
(28) |
Jun
|
Jul
|
Aug
|
Sep
(4) |
Oct
(2) |
Nov
(2) |
Dec
(4) |
| 2002 |
Jan
|
Feb
|
Mar
(2) |
Apr
|
May
|
Jun
|
Jul
|
Aug
|
Sep
|
Oct
|
Nov
|
Dec
|
|
From: Benjamin G. <ben...@bt...> - 2002-03-15 12:21:52
|
On Friday 15 March 2002 11:22 am, Bo Lorentsen wrote: > nb++ are now successfully moved to its new home at "nbpp.zigzak.net", > and both the CVS and the mailing list are moved too. That's great! You are now officially the new maintainer. I'll delete the SourceForge project within the next few days. I'm glad to see this project get a new lease of life. Benjamin ________________________________________________________________________ This email has been scanned for all viruses by the MessageLabs SkyScan service. For more information on a proactive anti-virus service working around the clock, around the globe, visit http://www.messagelabs.com ________________________________________________________________________ |
|
From: Bo L. <bl...@lu...> - 2002-03-15 11:25:18
|
Hi ... Now if anyone thougth that I forgot to do anything about the new nb++ maintain things, here is some news :-) nb++ are now successfully moved to its new home at "nbpp.zigzak.net", and both the CVS and the mailing list are moved too. The CVS is the last sourceforge snapshot, plus a few of my changes. It is possible to browse the CVS, but only developers are allowed to add changes, by using ssh. I hope that we will meet in the new mailing list, and that we may be able to develop nb++ to become a good common platform for future C++ code :-) /BL |
|
From: Bo L. <bl...@to...> - 2001-12-13 16:26:13
|
Hi ...
Now that it seems that nb++ will been changing home, I was looking
through the code, and was trying to find everyplace where you used the
Handle<> class, to se how difficult it would be to change it to the new
one I have made.
This helped me make the thread class more stable if all reference
classes have been destroyed (as the strart_thread class now also has a
reference to the ThredImpl). Also the STL "shadow" classes have been
removed, and some code have been changed to a more raw way of use. Like
this :
Vector<FancyClass> xyz;
to
std::vector<RefHandle<FancyClass> > xyz;
but "FancyClass" will now be defined like this :
class FancyClass : public RefCounted
...
But this lead me to a question ... why have you been using a ref counted
vector for strings ??? I mean strings are refcounted by itself anyway !
I Btw. really like your Thread class, as it does not matter how you
allocate the thread class, a really nice way of making threads (and the
combination of Lock and Monitor is neat too). We just need some kind of
manager that makes sure that the runnig class and the ThreadImpl keep
allocated (reffered) even if all the Thread classes have been destroyed.
Well this have been fixed :-)
Well, this was the changes for today, we are still missing a new "home"
for nb++, but the mashine will be up and running in the start of next
year, and we are working on it.
/BL
|
|
From: Bo L. <bl...@to...> - 2001-12-04 16:56:49
|
Benjamin Geer wrote: >Actually, I think the project needs a new maintainer. I clearly haven't >got the time to be a good maintainer for it anymore. Would you like to be >the official maintainer of nb++? I would still be available to answer >questions about the code. > That just perfect. My colleaugue and I have taked about moving the project from the sourceforge to our own public server, it will ofcause stay public 9and LGPL), but our mutivation is to use it for inhouse development (pure commercially). This sould help os focus on the quality of the framework, and ensure that we keep the focus this direction :-) We will mostly focus on cleaning up and stabelizing the current nb++, and maybe insert a new ref counter that don't need special container instances :-) How does that sound ? /BL |
|
From: Benjamin G. <ben...@bt...> - 2001-12-04 08:53:36
|
On Mon, Dec 03, 2001 at 03:56:33PM +0100, Bo Lorentsen wrote: > Now I have been watching this project for a few weeks now, and seen that > the development of the project is a little slow at the moment, to say it > at least. Many of the base ideas in nb++ are really good, and it really > is worth building upon, and its therfor a shame that the project does > not develop futher or faster. I agree! > Me and some of my collecs are planing to use the nb++, as some of the > work in here is quite good, and we like to make some clean up, and > addons. But because the original authors don't seem to have the time, we > like to know if it was ok if we continue the development (still as a > open source project, ofcause). > > We sould be able to contribute with code to stablize, and enhance the > nb++, as we like to use it as a common library for some inhouse code > development. Actually, I think the project needs a new maintainer. I clearly haven't got the time to be a good maintainer for it anymore. Would you like to be the official maintainer of nb++? I would still be available to answer questions about the code. Benjamin |
|
From: Bo L. <bl...@to...> - 2001-12-03 14:57:17
|
Hi ... Now I have been watching this project for a few weeks now, and seen that the development of the project is a little slow at the moment, to say it at least. Many of the base ideas in nb++ are really good, and it really is worth building upon, and its therfor a shame that the project does not develop futher or faster. Me and some of my collecs are planing to use the nb++, as some of the work in here is quite good, and we like to make some clean up, and addons. But because the original authors don't seem to have the time, we like to know if it was ok if we continue the development (still as a open source project, ofcause). We sould be able to contribute with code to stablize, and enhance the nb++, as we like to use it as a common library for some inhouse code development. Sorry if this sounds a little clumcy, but I have'nt done anything like this before :-) /BL |
|
From: Bo L. <bl...@lu...> - 2001-11-14 20:42:14
|
On Wed, 2001-11-14 at 19:09, Klaus H=E4ming wrote: > cout << connectionCounter << endl; > clientSock =3D socket.accept(clientAddr); > cout << connectionCounter << endl; How are your "clientAddr" defined ? Have you tryed this "trick" while using other "clientAddr" constructs ? > The first cout prints 0 to the console, the second an astonishing big number. > Seems to me, that someone overwrites the data at &connetionCounter while = in=20 > the accept function. The "ServerSocketImpl.cpp" makes an internal automatic char array, that may get the wrong size info. The sizeinfo comes from your clientAddr. > Any suggestions? None other than looking at your "clientAddr" :-) Hope we find a solution ... /BL |
|
From: Klaus <kha...@we...> - 2001-11-14 18:13:19
|
Hi, In my program the following lines exist: int connectionCounter = 0; . . . cout << connectionCounter << endl; clientSock = socket.accept(clientAddr); cout << connectionCounter << endl; The first cout prints 0 to the console, the second an astonishing big number. Seems to me, that someone overwrites the data at &connetionCounter while in the accept function. Any suggestions? tia, Klaus |
|
From: Benjamin G. <ben...@bt...> - 2001-10-12 21:14:42
|
I'm sorry it's taken me so long to respond. I'm working on too many projects at the same time. On Mon, Oct 01, 2001 at 12:54:38PM +0200, Bo Lorentsen wrote: > First I have to say that this is a really neat library, and I like your > focus on the threading model and simplicity, its time to start using > this mt model much some more. Thanks! > I like to know if there is any feature plans for nb++, and if that need > to be added ? At the moment, nb++ isn't being actively developed, because neither Eduardo nor I have time. But we'd welcome any contributions. The main thing that I think needs to be added is that the socket classes should be extended to support datagram sockets. However, if you want to add something else, there's certainly room for other ideas. > Are there fx. any plan to make a inet protocol class the makes streams > as input output so that it will be possible to build streams til > different protocols (http, ftp) ? We hadn't thought of that, but I think it sounds like a good idea. > What kind of application is this tool used in ? Someone wrote a content-filtering HTTP proxy server based on it (DansGuardian), but I think they've since switched to another approach. I think Eduardo has used it to write other sorts of daemons, but you'd have to ask him for details. For me it was basically a learning exercise; Eduardo had the more practical point of view. > What kind of compiler have you been using, and against what librarys ? We've used GCC; if I remember correctly, nb++ just needs a standard pthread library (or the HP/UX variant), and the standard C and C++ libraries. > Have anyone tryed to se if the windows platform, would fit under the > hood of nb++ ? I think it might be possible to port it to work on Windows with the Cygwin POSIX emulation layer, but I don't think anyone has tried. -- Benjamin Geer http://www.btinternet.com/~benjamin.geer |
|
From: Bo L. <bl...@lu...> - 2001-10-01 10:57:51
|
Hi ... First I have to say that this is a really neat library, and I like your focus on the threading model and simplicity, its time to start using this mt model much some more. I like to know if there is any feature plans for nb++, and if that need to be added ? Are there fx. any plan to make a inet protocol class the makes streams as input output so that it will be possible to build streams til different protocols (http, ftp) ? What kind of application is this tool used in ? What kind of compiler have you been using, and against what librarys ? Have anyone tryed to se if the windows platform, would fit under the hood of nb++ ? Regards /BL ps.: Sorry spellchecking does not work in evolution --- yet :-) |
|
From: Mads R. <ma...@ci...> - 2001-09-17 14:19:59
|
On Friday 14 September 2001 08:17, you wrote: > Trying to install nb++-0.6.0 on Mandrake 8.0 box, getting: > > checking whether the C++ compiler (c++ ) works... no > configure: error: installation or configuration problem: C++ compiler > cannot create executables. Try instaling the c++/cpp rpms gcc-2.96-0.62mdk gcc-c++-2.96-0.62mdk gcc-cpp-2.96-0.62mdk Regards, Mads |
|
From: Benjamin G. <ben...@bt...> - 2001-09-14 17:20:52
|
On Fri, Sep 14, 2001 at 12:17:57PM +0100, Harry Burgin wrote: > ./configure: c++: command not found What happens when you type c++ on the command line? --Benjamin |
|
From: Eduardo J. B. <ej...@ne...> - 2001-09-14 15:44:58
|
Hi! > [snip] > configure:1770: checking whether the C++ compiler (c== ) works > configure:1776: c++ -o conftest conftest.C 1>&5 > ./configure: c++: command not found Either you have a _really_ broken PATH, or you don't have a c++ compiler installed. The RPM for the C++ compiler should be something like gcc-c++ (thou I use RH 7.1, not Mandrake). You can try entering 'c++' at your shell's command line. It should say something like: 'c++: No input files'. Good luck, Ej. |
|
From: Harry B. <hb...@ke...> - 2001-09-14 11:18:38
|
Trying to install nb++-0.6.0 on Mandrake 8.0 box, getting: checking whether the C++ compiler (c++ ) works... no configure: error: installation or configuration problem: C++ compiler cannot create executables. The config.log file shows: <snip..> configure:1770: checking whether the C++ compiler (c== ) works configure:1776: c++ -o conftest conftest.C 1>&5 ./configure: c++: command not found configure: failed program was: #line 1771 "configure" #include "confdefs.h" <..snip> My nb++ directory has a file confdefs.h which contains: #define PACKAGE "nb++" #define VERSION "0.6.0" I have installed all the rpm's I can think of, including kernel headers, glibc-devel, libstdc.. I'm stuck - can anyone help please? TIA |
|
From: Daniel B. <nb...@ja...> - 2001-05-24 22:31:46
|
In message <200...@lo...> you wrote: > On Fri, May 18, 2001 at 02:52:14PM +0100, Daniel Barron wrote: > > In my DansGuardian I have a class object in the main class that has the > > main() function. This object reads a bunch of conf files early in the > > main(), well before the return daemon.run();. The object contains code and > > data. The object is used in the other classes and the handleConnection() [snip] > You're right that the object is accessed by multiple threads. This would > only be a problem if the object is modified after daemon.run() is called. > It's OK to create an object, then create a bunch of threads, and let them > all read from the object. But if anything modifies the object, you could > have problems. The object does not get modified. It contains lots of variables and deques as well as code to check if a passed string is in one of the deques. The only 'modification' is some for(int i;;)s which I presume would create local variables on the stack? > > > Perhaps I could take a copy of the object in the handleConnection() and use > > that instead to solve the problem? What do you think? > > Well, you could still have a race condition, because one thread could be > modifying the object while another thread is copying it. No, it does not get modified. [snip] I thought the possible race condition (which it seems was not there after all) might have caused my random crashes, but not :( -- Daniel Barron (Visit http://dansguardian.org/ - True web content filtering) |
|
From: Benjamin G. <ben...@bt...> - 2001-05-24 11:10:37
|
On Wed, May 23, 2001 at 04:58:39AM -0000, Karl Sumpter wrote: > Hi, > > I have been attempting to compile nb++0.5.3 on a Solaris 2.6 (GCC 2.95.1) > box with not too much success. Following is the error i get. nb++ has not been ported to Solaris. This would probably not be much work, but it would require some knowledge of GNU autoconf and automake. There are a few differences between the C library functions available on Linux and on Solaris; you'd have to identify the differences, add tests for them in configure.in, and use the results of those tests (in include/nb++_config.h) to adjust the wrapper code in src/osdep.cpp and src/osdep.hpp. If you'd like to take on this task and make a patch, I'd be delighted to include the results in nb++. Cheers, Benjamin |
|
From: Benjamin G. <ben...@bt...> - 2001-05-24 10:13:25
|
On Fri, May 18, 2001 at 02:52:14PM +0100, Daniel Barron wrote: > In my DansGuardian I have a class object in the main class that has the > main() function. This object reads a bunch of conf files early in the > main(), well before the return daemon.run();. The object contains code and > data. The object is used in the other classes and the handleConnection(). > > Have I done a bad thing? As the object is AFAI can tell shared between the > threads, this would cause a race condition and could cause random crashes? > It contains non-mutex-protected code remember. Am I right? You're right that the object is accessed by multiple threads. This would only be a problem if the object is modified after daemon.run() is called. It's OK to create an object, then create a bunch of threads, and let them all read from the object. But if anything modifies the object, you could have problems. > Perhaps I could take a copy of the object in the handleConnection() and use > that instead to solve the problem? What do you think? Well, you could still have a race condition, because one thread could be modifying the object while another thread is copying it. I'd suggest using an RWLocker. If each of the object's methods leaves the object in a consistent state (so that it would be OK for one thread to call any of the object's methods, and then for another thread to call any of the object's methods), then the easiest thing to do would be to put the RWLocker in a member variable in the object (as in the nb++ examples), and acquire it using ReadLock and WriteLock objects as necessary in the object's methods. -- Benjamin Geer http://www.btinternet.com/~benjamin.geer |
|
From: Benjamin G. <ben...@bt...> - 2001-05-23 20:12:07
|
On Wed, May 16, 2001 at 07:53:33PM +0100, Daniel Barron wrote: > With a MultiThreader() daemontest, is there a concurrency issue with the > handleConnection() code? I.e. does the for() i integer have a race > condition? Or is there a seperate copy of the TestDaemon class object > running in each thread and so is thread-safe? You needn't worry about `i'. There's no race condition, because `i' is a local variable; i.e. a new `i' is created and destroyed (on the calling thread's stack) within the scope of each handleConnection() method call. Thread safety is only an issue with class members and static variables. > Also I thought that sleep() caused the entire process to sleep and you needed > to call a pthread sleep? I think you're right; that should be a call to reliable_usleep(), an internal nb++ function that just sleeps the current thread (using select()). I'll fix it. > I hope I'm using the correct jargon for these questions! I'm new to the > concepts of multi-threading. It takes some getting used to. You might want to read something like _Programming with POSIX Threads_ by David R. Butenhof (the Addison-Wesley series tends to be quite good). -- Benjamin Geer http://www.btinternet.com/~benjamin.geer |
|
From: Karl S. <kar...@ho...> - 2001-05-23 04:58:45
|
Hi,
I have been attempting to compile nb++0.5.3 on a Solaris 2.6 (GCC 2.95.1)
box with not too much success. Following is the error i get.
In file included from ../include/Exception.hpp:22,
from Exception.cpp:19:
../include/osdep.hpp: In function `int nbpp::gethostbyname_r(const string &,
hostent *, char *, unsigned int, hostent **, int
*)':
../include/osdep.hpp:60: `hostent_data' undeclared (first use this function)
../include/osdep.hpp:60: (Each undeclared identifier is reported only once
../include/osdep.hpp:60: for each function it appears in.)
../include/osdep.hpp:67: parse error before `*'
../include/osdep.hpp: In function `class string nbpp::strerror_r(int)':
../include/osdep.hpp:83: implicit declaration of function `int
nbpp::strerror_r(...)'
make[1]: *** [Exception.lo] Error 1
if anyone has seen this before (I read something similar regarding AIX on
the list, but all my attempts failed) I would apprectate is greatly if some
advice came my way.
With thanks
Karl Sumpter
_________________________________________________________________________
Get Your Private, Free E-mail from MSN Hotmail at http://www.hotmail.com.
|
|
From: Karl S. [M. E. T. Myanmar] <may...@mp...> - 2001-05-23 04:40:59
|
Hi,
I have been attempting to compile nb++0.5.3 on a Solaris 2.6 (GCC 2.95.1)
box with not too much success. Following is the error i get.
In file included from ../include/Exception.hpp:22,
from Exception.cpp:19:
../include/osdep.hpp: In function `int nbpp::gethostbyname_r(const string &,
hostent *, char *, unsigned int, hostent **, int
*)':
../include/osdep.hpp:60: `hostent_data' undeclared (first use this function)
../include/osdep.hpp:60: (Each undeclared identifier is reported only once
../include/osdep.hpp:60: for each function it appears in.)
../include/osdep.hpp:67: parse error before `*'
../include/osdep.hpp: In function `class string nbpp::strerror_r(int)':
../include/osdep.hpp:83: implicit declaration of function `int
nbpp::strerror_r(...)'
make[1]: *** [Exception.lo] Error 1
if anyone has seen this before (I read something similar regarding AIX on
the list, but all my attempts failed) I would apprectate is greatly if some
advice came my way.
With thanks
Karl Sumpter
|
|
From: Daniel B. <nb...@ja...> - 2001-05-18 13:52:25
|
In my DansGuardian I have a class object in the main class that has the main() function. This object reads a bunch of conf files early in the main(), well before the return daemon.run();. The object contains code and data. The object is used in the other classes and the handleConnection(). Have I done a bad thing? As the object is AFAI can tell shared between the threads, this would cause a race condition and could cause random crashes? It contains non-mutex-protected code remember. Am I right? Perhaps I could take a copy of the object in the handleConnection() and use that instead to solve the problem? What do you think? -- Daniel Barron (Visit http://dansguardian.org/ - True web content filtering) |
|
From: Benjamin G. <ben...@bt...> - 2001-05-18 06:33:40
|
On Tue, May 08, 2001 at 11:10:12AM -0300, Mads Rasmussen wrote:
> Have a look a the .test files you requested. No doubt about the hostinfo
> file. There seems to be something strange going on in resolving the hostname
> on our system.
For some reason my machine wants to call itself 'localhost', and yours
wants to call itself 'localhost.localdomain', but I think that's OK. I'd
say that we can consider the test to have passed.
>
> As for the clientservertest, I really don't know what is going on
Neither do I :-(. Basically all it does is run a serversocktest, and 10
socktests that try to connect to it. Can you try running serversocktest
and socktest manually to see if they work on your system? You can run
serversocktest by itself; by default, it binds to port 9876. You can just
telnet to it ('telnet localhost 9876') and send it two lines of text, and
it should say hello to you.
For socktest, try './socktest localhost 9876 test'; it should connect to
the running serversocktest, do the same thing that you did via telnet, and
print the output.
--
Benjamin Geer
http://www.btinternet.com/~benjamin.geer
|
|
From: Daniel B. <nb...@ja...> - 2001-05-16 18:53:41
|
On linux 2.2.x: With a MultiThreader() daemontest, is there a concurrency issue with the handleConnection() code? I.e. does the for() i integer have a race condition? Or is there a seperate copy of the TestDaemon class object running in each thread and so is thread-safe? Also I thought that sleep() caused the entire process to sleep and you needed to call a pthread sleep? BTW, I understand linux threads are seperate light-weight processes so by process in the last question I mean a POSIX type thread. I.e. the collection of threads. I hope I'm using the correct jargon for these questions! I'm new to the concepts of multi-threading. Thanks -- Daniel Barron (Visit http://dansguardian.org/ - True web content filtering) |
|
From: Eduardo J. B. <ej...@ne...> - 2001-05-10 20:12:20
|
> In message <NEB...@ne...> you wrote: > [snip] > > > > > I wonder how all those linux daemons manage to setuid then? I'll > > > have to do > > > more research. > > > > Most daemons don't use multithreading... it's a headache for > both runtime > > quirks and portability. > > Sorry for going off topic, but what do they do then? That is > proxy/web type > daemons? > > [snip] Depends. Apache, for example, uses a fork-pool; a master daemon forks off the sub-servers and each handles some connections and then exit. The balancing is more complex, though (IPCs, etc). Squid, OTOH, uses a single process with a huge select loop and Async events and I/O. Basically, reinvents the scheduler. ;-) Most daemons use either fork-based single-threaded processes, or asynchronous handling thru selects. Regards, Ej. |
|
From: Daniel B. <nb...@ja...> - 2001-05-10 19:21:13
|
In message <NEB...@ne...> you wrote: [snip] > > > I wonder how all those linux daemons manage to setuid then? I'll > > have to do > > more research. > > Most daemons don't use multithreading... it's a headache for both runtime > quirks and portability. Sorry for going off topic, but what do they do then? That is proxy/web type daemons? [snip] -- Daniel Barron (Visit http://dansguardian.org/ - True web content filtering) |