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

  • 相关阅读:
    iOS Xcode工程目录的 folder 和 group的区别(蓝色和黄色文件夹的区别)
    携程App的网络性能优化实践
    iOS: NSObject中执行Selector的相关方法
    去空格 whitespaceAndNewlineCharacterSet
    iOS UIButton 设置图片文字垂直排列
    程序启动的完整过程
    iOS:友盟SDK第三方登录 分享及友盟统计的使用
    ios8 UITableView设置 setSeparatorInset:UIEdgeInsetsZero不起作用的解决办法
    判断uiscrollView滑到底部
    ios模拟器键盘不弹出
  • 原文地址:https://www.cnblogs.com/ztguang/p/12646714.html
Copyright © 2011-2022 走看看