Difference between revisions of "Peerd.c"

From Organic Design wiki
(was crashing if params without =)
m
Line 51: Line 51:
 
nodeInit();            // Set up initial nodal structure for reduction loop
 
nodeInit();            // Set up initial nodal structure for reduction loop
  
int i,l=strlen(argv[1]);
+
args(argc,argv);        // Handle command-line args and globals like peer and port
peer = strncpy(malloc(l+1),argv[1],l);
 
for(i=argc;i-->2;) {
 
char **arg = split('=',argv[i]);
 
*hash(*arg) = arg[1]?strncpy(malloc(l=strlen(arg[1])+1),arg[1],l):"1";
 
free(arg);
 
}
 
 
 
//args(argc,argv);        // Handle command-line args and globals like peer and port
 
 
interfaceInit();        // Initialise SDL surface
 
interfaceInit();        // Initialise SDL surface
 
ioInit();              // Set up listening socket on specified port
 
ioInit();              // Set up listening socket on specified port

Revision as of 02:49, 18 August 2006

// This article and all its includes are licenced under LGPL // GPL: [[[[1]]]] // SRC: [[[[2]]]] // NOTE: for automatic source syncronisation with peers in the field, // keep [[Bender/fileSync]] up to date!

int this,loop,port = 32459; char *peer = "default";

  1. include <unistd.h>
  2. include <stdlib.h>
  3. include <stdio.h>
  4. include <string.h>
  5. include <errno.h>
  6. include "util.c" // [[util.c]]: General utils, file,log,string etc

// List & Node Space

  1. include "listSpace.c" // [[listSpace.c]]: listSpace and some C-specific extras: hash, trie, linked-list
  2. include "nodeSpace.c" // [[nodeSpace.c]]: NodeSpace function declarations and initialisation
  3. include "serialise.c" // [[serialise.c]]: Nodal-to-text and visa-versa

// Interface related

  1. include "SDL.h"
  2. include "SDL_image.h"
  3. include "interface.c" // [[interface.c]]: Layer model (currently bitmap/imagemap-based)

// Peer daemon setup

  1. if __WIN32__
  2. include "servicate.c" // [[servicate.c]]
  3. elif __APPLE__
  4. include "launchd.c" // [[launchd.c]]
  5. elif __unix__
  6. include "daemonise.c" // [[daemonise.c]]
  7. endif

// Storage & distribution related

  1. if __WIN32__
  2. include <winsock2.h>
  3. else
  4. include <sys/socket.h>
  5. include <sys/select.h>
  6. include <netinet/in.h>
  7. include <sys/time.h> // for select()
  8. include <fcntl.h> // O_RDWR, O_NONBLOCK, F_GETFL, F_SETFL
  9. endif
  10. include "io.c" // [[io.c]]: Main server and stream setup and functions

int main(int argc, char **argv) { peerdInit(); // Set up as a daemon or service listInit(); // Initialise list-space and hash/trie functions nodeInit(); // Set up initial nodal structure for reduction loop

args(argc,argv); // Handle command-line args and globals like peer and port interfaceInit(); // Initialise SDL surface ioInit(); // Set up listening socket on specified port

// Main nodal reduction loop logAdd("Entering nodal reduction..."); for (this=0;1;this=0) nodeReduce();

}