예제 #1
0
        /// <summary>
        /// Connection through which rate controller conects to network agent socket app.
        /// </summary>
        /// <param name="callbacks"></param>
        /// <param name="hostName"></param>
        /// <param name="locPort"></param>
        /// <param name="remPort"></param>
        public Connection(IConnectionCallback callbacks, string hostName, int locPort, int remPort)
        {
            this.callbacks = callbacks;
            ListQueues     = new List <OktoQueue>();
            ListRap        = new List <RAP>();
            DictIoFlows    = new Dictionary <uint, Flow>();
            sock           = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
            receiveContext = new CallbackContext(sock);
            this.hostName  = hostName;
            this.locPort   = locPort;
            this.remPort   = remPort;
            sendBuffer     = new byte[SOCK_SEND_BUFFER_SIZE];
            locEndPoint    = new IPEndPoint(IPAddress.Any, locPort);
            receiveBuffer  = new byte[SOCK_RCV_BUFFER_SIZE];
            messageHeader  = new MessageHeader();

            // Avoid winsock buffering and Nagle delays on small TCP sends.
            // Ref http://msdn.microsoft.com/en-us/library/ms817942.aspx
#if gregos // ToDo: one or both sockopts sometimes stalling master->agent connection
            sock.SetSocketOption(SocketOptionLevel.Socket, SocketOptionName.SendBuffer, 0);
            sock.SetSocketOption(SocketOptionLevel.Tcp, SocketOptionName.NoDelay, true);
            sock.SetSocketOption(SocketOptionLevel.Tcp, SocketOptionName.Linger, false);
#endif
            sock.Connect(hostName, remPort);
        }
예제 #2
0
        /// <summary>
        /// Connection on which an IoFlowAgent listens.
        /// </summary>
        /// <param name="callbacks"></param>
        public Connection(IConnectionCallback callbacks)
        {
            this.callbacks = callbacks;
            receiveContext = new CallbackContext(sock);
            this.locPort   = AgentPort;
            sendBuffer     = new byte[SOCK_SEND_BUFFER_SIZE];
            locEndPoint    = new IPEndPoint(IPAddress.Any, locPort);
            receiveBuffer  = new byte[SOCK_RCV_BUFFER_SIZE];
            messageHeader  = new MessageHeader();
            sockListen     = new Socket(locEndPoint.Address.AddressFamily, SocketType.Stream, ProtocolType.Tcp);
            ListSock.Add(sockListen);
            sockListen.Bind(locEndPoint);
            const int LISTEN_BACKLOG = 256;

            sockListen.Listen(LISTEN_BACKLOG);
            sockListen.BeginAccept(new AsyncCallback(acceptComplete), new CallbackContext(sockListen));
        }
예제 #3
0
 public static bool TryConnect(string ssid, string pass, int type, IConnectionCallback connectionCallback)
 {
     if (Application.platform == RuntimePlatform.Android)
     {
         using (var javaUnityPlayer = new AndroidJavaClass("com.unity3d.player.UnityPlayer"))
         {
             using (var currentActivity = javaUnityPlayer.GetStatic <AndroidJavaObject>("currentActivity"))
             {
                 using (var androidPlugin = new AndroidJavaClass("eetac.cities1.wificonn.WifiPlugin"))
                 {
                     ConnectionCallbackProxy conn = new ConnectionCallbackProxy(connectionCallback);
                     return(androidPlugin.CallStatic <bool>("tryConnect", ssid, pass, type, conn));
                 }
             }
         }
     }
     return(false);
 }
 public void SetConnectionCallback(IConnectionCallback connectionCallback)
 {
     mConnectionCallback = connectionCallback;
 }
예제 #5
0
 public ConnectionCallbackProxy(IConnectionCallback connectionCallback) : base("eetac.cities1.wificonn.WifiPlugin$ConnectionCallback")
 {
     this.connectionCallback = connectionCallback;
 }
예제 #6
0
 /// <summary>
 /// Connection on which an IoFlowAgent listens.
 /// </summary>
 /// <param name="callbacks"></param>
 public Connection(IConnectionCallback callbacks)
 {
     this.callbacks = callbacks;
     receiveContext = new CallbackContext(sock);
     this.locPort = AgentPort;
     sendBuffer = new byte[SOCK_SEND_BUFFER_SIZE];
     locEndPoint = new IPEndPoint(IPAddress.Any, locPort);
     receiveBuffer = new byte[SOCK_RCV_BUFFER_SIZE];
     messageHeader = new MessageHeader();
     sockListen = new Socket(locEndPoint.Address.AddressFamily, SocketType.Stream, ProtocolType.Tcp);
     ListSock.Add(sockListen);
     sockListen.Bind(locEndPoint);
     const int LISTEN_BACKLOG = 256;
     sockListen.Listen(LISTEN_BACKLOG);
     sockListen.BeginAccept(new AsyncCallback(acceptComplete), new CallbackContext(sockListen));
 }
예제 #7
0
        /// <summary>
        /// Connection through which rate controller conects to network agent socket app.
        /// </summary>
        /// <param name="callbacks"></param>
        /// <param name="hostName"></param>
        /// <param name="locPort"></param>
        /// <param name="remPort"></param>
        public Connection(IConnectionCallback callbacks, string hostName, int locPort, int remPort)
        {
            this.callbacks = callbacks;
            ListQueues = new List<OktoQueue>();
            ListRap = new List<RAP>();
            DictIoFlows = new Dictionary<uint, Flow>();
            sock = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
            receiveContext = new CallbackContext(sock);
            this.hostName = hostName;
            this.locPort = locPort;
            this.remPort = remPort;
            sendBuffer = new byte[SOCK_SEND_BUFFER_SIZE];
            locEndPoint = new IPEndPoint(IPAddress.Any, locPort);
            receiveBuffer = new byte[SOCK_RCV_BUFFER_SIZE];
            messageHeader = new MessageHeader();

            // Avoid winsock buffering and Nagle delays on small TCP sends.
            // Ref http://msdn.microsoft.com/en-us/library/ms817942.aspx
            #if gregos // ToDo: one or both sockopts sometimes stalling master->agent connection
            sock.SetSocketOption(SocketOptionLevel.Socket, SocketOptionName.SendBuffer, 0);
            sock.SetSocketOption(SocketOptionLevel.Tcp, SocketOptionName.NoDelay, true);
            sock.SetSocketOption(SocketOptionLevel.Tcp, SocketOptionName.Linger, false);
            #endif
            sock.Connect(hostName, remPort);
        }
예제 #8
0
 public ConnectionMapper(INodeInstance nodeInstance, IConnectionCallback callback)
 {
     this.nodeInstance = nodeInstance ?? throw new ArgumentNullException(nameof(nodeInstance));
     this.callback     = callback ?? throw new ArgumentNullException(nameof(callback));
 }
예제 #9
0
 /// <summary>
 /// Register a Callback to be called when connected or disconnected from the Custom Tabs Service. </summary>
 /// <param name="connectionCallback"> </param>
 public virtual void setConnectionCallback(IConnectionCallback connectionCallback)
 {
     this.mConnectionCallback = connectionCallback;
 }