|
using System;
using Hik.Communication.Scs.Client;
using Hik.Communication.Scs.Communication.EndPoints.Tcp;
using Hik.Communication.Scs.Server;
namespace Hik.Communication.Scs.Communication.EndPoints
{
///<summary>
/// Represents a server side end point in SCS.
///</summary>
public abstract class ScsEndPoint
{
/// <summary>
/// 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.
/// </summary>
/// <param name="endPointAddress">Address to create endpoint</param>
/// <returns>Created end point</returns>
public static ScsEndPoint CreateEndPoint(string endPointAddress)
{
//Check if end point address is null
if (string.IsNullOrEmpty(endPointAddress))
{
throw new ArgumentNullException("endPointAddress");
}
//If not protocol specified, assume TCP.
var endPointAddr = endPointAddress;
if (!endPointAddr.Contains("://"))
{
endPointAddr = "tcp://" + endPointAddr;
}
//Split protocol and address parts
var splittedEndPoint = endPointAddr.Split(new[] { "://" }, StringSplitOptions.RemoveEmptyEntries);
if (splittedEndPoint.Length != 2)
{
throw new ApplicationException(endPointAddress + " is not a valid endpoint address.");
}
//Split end point, find protocol and address
var protocol = splittedEndPoint[0].Trim().ToLower();
var address = splittedEndPoint[1].Trim();
switch (protocol)
{
case "tcp":
return new ScsTcpEndPoint(address);
default:
throw new ApplicationException("Unsupported protocol " + protocol + " in end point " + endPointAddress);
}
}
/// <summary>
/// Creates a Scs Server that uses this end point to listen incoming connections.
/// </summary>
/// <returns>Scs Server</returns>
internal abstract IScsServer CreateServer();
/// <summary>
/// Creates a Scs Server that uses this end point to connect to server.
/// </summary>
/// <returns>Scs Client</returns>
internal abstract IScsClient CreateClient();
}
}
|
By viewing downloads associated with this article you agree to the Terms of Service and the article's licence.
If a file you wish to view isn't highlighted, and is a text file (not binary), please
let us know and we'll add colourisation support for it.
I have started programming at 14 years old using Pascal as hobby. Then I interested in web development (HTML, JavaScript, ASP...) before university.
I graduated from Sakarya University Computer Engineering. At university, I learned C++, Visual Basic.NET, C#, ASP.NET and Java. I partly implemented ARP, IP and TCP protocols in Java as my final term project.
Now, I am working on Windows and web based software development mostly using Microsoft technologies in my own company.
My open source projects:
* ABP Framework:
https://abp.io
* jTable:
http://jtable.org
* Others:
https://github.com/hikalkan
My personal web site:
https://halilibrahimkalkan.com