Advertisement
Guest User

Untitled

a guest
Feb 12th, 2016
66
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.26 KB | None | 0 0
  1. void send_chars_to_reducers(char * line) {
  2. printf("SEND_CHARS_TO_REDUCERS read: %snn", line);
  3. int i;
  4. int ob_size = 1;
  5. int wlen = 0;
  6. for (i = 0; i < strlen(line); i++) {
  7. if (line[i] >= ALPHA_OFFSET && line[i] < ALPHA_OFFSET + LETTERS) {
  8. int pipe_num = line[i] - ALPHA_OFFSET;
  9. printf("SENDING %c TO REDUCER PIPE %dn", line[i], pipe_num);
  10. wlen = print_if_err(write(reducer_pipes[pipe_num][PIPE_WRITE_END], &line[i], ob_size), "write");
  11. printf("WROTE %s to REDUCER %dn", line[i], i);
  12. }
  13. }
  14. close_reducer_pipes();
  15. }
  16.  
  17. void close_reducer_pipes(void) {
  18. int i;
  19. for (i = 0; i < NUM_OF_REDUCERS; i++) {
  20. close(reducer_pipes[i][PIPE_WRITE_END]);
  21. close(reducer_pipes[i][PIPE_READ_END]);
  22. }
  23. }
  24.  
  25. void fork_mappers(void) {
  26.  
  27.  
  28. /* Constants useful to all children */
  29. char ibuf[PIPE_BUFFER_SIZE]; // input pipe buffer
  30. int rlen = 0;
  31.  
  32. int i;
  33. for (i=0; i<NUM_OF_MAPPERS; i++) {
  34. pid_t mapper_pid = print_if_err(fork(), "fork");
  35. if (mapper_pid == 0) {
  36. int j;
  37. for (j=0; j < NUM_OF_MAPPERS; j++) {
  38. close(mapper_pipes[i][PIPE_WRITE_END]);
  39. if (j != i) {
  40. close(mapper_pipes[j][PIPE_READ_END]);
  41. }
  42. }
  43. rlen = print_if_err(read(mapper_pipes[i][PIPE_READ_END], ibuf, 1000), "read");
  44. send_chars_to_reducers(ibuf);
  45. close_reducer_pipes();
  46. //printf("forked mapper%d read: %snn", i, ibuf);
  47. close(mapper_pipes[i][PIPE_READ_END]);
  48. _exit(0);
  49. }
  50. }
  51. }
  52.  
  53. void fork_reducers(void) {
  54. printf("HELLLOOOO FROM REDUCERn");
  55. char ibuf[PIPE_BUFFER_SIZE]; // input pipe buffer
  56. int rlen = 0;
  57. int i;
  58. for (i = 0; i < NUM_OF_REDUCERS; i++) {
  59. pid_t reducer_pid = print_if_err(fork(), "fork");
  60. if (reducer_pid == 0) {
  61. while (1) {
  62. rlen = print_if_err(read(reducer_pipes[i][PIPE_READ_END], ibuf, 1), "read");
  63. if (rlen > 0) {
  64. printf("REDUCER #%d, read %sn", i, ibuf);
  65. } else {
  66. break;
  67. }
  68. }
  69. printf("exiting reducern");
  70. _exit(0);
  71. }
  72. }
  73. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement