static int _m_Connect(RealStatePtr L)
        {
            try {
                ObjectTranslator translator = ObjectTranslatorPool.Instance.Find(L);


                WsGame __cl_gen_to_be_invoked = (WsGame)translator.FastGetCSObj(L, 1);



                {
                    string            url        = LuaAPI.lua_tostring(L, 2);
                    ConnectCallback   callback   = translator.GetDelegate <ConnectCallback>(L, 3);
                    OnMessageCallback msgHandler = translator.GetDelegate <OnMessageCallback>(L, 4);

                    __cl_gen_to_be_invoked.Connect(url, callback, msgHandler);



                    return(0);
                }
            } catch (System.Exception __gen_e) {
                return(LuaAPI.luaL_error(L, "c# exception:" + __gen_e));
            }
        }
Esempio n. 2
0
        public Exception DeltaUploadProject(string fileName, string projectId,
                                            OnProgressCallback progressCb, OnMessageCallback messageCallback, OnSuccessCallback <CosResult> successCb,
                                            OnFailedCallback failedCb)
        {
            var filePath = Path.GetFullPath(fileName);

            if (!File.Exists(filePath))
            {
                failedCb(
                    new CosClientException(COS_STATUS.CLIENT_ERR,
                                           string.Format(COS_MSG.ERR_CLIENT_TARGET_NOT_EXIST, fileName)),
                    new CosServerException(COS_STATUS.CLIENT_ERR, COS_MSG.ERR_CLIENT)
                    );
            }

            var fileKey = $"{projectId}/{Path.GetFileName(fileName)}";

            if (CheckFileExists(sourceBucket, fileKey))
            {
                successCb(CreateTaskResult(COS_STATUS.SKIP,
                                           string.Format(COS_MSG.INFO_TARGET_EXIST_ON_SERVER, fileName)));
                return(null);
            }

            if (CheckFileExists(deltaBucket, $"{projectId}/{BASE_META}"))
            {
                _DeltaUpdateProject(filePath, projectId, progressCb, messageCallback, successCb, failedCb);
            }
            else
            {
                _InitProject(filePath, projectId, progressCb, messageCallback, successCb, failedCb);
            }

            return(new Exception());
        }
Esempio n. 3
0
 void logger_OnLogMessage(string message)
 {
     if (dataGridView_log.InvokeRequired)
     {
         OnMessageCallback d = new OnMessageCallback(logger_OnLogMessage);
         this.Invoke(d, new object[] { message });
     }
     else
     {
         dataGridView_log.Rows.Add(message);
         dataGridView_log.FirstDisplayedScrollingRowIndex = dataGridView_log.RowCount - 1;
         //listViewLog.BeginUpdate();
         //ListViewItem item = dataGridView_log.Items.Add(message);
         if (message.Contains(" Warning:"))
         {
             dataGridView_log.Rows[dataGridView_log.RowCount - 1].Cells[0].Style.ForeColor = Color.Blue;
         }
         else if (message.Contains(" Error:"))
         {
             dataGridView_log.Rows[dataGridView_log.RowCount - 1].Cells[0].Style.ForeColor = Color.Red;
         }
         //item.ForeColor = Color.Red;
         //item.ForeColor = Color.Blue;
         //item.EnsureVisible();
         //listViewLog.EndUpdate();
     }
 }
Esempio n. 4
0
        public ISubscription Subscribe(string topic, OnMessageCallback onMessage)
        {
            var subscription = CreateEmptySubscription();

            subscription.SubscribeTopic(topic);
            subscription.OnMessage += onMessage;
            return(subscription);
        }
Esempio n. 5
0
        public void AsyncUploadProject(string fileName, string projectId,
                                       OnProgressCallback progressCb, OnMessageCallback messageCallback, OnSuccessCallback <CosResult> successCb,
                                       OnFailedCallback failedCb)
        {
            Func <string, string, OnProgressCallback, OnMessageCallback, OnSuccessCallback <CosResult>, OnFailedCallback,
                  Exception> fun = DeltaUploadProject;

            fun.BeginInvoke(fileName, projectId, progressCb, messageCallback, successCb, failedCb,
                            ar => { Console.WriteLine(ar.AsyncState); }, fun);
        }
