Reimplementazione Monitor SNIG in Python

Hex Artifact Content
Login

Artifact 6474dcdd75998abd3a7f4eb287f618f1d947d4dc:


0000: 23 21 2f 75 73 72 2f 62 69 6e 2f 65 6e 76 20 70  #!/usr/bin/env p
0010: 79 74 68 6f 6e 33 0a 23 20 2d 2a 2d 20 63 6f 64  ython3.# -*- cod
0020: 69 6e 67 3a 20 75 74 66 2d 38 20 2d 2a 2d 0a 22  ing: utf-8 -*-."
0030: 22 22 0a 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d  "".=============
0040: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d  ================
0050: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d  ================
0060: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d  ================
0070: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d  ================
0080: 3d 0a 53 63 72 69 70 74 20 4e 61 6d 65 3a 20 20  =.Script Name:  
0090: 20 20 20 72 75 6e 5f 63 6c 69 65 6e 74 2e 70 79     run_client.py
00a0: 0a 41 75 74 68 6f 72 3a 20 20 20 20 20 20 20 20  .Author:        
00b0: 20 20 4d 61 73 73 69 6d 6f 20 4d 61 6e 67 68 69    Massimo Manghi
00c0: 0a 44 61 74 65 3a 20 20 20 20 20 20 20 20 20 20  .Date:          
00d0: 20 20 32 30 32 35 2d 30 33 2d 32 33 0a 44 65 73    2025-03-23.Des
00e0: 63 72 69 70 74 69 6f 6e 3a 20 20 20 20 20 0a 20  cription:     . 
00f0: 20 20 20 42 72 69 65 66 6c 79 20 64 65 73 63 72     Briefly descr
0100: 69 62 65 20 77 68 61 74 20 74 68 69 73 20 73 63  ibe what this sc
0110: 72 69 70 74 20 64 6f 65 73 2e 0a 0a 55 73 61 67  ript does...Usag
0120: 65 3a 0a 20 20 20 20 70 79 74 68 6f 6e 20 73 63  e:.    python sc
0130: 72 69 70 74 5f 6e 61 6d 65 2e 70 79 20 5b 6f 70  ript_name.py [op
0140: 74 69 6f 6e 73 5d 0a 0a 44 65 70 65 6e 64 65 6e  tions]..Dependen
0150: 63 69 65 73 3a 0a 20 20 20 20 4c 69 73 74 20 61  cies:.    List a
0160: 6e 79 20 65 78 74 65 72 6e 61 6c 20 64 65 70 65  ny external depe
0170: 6e 64 65 6e 63 69 65 73 20 28 65 2e 67 2e 2c 20  ndencies (e.g., 
0180: 72 65 71 75 69 72 65 64 20 6c 69 62 72 61 72 69  required librari
0190: 65 73 29 2e 0a 20 20 20 20 0a 4e 6f 74 65 73 3a  es)..    .Notes:
01a0: 0a 20 20 20 20 41 6e 79 20 69 6d 70 6f 72 74 61  .    Any importa
01b0: 6e 74 20 69 6d 70 6c 65 6d 65 6e 74 61 74 69 6f  nt implementatio
01c0: 6e 20 6e 6f 74 65 73 20 6f 72 20 61 73 73 75 6d  n notes or assum
01d0: 70 74 69 6f 6e 73 2e 0a 3d 3d 3d 3d 3d 3d 3d 3d  ptions..========
01e0: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d  ================
01f0: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d  ================
0200: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d  ================
0210: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d  ================
0220: 3d 3d 3d 3d 3d 3d 0a 22 22 22 0a 0a 69 6d 70 6f  ======."""..impo
0230: 72 74 20 61 72 67 70 61 72 73 65 0a 69 6d 70 6f  rt argparse.impo
0240: 72 74 20 6c 6f 67 67 69 6e 67 0a 69 6d 70 6f 72  rt logging.impor
0250: 74 20 73 79 73 0a 69 6d 70 6f 72 74 20 61 73 79  t sys.import asy
0260: 6e 63 69 6f 0a 69 6d 70 6f 72 74 20 63 6c 69 65  ncio.import clie
0270: 6e 74 0a 0a 23 20 43 6f 6e 66 69 67 75 72 65 20  nt..# Configure 
0280: 6c 6f 67 67 69 6e 67 0a 6c 6f 67 67 69 6e 67 2e  logging.logging.
0290: 62 61 73 69 63 43 6f 6e 66 69 67 28 0a 20 20 20  basicConfig(.   
02a0: 20 6c 65 76 65 6c 3d 6c 6f 67 67 69 6e 67 2e 49   level=logging.I
02b0: 4e 46 4f 2c 0a 20 20 20 20 66 6f 72 6d 61 74 3d  NFO,.    format=
02c0: 22 25 28 61 73 63 74 69 6d 65 29 73 20 2d 20 25  "%(asctime)s - %
02d0: 28 6c 65 76 65 6c 6e 61 6d 65 29 73 20 2d 20 25  (levelname)s - %
02e0: 28 6d 65 73 73 61 67 65 29 73 22 2c 0a 29 0a 0a  (message)s",.)..
02f0: 64 65 66 20 70 61 72 73 65 5f 61 72 67 75 6d 65  def parse_argume
0300: 6e 74 73 28 29 3a 0a 20 20 20 20 22 22 22 50 61  nts():.    """Pa
0310: 72 73 65 20 63 6f 6d 6d 61 6e 64 2d 6c 69 6e 65  rse command-line
0320: 20 61 72 67 75 6d 65 6e 74 73 2e 22 22 22 0a 20   arguments.""". 
0330: 20 20 20 70 61 72 73 65 72 20 3d 20 61 72 67 70     parser = argp
0340: 61 72 73 65 2e 41 72 67 75 6d 65 6e 74 50 61 72  arse.ArgumentPar
0350: 73 65 72 28 64 65 73 63 72 69 70 74 69 6f 6e 3d  ser(description=
0360: 22 42 72 69 65 66 20 73 63 72 69 70 74 20 64 65  "Brief script de
0370: 73 63 72 69 70 74 69 6f 6e 22 29 0a 20 20 20 20  scription").    
0380: 23 20 45 78 61 6d 70 6c 65 20 61 72 67 75 6d 65  # Example argume
0390: 6e 74 3a 20 70 61 72 73 65 72 2e 61 64 64 5f 61  nt: parser.add_a
03a0: 72 67 75 6d 65 6e 74 28 22 2d 66 22 2c 20 22 2d  rgument("-f", "-
03b0: 2d 66 69 6c 65 22 2c 20 68 65 6c 70 3d 22 49 6e  -file", help="In
03c0: 70 75 74 20 66 69 6c 65 20 70 61 74 68 22 29 0a  put file path").
03d0: 20 20 20 20 72 65 74 75 72 6e 20 70 61 72 73 65      return parse
03e0: 72 2e 70 61 72 73 65 5f 61 72 67 73 28 29 0a 0a  r.parse_args()..
03f0: 61 73 79 6e 63 20 64 65 66 20 74 65 73 74 5f 63  async def test_c
0400: 6f 6e 6e 65 63 74 69 6f 6e 28 29 3a 0a 20 20 20  onnection():.   
0410: 20 73 6f 63 6b 65 74 5f 63 6c 69 65 6e 74 20 3d   socket_client =
0420: 20 63 6c 69 65 6e 74 2e 41 73 79 6e 63 55 6e 69   client.AsyncUni
0430: 78 53 6f 63 6b 65 74 43 6c 69 65 6e 74 28 22 2f  xSocketClient("/
0440: 74 6d 70 2f 73 6e 69 67 2e 73 6f 63 6b 65 74 22  tmp/snig.socket"
0450: 29 0a 20 20 20 20 61 77 61 69 74 20 73 6f 63 6b  ).    await sock
0460: 65 74 5f 63 6c 69 65 6e 74 2e 63 6f 6e 6e 65 63  et_client.connec
0470: 74 28 29 20 20 23 20 e2 9c 85 20 45 6e 73 75 72  t()  # ... Ensur
0480: 65 20 63 6f 6e 6e 65 63 74 69 6f 6e 20 68 61 70  e connection hap
0490: 70 65 6e 73 0a 0a 64 65 66 20 6d 61 69 6e 28 29  pens..def main()
04a0: 3a 0a 20 20 20 20 22 22 22 4d 61 69 6e 20 65 78  :.    """Main ex
04b0: 65 63 75 74 69 6f 6e 20 66 75 6e 63 74 69 6f 6e  ecution function
04c0: 2e 22 22 22 0a 20 20 20 20 61 72 67 73 20 3d 20  .""".    args = 
04d0: 70 61 72 73 65 5f 61 72 67 75 6d 65 6e 74 73 28  parse_arguments(
04e0: 29 0a 20 20 20 20 6c 6f 67 67 69 6e 67 2e 69 6e  ).    logging.in
04f0: 66 6f 28 22 53 63 72 69 70 74 20 73 74 61 72 74  fo("Script start
0500: 65 64 2e 22 29 0a 20 20 20 20 0a 20 20 20 20 23  ed.").    .    #
0510: 20 41 64 64 20 73 63 72 69 70 74 20 6c 6f 67 69   Add script logi
0520: 63 20 68 65 72 65 0a 0a 0a 20 20 20 20 61 73 79  c here...    asy
0530: 6e 63 69 6f 2e 72 75 6e 28 74 65 73 74 5f 63 6f  ncio.run(test_co
0540: 6e 6e 65 63 74 69 6f 6e 28 29 29 20 20 23 20 e2  nnection())  # .
0550: 9c 85 20 52 75 6e 20 74 68 65 20 61 73 79 6e 63  .. Run the async
0560: 20 66 75 6e 63 74 69 6f 6e 0a 0a 20 20 20 20 6c   function..    l
0570: 6f 67 67 69 6e 67 2e 69 6e 66 6f 28 22 53 63 72  ogging.info("Scr
0580: 69 70 74 20 63 6f 6d 70 6c 65 74 65 64 20 73 75  ipt completed su
0590: 63 63 65 73 73 66 75 6c 6c 79 2e 22 29 0a 0a 69  ccessfully.")..i
05a0: 66 20 5f 5f 6e 61 6d 65 5f 5f 20 3d 3d 20 22 5f  f __name__ == "_
05b0: 5f 6d 61 69 6e 5f 5f 22 3a 0a 20 20 20 20 74 72  _main__":.    tr
05c0: 79 3a 0a 20 20 20 20 20 20 20 20 6d 61 69 6e 28  y:.        main(
05d0: 29 0a 20 20 20 20 65 78 63 65 70 74 20 45 78 63  ).    except Exc
05e0: 65 70 74 69 6f 6e 20 61 73 20 65 3a 0a 20 20 20  eption as e:.   
05f0: 20 20 20 20 20 6c 6f 67 67 69 6e 67 2e 65 72 72       logging.err
0600: 6f 72 28 66 22 41 6e 20 65 72 72 6f 72 20 6f 63  or(f"An error oc
0610: 63 75 72 72 65 64 3a 20 7b 65 7d 22 2c 20 65 78  curred: {e}", ex
0620: 63 5f 69 6e 66 6f 3d 54 72 75 65 29 0a 20 20 20  c_info=True).   
0630: 20 20 20 20 20 73 79 73 2e 65 78 69 74 28 31 29       sys.exit(1)
0640: 0a 0a                                            ..