IGLib  1.7.2
The IGLib base library for development of numerical, technical and business applications.
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Events Macros
IG.Lib.IpcStreamServerBase Class Referenceabstract

Server that creates a named pipe, listens on its input stream, and sends responses to the client. More...

+ Inheritance diagram for IG.Lib.IpcStreamServerBase:
+ Collaboration diagram for IG.Lib.IpcStreamServerBase:

Public Member Functions

override void CloseInput ()
 Closes the inpt stream. More...
 
override void CloseOutput ()
 Closes the outut stream. More...
 
abstract void SendDummyRequest ()
 
virtual void StopServer ()
 
virtual string GetResponse (string request)
 Returns response string for given request string. More...
 
void ThreadServe ()
 Launches a named pipe server in a new thread. More...
 
void AbortWorkingThread (double timeoutSeconds=0)
 Aborts the working thread. More...
 
override void ClearData ()
 Clears all the data related to servig requests (i.e. request and response strings, error flags, exceptions, etc.). More...
 
- Public Member Functions inherited from IG.Lib.IpcStreamClientServerBase2
virtual bool IsErrorResponse (string responseString)
 Returns true if the specified response string represents an error response (exception), false if not. More...
 
virtual string GetErrorMessage (string responseString)
 Returns error message that corresponds to the specified response string. More...
 
abstract void ClosePipe ()
 Closes the pipe and streams that depend on it. More...
 
abstract bool IsConnected ()
 Returns true if server pipe is connected, . More...
 
- Public Member Functions inherited from IG.Lib.IpcStreamClientServerBase
delegate string ResponseDelegate (string request)
 Provides an answer string to the specified request string. More...
 
void SetMessagePreix (string messagePrefix)
 Changes message prefix for the current object. More...
 
void messageSeparator (char messageSeparator)
 Changes message separator for the current object. More...
 
void SetMessageFalseSeparator (char messageFalseSeparator)
 Changes message false separator for the current object. More...
 
string CreateMessage (string messageName, string[] messageArguments)
 Creates a built-in message (possibly with arguments) that is to be interpreted directly by the receiver (stream client or server) and is not executed via ordinary path. More...
 
string CreateResponseOrRequestString (string originalResponseOrRequestString, bool multiLine)
 Generates request and response string in such a way that it can not be mixed up with a message. More...
 
void InterpretRequestOrResponseLine (ref string responseOrRequestString, out bool isMessage, out string messageOrCommandName, out string[] messageArguments)
 Returns the (eventually decoded) request or response string corresponding to the stirng that is read form the communication pipeline, and also parameters that specify whether the request string represents a message or not. Eventual command or message parameters are also returned. More...
 
void WriteMessage (StreamWriter outputStream, string message, string[] args)
 Writes a mesage to the output stream. What is written is decorated message (including the standard message prefix and separator) and message arguments. More...
 
virtual void WorkMessage (string messageName, string[] messageArguments, IpcStage context, ref bool worked)
 
virtual void RespondToMessage (string messageName, string[] messageArguments, ref bool responded)
 Responds to a received message. More...
 

Protected Member Functions

abstract void WaitForConnection ()
 Waits until a client connects to the specified server pipe. More...
 
virtual string GetErrorMessage (Exception ex)
 Returns error message corresponding to the specified exception. More...
 
virtual string ReadRequest ()
 Reads the next request from the pipe. More...
 
virtual void SendResponse (string responseString)
 Sends the specified response string back to the server. More...
 
virtual void SendResponse ()
 Sends the response (i.e., the IpcStreamClientServerBase2.ResponseString) back to the client. More...
 
virtual void RespondToRequest ()
 Reads a single request from the client and sends back the response. More...
 
virtual void ServeInCurrentThread ()
 Enters the serving loop. More...
 
- Protected Member Functions inherited from IG.Lib.IpcStreamClientServerBase2
abstract void CloseConnection ()
 Closes connection of the server pype. More...
 

Static Protected Member Functions

static string DefaultResponseMethod (string request)
 The deefault method that returns response to the specified request. More...
 

Protected Attributes

ThreadPriority _threadPriority = UtilSystem.ThreadPriority
 
- Protected Attributes inherited from IG.Lib.IpcStreamClientServerBase
object _lock = new object()
 

Properties

bool IsResponseSent [get, protected set]
 Auxiliary flag telling whether response to a request has already been sent to the client. Used for synchronization of diffeeent parts of the response generation process, which enables e.g special handling of Exceptions. More...
 
bool StopServe [get, protected set]
 Whether the pipe should be closed. More...
 
bool IsServerRunning [get, protected set]
 Flag telling whether the server is currently running. More...
 
