Commit ce113e9d1b7752063bb2ba19282ec015ca95471c

Authored by Carlos Picanco
1 parent c8462f47
Exists in master

debug enviroment setup

.gitignore
1   -id
2 1 \ No newline at end of file
  2 +id
  3 +P*/cultural_matrix
  4 +P*/id
3 5 \ No newline at end of file
... ...
cultural_matrix.lpi
... ... @@ -25,7 +25,7 @@
25 25 </Target>
26 26 <SearchPaths>
27 27 <IncludeFiles Value="$(ProjOutDir)"/>
28   - <Libraries Value="/usr/lib/gcc/x86_64-linux-gnu/4.9"/>
  28 + <Libraries Value="/usr/lib/gcc/x86_64-linux-gnu/4.9/"/>
29 29 <OtherUnitFiles Value="units;../../dependency/delphizmq;../../units"/>
30 30 <UnitOutputDirectory Value="lib/$(TargetCPU)-$(TargetOS)"/>
31 31 </SearchPaths>
... ... @@ -145,7 +145,7 @@
145 145 </Target>
146 146 <SearchPaths>
147 147 <IncludeFiles Value="$(ProjOutDir)"/>
148   - <Libraries Value="/usr/lib/gcc/x86_64-linux-gnu/4.9"/>
  148 + <Libraries Value="/usr/lib/gcc/x86_64-linux-gnu/4.9/"/>
149 149 <OtherUnitFiles Value="units;../../dependency/delphizmq;../../units"/>
150 150 <UnitOutputDirectory Value="lib/$(TargetCPU)-$(TargetOS)"/>
151 151 </SearchPaths>
... ...
cultural_matrix.lpr
... ... @@ -11,18 +11,29 @@ program cultural_matrix;
11 11  
12 12 {$mode objfpc}{$H+}
13 13  
  14 +{$DEFINE DEBUG}
  15 +
14 16 uses
15 17 {$IFDEF UNIX}{$IFDEF UseCThreads}
16 18 cthreads,
17 19 {$ENDIF}{$ENDIF}
18 20 Interfaces // this includes the LCL widgetset
19   - , StrUtils, Forms, Classes, sysutils, Dialogs
  21 + {$IFDEF DEBUG}
  22 + , Dialogs, FileUtil, LazFileUtils
  23 + {$IFDEF LINUX}
  24 + , BaseUnix
  25 + {$ENDIF}
  26 + {$ENDIF}
  27 + , StrUtils, Forms, Classes, sysutils
20 28 , form_matrixgame, form_chooseactor, game_actors
21 29 , zhelpers
22 30 ;
23 31  
24 32  
25 33 var
  34 + {$IFDEF DEBUG}
  35 + I : integer;
  36 + {$ENDIF}
26 37 ID : TStringList;
27 38 F : string;
28 39 const
... ... @@ -33,7 +44,23 @@ const
33 44 {$R *.res}
34 45  
35 46 begin
36   - //RequireDerivedFormResource := True;
  47 + {$IFDEF DEBUG}
  48 + for i:= 0 to 2 do
  49 + begin
  50 + if Pos((PathDelim+'P'+IntToStr(i+1)+PathDelim), Application.ExeName) > 0 then
  51 + Break;
  52 + F := ExtractFilePath(Application.ExeName)+'P'+IntToStr(i+1);
  53 + WriteLn(F);
  54 + if ForceDirectoriesUTF8(F) then // ensure we have always the newer version for tests
  55 + begin
  56 + CopyFile(Application.ExeName,F+PathDelim+ApplicationName,[cffOverwriteFile]);
  57 + {$IFDEF LINUX}
  58 + FpChmod(F+PathDelim+ApplicationName,S_IRWXU);
  59 + {$ENDIF}
  60 + end
  61 + else Exit;
  62 + end;
  63 + {$ENDIF}
37 64 Application.Initialize;
38 65 F := ExtractFilePath(Application.ExeName)+PathDelim+'id';
39 66 ID := TStringList.Create;
... ... @@ -53,7 +80,9 @@ begin
53 80 on E: Exception do
54 81 begin
55 82 ID.Free;
  83 + {$IFDEF DEBUG}
56 84 ShowMessage(E.Message);
  85 + {$ENDIF}
57 86 Exit;
58 87 end;
59 88 end;
... ...
units/game_control.pas
... ... @@ -2,6 +2,8 @@ unit game_control;
2 2  
3 3 {$mode objfpc}{$H+}
4 4  
  5 +{$DEFINE DEBUG}
  6 +
