private BufferSlice EncodeMessage(Message msg) { if (msg.Body.Length != 0) msg.Headers["Content-Length"] = msg.Body.Length.ToString(); var buffer = new byte[65535]; long length = 0; using (var stream = new MemoryStream(buffer)) { stream.SetLength(0); using (var writer = new StreamWriter(stream)) { foreach (string key in msg.Headers) { writer.Write("{0}: {1}\n".FormatWith(key, msg.Headers[key])); } writer.Write("\n"); msg.Body.CopyTo(stream); writer.Flush(); length = stream.Length; } } string tmp = Encoding.ASCII.GetString(buffer, 0, (int) length); return new BufferSlice(buffer, 0, (int) length); }
public DecoderContext() { Message = new Message(); CurrentHeaderName = ""; IsComplete = false; Reader = new BufferSliceReader(); }
private void OnCommand(Command cmd, Message reply) { switch (cmd.CommandName) { case "auth": SendCommand("events", "plain", "all"); break; case "events": //SendBackgroundCommand("status"); break; case "bgapi": HandleBgApiResponse(cmd, reply); break; default: Console.WriteLine("Unknown command: " + cmd.CommandName); break; } }
private void HandleBgApiResponse(Command cmd, Message reply) { string uid = reply.Headers["Job-UUID"]; cmd.As<BackgroundCommand>().JobId = uid; _waitingCommands[uid] = cmd.As<BackgroundCommand>(); }