virtual ResponseDelegate ResponseMethod [get, set]
 Delegate that calculates response to given request. More...
 
ThreadPriority ThreadPriority [get, set]
 Priority of the server thread. More...
 
- Properties inherited from IG.Lib.IpcStreamClientServerBase2
abstract string Name [get, set]
 
static string DefaultPipeName [get, set]
 Default pipe name. More...
 
static string DefaultErrorBegin [get]
 Default string that begins an error report. More...
 
string ErrorBegin [get, protected set]
 
abstract StreamReader InputStream [get, protected set]
 Input stream writer of the server's named pipe. More...
 
abstract StreamWriter OutputStream [get, protected set]
 Output stream reader of the server's named pipe. More...
 
bool IsError [get, protected set]
 
string RequestString [get, protected set]
 The last request string that was read from the pipe. More...
 
string ResponseString [get, protected set]
 The last answer string that was written to the pipe. More...
 
Exception LastException [get, protected set]
 Returns the last exception thrown when serving request. More...
 
string LastErrorMessage [get, protected set]
 Returns the last error message. More...
 
string LastRequestString [get, protected set]
 Returns the last request string. More...
 
string LastResponseString [get, protected set]
 Returns the last response string. More...
 
- Properties inherited from IG.Lib.IpcStreamClientServerBase
object Lock [get]
 Objectt for locking the current object. More...
 
static object LockGlobal [get]
 Static lock object used by all instances of this class (and possibly by other classes). More...
 
StringBuilder StringBuilderInternal [get]
 
static int DefaultOutputLevel [get, set]
 Default level of output for this kind of class. More...
 
virtual int OutputLevel [get, set]
 Level of output generated by operatins. More...
 
static string DefaultMessagePrefix [get, set]
 
static char DefaultMessageSeparator [get, set]
 
static char DefaultMessageFalseSeparator [get, set]
 
string MessagePrefix [get, protected set]
 
char MessageSeparator [get, protected set]
 
char MessageFalseSeparator [get, protected set]
 
string MessagePrefixWithSeparator [get, protected set]
 Gets the mesage prefix with separator. If some string is a message, everything that follows this string until the first separator is a message name. More...
 
static string DefaultMsgRequestBegin [get]
 Default message that begins any mulltiline request. More...
 
static string DefaultMsgRequestEnd [get]
 Default message that ends any mulltiline request. More...
 
static string DefaultMsgResponseBegin [get]
 Default message that begins any multiline response. More...
 
static string DefaultMsgResponseEnd [get]
 Default message that ends any multiline response. More...
 
static string DefaultMsgTestSquare [get]
 Default message that requests a test computation of square to be performed on the other side (a sort of ping command). More...
 
static string DefaultMsgTestSpeed [get]
 Default message that requests a speed test to be performed on the other side (a sort of ping command). More...
 
string MsgRequestBegin [get, protected set]
 
string MsgRequestEnd [get, protected set]
 
string MsgResponseBegin [get, protected set]
 Message that begins any multiline response (only when multiline responses are allowed). More...
 
string MsgResponseEnd [get, protected set]
 Message that ends any multiline response (only when multiline responses are allowed). More...
 
string MsgTestSquare [get, protected set]
 Message that requests square of its argument to be sent back. Used as a kind of verifiable ping. More...
 
string MsgTestSpeed [get, protected set]
 Message that requires a kind of speed test to be performed on the other side. More...
 
static string DefaultStopRequest [get, set]
 Default stop request string - request string that will stop the server. More...
 
string StopRequest [get, set]
 Request that causes the server stop listening and closing the pipe. More...
 
static string DefaultGenericResponse [get, set]
 Default generic response (sent in absence of any other method to generate the response). More...
 
string GenericResponse [get, protected set]
 Generic response that is sent back to the client in abscence of any method generating responses to specific requests. More...
 
static string DefaultStoppedResponse [get, set]
 Default stopped response (sent after the srver has sttopped on request). More...
 
string StoppedResponse [get, protected set]
 Stopped response that is sent back to the client after the server stops on its request. More...
 
static bool DefaultIsMultilineResponse [get]
 Default pipe name. More...
 
static bool DefaultIsMultilineRequest [get]
 Default pipe name. More...
 
virtual bool IsMultilineRequest [get, protected set]
 Whether or not multi line requests are allowed. More...
 
virtual bool IsMultilineResponse [get, protected set]
 Whether or not multi line responses are allowed. More...
 
- Properties inherited from IG.Lib.ILockable
object Lock [get]
 

Private Attributes

bool _stopServe = false
 
bool _isServerRunning = false
 
ResponseDelegate _responseMethod = DefaultResponseMethod
 
Thread _workingThread = null
 

Additional Inherited Members

