您的位置:首页 > 编程语言 > Go语言

paper3—Algorithm2-Engine-Trigger-on-SMD—temp

2016-05-04 20:55 274 查看
//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
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: