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); }
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); }
/// <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); }
//! //! 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.."); }
//! //! 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.."); }