zoukankan      html  css  js  c++  java
  • paper3—Algorithm2-Engine-Trigger-on-SMD—temp

    //source code: /run/media/root/E6B2798BB279614B/.../PAPER/paper-3/twin-engine-trigger-code/server-client-pthread-c
    ----------------------------------------------------------------------------------

    Description: guest access FCD by using SMD, there are two parts: browser on SMD and daemon written in c language

    //browser on SMD:
    guest access server on FCD by using browser on SMD;
    socket();  //use WebSocket
    connect(); //connect to daemon on SMD
    send username to daemon WAIT on the same SMD;
    executing tasks in brower; // take some time
    if finish tasks then
      send finish=1 to daemon WAIT on the same SMD;
    end if

    //---------------------------------------------------------

    //daemon WAIT on SMD that waiting data sent by brower
    PROCEDURE: WAIT
    socket();
    bind();
    recvfrom();
    if receive username from browser then
      write username to pipe;
    end if
    if receive finish=1 from browser then
      write finish=1 to pipe; // send to daemon MAIN
    end if
    END PROCEDURE

    //daemon MAIN on SMD
    PROCEDURE: MAIN
    socket();
    connect(); //connect to TCP Socket on FCD;
    //fcdtime: time of sending heartbeat to FCD last;
    fcdtime = currenttime;
    pthread_create(WAIT); //daemon WAIT on SMD

    while true do
      read from pipe; //receive from daemon WAIT
      if read username from pipe then
        send heartbeat to FCD;
        send username, processid to FCD;
        if receive heartbeat from FCD then
          SMD receive current process information from FCD;
          update correlative tables in database;
        end if
        period = currenttime - fcdtime;
     
        if period < 5 then  //connectiong to FCD is normal
          fcdtime = currenttime;
        else if period > 30 then //server shutdown or connectiong to FCD is abnormal
          trigger SMD;
          redirect to localhost and invoke task in SMD
          while true do
            send heartbeat to FCD; //probe whether FCD is active
            if receive heartbeat from FCD then
              read from pipe; //receive from daemon WAIT
              if finish=1 then
                send finish to FCD;
                send information for current process to FCD;
                exit;
              else
                stop accessing MPE;
                send information for current process to FCD;
                sleep 3s; //waiting for FCD to update it's database
                trigger FCD;
                redirect to FCD and invoke task in FCD;
              end if
            end if
            sleep 60s;
          done //end while
        end if
      else if read finish=1 from pipe
        send finish to FCD;
        send information for current process to FCD;
        exit;
      end if
      sleep 5s; //send heartbeat request every 5s to FPE
    done
    END PROCEDURE
  • 相关阅读:
    Debian安装autoconf
    Linux 解决 bash ./ 没有那个文件或目录 的方法
    C语言strtok()函数:字符串分割
    java.util.logging.Logger使用详解 (转)
    java中Logger.getLogger(Test.class)
    jquery ajax中success与complete的执行顺序 (转)
    navicat如何导入sql文件和导出sql文件
    MySQL修改root密码的多种方法(转)
    查看三种MySQL字符集的方法(转)
    mysql 5.7.13 安装配置方法图文教程(linux) (转)
  • 原文地址:https://www.cnblogs.com/ztguang/p/12646712.html
Copyright © 2011-2022 走看看