Okay, Andre Garzia inspired me to investigate multi-processing using Runtime 
Revolution with his httpd stack.  At first glance it seemed impossible nut through 
trial and error I have a semi-functional solution.  I created a external wich is using 
a named sockets, pipes, mutexes, semaphores, events and even shared memory.  Here is 
the break down....


Process A (Parent)
Process B (Child)


Process 'A' using the sockets library in the GLIBExternal creates and listens on a 
selected port (in my case 80).  Process 'A' accepts the call on a "named" socket.  
Then shell invokes process 'B' with the command line option --socket <named socket> 
(you can use any name you like) process B can now read and write to the named socket 
using the GLIBExternal socket interface.  Process A and B can then cordinate their 
activities via named mutexes, semaphoes, events and shared memory blocks. Of course 
Process A must uniquely name each socket and provided that name to the GLIBExternal as 
well as the child process (demostrated below).  I have not worked out the kinks of the 
shared memory on all platforms but I should be able to solve them in time.  The 
implementation on Win32 is easier on Win32 and Linux since I am a experienced 
developer on those platforms.

The low down is that Andre's httpd stack could operate simular to the Apache httpd 
using child processes to handle individual clients. 

Kevin


/**____________________________________________________________________________________

--Create a simple universal unique idenity<br>
--<br>
[EMAIL PROTECTED] aSuffix just to customize the key a bit.
[EMAIL PROTECTED] empty success
*/
function generateUUID aSuffix
  
  
  local tTime --Time portion of UUID
  local tRandom --Random portion of UUID
  local tAddress --Localhost address
  local tData --UUID Data
  
  put ticks() * 1000 into tTime 
  put random( CONST_MAX_UUID_RANDOM ) * 10000000000000000 into tRandom 
  put hostNameToAddress( hostName() ) into tAddress
  
  put tTime & tRandom & tAddress & aSuffix into tData
  
  put md5Digest( tData ) into tData
  put base64encode( tData ) into tData
  
  return tData
  
end generateUUID


-==-=-=-=-=-=-==-=-=-=-=-=-=-=-==-=-=-=-=-=-
Disclaimer:

Any resemblance between the above views and those of my
employer, my terminal, or the view out my window are purely
coincidental. 
Any resemblance between the above and my own views is non-deterministic.

 The question of the existence of views in the absence of anyone to hold
them
is left as an exercise for the reader. The question of the existence of
the reader
 is left as an exercise for the second god coefficient. 
(A discussion of non-orthogonal, non-integral polytheism is beyond the
scope of this article.)



_______________________________________________
Join Excite! - http://www.excite.com
The most personalized portal on the Web!
_______________________________________________
use-revolution mailing list
[EMAIL PROTECTED]
http://lists.runrev.com/mailman/listinfo/use-revolution

Reply via email to