Esempio n. 6
0
        /// <summary>
        /// Call back method to handle incoming m_data.
        /// </summary>
        /// <param name="ar">Status of an asynchronous operation.</param>
        private void OnDataReceived(IAsyncResult ar)
        {
            int bytesRead = 0;

            byte [] readData = null;

            // Retrieve the state object and the handler socket
            // from the async state object.
            SocketPacket theSockId = ar.AsyncState as SocketPacket;

            if ((theSockId == null) || (theSockId.Socket == null))
            {
                return;
            }

            try
            {
                // Read m_data from the client socket.
                bytesRead = theSockId.Socket.EndReceiveFrom(ar, ref _remoteEndPoint);

                if (bytesRead > 0)
                {
                    readData = theSockId.GetBufferBytes(bytesRead);
                }

                WaitForData();
            }
            catch (ObjectDisposedException)
            {
                Debug.WriteLine("OnDataReceived: Socket has been closed");
            }
            catch (SocketException exc)
            {
                Debug.WriteLine("Error receiving m_data: " + exc.ToString());

                // If this is this is a connection socket then
                // re-use it
                if (_connectionless == false)
                {
                    WaitForConnection();
                }
            }
            if (readData != null)
            {
                OnMessageCallback msgCallback = _onMessage;

                // Processing after restarting another recieve call
                // just to speed things up
                if (msgCallback != null)
                {
                    msgCallback(readData);
                }
            }
        }
Esempio n. 7
0
 public void Register(OnConnectCallback onconnect, OnCloseCallback onclose, OnMessageCallback onmessage, LogType log = null)
 {
     this.onconnect = onconnect;
     this.onclose   = onclose;
     this.onmessage = onmessage;
     this.log       = log;
     if (this.log == null)
     {
         this.log = Console.WriteLine;
     }
 }
Esempio n. 8
0
 public void UnregisterForTopics(OnMessageCallback cb, List <string> topics)
 {
     lock (callbacksLocker) {
         foreach (var topic in topics)
         {
             if (callbacks.ContainsKey(topic))
             {
                 callbacks[topic].Remove(cb);
             }
         }
     }
 }
Esempio n. 9
0
 void logger_OnLogMessage(string message)
 {
     if (listView_Log.InvokeRequired)
     {
         OnMessageCallback d = new OnMessageCallback(logger_OnLogMessage);
         this.Invoke(d, new object[] { message });
     }
     else
     {
         listView_Log.BeginUpdate();
         ListViewItem item = listView_Log.Items.Add(message);
         item.EnsureVisible();
         listView_Log.EndUpdate();
     }
 }
Esempio n. 10
0
        public void UploadProject(string fileName, string projectId,
                                  OnProgressCallback progressCb, OnMessageCallback messageCallback, OnSuccessCallback <CosResult> successCb,
                                  OnFailedCallback failedCb)
        {
            var filePath = Path.GetFullPath(fileName);
            var fileKey  = $"{projectId}/{Path.GetFileName(fileName)}";

            if (CheckFileExists(sourceBucket, fileKey))
            {
                successCb(CreateTaskResult(COS_STATUS.SKIP,
                                           string.Format(COS_MSG.INFO_TARGET_EXIST_ON_SERVER, fileName)));
                return;
            }

            _InitProject(filePath, projectId, progressCb, messageCallback,
                         successCb, failedCb);
        }
Esempio n. 11
0
    public void Connect(string url, ConnectCallback callback, OnMessageCallback msgHandler)
    {
        if (this._ws != null)
        {
            this._callback = null;
            this._ws.Close();
        }
        this._callback    = callback;
        this._msgCallback = msgHandler;

        _ws            = new WebSocket(url);
        _ws.OnOpen    += OnOpen;
        _ws.OnMessage += OnMessage;
        _ws.OnError   += OnError;
        _ws.OnClose   += OnClose;

        _ws.ConnectAsync();
    }
