Exemplo n.º 1
0
        private void OnStreamReq(Datagram datagram)
        {
            StreamReq req = datagram.UnSerialData <StreamReq>();

            if (FileCache.TryGetValue(req.StreamID, out StreamBase value))
            {
                if (StreamType.Download == value.GetStreamType())
                {
                    Download download = value as Download;

                    StreamRes res = new StreamRes
                    {
                        StreamID = req.StreamID,
                        Block    = req.Block,
                        Stream   = download.ReadBlock(req.Block)
                    };

                    datagram.DataType    = DatagramType.Client;
                    datagram.MessageType = CloudDatagramDefine.StreamRes;
                    datagram.Datas       = res.ToByteArray();

                    if (!Send(datagram.ToByteArray()))
                    {
                        Notify(IKXTServer.LogLevel.Error, "数据发送异常");
                        Close();
                    }
                }
            }
        }
Exemplo n.º 2
0
        private void OnStreamRes(Datagram datagram)
        {
            StreamRes res = datagram.UnSerialData <StreamRes>();

            if (FileCache.TryGetValue(res.StreamID, out StreamBase value))
            {
                if (StreamType.Upload == value.GetStreamType())
                {
                    Upload upload = value as Upload;

                    int block = upload.ReceiveBlock(res.Block, res.Stream);

                    if (-1 != block)
                    {
                        StreamReq req = new StreamReq
                        {
                            StreamID = res.StreamID,
                            Block    = block
                        };

                        datagram.DataType    = DatagramType.Client;
                        datagram.MessageType = CloudDatagramDefine.StreamReq;
                        datagram.Datas       = req.ToByteArray();
                    }
                    else
                    {
                        upload.FinishUpload();
                        InfoReader.AddFile
                        (
                            IKXTServer.DataConvert.GetString(datagram.Sender),
                            upload.Path,
                            upload.Name,
                            upload.Length
                        );

                        FileCache.TryRemove(res.StreamID, out _);

                        FileUploadFinish finish = new FileUploadFinish
                        {
                            UploadID = res.StreamID
                        };

                        datagram.DataType    = DatagramType.Client;
                        datagram.MessageType = CloudDatagramDefine.FileUploadFinish;
                        datagram.Datas       = finish.ToByteArray();
                    }

                    if (!Send(datagram.ToByteArray()))
                    {
                        Notify(IKXTServer.LogLevel.Error, "数据发送异常");
                        Close();
                    }
                }
            }
        }
Exemplo n.º 3
0
        void IDataSender.FileStreamReq(StreamReq req)
        {
            Datagram datagram = new Datagram
            {
                DataType    = DatagramType.Cloud,
                MessageType = CloudDatagramDefine.StreamReq,
                Datas       = req.ToByteArray()
            };

            if (!Send(datagram))
            {
                RunningDatas.InfoNotify("网络连接失败 请重启软件后重试");
            }
        }
Exemplo n.º 4
0
        private void OnCloud_StreamReq(Datagram datagram)
        {
            StreamReq stream = datagram.UnSerialData <StreamReq>();

            RunningDatas.FileService.Request(stream.StreamID, stream.Block);
        }