5 7 interface
6 8  
7 9 uses
... ... @@ -537,9 +539,8 @@ begin
537 539 if MHas(K_STATUS) then ReceiveStatus;
538 540  
539 541 {$IFDEF DEBUG}
540   - AMessage.Append('MessageReceived');
541 542 for i:= 0 to AMessage.Count-1 do
542   - WriteLn(AMessage[i]);
  543 + WriteLn(i,':',AMessage[i]);
543 544 {$ENDIF}
544 545 end;
545 546  
... ... @@ -561,9 +562,7 @@ begin
561 562 if MHas(K_LOGIN) then ReplyLogin;
562 563  
563 564 {$IFDEF DEBUG}
564   - ARequest.Append('RequestReceived');
565   - for i:= 0 to ARequest.Count-1 do
566   - WriteLn(ARequest[i]);
  565 + ARequest.Append(FZMQActor.ClassType.ClassName+':'+'AppendToRequest');
567 566 {$ENDIF}
568 567 end;
569 568  
... ... @@ -573,9 +572,8 @@ procedure TGameControl.ReceiveReply(AReply: TStringList);
573 572 var i: integer;
574 573 begin
575 574 {$IFDEF DEBUG}
576   - AReply.Append('ReplyReceived');
577 575 for i:= 0 to AReply.Count-1 do
578   - WriteLn(AReply[i]);
  576 + WriteLn(i,':',AReply[i]);
579 577 {$ENDIF}
580 578 end;
581 579  
... ...
units/game_zmq_actors.pas
... ... @@ -10,6 +10,8 @@ uses
10 10 //, zmq_client
11 11 ;
12 12  
  13 + {$DEFINE DEBUG}
  14 +
13 15 type
14 16  
15 17 { TZMQActor }
... ... @@ -27,8 +29,8 @@ type
27 29 public
28 30 constructor Create(AOwner : TComponent; AID : UTF8String); virtual; overload;
29 31 procedure Start; virtual;
30   - procedure SendMessage(AMessage : array of UTF8string);virtual;abstract;
31   - procedure Request(ARequest : array of UTF8string);virtual;abstract;
  32 + procedure SendMessage(AMessage : array of UTF8string);virtual;
  33 + procedure Request(ARequest : array of UTF8string);virtual;
32 34 property OnMessageReceived : TMessRecvProc read FOnMessageReceived write FOnMessageReceived;
33 35 property OnRequestReceived : TReqRecvProc read FOnRequestReceived write FOnRequestReceived;
34 36 property OnReplyReceived : TMessRecvProc read FOnReplyReceived write FOnReplyReceived;
... ... @@ -90,7 +92,6 @@ begin
90 92 FZMQServer := TZMQServerThread.Create(AID);
91 93 FZMQServer.OnMessageReceived:=@MessageReceived;
92 94 FZMQServer.OnRequestReceived:=@RequestReceived;
93   -
94 95 end;
95 96  
96 97 destructor TZMQAdmin.Destroy;
... ... @@ -106,16 +107,15 @@ end;
106 107  
107 108 procedure TZMQAdmin.Request(ARequest: array of UTF8string);
108 109 begin
109   - // do nothing, you are the server
  110 + {$IFDEF DEBUG}
  111 + WriteLn('WARNING:'+ClassType.ClassName+':'+'CannotSendRequests:'+ARequest[2]);
  112 + {$ENDIF}
110 113 end;
111 114  
112 115 procedure TZMQAdmin.Start;
113 116 begin
114 117 inherited Start;
115 118 FZMQServer.Start;
116   - {$IFDEF DEBUG}
117   - WriteLn('TZMQAdmin.Start');
118   - {$ENDIF}
119 119 end;
120 120  
121 121 { TZMQPlayer }
... ... @@ -123,13 +123,16 @@ end;
123 123 procedure TZMQPlayer.SendMessage(AMessage: array of UTF8string);
124 124 begin
125 125 {$IFDEF DEBUG}
126   -
  126 + inherited SendMessage(AMessage);
127 127 {$ENDIF}
128 128 FZMQClient.Push(AMessage);
129 129 end;
130 130  
131 131 procedure TZMQPlayer.Request(ARequest: array of UTF8string);
132 132 begin
  133 + {$IFDEF DEBUG}
  134 + inherited Request(ARequest);
  135 + {$ENDIF}
133 136 FZMQClient.Request(ARequest);
134 137 end;
135 138  
... ... @@ -152,25 +155,31 @@ procedure TZMQPlayer.Start;
152 155 begin
153 156 inherited Start;
154 157 FZMQClient.Start;
155   - {$IFDEF DEBUG}
156   - WriteLn('TZMQPlayer.Start');
157   - {$ENDIF}
158 158 end;
159 159  
160 160 { TZMQActor }
161 161  
162 162 procedure TZMQActor.MessageReceived(AMultipartMessage: TStringList);
163 163 begin
  164 + {$IFDEF DEBUG}
  165 + WriteLn(ClassType.ClassName+':'+'ReceivedAMessage');
  166 + {$ENDIF}
