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

  • 相关阅读:
    数据管理(五)
    (译文)Gentoo的前世今生 part3 (完成版※)
    数据管理(三)
    数据管理(一)
    数据管理(七)
    (译文)Gentoo的前世今生 PART 1(完成版)
    数据管理(六)
    数据管理(四)
    SQL Server补丁版本的检查和安装过程中常见问题
    3938 Portal(离线型的并查集)
  • 原文地址:https://www.cnblogs.com/ztguang/p/12646714.html
Copyright © 2011-2022 走看看