Esempio n. 12
0
        private void _InitProject(string filePath, string projectId,
                                  OnProgressCallback progressCb, OnMessageCallback messageCallback, OnSuccessCallback <CosResult> successCb,
                                  OnFailedCallback failedCb)
        {
            var localDir      = Path.GetDirectoryName(filePath);
            var fileKey       = $"{projectId}/{Path.GetFileName(filePath)}";
            var signatureKey  = $"{fileKey}{SIG_SUFFIX}";
            var signaturePath = $"{filePath}{SIG_SUFFIX}";
            var baseMetaKey   = $"{projectId}/{BASE_META}";
            var baseMetaPath  = $"{localDir}/{BASE_META}";

            clearOldFiles(baseMetaPath, signaturePath);
            AutoResetEvent signatureEvent = new AutoResetEvent(false);
            AutoResetEvent baseMetaEvent  = new AutoResetEvent(false);

            messageCallback(COS_MSG.TITLE_UPLOADING_PROJECT,
                            string.Format(COS_MSG.INFO_UPLOADING_PROJECT, fileKey));
            UploadFile(sourceBucket, fileKey, filePath, progressCb,
                       delegate(CosResult result1)
            {
                signatureEvent.WaitOne();
                messageCallback(COS_MSG.TITLE_UPLOADING_SIG_FILE,
                                string.Format(COS_MSG.INFO_UPLOADING_SIG_FILE, signatureKey));
                UploadFile(deltaBucket, signatureKey, signaturePath, progressCb,
                           delegate(CosResult result)
                {
                    baseMetaEvent.WaitOne();
                    messageCallback(COS_MSG.TITLE_UPLOADING_META_FILE,
                                    string.Format(COS_MSG.INFO_UPLOADING_META_FILE, baseMetaKey));
                    UploadFile(deltaBucket, baseMetaKey, baseMetaPath, progressCb,
                               delegate(CosResult cosResult)
                    {
                        clearOldFiles(baseMetaPath, signaturePath);
                        successCb(
                            CreateTaskResult(COS_STATUS.OK,
                                             string.Format(COS_MSG.INFO_INIT_SUCCESS, filePath, projectId)));
                    }, failedCb);
                }, failedCb);
            }, failedCb);

            AsyncCreateSignature(filePath, signaturePath, () => { signatureEvent.Set(); });
            AsyncCreateBaseMeta(filePath, fileKey, signatureKey, projectId, baseMetaPath,
                                () => { baseMetaEvent.Set(); });
        }
Esempio n. 13
0
 public void RegisterForTopics(OnMessageCallback cb, List <string> topics)
 {
     lock (callbacksLocker) {
         foreach (var topic in topics)
         {
             if (callbacks.ContainsKey(topic))
             {
                 callbacks[topic].Add(cb);
             }
             else
             {
                 callbacks[topic] = new List <OnMessageCallback>()
                 {
                     cb
                 };
             }
         }
     }
 }
Esempio n. 14
0
 public void OnMessage(IMessage message)
 {
     // InvokeRequired required compares the thread ID of the
     // calling thread to the thread ID of the creating thread.
     // If these threads are different, it returns true.
     if (this.rtxtMsgRcv.InvokeRequired)
     {
         OnMessageCallback d = new OnMessageCallback(OnMessage);
         this.Invoke(d, new object[] { message });
     }
     else
     {
         try
         {
             ITextMessage msg = (ITextMessage)message;
             string       txt = msg.Text;
             rtxtMsgRcv.AppendText("Message Received " + timeStamp(DateTime.Now) + ":  " + txt + "\n");
         }
         catch (Exception e)
         {
             MessageBox.Show("Exception receiving message: " + "\n" + e.Message.ToString());
         }
     }
 }
Esempio n. 15
0
 public void OnMessage(IMessage message)
 {
     // InvokeRequired required compares the thread ID of the
     // calling thread to the thread ID of the creating thread.
     // If these threads are different, it returns true.
     if (this.tboxReceivedMessage.InvokeRequired)
     {
         OnMessageCallback d = new OnMessageCallback(OnMessage);
         this.Invoke(d, new object[] { message });
     }
     else
     {
         try
         {
             ITextMessage msg = (ITextMessage)message;
             string txt = msg.Text;
             tboxReceivedMessage.AppendText("Message Received " + timeStamp(DateTime.Now) + ":  " + txt + "\n");
         }
         catch (Exception e)
         {
             MessageBox.Show("Exception receiving message: " + "\n" + e.Message.ToString());
         }
     }
 }
Esempio n. 16
0
 public void SetMessageHandler(OnMessageCallback func)
 {
     onMessageCallback = func;
 }
 internal static extern void _SetOnMessage(OnMessageCallback callback);
 internal static extern void SetOnMessageDelegate(OnMessageCallback callback);
Esempio n. 19
0
 [DllImport("__Internal")] public static extern int WebSocketSetOnMessage(OnMessageCallback Callback);
