daily pastebin goal
40%
SHARE
TWEET

Untitled

a guest Jan 22nd, 2018 60 Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. from collections import namedtuple
  2. from enum import enum
  3. import datetime
  4. import threading
  5. import socket
  6. import json
  7.  
  8.  
  9.  
  10. ##################################################################################################################################
  11. # Daniels Mysteriska Notes                                                                                                       #
  12. ##################################################################################################################################
  13. #Vissa saker kan vara redundanta, om du hittar något så skicka koden som är motsägande till mig på Discord
  14. #Om jag inte ser det direkt eller tar lite tid att svara så föröska kolla på något annat
  15.  
  16. #Kom ihåg att python har bra documentation för saker så sök, sök, sök
  17. #Ändra hur mycket du vill det här är bara ideer jag hade
  18.  
  19. #Tror att kruxet verkligen ligger i att lista ut hur meddelande ska gå runt sen så blir det ganska simpelt
  20.  
  21. ##################################################################################################################################
  22. # Variabel deklarationer                                                                                                         #
  23. ##################################################################################################################################
  24. #En Enum för att märka olika typer av meddelande. du använder den så här verkar det som messageType.WANTED eller vilken du nu vill använda
  25. class stateTypes(Enum):
  26.     WANTED = 1
  27.     HELD = 2
  28.     REQUEST = 3
  29.     REPLY = 4
  30.     RELEASED = 5
  31.  
  32. #Kolla upp hur namedtuples, fungerar ungefär som en struct i c.
  33. #Hade ideen för dessa när vi började så vet inte om de blir så bra
  34. mutexState      =   namedtuple('State', 'state prio replylst')
  35. mutexPriority   =   namedtuple('Priority', 'timestamp pid')
  36. mutexMessage    =   namedtuple('Message', 'msgtype mutexname prio')
  37.  
  38. #Använda denna för att se
  39. stateTable =    {  
  40.                     'proc_a': mutexState(state = None, prio = None, replylst = None),
  41.                     'proc_b': mutexState(state = None, prio = None, replylst = None),
  42.                     'proc_c': mutexState(state = None, prio = None, replylst = None)
  43.                 }
  44.  
  45. #Det här är en Dictionary, använder denna för att för att se hur det ligger till med de olika processerna, börjar med att alla requestar
  46. #Sen så uppdaterar vi den när de får ett lås, släpper ett lås, om de väntar på replies osv. Use case --> mutexQueue['proc_a']
  47. mutexQueue =   {  
  48.                     'proc_a': statetable['proc_a'],
  49.                     'proc_b': statetable['proc_b'],
  50.                     'proc_c': statetable['proc_c']
  51.                 }
  52.  
  53. #Kan eventuellt använda denna för att när vi vill skicka meddelande
  54. processAddress = {'proc_a': ('192.168.0.50', '8000'), 'proc_b': ('192.168.0.50', '8001'), 'proc_c': ('192.168.0.50', '8002')}
  55.  
  56. #tänkte använda den här för att jämnföra mot ovanstående eller något.
  57. int n_nodes = 3
  58.  
  59.  
  60. ##################################################################################################################################
  61. #Auxillary funktioner                                                                                                            #
  62. ##################################################################################################################################
  63. #Kallar på denna först för att skicka request messages till alla andra processer och lite annat eventuellt.
  64. def MutexInit(ip, procport, procpid, procName):
  65.  
  66.  
  67. def UpdateMutexQueue():
  68.    
  69. ##################################################################################################################################
  70. # Meddelande funktioner                                                                                                          #
  71. ##################################################################################################################################
  72. #Den här tror jag vi kommer behöva för att skicka meddelande till andra processer.
  73. def SendMessage(addr, message):
  74.     s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
  75.     s.connect(addr)
  76.     s.send(message)
  77.     s.close()
  78.  
  79. #Vet inte om vi kommer behöva den här.
  80. def MessageHandler():
  81.     request_socket = threading.thread
  82.     if requestmessage.msgtype == "request":
  83.         return 1
  84.     else return 0
  85.     replymessage = mutex_message()
  86.     if replymessage.msgtype == "reply":
  87.         return 1
  88.     else return 0
  89.  
  90. ##################################################################################################################################
  91. # Mutex Funktioner                                                                                                               #
  92. ##################################################################################################################################
  93. #Borde inte behöva vara mer avancerad än så här.
  94. def MutexHeld():
  95.     for n in mutexQueue.items():
  96.         processName, state = n
  97.         if stateTable[processName].state == stateTypes.HELD:
  98.             return True
  99.         return False      
  100.  
  101. def GetMutexLock(mutex);
  102.     state = mutex_state(requested, datetime.datetime.now, None)
  103.     return True
  104.  
  105.     if condition:
  106.         return False
  107.  
  108. #Uppdatera eget mutexstate och skicka meddelande till alla andra processer state i meddeleandet så att de också kan uppdatera
  109. def ReleaseMutexLock(mutex, pname):
  110.     mutexState(state = stateTypes.RELEASED, prio = None, replylst = None),
  111.     mutex_queue[pname] = 0
  112.     return True
  113.  
  114.     if condition:
  115.         return false
  116.  
  117. #Vette Fan
  118. def MutexExit():
RAW Paste Data
We use cookies for various purposes including analytics. By continuing to use Pastebin, you agree to our use of cookies as described in the Cookies Policy. OK, I Understand
 
Top