- Public Attributes inherited from IG.Lib.IpcStreamClientServerBase
const int MinimalMessagePreffixLength = 3
 

Detailed Description

Server that creates a named pipe, listens on its input stream, and sends responses to the client.

$A Igor xx Mar14;

Member Function Documentation

abstract void IG.Lib.IpcStreamServerBase.WaitForConnection ( )
protectedpure virtual

Waits until a client connects to the specified server pipe.

Implemented in IG.Lib.PipeServerBase, and IG.Lib.NamedPipeServerBase.

override void IG.Lib.IpcStreamServerBase.CloseInput ( )
inlinevirtual

Closes the inpt stream.

Implements IG.Lib.IpcStreamClientServerBase2.

override void IG.Lib.IpcStreamServerBase.CloseOutput ( )
inlinevirtual

Closes the outut stream.

Implements IG.Lib.IpcStreamClientServerBase2.

abstract void IG.Lib.IpcStreamServerBase.SendDummyRequest ( )
pure virtual
virtual void IG.Lib.IpcStreamServerBase.StopServer ( )
inlinevirtual
static string IG.Lib.IpcStreamServerBase.DefaultResponseMethod ( string  request)
inlinestaticprotected

The deefault method that returns response to the specified request.

Just returns a string that tells which was the request string.

Parameters
request
virtual string IG.Lib.IpcStreamServerBase.GetResponse ( string  request)
inlinevirtual

Returns response string for given request string.

This method will generally be overridden in derived classes.

Parameters
requestThe request string.
Returns
Response to the request string.

Reimplemented in IG.Lib.CommandLineApplicationInterpreter.InterpreterPipeServer.

virtual string IG.Lib.IpcStreamServerBase.GetErrorMessage ( Exception  ex)
inlineprotectedvirtual

Returns error message corresponding to the specified exception.

Parameters
ex
virtual string IG.Lib.IpcStreamServerBase.ReadRequest ( )
inlineprotectedvirtual

Reads the next request from the pipe.

virtual void IG.Lib.IpcStreamServerBase.SendResponse ( string  responseString)
inlineprotectedvirtual

Sends the specified response string back to the server.

Parameters
responseString
virtual void IG.Lib.IpcStreamServerBase.SendResponse ( )
inlineprotectedvirtual

Sends the response (i.e., the IpcStreamClientServerBase2.ResponseString) back to the client.

virtual void IG.Lib.IpcStreamServerBase.RespondToRequest ( )
inlineprotectedvirtual

Reads a single request from the client and sends back the response.

virtual void IG.Lib.IpcStreamServerBase.ServeInCurrentThread ( )
inlineprotectedvirtual

Enters the serving loop.

Within the loop, only ReadRequest() and RespondToRequest() are executed. The latter must handle things like stopping requests.

void IG.Lib.IpcStreamServerBase.ThreadServe ( )
inline

Launches a named pipe server in a new thread.

Referenced by IG.Lib.CommandLineApplicationInterpreter.CreatePipeServer().

void IG.Lib.IpcStreamServerBase.AbortWorkingThread ( double  timeoutSeconds = 0)
inline

Aborts the working thread.

Parameters
timeoutSeconds
override void IG.Lib.IpcStreamServerBase.ClearData ( )
inlinevirtual

Clears all the data related to servig requests (i.e. request and response strings, error flags, exceptions, etc.).

Implements IG.Lib.IpcStreamClientServerBase2.

Member Data Documentation

bool IG.Lib.IpcStreamServerBase._stopServe = false
private
bool IG.Lib.IpcStreamServerBase._isServerRunning = false
private
ResponseDelegate IG.Lib.IpcStreamServerBase._responseMethod = DefaultResponseMethod
private
Thread IG.Lib.IpcStreamServerBase._workingThread = null
private
ThreadPriority IG.Lib.IpcStreamServerBase._threadPriority = UtilSystem.ThreadPriority
protected

Property Documentation

bool IG.Lib.IpcStreamServerBase.IsResponseSent
getprotected set

Auxiliary flag telling whether response to a request has already been sent to the client. Used for synchronization of diffeeent parts of the response generation process, which enables e.g special handling of Exceptions.

bool IG.Lib.IpcStreamServerBase.StopServe
getprotected set

Whether the pipe should be closed.

bool IG.Lib.IpcStreamServerBase.IsServerRunning
getprotected set

Flag telling whether the server is currently running.

virtual ResponseDelegate IG.Lib.IpcStreamServerBase.ResponseMethod
getset

Delegate that calculates response to given request.

ThreadPriority IG.Lib.IpcStreamServerBase.ThreadPriority
getset

Priority of the server thread.

Setting priority changes priority of the server thread if it exists.


The documentation for this class was generated from the following file: