1. Perl / Говнокод #5762

    −124

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    10. 10
    11. 11
    12. 12
    13. 13
    14. 14
    15. 15
    16. 16
    17. 17
    18. 18
    19. 19
    20. 20
    21. 21
    22. 22
    23. 23
    24. 24
    25. 25
    26. 26
    27. 27
    28. 28
    29. 29
    30. 30
    31. 31
    32. 32
    33. 33
    34. 34
    35. 35
    36. 36
    37. 37
    38. 38
    39. 39
    40. 40
    41. 41
    42. 42
    43. 43
    44. 44
    45. 45
    46. 46
    47. 47
    48. 48
    49. 49
    50. 50
    51. 51
    52. 52
    53. 53
    54. 54
    55. 55
    56. 56
    57. 57
    58. 58
    59. 59
    60. 60
    61. 61
    62. 62
    63. 63
    64. 64
    65. 65
    66. 66
    67. 67
    68. 68
    69. 69
    70. 70
    71. 71
    72. 72
    73. 73
    74. 74
    75. 75
    76. 76
    77. 77
    if ($bc->{variable}{status} eq "1" && $bc->{variable}{wait} eq "mmua" &&    # Действия при получении подтверждения старта
    			$bc->{const}{data} =~ /^MMUA\(mkd;$bc->{config_params}{VIRTUAL_IP};.*;$bc->{config_params}{HOST};$bc->{config_params}{TCM_ID};.*;.*\)$/)
    	{
    #		$bc->{const}{info}->debug("START ACCEPT");
    		
    		$bc->{const}{console_out} = "1.Answer SR-Slave: ok\n";
    		
    		my $res = check_virtual_ip($bc, "0", "0", "1", "$bc->{config_params}{VIRTUAL_IP}");
    		$bc->{const}{info}->debug("check_virtual_ip = $res");
    
    		unless ($res =~ /.*exist already and not local.*/)
    		{
    			EXECUTE_START($bc);
    			$bc->{const}{info}->debug("Start permit");
    		}
    		else
    		{
    			$bc->{const}{info}->debug("Start not recommend");
    		}
    
    		$bc->{const}{console_out} .= "2.Answer check_virtual_ip: " . $res;
    		open (RESPONSE, ">$bc->{const}{res_start}");
    		print RESPONSE $bc->{const}{console_out};
    		close RESPONSE;
    	}
    	elsif ($bc->{variable}{status} eq "1" && $bc->{variable}{wait} eq "mmua") # Действия при ожидании подтверждения от Сервера старта
    	{
    #		$bc->{const}{info}->debug("START ACCEPT WAIT");
    		
    		if ( $bc->{variable}{var_T1} >=  $bc->{variable}{T1} )
    		{
    			$bc->{const}{console_out} = "1.Answer SR-Slave: slave doesn't answer\n";
    			
    			my $res = check_virtual_ip($bc, "0", "0", "1", "$bc->{config_params}{VIRTUAL_IP}");
    			$bc->{const}{info}->debug("check_virtual_ip = $res");
    
    			unless( $res =~ /.*exist already and not local.*/ )
    			{
    				EXECUTE_START($bc);
    				$bc->{const}{info}->debug("Start permit");
    			}
    			else
    			{
    				$bc->{const}{info}->debug("Start not recommend");
    			}
    
    			$bc->{const}{console_out} .= "2.Answer check_virtual_ip: " . $res;
    
    			open (RESPONSE, ">$bc->{const}{res_start}");
    			print RESPONSE $bc->{const}{console_out};
    			close RESPONSE;
    		}
    		else
    		{
    			++$bc->{variable}{var_T1};
    		}
    ### Возможно жопа здесь !!!!!
    	}
    	elsif (-e $bc->{const}{req_restart} or $bc->{variable}{before_start} eq '1') # Действия при обноружении рестарта ручного или при первом запуске
    	{
    #		$bc->{const}{info}->debug("FIRST START / RESTART");
    		
    		unlink $bc->{const}{req_restart};
    		unlink $bc->{const}{req_restart_program};
    		unless($bc->{variable}{before_start})
    		{
    			$bc->{const}{info}->debug("Found restart.req");
    		}
    		else
    		{
    			$bc->{const}{info}->debug("Starting MASTER -> send MMU...");	      
    		}	      
    
    		send_mmu ($bc, "1", "mmua-for-restart");
    		$bc->{variable}{delay} = $bc->{variable}{delay_max};
    		$bc->{variable}{before_start} = 2 if ($bc->{variable}{before_start} eq '1');   # Не будем отправлять INFO, пока не прийдёт подтверждение MMUA
    	}

    Ещё несколько перлов из утилиты. Так записываем конечный автомат по функционированию протокола. Привёл только маленький кусочек из цепочки IF'ов.

    Запостил: SadKo, 22 Февраля 2011

    Комментарии (0) RSS

    Добавить комментарий

    Ошибка компиляции комментария:
    1. Гости могут высказаться только в понедельник, среду, четверг или воскресение
    ava Где здесь C++, guest?!
    А не использовать ли нам bbcode?
    • [b]жирный[/b] — жирный
    • [i]курсив[/i] — курсив
    • [u]подчеркнутый[/u] — подчеркнутый
    • [s]перечеркнутый[/s] — перечеркнутый
    • [blink]мигающий[/blink] — мигающий
    • [color=red]цвет[/color] — цвет (подробнее)
    • [size=20]размер[/size] — размер (подробнее)
    • [code=<language>]some code[/code] (подробнее)
    Проверочный код