zoukankan      html  css  js  c++  java
  • paper3—Algorithm1-Engine-Trigger-on-FCD—temp

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

    Description: when FCD start, this algorithm will run as a deamon

    normterm: normal termination;
      normterm=0, SMD is not normal termination;
      normterm=1, SMD is normal termination;
    smdtime: time of receiving heartbeat from SMD last;
    selftime: the most current time of FCD being active;
    initconn: Initial connection from SMD to FCD;
      initconn=1, initial value is 1;
    downtime: suppose server restart time is 30s;

    select selftime from fcd_state_table where id=1;
    downtime=currenttime - selftime;
    update fcd_state_table set selftime=currenttime where id=1;

    PROCEDURE: MAIN
      socket();
      bind();
      listen();
      while true do
        accept();  //waiting for connect from SMD
        pthread_create(THREAD);
      done
    END PROCEDURE

    PROCEDURE: THREAD
      receive guestname from SMD;
      select normterm from user_table where username=guestname;
      select processid from process_table where username=guestname and state=active and exectime≈current;

      while true do //communication between FCD & SMD
        select smdtime from user_table where username=guestname;
        period=-1; //used to determine whether SMD access FCD continuously
        if receive heartbeat from SMD then
          period=currenttime - smdtime;
        end if
        update user_table set smdtime=currenttime where username=guestname;
        if 0< period< 8 or initconn then //normal visits
          send heartbeat to SMD;
          send information for current process to SMD;
          initconn=0;
        end if
        if receive finish from SMD then //normal termination
          update user_table set normterm=1 where username=guestname;
          exit; //guest finished his tasks
        end if
        //server restart, process is not normal end
        //after disconnect, SMD reconnect FCD
        if downtime > 30 and !normterm or receive reconnect from SMD then
          FCD receive current process information from SMD;
          update correlative tables where processid=processid;
        end if
        sleep 1s;
      done
    END PROCEDURE







  • 相关阅读:
    剑指offer 面试26题
    剑指offer 面试25题
    剑指offer 面试24题
    剑指offer 面试23题
    剑指offer 面试22题
    剑指offer 面试19题
    剑指offer 面试20题
    剑指offer 面试21题
    剑指offer 面试18题
    剑指offer 面试17题
  • 原文地址:https://www.cnblogs.com/ztguang/p/12649318.html
Copyright © 2011-2022 走看看