12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697 |
- program testipc_client;
- {$MODE ObjFPC}
- {$H+}
- uses
- Classes, SysUtils, AdvancedIPC;
- const
- STRINGMESSAGE_WANTS_RESPONSE = 3;
- STRINGMESSAGE_NO_RESPONSE = 2;
- MESSAGE_STOP = 4;
- var
- xClient, xClientNotRunning: TIPCClient;
- xStream, xResponseStream: TStringStream;
- xRequestID: Integer;
- xMsgType: TMessageType;
- I: Integer;
- begin
- xClient := nil;
- xClientNotRunning := nil;
- xStream := nil;
- xResponseStream := nil;
- try
- xResponseStream := TStringStream.Create('OK');
- //check connection to to the "hello" server (that has to run)
- xClient := TIPCClient.Create(nil);
- xClient.ServerID := 'hello';
- if not xClient.ServerRunning then
- begin
- Writeln('ERROR: Server '+xClient.ServerID+' is not running.');
- Writeln('Closing');
- Exit;
- end;
- //first send some messages to server that is not running
- xClientNotRunning := TIPCClient.Create(nil);
- xClientNotRunning.ServerID := 'not_running';
- if xClientNotRunning.ServerRunning then
- begin
- Writeln('ERROR: Server '+xClientNotRunning.ServerID+' is running. This test needs that the server doesn''t run.');
- Writeln('Closing');
- Exit;
- end;
- for I := 1 to 10 do
- begin
- FreeAndNil(xStream);
- xStream := TStringStream.Create('Message '+IntToStr(I));
- xStream.Position := 0;
- xClientNotRunning.PostRequest(STRINGMESSAGE_NO_RESPONSE, xStream);
- end;
- FreeAndNil(xClientNotRunning);
- //now send messages to the "hello" server
- FreeAndNil(xStream);
- xStream := TStringStream.Create('I want some response.');
- xStream.Position := 0;
- if xClient.SendRequest(STRINGMESSAGE_WANTS_RESPONSE, xStream, 100, xRequestID) and
- xClient.PeekResponse(xResponseStream, xMsgType, 100)
- then
- Writeln('Request-response test OK.')
- else
- Writeln('ERROR: Request-response test failed.');
- FreeAndNil(xStream);
- xStream := TStringStream.Create('I do not want any response.');
- xStream.Position := 0;
- if xClient.SendRequest(STRINGMESSAGE_NO_RESPONSE, xStream, 100, xRequestID) then
- begin
- if xClient.PeekResponse(xResponseStream, xMsgType, 100) then
- Writeln('ERROR: I received a response even that I didn''t want any. What happened?')
- else
- Writeln('Request test OK.');
- end else
- Writeln('ERROR: Request test failed.');
- if xClient.SendRequest(MESSAGE_STOP, nil, 100) and
- not xClient.ServerRunning
- then
- Writeln('Server was sucessfully stopped.')
- else
- Writeln('ERROR: I could not stop the server.')
- finally
- xClient.Free;
- xClientNotRunning.Free;
- xStream.Free;
- xResponseStream.Free;
- end;
- end.
|