164 167 if Assigned(FOnMessageReceived) then FOnMessageReceived(AMultipartMessage);
165 168 end;
166 169  
167 170 procedure TZMQActor.ReplyReceived(AMultipartMessage: TStringList);
168 171 begin
  172 + {$IFDEF DEBUG}
  173 + WriteLn(ClassType.ClassName+':'+'ReceivedAReply');
  174 + {$ENDIF}
169 175 if Assigned(FOnReplyReceived) then FOnReplyReceived(AMultipartMessage);
170 176 end;
171 177  
172 178 procedure TZMQActor.RequestReceived(var AMultipartMessage: TStringList);
173 179 begin
  180 + {$IFDEF DEBUG}
  181 + WriteLn(ClassType.ClassName+':'+'ReceivedARequest');
  182 + {$ENDIF}
174 183 if Assigned(FOnRequestReceived) then FOnRequestReceived(AMultipartMessage);
175 184 end;
176 185  
... ... @@ -182,7 +191,21 @@ end;
182 191 procedure TZMQActor.Start;
183 192 begin
184 193 {$IFDEF DEBUG}
185   - WriteLn('TZMQActor.Start');
  194 + WriteLn(ClassType.ClassName+':'+'Starting');
  195 + {$ENDIF}
  196 +end;
  197 +
  198 +procedure TZMQActor.SendMessage(AMessage: array of UTF8string);
  199 +begin
  200 + {$IFDEF DEBUG}
  201 + WriteLn(ClassType.ClassName+':'+'SendingMessage:'+AMessage[1]);
  202 + {$ENDIF}
  203 +end;
  204 +
  205 +procedure TZMQActor.Request(ARequest: array of UTF8string);
  206 +begin
  207 + {$IFDEF DEBUG}
  208 + WriteLn(ClassType.ClassName+':'+'SendingRequest:'+ARequest[2]);
186 209 {$ENDIF}
187 210 end;
188 211  
... ...
units/zmq_network.pas
... ... @@ -40,6 +40,7 @@ type
40 40 FMessage : TStringList;
41 41 FOnReplyReceived: TMessRecvProc;
42 42 FOnMessageReceived: TMessRecvProc;
  43 + procedure ThreadStarted;
43 44 procedure MessageReceived;
44 45 protected
45 46 procedure Execute; override;
... ... @@ -69,7 +70,7 @@ type
69 70 FReplier : TZMQSocket;
70 71 FPoller : TZMQPoller;
71 72 FMessage : TStringList;
72   - procedure Connect;
  73 + procedure ThreadStart;
73 74 procedure MessageReceived;
74 75 procedure RequestReceived;
75 76 protected
... ... @@ -97,6 +98,12 @@ const
97 98  
98 99 { TZMQClientThread }
99 100  
  101 +procedure TZMQClientThread.ThreadStarted;
  102 +begin
  103 + {$IFDEF DEBUG}
  104 + WriteLn(ClassType.ClassName+':'+'Started');
  105 + {$ENDIF}
  106 +end;
100 107  
101 108 procedure TZMQClientThread.MessageReceived;
102 109 begin
... ... @@ -170,6 +177,7 @@ begin
170 177 inherited Destroy;
171 178 end;
172 179  
  180 +// Send a blocking Request(identity, ' ', s1, .. sn)
173 181 procedure TZMQClientThread.Request(AMultipartMessage: array of UTF8String);
174 182 var AReply : TStringList;
175 183 begin
... ... @@ -194,10 +202,10 @@ end;
194 202  
195 203  
196 204  
197   -procedure TZMQServerThread.Connect;
  205 +procedure TZMQServerThread.ThreadStart;
198 206 begin
199 207 {$IFDEF DEBUG}
200   - WriteLn('TZMQServerThread.Started');
  208 + WriteLn(ClassType.ClassName+':'+'Started');
201 209 {$ENDIF}
202 210 end;
203 211  
... ... @@ -217,7 +225,7 @@ var
217 225 LPollCount,
218 226 LMessagesCount : integer;
219 227 begin
220   - Synchronize(@Connect);
  228 + Synchronize(@ThreadStart);
221 229 LPollCount := 0;
222 230 LMessagesCount := 0;
223 231 LMultipartMessage := TStringList.Create;
... ...