| 7214 | } |
| 7215 | |
| 7216 | void GeneratorCSharp::GenerateClient(const std::string& domain, const std::shared_ptr<Package>& p, bool final) |
| 7217 | { |
| 7218 | // Generate namespace begin |
| 7219 | WriteLine(); |
| 7220 | WriteLineIndent("namespace " + domain + *p->name + ".FBE {"); |
| 7221 | Indent(1); |
| 7222 | |
| 7223 | std::string sender = (final ? "FinalSender" : "Sender"); |
| 7224 | std::string receiver = (final ? "FinalReceiver" : "Receiver"); |
| 7225 | std::string client = (final ? "FinalClient" : "Client"); |
| 7226 | std::string model = (final ? "FinalModel" : "Model"); |
| 7227 | std::string listener = "I" + client + "Listener"; |
| 7228 | std::string sender_listener = "I" + sender + "Listener"; |
| 7229 | std::string receiver_listener = "I" + receiver + "Listener"; |
| 7230 | |
| 7231 | // Generate client listener begin |
| 7232 | WriteLine(); |
| 7233 | if (final) |
| 7234 | WriteLineIndent("// Fast Binary Encoding " + domain + *p->name + " final client listener interface"); |
| 7235 | else |
| 7236 | WriteLineIndent("// Fast Binary Encoding " + domain + *p->name + " client listener interface"); |
| 7237 | WriteIndent("public interface " + listener); |
| 7238 | if (p->import) |
| 7239 | { |
| 7240 | bool first = true; |
| 7241 | Write(" : "); |
| 7242 | for (const auto& import : p->import->imports) |
| 7243 | { |
| 7244 | Write(std::string(first ? "" : ", ") + domain + *import + ".FBE." + listener); |
| 7245 | first = false; |
| 7246 | } |
| 7247 | } |
| 7248 | else |
| 7249 | Write(" : " + domain + "FBE.IClientListener"); |
| 7250 | Write(", " + sender_listener + ", " + receiver_listener); |
| 7251 | WriteLine(); |
| 7252 | WriteLineIndent("{"); |
| 7253 | Indent(1); |
| 7254 | |
| 7255 | // Generate client listener end |
| 7256 | Indent(-1); |
| 7257 | WriteLineIndent("}"); |
| 7258 | |
| 7259 | // Generate client begin |
| 7260 | WriteLine(); |
| 7261 | if (final) |
| 7262 | WriteLineIndent("// Fast Binary Encoding " + domain + *p->name + " final client"); |
| 7263 | else |
| 7264 | WriteLineIndent("// Fast Binary Encoding " + domain + *p->name + " client"); |
| 7265 | WriteLineIndent("public class " + client + " : " + domain + "FBE.Client, " + listener); |
| 7266 | WriteLineIndent("{"); |
| 7267 | Indent(1); |
| 7268 | |
| 7269 | // Generate imported clients accessors |
| 7270 | if (p->import) |
| 7271 | { |
| 7272 | WriteLineIndent("// Imported clients"); |
| 7273 | for (const auto& import : p->import->imports) |