Esempio n. 20
0
 public void AddMessageCallback(OnMessageCallback callback)
 {
     messageCallback += callback;
 }
Esempio n. 21
0
 public void AddGuildCreateCallback(OnMessageCallback callback)
 {
     guildCreateCallback += callback;
 }
Esempio n. 22
0
 public static extern void WebSocketSetOnMessage(OnMessageCallback callback);
Esempio n. 23
0
        private void _DeltaUpdateProject(string filePath, string projectId,
                                         OnProgressCallback progressCb, OnMessageCallback messageCb, OnSuccessCallback <CosResult> successCb,
                                         OnFailedCallback failedCb)
        {
            var    localDir          = Path.GetDirectoryName(filePath);
            var    fileName          = Path.GetFileName(filePath);
            var    fileKey           = $"{projectId}/{fileName}";
            var    baseMetaKey       = $"{projectId}/{BASE_META}";
            var    baseMetaPath      = $"{localDir}/{BASE_META}";
            var    deltaKey          = $"{projectId}/{fileName}{DELTA_SUFFIX}";
            var    deltaPath         = $"{filePath}{DELTA_SUFFIX}";
            var    baseSignature     = $"{fileName}{SIG_SUFFIX}";
            var    baseSignaturePath = $"{localDir}/{baseSignature}";
            string hashPattern       = @"(?<=" + projectId + @"/)(.*)(?=\.zip$)";
            string projectHash       = new Regex(hashPattern).Match(fileKey).Value;

            clearOldFiles(baseMetaPath, baseSignaturePath, deltaPath);

            messageCb(COS_MSG.TITLE_DOWNLOADING_META_FILE,
                      string.Format(COS_MSG.INFO_DOWNLOADING_META_FILE, baseMetaKey, $"{localDir}/{BASE_META}"));
            syncDownloadFile(deltaBucket, baseMetaKey, localDir, BASE_META,
                             progressCb, DoNothing, failedCb);
            var metaInfo = JsonConvert.DeserializeObject <MetaInfo>(File.ReadAllText(baseMetaPath));

            if ((float)new FileInfo(filePath).Length / metaInfo.baseFileSize > 1 + DELTA_THRESHOLD)
            {
                clearOldFiles(baseMetaPath);
                _InitProject(filePath, projectId, progressCb, messageCb, successCb, failedCb);
                return;
            }

            ucbFacade.InitDeltaUpload(new DeltaInfo
            {
                baseFileKey  = metaInfo.baseFileName,
                deltaFileKey = $"{fileKey}{DELTA_SUFFIX}",
                newFileKey   = fileKey,
                projectId    = projectId,
                fileHash     = projectHash
            });
            messageCb(COS_MSG.TITLE_DOWNLOADING_SIG_FILE,
                      string.Format(COS_MSG.INFO_DOWNLOADING_SIG_FILE, metaInfo.signatureKey, $"{localDir}/{baseSignature}"));
            syncDownloadFile(deltaBucket, metaInfo.signatureKey, localDir, baseSignature,
                             progressCb, DoNothing, failedCb);

            messageCb(COS_MSG.TITLE_CREATING_DELTA_FILE,
                      string.Format(COS_MSG.INFO_CREATING_DELTA_FILE, deltaPath, filePath, baseSignaturePath));
            CreateDelta(filePath, baseSignaturePath, deltaPath);
            if ((float)new FileInfo(deltaPath).Length / metaInfo.baseFileSize > DELTA_THRESHOLD)
            {
                clearOldFiles(baseMetaPath, baseSignaturePath, deltaPath);
                _InitProject(filePath, projectId, progressCb, messageCb, successCb, failedCb);
                return;
            }

            messageCb(COS_MSG.TITLE_UPLOADING_DELTA_FILE,
                      string.Format(COS_MSG.INFO_UPLOADING_DELTA_FILE, deltaKey));
            UploadFile(deltaBucket, deltaKey, deltaPath, progressCb,
                       delegate(CosResult uploadResult)
            {
                deltaPatch(metaInfo.baseFileName, fileKey, projectId, projectHash);
                clearOldFiles(baseMetaPath, baseSignaturePath, deltaPath);
                messageCb(COS_MSG.TITLE_PATCHING_DELTA_FILE, COS_MSG.INFO_PATCHING_DELTA_FILE);
            }, failedCb);
        }