public IPCStream_In(NamedPipeClient_In client, NUIApp nuiApp) { _client = client; _client.ServerMessage += client_ServerMessage; _client.Error += client_Error; this.nuiApp = nuiApp; }
//TCP void lifeStream_OnMessageReceived(MessageReader reader) { //서버로부터 받는 헤더를 읽습니다. STCHeader header = (STCHeader)reader.ReadShort(); switch (header) { case STCHeader.REQUEST_DEVICE_KIND_TCP: sessionId = reader.ReadInt(); //서버로 Device ID를 보냅니다. MessageWriter message = new MessageWriter(CTSHeader.SEND_DEVICE_KIND_TCP); message.WriteInt(0); lifeStream.Send(message); break; case STCHeader.SEND_PIPE_CONNECT_TCP: try { //IPC 파이프의 이름을 받아옵니다. string pipeName = reader.ReadString(); pipeClient_stc = new NamedPipeClient_In(pipeName + "_stc", this); //Server to Client 파이프를 만듬 pipeClient_cts = new NamedPipeClient_Out(pipeName + "_cts", this); //Client to Server 파이프를 만듬 //메세지를 보내고 받기 위한 스트림을 생성. pipeStream_Get = new IPCStream_In(pipeClient_stc, this); pipeStream_Send = new IPCStream_Out(pipeClient_cts, this); //IPC 메세지를 받았을 때 이벤트 등록 pipeStream_Get.OnMessageReceived += pipeStream_Get_OnMessageReceived; pipeClient_stc.Start(); //데이터 받기 시작 pipeClient_cts.Start(); //데이터 보내기 시작 //파이프 연결 성공했다고 보냄 pipeStream_Send.Send(new MessageWriter(CTSHeader.SEND_PIPE_CONNECT_COMPLETE)); //연결되었다고 해줌. isConnected = true; } catch (Exception e) { Console.WriteLine(e.Message); } break; } }