Example #1
0
        public SharpDBConnection GetConnection()
        {
            NetMQSocket socket = new NetMQ.Sockets.RequestSocket();

            //	socket.Options.CopyMessages = false;
            socket.Options.Linger = TimeSpan.FromSeconds(5);
            socket.Connect(ConnectionString);

            var connection = new SharpDBConnection(this, socket, SerializerFactory());

            m_connections.Add(connection);

            return(connection);
        }
Example #2
0
        private Protocol.RegisterServiceResponse Initialize()
        {
            NetMQ.Sockets.RequestSocket req = new NetMQ.Sockets.RequestSocket();
            req.Connect(ServerAddress.RegisterServiceAddress);
            var stream = new System.IO.MemoryStream();

            ProtoBuf.Serializer.Serialize(stream, new Tomato.Net.Protocol.RegisterService()
            {
                ServiceName  = ServiceName,
                ProtocolList = MessageHandle.Instance.DicHandles.Keys.Select(i => (int)i).ToList(),
                IsRegister   = true,
            });
            if (req.TrySendFrame(stream.ToArray()))
            {
                return(ProtoBuf.Serializer.Deserialize <Protocol.RegisterServiceResponse>(new System.IO.MemoryStream(req.ReceiveFrameBytes())));
            }
            return(null);
        }
Example #3
0
 /// <summary>
 /// 初始化服务模块
 /// 在这里,我们将已注册的protocolID发送到路由端 Tomato.RouteService
 /// </summary>
 /// <returns></returns>
 private ResRegisterService _InitializeService(bool isRegister = true)
 {
     Logger.Debug($"{this.ServiceName} 正在向路由注册模块...");
     NetMQ.Sockets.RequestSocket req = new NetMQ.Sockets.RequestSocket();
     req.Connect(ServerAddress.RegisterServiceAddress);
     using (var stream = new System.IO.MemoryStream())
     {
         ProtoBuf.Serializer.Serialize(stream, new ReqRegisterService()
         {
             ServiceName  = ServiceName,
             ProtocolList = MessageHandle.DicHandles.Keys.Select(i => (int)i).ToList(),
             IsRegister   = isRegister,
         });
         if (req.TrySendFrame(stream.ToArray()))
         {
             return(ProtoBuf.Serializer.Deserialize <ResRegisterService>(new System.IO.MemoryStream(req.ReceiveFrameBytes())));
         }
     }
     return(null);
 }
Example #4
0
        //!
        //! receiver function, receiving the initial scene from the katana server (executed in separate thread)
        //!
        public void sceneReceiver()
        {
            //create NetMQ context
            NetMQContext ctx = NetMQContext.Create();

            print("Trying to receive scene.");

            OnProgress(0.1f, "Init Scene Receiver..");


            NetMQ.Sockets.RequestSocket sceneReceiver = ctx.CreateRequestSocket();
            sceneReceiver.Connect("tcp://" + VPETSettings.Instance.serverIP + ":5565");

            print("Server set up.");


            byte[] byteStream;


            // HEader
            print("header");
            sceneReceiver.Send("header");
            byteStream = sceneReceiver.Receive() as byte[];
            print("byteStreamHeader size: " + byteStream.Length);
            if (doWriteScene)
            {
                writeBinary(byteStream, "header");
            }

            int dataIdx = 0;

            VPETSettings.Instance.lightIntensityFactor = BitConverter.ToSingle(byteStream, dataIdx);
            print("VPETSettings.Instance.lightIntensityFactor " + VPETSettings.Instance.lightIntensityFactor);
            dataIdx += sizeof(float);
            VPETSettings.Instance.textureBinaryType = BitConverter.ToInt32(byteStream, dataIdx);

            OnProgress(0.15f, "..Received Header..");


            //VpetHeader vpetHeader = SceneDataHandler.ByteArrayToStructure<VpetHeader>(byteStream, ref dataIdx);
            //VPETSettings.Instance.lightIntensityFactor = vpetHeader.lightIntensityFactor;
            //VPETSettings.Instance.textureBinaryType = vpetHeader.textureBinaryType;

            // Textures
            if (VPETSettings.Instance.doLoadTextures)
            {
                print("textures");
                sceneReceiver.Send("textures");
                byteStream = sceneReceiver.Receive() as byte[];
                print("byteStreamTextures size: " + byteStream.Length);
                if (doWriteScene)
                {
                    writeBinary(byteStream, "textu");
                }
                sceneLoader.SceneDataHandler.TexturesByteData = byteStream;

                OnProgress(0.33f, "..Received Texture..");
            }


            // Objects
            print("objects");
            sceneReceiver.Send("objects");
            byteStream = sceneReceiver.Receive() as byte[];
            print("byteStreamObjects size: " + byteStream.Length);
            if (doWriteScene)
            {
                writeBinary(byteStream, "objec");
            }
            sceneLoader.SceneDataHandler.ObjectsByteData = byteStream;

            OnProgress(0.80f, "..Received Objects..");


            // Nodes
            print("nodes");
            sceneReceiver.Send("nodes");
            byteStream = sceneReceiver.Receive() as byte[];
            print("byteStreamNodess size: " + byteStream.Length);
            if (doWriteScene)
            {
                writeBinary(byteStream, "nodes");
            }
            sceneLoader.SceneDataHandler.NodesByteData = byteStream;

            OnProgress(0.9f, "..Received Nodes..");



            sceneReceiver.Disconnect("tcp://" + VPETSettings.Instance.serverIP + ":5565");
            sceneReceiver.Close();

            print("done receive scene");

            m_sceneTransferDirty = true;

            OnProgress(1.0f, "..Building Scene..");
        }
