- From: "Marjan Bozinovski" <marjanb AT cpk.auc.dk>
- To: <rsplib-discussion AT sctp.de>
- Subject: Re: [RSPlib-Discusssion] fail-over problems
- Date: Mon Oct 21 15:57:46 2002
- List-id: RSPlib Discussions <rsplib-discussion.sctp.de>
Hi Thomas,
Thank you very much for solving this problem! It took a lot of time, but
luckily it's solved. Now, I will try to do what you are suggesting and get
back with the outcome.
Best regards,
Marjan
----- Original Message -----
From: "Thomas Dreibholz"
<dreibh AT exp-math.uni-essen.de>
To: "Marjan Bozinovski"
<marjanb AT cpk.auc.dk>;
<rsplib-discussion AT sctp.de>
Cc: "Michael Tüxen"
<Michael.Tuexen AT icn.siemens.de>;
"Michael Tüxen"
<Michael.Tuexen AT micmac.franken.de>
Sent: Monday, October 21, 2002 12:46 PM
Subject: Re: [RSPlib-Discusssion] fail-over problems
>
-----BEGIN PGP SIGNED MESSAGE-----
>
Hash: SHA1
>
>
Hi!
>
>
The cause of your problems have been found: Your program creates new
>
processes using fork() in line 518. This cannot work with the socket API
and
>
it will never work. But you can use threads (see manual page of
>
pthread_create) to provide a similar functionality.
>
>
The sctplib's functionality is provided within an event loop. The user has
to
>
continously call sctp_eventLoop() for the sctplib to be able to handle
events
>
like timers and incoming data. This makes debugging easier but programming
of
>
applications more complicated since you cannot simply do e.g. blocking
>
reads or writes. Using kernel-based protocols, the protocol's background
>
execution is hidden in the kernel. The socket API for the sctplib provides
>
this functionality by a second thread that runs the sctplib's event loop
in
>
background. It uses mutexes to prevent both threads from causing
>
interferences.
>
Using fork(), you simply copy the whole process. This also includes kernel
>
file handles but not the socket API ones. Furthermore, all threads are
>
duplicated, including the SCTP instance and mutexes. Therefore, this
totally
>
wrecks the socket API and sctplib management structures.
>
>
>
Since you are programming in C++, you can simply use my class Thread and
the
>
classes Synchronizable and Condition to implement multiple threads. Just
>
inherit the class Thread and implement the method go(). Then, calling
start()
>
starts your new thread.
>
>
>
Best regards
>
- --
>
=======================================================================
>
Dipl.-Inform. Thomas Dreibholz
>
>
University of Essen, Room ES210
>
Inst. for Experimental Mathematics Ellernstraße 29
>
Computer Networking Technology Group D-45326 Essen/Germany
>
- -----------------------------------------------------------------------
>
E-Mail:
>
dreibh AT exp-math.uni-essen.de
>
Homepage: http://www.exp-math.uni-essen.de/~dreibh
>
=======================================================================
>
-----BEGIN PGP SIGNATURE-----
>
Version: GnuPG v1.0.6 (GNU/Linux)
>
Comment: For info see http://www.gnupg.org
>
>
iD8DBQE9s9sH32BbsHYPLWURAp6CAKDId/6qgFX7GFIvCTU9SkvE4fViMACdHuy5
>
SWQYNLdhTzGEToDf08dYYWE=
>
=4f+V
>
-----END PGP SIGNATURE-----
>
_______________________________________________
>
rsplib-discussion mailing list
>
rsplib-discussion AT sctp.de
>
http://www.sctp.de/mailman/listinfo/rsplib-discussion
>
Archive powered by MHonArc 2.6.19+.