Scs
Represents a SCS server that is used to accept and manage client connections.
Starts the server.
Stops the server.
This event is raised when a new client connected to the server.
This event is raised when a client disconnected from the server.
Gets/sets wire protocol factory to create IWireProtocol objects.
A collection of clients that are connected to the server.
Represents a client to connect to server.
Represents an object that can send and receive messages.
Sends a message to the remote application.
Message to be sent
This event is raised when a new message is received.
This event is raised when a new message is sent without any error.
It does not guaranties that message is properly handled and processed by remote application.
Gets/sets wire protocol that is used while reading and writing messages.
Gets the time of the last succesfully received message.
Gets the time of the last succesfully sent message.
Represents a client for SCS servers.
Connects to server.
Disconnects from server.
Does nothing if already disconnected.
This event is raised when client connected to server.
This event is raised when client disconnected from server.
Timeout for connecting to a server (as milliseconds).
Default value: 15 seconds (15000 ms).
Gets the current communication state.
This class extends RemoteInvokeProxy to provide auto connect/disconnect mechanism
if client is not connected to the server when a service method is called.
Type of the proxy class/interface
Type of the messenger object that is used to send/receive messages
This class is used to generate a dynamic proxy to invoke remote methods.
It translates method invocations to messaging.
Type of the proxy class/interface
Type of the messenger object that is used to send/receive messages
Messenger object that is used to send/receive messages.
Creates a new RemoteInvokeProxy object.
Messenger object that is used to send/receive messages
Overrides message calls and translates them to messages to remote application.
Method invoke message (from RealProxy base class)
Method invoke return message (to RealProxy base class)
Reference to the client object that is used to connect/disconnect.
Creates a new AutoConnectRemoteInvokeProxy object.
Messenger object that is used to send/receive messages
Reference to the client object that is used to connect/disconnect
Overrides message calls and translates them to messages to remote application.
Method invoke message (from RealProxy base class)
Method invoke return message (to RealProxy base class)
This class is used to communicate with a remote application over TCP/IP protocol.
This class provides base functionality for all communication channel classes.
Represents a communication channel.
A communication channel is used to communicate (send/receive messages) with a remote application.
Starts the communication with remote application.
Closes messenger.
This event is raised when client disconnected from server.
Gets endpoint of remote application.
Gets the current communication state.
Constructor.
Disconnects from remote application and closes this channel.
Starts the communication with remote application.
Sends a message to the remote application.
Message to be sent
Throws ArgumentNullException if message is null
Starts the communication with remote application really.
Sends a message to the remote application.
This method is overrided by derived classes to really send to message.
Message to be sent
Raises Disconnected event.
Raises MessageReceived event.
Received message
Raises MessageSent event.
Received message
This event is raised when a new message is received.
This event is raised when a new message is sent without any error.
It does not guaranties that message is properly handled and processed by remote application.
This event is raised when communication channel closed.
Gets endpoint of remote application.
Gets the current communication state.
Gets the time of the last succesfully received message.
Gets the time of the last succesfully sent message.
Gets/sets wire protocol that the channel uses.
This property must set before first communication.
Size of the buffer that is used to receive bytes from TCP socket.
This buffer is used to receive bytes
Socket object to send/reveice messages.
A flag to control thread's running
This object is just used for thread synchronizing (locking).
Creates a new TcpCommunicationChannel object.
A connected Socket object that is
used to communicate over network
Disconnects from remote application and closes channel.
Starts the thread to receive messages from socket.
Sends a message to the remote application.
Message to be sent
This method is used as callback method in _clientSocket's BeginReceive method.
It reveives bytes from socker.
Asyncronous call result
Gets the endpoint of remote application.
Base class for all services that is serviced by IScsServiceApplication.
A class must be derived from ScsService to serve as a SCS service.
The current client for a thread that called service method.
Gets the current client which called this service method.
This property is thread-safe, if returns correct client when
called in a service method if the method is called by SCS system,
else throws exception.
Stores communication channel information to be used by an event.
Creates a new CommunicationChannelEventArgs object.
Communication channel that is associated with this event
Communication channel that is associated with this event.
This class is used to create SCS Clients to connect to a SCS server.
Creates a new client to connect to a server using an end point.
End point of the server to connect it
Created TCP client
Creates a new client to connect to a server using an end point.
End point address of the server to connect it
Created TCP client
This message is sent to invoke a method of a remote application.
Represents a message that is sent and received by server and client.
This is the base class for all messages.
Represents a message that is sent and received by server and client.
Unique identified for this message.
Unique identified for this message.
Creates a new ScsMessage.
Creates a new reply ScsMessage.
Replied message id if this is a reply for
a message.
Creates a string to represents this object.
A string to represents this object
Unique identified for this message.
Default value: New GUID.
Do not change if you do not want to do low level changes
such as custom wire protocols.
This property is used to indicate that this is
a Reply message to a message.
It may be null if this is not a reply message.
Represents this object as string.
String representation of this object
Name of the remove service class.
Method of remote application to invoke.
Parameters of method.
Represents a service client that consumes a SCS service.
Type of service interface
Reference to the service proxy to invoke remote service methods.
Timeout value when invoking a service method.
If timeout occurs before end of remote method call, an exception is thrown.
Use -1 for no timeout (wait indefinite).
Default value: 60000 (1 minute).
Default communication protocol between server and clients to send and receive a message.
It uses .NET binary serialization to write and read messages.
A Message format:
[Message Length (4 bytes)][Serialized Message Content]
If a message is serialized to byte array as N bytes, this protocol
adds 4 bytes size information to head of the message bytes, so total length is (4 + N) bytes.
This class can be derived to change serializer (default: BinaryFormatter). To do this,
SerializeMessage and DeserializeMessage methods must be overrided.
Represents a byte-level communication protocol between applications.
Serializes a message to a byte array to send to remote application.
This method is synchronized. So, only one thread can call it concurrently.
Message to be serialized
Builds messages from a byte array that is received from remote application.
The Byte array may contain just a part of a message, the protocol must
cumulate bytes to build messages.
This method is synchronized. So, only one thread can call it concurrently.
Received bytes from remote application
List of messages.
Protocol can generate more than one message from a byte array.
Also, if received bytes are not sufficient to build a message, the protocol
may return an empty list (and save bytes to combine with next method call).
This method is called when connection with remote application is reset (connection is renewing or first connecting).
So, wire protocol must reset itself.
Maximum length of a message.
This MemoryStream object is used to collect receiving bytes to build messages.
Creates a new instance of BinarySerializationProtocol.
Serializes a message to a byte array to send to remote application.
This method is synchronized. So, only one thread can call it concurrently.
Message to be serialized
Throws CommunicationException if message is bigger than maximum allowed message length.
Builds messages from a byte array that is received from remote application.
The Byte array may contain just a part of a message, the protocol must
cumulate bytes to build messages.
This method is synchronized. So, only one thread can call it concurrently.
Received bytes from remote application
List of messages.
Protocol can generate more than one message from a byte array.
Also, if received bytes are not sufficient to build a message, the protocol
may return an empty list (and save bytes to combine with next method call).
This method is called when connection with remote application is reset (connection is renewing or first connecting).
So, wire protocol must reset itself.
This method is used to serialize a IScsMessage to a byte array.
This method can be overrided by derived classes to change serialization strategy.
It is a couple with DeserializeMessage method and must be overrided together.
Message to be serialized
Serialized message bytes.
Does not include length of the message.
This method is used to deserialize a IScsMessage from it's bytes.
This method can be overrided by derived classes to change deserialization strategy.
It is a couple with SerializeMessage method and must be overrided together.
Bytes of message to be deserialized (does not include message length. It consist
of a single whole message)
Deserialized message
This method tries to read a single message and add to the messages collection.
Messages collection to collect messages
Returns a boolean value indicates that if there is a need to re-call this method.
Throws CommunicationException if message is bigger than maximum allowed message length.
Writes a int value to a byte array from a starting index.
Byte array to write int value
Start index of byte array to write
An integer value to write
Deserializes and returns a serialized integer.
Deserialized integer
Reads a byte array with specified length.
Stream to read from
Length of the byte array to read
Read byte array
Throws EndOfStreamException if can not read from stream.
This class is used in deserializing to allow deserializing objects that are defined
in assemlies that are load in runtime (like PlugIns).
Represents a communication listener.
A connection listener is used to accept incoming client connection requests.
Starts listening incoming connections.
Stops listening incoming connections.
This event is raised when a new communication channel connected.
Represents a service client that consumes a SCS service.
Type of service interface
Underlying IScsClient object to communicate with server.
Messenger object to send/receive messages over _client.
This object is used to create a transparent proxy to invoke remote methods on server.
The client object that is used to call method invokes in client side.
May be null if client has no methods to be invoked by server.
Creates a new ScsServiceClient object.
Underlying IScsClient object to communicate with server
The client object that is used to call method invokes in client side.
May be null if client has no methods to be invoked by server.
Connects to server.
Disconnects from server.
Does nothing if already disconnected.
Calls Disconnect method.
Handles MessageReceived event of messenger.
It gets messages from server and invokes appropriate method.
Source of event
Event arguments
Sends response to the remote application that invoked a service method.
Request message
Return value to send
Exception to send
Handles Connected event of _client object.
Source of object
Event arguments
Handles Disconnected event of _client object.
Source of object
Event arguments
Raises Connected event.
Raises Disconnected event.
This event is raised when client connected to server.
This event is raised when client disconnected from server.
Timeout for connecting to a server (as milliseconds).
Default value: 15 seconds (15000 ms).
Gets the current communication state.
Reference to the service proxy to invoke remote service methods.
Timeout value when invoking a service method.
If timeout occurs before end of remote method call, an exception is thrown.
Use -1 for no timeout (wait indefinite).
Default value: 60000 (1 minute).
Provides some functionality that are used by servers.
Used to set an auto incremential unique identifier to clients.
Gets an unique number to be used as idenfitier of a client.
This class is used to create Binary Serialization Protocol objects.
Defines a Wire Protocol Factory class that is used to create Wire Protocol objects.
Creates a new Wire Protocol object.
Newly created wire protocol object
Creates a new Wire Protocol object.
Newly created wire protocol object
This message is used to send/receive a text as message data.
Creates a new ScsTextMessage object.
Creates a new ScsTextMessage object with Text property.
Message text that is being transmitted
Creates a new reply ScsTextMessage object with Text property.
Message text that is being transmitted
Replied message id if this is a reply for
a message.
Creates a string to represents this object.
A string to represents this object
Message text that is being transmitted.
This class is used to build ScsService applications.
Creates a new SCS Service application using an EndPoint.
EndPoint that represents address of the service
Created SCS service application
This message is used to send/receive ping messages.
Ping messages is used to keep connection alive between server and client.
Creates a new PingMessage object.
Creates a new reply PingMessage object.
Replied message id if this is a reply for
a message.
Creates a string to represents this object.
A string to represents this object
Represents a SCS Remote Exception.
This exception is used to send an exception from an application to another application.
Contstructor.
Contstructor.
Contstructor.
Exception message
Contstructor.
Exception message
Inner exception
This class provides base functionality for server classes.
This object is used to listen incoming connections.
Constructor.
Starts the server.
Stops the server.
This method is implemented by derived classes to create appropriate connection listener to listen incoming connection requets.
Handles CommunicationChannelConnected event of _connectionListener object.
Source of event
Event arguments
Handles Disconnected events of all connected clients.
Source of event
Event arguments
Raises ClientConnected event.
Connected client
Raises ClientDisconnected event.
Disconnected client
This event is raised when a new client is connected.
This event is raised when a client disconnected from the server.
Gets/sets wire protocol that is used while reading and writing messages.
A collection of clients that are connected to the server.
This message is used to send/receive a raw byte array as message data.
Default empty constructor.
Creates a new ScsRawDataMessage object with MessageData property.
Message data that is being transmitted
Creates a new reply ScsRawDataMessage object with MessageData property.
Message data that is being transmitted
Replied message id if this is a reply for
a message.
Creates a string to represents this object.
A string to represents this object
Message data that is being transmitted.
Stores service client informations to be used by an event.
Creates a new ServiceClientEventArgs object.
Client that is associated with this event
Client that is associated with this event.
Implements IScsServiceClient.
It is used to manage and monitor a service client.
Represents a client that uses a SDS service.
Closes client connection.
Gets the client proxy interface that provides calling client methods remotely.
Type of client interface
Client interface
This event is raised when client is disconnected from service.
Unique identifier for this client.
Gets endpoint of remote application.
Gets the communication state of the Client.
Reference to underlying IScsServerClient object.
This object is used to send messages to client.
Last created proxy object to invoke remote medhods.
Creates a new ScsServiceClient object.
Reference to underlying IScsServerClient object
RequestReplyMessenger to send messages
Closes client connection.
Gets the client proxy interface that provides calling client methods remotely.
Type of client interface
Client interface
Handles disconnect event of _serverClient object.
Source of event
Event arguments
Raises Disconnected event.
This event is raised when this client is disconnected from server.
Unique identifier for this client.
Gets endpoint of remote application.
Gets the communication state of the Client.
This class is used to store key-value based items in a thread safe manner.
It uses System.Collections.Generic.SortedList internally.
Key type
Value type
Internal collection to store items.
Used to synchronize access to _items list.
Creates a new ThreadSafeSortedList object.
Checks if collection contains spesified key.
Key to check
True; if collection contains given key
Checks if collection contains spesified item.
Item to check
True; if collection contains given item
Removes an item from collection.
Key of item to remove
Gets all items in collection.
Item list
Removes all items from list.
Gets then removes all items in collection.
Item list
Gets/adds/replaces an item by key.
Key to get/set value
Item associated with this key
Gets count of items in the collection.
This class is used to simplify TCP socket operations.
This code is used to connect to a TCP socket with timeout option.
IP endpoint of remote server
Timeout to wait until connect
Socket object connected to server
Throws SocketException if can not connect.
Throws TimeoutException if can not connect within specified timeoutMs
This class is used to communicate with server over TCP/IP protocol.
This class provides base functionality for client classes.
Default timeout value for connecting a server.
The communication channel that is used by client to send and receive messages.
This timer is used to send PingMessage messages to server periodically.
Constructor.
Connects to server.
Disconnects from server.
Does nothing if already disconnected.
Disposes this object and closes underlying connection.
Sends a message to the server.
Message to be sent
Throws a CommunicationStateException if client is not connected to the server.
This method is implemented by derived classes to create appropriate communication channel.
Ready communication channel to communicate
Handles MessageReceived event of _communicationChannel object.
Source of event
Event arguments
Handles MessageSent event of _communicationChannel object.
Source of event
Event arguments
Handles Disconnected event of _communicationChannel object.
Source of event
Event arguments
Handles Elapsed event of _pingTimer to send PingMessage messages to server.
Source of event
Event arguments
Raises Connected event.
Raises Disconnected event.
Raises MessageReceived event.
Received message
Raises MessageSent event.
Received message
This event is raised when a new message is received.
This event is raised when a new message is sent without any error.
It does not guaranties that message is properly handled and processed by remote application.
This event is raised when communication channel closed.
This event is raised when client disconnected from server.
Timeout for connecting to a server (as milliseconds).
Default value: 15 seconds (15000 ms).
Gets/sets wire protocol that is used while reading and writing messages.
Gets the communication state of the Client.
Gets the time of the last succesfully received message.
Gets the time of the last succesfully received message.
The endpoint address of the server.
Creates a new ScsTcpClient object.
The endpoint address to connect to the server
Creates a communication channel using ServerIpAddress and ServerPort.
Ready communication channel to communicate
Represens a TCP end point in SCS.
Represents a server side end point in SCS.
Create a Scs End Point from a string.
Address must be formatted as: protocol://address
For example: tcp://89.43.104.179:10048 for a TCP endpoint with
IP 89.43.104.179 and port 10048.
Address to create endpoint
Created end point
Creates a Scs Server that uses this end point to listen incoming connections.
Scs Server
Creates a Scs Server that uses this end point to connect to server.
Scs Client
Creates a new ScsTcpEndPoint object with specified port number.
Listening TCP Port for incoming connection requests on server
Creates a new ScsTcpEndPoint object with specified IP address and port number.
IP address of the server
Listening TCP Port for incoming connection requests on server
Creates a new ScsTcpEndPoint from a string address.
Address format must be like IPAddress:Port (For example: 127.0.0.1:10085).
TCP end point Address
Created ScsTcpEndpoint object
Creates a Scs Server that uses this end point to listen incoming connections.
Scs Server
Creates a Scs Client that uses this end point to connect to server.
Scs Client
Generates a string representation of this end point object.
String representation of this end point object
IP address of the server.
Listening TCP Port for incoming connection requests on server.
Any SCS Service interface class must has this attribute.
Creates a new ScsServiceAttribute object.
Service Version. This property can be used to indicate the code version.
This value is sent to client application on an exception, so, client application can know that service version is changed.
Default value: NO_VERSION.
This class adds SendMessageAndWaitForResponse(...) and SendAndReceiveMessage methods
to a IMessenger for synchronous request/response style messaging.
It also adds queued processing of incoming messages.
Type of IMessenger object to use as underlying communication
Default Timeout value.
This messages are waiting for a response those are used when
SendMessageAndWaitForResponse is called.
Key: MessageID of waiting request message.
Value: A WaitingMessage instance.
This object is used to process incoming messages sequentially.
This object is used for thread synchronization.
Creates a new RequestReplyMessenger.
IMessenger object to use as underlying communication
Starts the messenger.
Stops the messenger.
Cancels all waiting threads in SendMessageAndWaitForResponse method and stops message queue.
SendMessageAndWaitForResponse method throws exception if there is a thread that is waiting for response message.
Also stops incoming message processing and deletes all messages in incoming message queue.
Calls Stop method of this object.
Sends a message.
Message to be sent
Sends a message and waits a response for that message.
Response message is matched with RepliedMessageId property, so if
any other message (that is not reply for sent message) is received
from remote application, it is not considered as a reply and is not
returned as return value of this method.
MessageReceived event is not raised for response messages.
message to send
Response message
Sends a message and waits a response for that message.
Response message is matched with RepliedMessageId property, so if
any other message (that is not reply for sent message) is received
from remote application, it is not considered as a reply and is not
returned as return value of this method.
MessageReceived event is not raised for response messages.
message to send
Timeout duration as milliseconds.
Response message
Throws TimeoutException if can not receive reply message in timeout value
Throws CommunicationException if communication fails before reply message.
Handles MessageReceived event of Messenger object.
Source of event
Event arguments
Handles MessageSent event of Messenger object.
Source of event
Event arguments
Raises MessageReceived event.
Received message
Raises MessageSent event.
Received message
This event is raised when a new message is received from underlying messenger.
This event is raised when a new message is sent without any error.
It does not guaranties that message is properly handled and processed by remote application.
Gets/sets wire protocol that is used while reading and writing messages.
Gets the time of the last succesfully received message.
Gets the time of the last succesfully received message.
Gets the underlying IMessenger object.
Timeout value as milliseconds to wait for a receiving message on
SendMessageAndWaitForResponse and SendAndReceiveMessage methods.
Default value: 60000 (1 minute).
This class is used to store messaging context for a request message
until response is received.
Creates a new WaitingMessage object.
Response message for request message
(null if response is not received yet).
ManualResetEvent to block thread until response is received.
State of the request message.
This enum is used to store the state of a waiting message.
Still waiting for response.
Message sending is cancelled.
Response is properly received.
This class is a timer that performs some tasks periodically.
This timer is used to perfom the task at spesified intervals.
Indicates that whether timer is running or stopped.
Indicates that whether performing the task or _taskTimer is in sleep mode.
This field is used to wait executing tasks when stopping Timer.
Creates a new Timer.
Task period of timer (as milliseconds)
Creates a new Timer.
Task period of timer (as milliseconds)
Indicates whether timer raises Elapsed event on Start method of Timer for once
Starts the timer.
Stops the timer.
Waits the service to stop.
This method is called by _taskTimer.
Not used argument
This event is raised periodically according to Period of Timer.
Task period of timer (as milliseconds).
Indicates whether timer raises Elapsed event on Start method of Timer for once.
Default: False.
This application is thrown if communication is not expected state.
This application is thrown in a communication error.
Contstructor.
Contstructor for serializing.
Contstructor.
Exception message
Contstructor.
Exception message
Inner exception
Contstructor.
Contstructor for serializing.
Contstructor.
Exception message
Contstructor.
Exception message
Inner exception
Stores client information to be used by an event.
Creates a new ServerClientEventArgs object.
Client that is associated with this event
Client that is associated with this event.
This class represents a client in server side.
Represents a client from a perspective of a server.
Disconnects from server.
This event is raised when client disconnected from server.
Unique identifier for this client in server.
Gets endpoint of remote application.
Gets the current communication state.
The communication channel that is used by client to send and receive messages.
Creates a new ScsClient object.
The communication channel that is used by client to send and receive messages
Disconnects from client and closes underlying communication channel.
Sends a message to the client.
Message to be sent
Handles Disconnected event of _communicationChannel object.
Source of event
Event arguments
Handles MessageReceived event of _communicationChannel object.
Source of event
Event arguments
Handles MessageSent event of _communicationChannel object.
Source of event
Event arguments
Raises Disconnected event.
Raises MessageReceived event.
Received message
Raises MessageSent event.
Received message
This event is raised when a new message is received.
This event is raised when a new message is sent without any error.
It does not guaranties that message is properly handled and processed by remote application.
This event is raised when client is disconnected from server.
Unique identifier for this client in server.
Gets the communication state of the Client.
Gets/sets wire protocol that is used while reading and writing messages.
Gets endpoint of remote application.
Gets the time of the last succesfully received message.
Gets the time of the last succesfully received message.
This class is used to listen and accept incoming TCP
connection requests on a TCP port.
This class provides base functionality for communication listener classes.
Starts listening incoming connections.
Stops listening incoming connections.
Raises CommunicationChannelConnected event.
This event is raised when a new communication channel is connected.
The endpoint address of the server to listen incoming connections.
Server socket to listen incoming connection requests.
The thread to listen socket
A flag to control thread's running
Creates a new TcpConnectionListener for given endpoint.
The endpoint address of the server to listen incoming connections
Starts listening incoming connections.
Stops listening incoming connections.
Starts listening socket.
Stops listening socket.
Entrance point of the thread.
This method is used by the thread to listen incoming requests.
Implements IScsServiceApplication and provides all functionallity.
Represents a SCS Service Application that is used to construct and manage a SCS service.
Starts service application.
Stops service application.
Adds a service object to this service application.
Only single service object can be added for a service interface type.
Service interface type
Service class type. Must be delivered from ScsService and must implement TServiceInterface.
An instance of TServiceClass.
Removes a previously added service object from this service application.
It removes object according to interface type.
Service interface type
True: removed. False: no service object with this interface
This event is raised when a new client connected to the service.
This event is raised when a client disconnected from the service.
Underlying IScsServer object to accept and manage client connections.
User service objects that is used to invoke incoming method invocation requests.
Key: Service interface type's name.
Value: Service object.
All connected clients to service.
Key: Client's unique Id.
Value: Reference to the client.
Creates a new ScsServiceApplication object.
Underlying IScsServer object to accept and manage client connections
Throws ArgumentNullException if scsServer argument is null
Starts service application.
Stops service application.
Adds a service object to this service application.
Only single service object can be added for a service interface type.
Service interface type
Service class type. Must be delivered from ScsService and must implement TServiceInterface.
An instance of TServiceClass.
Throws ArgumentNullException if service argument is null
Throws Exception if service is already added before
Removes a previously added service object from this service application.
It removes object according to interface type.
Service interface type
True: removed. False: no service object with this interface
Handles ClientConnected event of _scsServer object.
Source of event
Event arguments
Handles ClientDisconnected event of _scsServer object.
Source of event
Event arguments
Handles MessageReceived events of all clients, evaluates each message,
finds appropriate service object and invokes appropriate method.
Source of event
Event arguments
Sends response to the remote application that invoked a service method.
Client that sent invoke message
Request message
Return value to send
Exception to send
Raises ClientConnected event.
Raises ClientDisconnected event.
This event is raised when a new client connected to the service.
This event is raised when a client disconnected from the service.
Represents a user service object.
It is used to invoke methods on a ScsService object.
This collection stores a list of all methods of service object.
Key: Method name
Value: Informations about method.
Creates a new ServiceObject.
Type of service interface
The service object that is used to invoke methods on
Invokes a method of Service object.
Name of the method to invoke
Parameters of method
Return value of method
The service object that is used to invoke methods on.
ScsService attribute of Service object's class.
Communication states.
Connected.
Disconnected.
This class is a wrapper for IMessenger and is used
to synchronize message receiving operation.
It extends RequestReplyMessenger.
It is suitable to use in applications those want to receive
messages by synchronized method calls instead of asynchronous
MessageReceived event.
A queue that is used to store receiving messages until Receive(...)
method is called to get them.
This object is used to synchronize/wait threads.
This boolean value indicates the running state of this class.
Creates a new SynchronizedMessenger object.
A IMessenger object to be used to send/receive messages
Creates a new SynchronizedMessenger object.
A IMessenger object to be used to send/receive messages
capacity of the incoming message queue
Starts the messenger.
Stops the messenger.
This method is used to receive a message from remote application.
It waits until a message is received.
Received message
This method is used to receive a message from remote application.
It waits until a message is received or timeout occurs.
Timeout value to wait if no message is received.
Use -1 to wait indefinitely.
Received message
Throws TimeoutException if timeout occurs
Throws Exception if SynchronizedMessenger stops before a message is received
This method is used to receive a specific type of message from remote application.
It waits until a message is received.
Received message
This method is used to receive a specific type of message from remote application.
It waits until a message is received or timeout occurs.
Timeout value to wait if no message is received.
Use -1 to wait indefinitely.
Received message
Overrides
Gets/sets capacity of the incoming message queue.
No message is received from remote application if
number of messages in internal queue exceeds this value.
Default value: int.MaxValue (2147483647).
Stores message to be used by an event.
Creates a new MessageEventArgs object.
Message object that is associated with this event
Message object that is associated with this event.
This class is used to automatically re-connect to server if disconnected.
It attempts to reconnect to server periodically until connection established.
Reference to client object.
Timer to attempt ro reconnect periodically.
Indicates the dispose state of this object.
Creates a new ClientReConnecter object.
It is not needed to start ClientReConnecter since it automatically
starts when the client disconnected.
Reference to client object
Throws ArgumentNullException if client is null.
Disposes this object.
Does nothing if already disposed.
Handles Disconnected event of _client object.
Source of the event
Event arguments
Hadles Elapsed event of _reconnectTimer.
Source of the event
Event arguments
Reconnect check period.
Default: 20 seconds.
This class is used to create service client objects that is used in server-side.
Creates a new service client object that is used in server-side.
Underlying server client object
RequestReplyMessenger object to send/receive messages over serverClient
This class is used to create SCS servers.
Creates a new SCS Server using an EndPoint.
Endpoint that represents address of the server
Created TCP server
This class is used to build service clients to remotely invoke methods of a SCS service.
Creates a client to connect to a SCS service.
Type of service interface for remote method call
EndPoint of the server
Client-side object that handles remote method calls from server to client.
May be null if client has no methods to be invoked by server
Created client object to connect to the server
Creates a client to connect to a SCS service.
Type of service interface for remote method call
EndPoint address of the server
Client-side object that handles remote method calls from server to client.
May be null if client has no methods to be invoked by server
Created client object to connect to the server
This class is used to process items sequentially in a multithreaded manner.
Type of item to process
The method delegate that is called to actually process items.
Item queue. Used to process items sequentially.
A reference to the current Task that is processing an item in
ProcessItem method.
Indicates state of the item processing.
A boolean value to control running of SequentialItemProcessor.
An object to synchronize threads.
Creates a new SequentialItemProcessor object.
The method delegate that is called to actually process items
Adds an item to queue to process the item.
Item to add to the queue
Starts processing of items.
Stops processing of items and waits stopping of current item.
This method runs on a new seperated Task (thread) to process
items on the queue.
This class is used to create a TCP server.
The endpoint address of the server to listen incoming connections.
Creates a new ScsTcpServer object.
The endpoint address of the server to listen incoming connections
Creates a TCP connection listener.
Created listener object
This class is used to get default protocols.
Creates a default wire protocol factory object to be used on communicating of applications.
A new instance of default wire protocol
Creates a default wire protocol object to be used on communicating of applications.
A new instance of default wire protocol
This message is sent as response message to a ScsRemoteInvokeMessage.
It is used to send return value of method invocation.
Represents this object as string.
String representation of this object
Return value of remote method invocation.
If any exception occured during method invocation, this field contains Exception object.
If no exception occured, this field is null.