Example #5
0
        //!
        //! receiver function, receiving the initial scene from the katana server (executed in separate thread)
        //!
        public void sceneReceiver()
        {
            //create NetMQ context
            NetMQContext ctx = NetMQContext.Create();

            print("Trying to receive scene.");

            OnProgress(0.1f, "Init Scene Receiver..");


            NetMQ.Sockets.RequestSocket sceneReceiver = ctx.CreateRequestSocket();
            sceneReceiver.Connect("tcp://" + VPETSettings.Instance.serverIP + ":5565");

            print("Server set up.");


            SceneObjectKatana sceneObjectKatana = new SceneObjectKatana();
            bool success = false;

            if (VPETSettings.Instance.doLoadTextures)
            {
                print("textu");
                sceneReceiver.Send("textu");
                byte[] byteStreamTextures = sceneReceiver.Receive() as byte[];
                print("byteStreamTextures size: " + byteStreamTextures.Length);
                success = sceneObjectKatana.parseTexture(byteStreamTextures);
                print("Texture Count: " + sceneObjectKatana.rawTextureList.Count);
                if (doWriteScene)
                {
                    writeBinary(byteStreamTextures, "textu");
                }

                OnProgress(0.33f, "..Received Texture..");
            }


            print("objec");
            sceneReceiver.Send("objec");
            byte[] byteStreamObjects = sceneReceiver.Receive() as byte[];
            print("byteStreamObjects size: " + byteStreamObjects.Length);
            success = sceneObjectKatana.parseObject(byteStreamObjects);
            print("Object Count: " + sceneObjectKatana.rawVertexList.Count);
            if (doWriteScene)
            {
                writeBinary(byteStreamObjects, "objec");
            }

            OnProgress(0.80f, "..Received Objects..");

            print("nodes");
            sceneReceiver.Send("nodes");
            byte[] byteStreamNodes = sceneReceiver.Receive() as byte[];
            print("byteStreamNodess size: " + byteStreamNodes.Length);
            success = sceneObjectKatana.parseNode(byteStreamNodes);
            print("Node count: " + sceneObjectKatana.rawNodeList.Count);
            if (doWriteScene)
            {
                writeBinary(byteStreamNodes, "nodes");
            }


            OnProgress(0.9f, "..Received Nodes..");



            if (success)
            {
                receiveObjectQueue.Add(sceneObjectKatana);
            }


            sceneReceiver.Disconnect("tcp://" + VPETSettings.Instance.serverIP + ":5565");
            sceneReceiver.Close();

            print("done receive scene");

            OnProgress(1.0f, "..Building Scene..");
        }