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







  • 相关阅读:
    CSS浮动(float、clear)通俗讲解
    JAVA 类的加载
    数据库操作 delete和truncate的区别
    正则表达式 匹配相同数字
    Oracle EBS OM 取消订单
    Oracle EBS OM 取消订单行
    Oracle EBS OM 已存在的OM订单增加物料
    Oracle EBS OM 创建订单
    Oracle EBS INV 创建物料搬运单头
    Oracle EBS INV 创建物料搬运单
  • 原文地址:https://www.cnblogs.com/ztguang/p/12649318.html
Copyright © 2011-2022 走看看