חלק 1 (תכנות):
בגדול החלק הראשון מורכב מארבעה בליידים שצריך לממש. (אפשר להסתכל על זה כ4 חלקים שונים). יש מבנה כללי של הודעה עם שדות של DATA,SOURCE,DESTINATION . ואולי עוד ויש גם
getters לכל אחד מהם. במבנה הזה נשתמש בכל אחד מארבעת החלקים.
בכל בלייד יש:
פונ' ראשית : הפונק' שנממש בה את עיקר הקוד
פונ' start :בד"כ נשים בה פונ' שינתנו לנו לאתחול.
פונק' stop:פונ' שתמש אותנו לשחרר זיכרון וכו' (גם בה נקרא לפונ' שינתנו לנו)
חלק א' –monitoring.
בחלק זה יש לממש רק את הפונ' הראשית. אנו מקבלים את המבנה של המסר שדובר עליו בהתחלה וראש של עץ. עלינו לחפש אם הsource,destination נמצאים בעץ ולהחזיר תשובה בהתאם .(לא זוכר כל כך מה אבל נראה לי שאסור שאף אחד מהם יהיה בעץ).
מה שעושים זה פשוט כותבים פונ' של חיפוש בעץ . ואז נקרא לה מהפונ' הראשית שלנו.
משהו כמו
Int treeSearch(messageField m,tree t){
if (t==null) return 0;
if(t->value==m) return 1;
return (t->value>m)?treeSearch(m,t->left):treeSearch(m,t->right)}
ואז מהפונקציה הראשית ,שנקראת messageHandle (או משהו כזה) נעשה:
Return (treeSearch(getSource(message),t) &&/|| (treeSearch(getDestination(message,t));
אני לא בטוח בקשר לאנד\אור אבל זה בקטנה. עקרונית מחזירים מהפונ' שדה שהוא למעשה unsigned_int שיש לו שם כלשהו במבנה של המסר.התקבל -1 ,נדחה -0.
חלק ב'–antivirus.
פה מקבלים api של אנטיוירוס שנקרא antiVirusEngine . יש בו פונק' ממומשות ופשוט צריך לדעת להשתמש בהן. צריך קצת לקרוא את הקוד אבל אין יותר מדי, בגדול צריך לדעת אם DATA מסויים הוא אנטי וירוס.
בפונ' START-צריך לקרוא לפונ' initialize שמאתחלת דברים ותחזיר לכם מבנה מסוג אנטיוירוס כלשהו שתשימו בתוך משתנה. וגם לפונ' SETUP שבהמשך נגיע למה צריך לקרוא לה.
בפונ' הראשית – צריך לקרוא לפונ' שנקראת antivirusCheck משהו כזה, עכשיו צריך להבין את הפרמטרים של הקריאה לפי הקוד. בגדול הפרמטר הראשון זה פשוט הdata עצמו. אז נקרא ל
getData(message), אני חושב שהפרמטר השני שנקרא lastMashu לא עושה כלום, לא משנה מה שולחים בו. ויש עוד שני פרמטרים. שאחד מהם שואל האם לטעון את רשימת האנטיוירוס(פעולה שלוקחת זמן) עכשיו מכיוון שקראנו לsetup בפונ' start אנחנו נשלח את הפרמטר הזה בFALSE . כי היא טוענת את הרשימה בהתחלה בשבילנו וככה לא נטען בכל קריאה מחדש את הרשימה. פרמטר אחרון (לא בטוח כל כך) זה האם לבצע בדיקה מלאה או משהו כזה של הוירוסים ,בגדול אני שלחתי שם 0 אם אני זוכר , כי גם ששלחתי 1 כל הבדיקות היו טובות ואני חושב שזה משפיע מבחינת הזמן.
בפונ' stop– נקרא לפונ' שמשחררת וכו' (לא זוכר איך היא נקראית).